@mesob/ui 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/app/app-breadcrumbs.tsx","../src/components/ui/breadcrumb.tsx","../src/lib/utils.ts","../src/components/app/app-breadcrumbs-context.tsx","../src/components/app/app-header-actions.tsx","../src/components/spotlight-search.tsx","../src/components/ui/button.tsx","../src/components/ui/spinner.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/input-wrapper.tsx","../src/components/ui/field.tsx","../src/components/ui/label.tsx","../src/components/ui/separator.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/app/app-sidebar.tsx","../src/components/ui/sidebar.tsx","../src/hooks/use-mobile.ts","../src/components/ui/sheet.tsx","../src/components/ui/sidebar-context.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/card.tsx","../src/components/ui/loader.tsx","../src/components/ui/overlay.tsx","../src/components/ui/loading-overlay.tsx","../src/components/app/empty-card-loading.tsx","../src/components/app/entity-page-loading.tsx","../src/components/app/error-page-view.tsx","../src/components/app/no-data-available.tsx","../src/components/ui/text.tsx","../src/components/display-table/display-table.tsx","../src/components/ui/scroll-area.tsx","../src/components/entity/entity-bulk-actions.tsx","../src/components/ui/alert-dialog.tsx","../src/components/entity/entity-detail-header.tsx","../src/components/layout/page/page-go-back.tsx","../src/components/ui/select.tsx","../src/components/entity/entity-drawer.tsx","../src/components/entity/entity-drawer-trigger.tsx","../src/components/entity/entity-empty-state.tsx","../src/components/ui/empty.tsx","../src/components/entity/entity-filter.tsx","../src/components/entity/entity-filter-state.tsx","../src/components/entity/entity-form-actions.tsx","../src/components/entity/entity-header.tsx","../src/components/entity/entity-loading-state.tsx","../src/components/ui/table.tsx","../src/components/entity/entity-search.tsx","../src/components/entity/entity-search-state.tsx","../src/components/layout/section/section.tsx","../src/components/ui/collapsible.tsx","../src/components/entity/entity-sort-state.tsx","../src/components/entity/entity-view-toggle-state.tsx","../src/components/ui/tabs.tsx","../src/components/entity/entity-section.tsx","../src/components/entity/entity-selector.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/chip.tsx","../src/components/ui/data-table/data-table-pagination.tsx","../src/components/ui/radio-group.tsx","../src/components/entity/entity-selector-modal.tsx","../src/components/entity/use-entity-pagination.ts","../src/components/entity/entity-sort.tsx","../src/components/entity/entity-view-toggle.tsx","../src/components/entity/use-entity-params.ts","../src/components/entity/use-entity-section-state.ts","../src/components/layout/page/page-body.tsx","../src/components/layout/page/page-container.tsx","../src/components/layout/page/page-section.tsx","../src/components/layout/page/page-subtitle.tsx","../src/components/layout/page/page-title.tsx","../src/components/ui/sonner.tsx","../src/components/layout/shell.tsx","../src/components/locale/locale-input-rich-text.tsx","../src/provider/mesob-provider.tsx","../src/lib/locale.ts","../src/components/rich-text/rich-text-input.tsx","../src/components/rich-text/controls/hardbreak-control.tsx","../src/components/rich-text/rich-text-editor.tsx","../src/components/rich-text/controls/iframe-control.tsx","../src/components/rich-text/controls/image-control.tsx","../src/components/rich-text/controls/table-control.tsx","../src/components/rich-text/controls/youtube-control.tsx","../src/components/rich-text/extensions/custom-heading.ts","../src/components/rich-text/extensions/iframe-extension.ts","../src/components/ui/visually-hidden.tsx","../src/components/locale/locale-input-text.tsx","../src/components/locale/locale-input-textarea.tsx","../src/components/locale/locale-rich-text.tsx","../src/components/locale/locale-text.tsx","../src/components/mesob-logo.tsx","../src/components/powered-by.tsx","../src/components/rich-text/rich-text-display.tsx","../src/components/theme-toggle.tsx","../src/components/ui/accordion.tsx","../src/components/ui/action-icon.tsx","../src/components/ui/affix.tsx","../src/components/ui/alert.tsx","../src/components/ui/anchor.tsx","../src/components/ui/angle-slider.tsx","../src/components/ui/animated-tabs.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/background-image.tsx","../src/components/ui/badge.tsx","../src/components/ui/blockquote.tsx","../src/components/ui/burger.tsx","../src/components/ui/button-group.tsx","../src/components/ui/calendar.tsx","../src/components/ui/carousel.tsx","../src/components/ui/center.tsx","../src/components/ui/chart.tsx","../src/components/ui/close-button.tsx","../src/components/ui/code.tsx","../src/components/ui/color-input.tsx","../src/lib/color-utils.ts","../src/components/ui/color-picker.tsx","../src/components/ui/color-swatch.tsx","../src/components/ui/popover.tsx","../src/components/ui/combobox.tsx","../src/components/ui/container.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/copy-button.tsx","../src/components/ui/data-table/data-table.tsx","../src/components/ui/data-table/data-table-action.tsx","../src/components/ui/data-table/data-table-column-header.tsx","../src/components/ui/data-table/data-table-view-options.tsx","../src/components/ui/direction.tsx","../src/components/ui/drawer.tsx","../src/components/ui/file-button.tsx","../src/components/ui/file-input.tsx","../src/components/ui/flex.tsx","../src/components/ui/floating-indicator.tsx","../src/components/ui/focus-trap.tsx","../src/components/ui/form.tsx","../src/components/ui/grid.tsx","../src/components/ui/group.tsx","../src/components/ui/highlight.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/image.tsx","../src/components/ui/indicator.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/item.tsx","../src/components/ui/json-input.tsx","../src/components/ui/kbd.tsx","../src/components/ui/list.tsx","../src/components/ui/mark.tsx","../src/components/ui/menubar.tsx","../src/components/ui/money-input.tsx","../src/components/ui/multi-select.tsx","../src/components/ui/native-select.tsx","../src/components/ui/nav-link.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/number-formatter.tsx","../src/components/ui/number-input.tsx","../src/components/ui/unstyled-button.tsx","../src/components/ui/pagination.tsx","../src/components/ui/paper.tsx","../src/components/ui/password-input.tsx","../src/components/ui/pill.tsx","../src/components/ui/progress.tsx","../src/components/ui/rating.tsx","../src/components/ui/resizable.tsx","../src/components/ui/ring-progress.tsx","../src/components/ui/semi-circle-progress.tsx","../src/components/ui/simple-grid.tsx","../src/components/ui/slider.tsx","../src/components/ui/space.tsx","../src/components/ui/spoiler.tsx","../src/components/ui/stack.tsx","../src/components/ui/stepper.tsx","../src/components/ui/switch.tsx","../src/components/ui/table-of-contents.tsx","../src/components/ui/tags-input.tsx","../src/components/ui/text-input.tsx","../src/components/ui/theme-icon.tsx","../src/components/ui/timeline.tsx","../src/components/ui/title.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/transition.tsx","../src/components/ui/tree.tsx"],"sourcesContent":["'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport type * as React from 'react';\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '../ui/breadcrumb';\nimport type { BreadcrumbItemData as BID } from './app-breadcrumbs-context';\nimport {\n BreadcrumbContext,\n useBreadcrumbs as useBreadcrumbsBase,\n} from './app-breadcrumbs-context';\n\nexport type { BreadcrumbItemData } from './app-breadcrumbs-context';\n\nexport function useBreadcrumbs(options?: { items?: BID[] }) {\n const context = useBreadcrumbsBase(options);\n const { setItems } = context;\n const prevItemsStrRef = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n const items = options?.items;\n if (!items) {\n return;\n }\n const itemsStr = JSON.stringify(items);\n if (prevItemsStrRef.current !== itemsStr) {\n prevItemsStrRef.current = itemsStr;\n setItems(items);\n }\n }, [options?.items, setItems]);\n\n return context;\n}\n\ntype BreadcrumbProviderProps = {\n children: React.ReactNode;\n defaultItems?: BID[];\n};\n\nexport function BreadcrumbProvider({\n children,\n defaultItems = [],\n}: BreadcrumbProviderProps) {\n const [items, setItems] = useState<BID[]>(defaultItems);\n\n const push = useCallback((item: BID) => {\n setItems((prev) => [...prev, item]);\n }, []);\n\n const pop = useCallback(() => {\n setItems((prev) => prev.slice(0, -1));\n }, []);\n\n const clear = useCallback(() => {\n setItems([]);\n }, []);\n\n const value = useMemo(\n () => ({\n items,\n setItems,\n push,\n pop,\n clear,\n }),\n [items, push, pop, clear],\n );\n\n return (\n <BreadcrumbContext.Provider value={value}>\n {children}\n </BreadcrumbContext.Provider>\n );\n}\n\ntype AppBreadcrumbsProps = {\n linkComponent?: React.ComponentType<{\n href: string;\n children: React.ReactNode;\n className?: string;\n }>;\n className?: string;\n};\n\nexport function AppBreadcrumbs({\n linkComponent: linkProp,\n className,\n}: AppBreadcrumbsProps) {\n const mesob = useMesob();\n const Link = linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const { items } = useBreadcrumbs(undefined);\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <Breadcrumb className={className}>\n <BreadcrumbList>\n {items.map((crumb, index) => {\n let content: React.ReactNode;\n if (crumb.href) {\n if (Link) {\n content = (\n <Link\n href={crumb.href}\n className=\"hover:underline\"\n {...(locale && { locale })}\n >\n {crumb.label}\n </Link>\n );\n } else {\n content = (\n <a href={crumb.href} className=\"hover:underline\">\n {crumb.label}\n </a>\n );\n }\n } else {\n content = <BreadcrumbPage>{crumb.label}</BreadcrumbPage>;\n }\n\n return (\n <Fragment key={`${crumb.label}-${crumb.href ?? ''}-${index}`}>\n {index > 0 && <BreadcrumbSeparator className=\"hidden md:block\" />}\n <BreadcrumbItem className={index === 0 ? 'hidden md:block' : ''}>\n {content}\n </BreadcrumbItem>\n </Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { IconChevronRight, IconDots } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<'nav'>) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'cn-breadcrumb-list flex flex-wrap items-center break-words',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('cn-breadcrumb-item inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n className,\n // biome-ignore lint/a11y/useAnchorContent: default render prop, content from consumer\n // biome-ignore lint/a11y/useValidAnchor: default render prop, href from consumer\n render = <a />,\n ...props\n}: React.ComponentProps<'a'> & {\n render?: useRender.RenderProp;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'breadcrumb-link',\n className: cn('cn-breadcrumb-link', className),\n },\n defaultTagName: 'a',\n });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('cn-breadcrumb-page', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('cn-breadcrumb-separator', className)}\n {...props}\n >\n {children ?? <IconChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n 'cn-breadcrumb-ellipsis flex items-center justify-center',\n className,\n )}\n {...props}\n >\n <IconDots className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\nexport type BreadcrumbItemData = {\n label: string;\n href?: string;\n};\n\nexport type BreadcrumbContextValue = {\n items: BreadcrumbItemData[];\n setItems: (items: BreadcrumbItemData[]) => void;\n push: (item: BreadcrumbItemData) => void;\n pop: () => void;\n clear: () => void;\n};\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextValue | null>(\n null,\n);\n\nexport function useBreadcrumbs(_options?: { items?: BreadcrumbItemData[] }) {\n const context = useContext(BreadcrumbContext);\n if (!context) {\n throw new Error('useBreadcrumbs must be used within BreadcrumbProvider');\n }\n return context;\n}\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconBell, IconLogout } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { isValidElement } from 'react';\nimport { SpotlightSearch } from '../spotlight-search';\nimport { Avatar, AvatarFallback, AvatarImage } from '../ui/avatar';\nimport { Button } from '../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu';\n\ntype MenuItem = {\n label: string;\n icon?: React.ReactNode;\n href?: string;\n onClick?: () => void;\n variant?: 'default' | 'destructive';\n};\n\ntype SpotlightGroup = {\n heading: string;\n items: Array<{\n id: string;\n title: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n }>;\n};\n\ntype AppHeaderActionsProps = {\n user?: {\n fullName?: string | null;\n email?: string | null;\n phone?: string | null;\n handle?: string | null;\n image?: string | null;\n };\n onLogout?: () => void | Promise<void>;\n isLoggingOut?: boolean;\n searchGroups?: SpotlightGroup[];\n menuItems?: MenuItem[];\n topMenuItems?: MenuItem[];\n actions?: React.ReactNode;\n accountMenuFooter?: React.ReactNode;\n};\n\nexport function AppHeaderActions({\n user,\n onLogout,\n isLoggingOut = false,\n searchGroups = [],\n menuItems = [],\n topMenuItems = [],\n actions,\n accountMenuFooter,\n}: AppHeaderActionsProps) {\n const mesob = useMesob();\n const LinkComponent = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n\n const hasHrefItems =\n topMenuItems.some((i) => i.href) || menuItems.some((i) => i.href);\n if (hasHrefItems && !LinkComponent) {\n throw new Error(\n '[AppHeaderActions] MesobProvider with routing is required for menu items with href',\n );\n }\n\n const initials =\n user?.fullName\n ?.split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2) || 'U';\n\n const displayName = user?.fullName ?? 'Account';\n const displaySubtext = user?.email ?? user?.phone ?? user?.handle ?? '';\n\n return (\n <div className=\"flex items-center gap-2\">\n <SpotlightSearch groups={searchGroups} />\n {actions}\n <Button variant=\"ghost\" size=\"icon\" className=\"relative\">\n <IconBell className=\"size-5\" />\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"ghost\"\n className=\"cn-app-header-actions-account-trigger flex items-center gap-3 px-3 py-2 h-auto min-h-9\"\n />\n }\n >\n <Avatar className=\"size-8 shrink-0\">\n <AvatarImage src={user?.image ?? undefined} />\n <AvatarFallback className=\"text-xs\">{initials}</AvatarFallback>\n </Avatar>\n <div className=\"hidden flex-col items-start text-left md:flex min-w-0\">\n <span className=\"text-sm font-medium\">{displayName}</span>\n <span className=\"text-xs text-muted-foreground\">\n {displaySubtext}\n </span>\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"end\">\n <DropdownMenuContent className=\"w-56\">\n {topMenuItems.map((item) => {\n if (item.href) {\n return (\n <DropdownMenuItem\n key={item.href ?? item.label}\n render={\n <LinkComponent\n href={item.href}\n {...(locale && { locale })}\n />\n }\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n }\n return (\n <DropdownMenuItem\n key={item.label}\n onClick={item.onClick}\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n })}\n {topMenuItems.length > 0 && menuItems.length > 0 && (\n <DropdownMenuSeparator />\n )}\n {menuItems.map((item) => {\n if (item.href) {\n return (\n <DropdownMenuItem\n key={item.href ?? item.label}\n render={\n <LinkComponent\n href={item.href}\n {...(locale && { locale })}\n />\n }\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n }\n return (\n <DropdownMenuItem\n key={item.label}\n onClick={item.onClick}\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n })}\n {accountMenuFooter &&\n (topMenuItems.length > 0 || menuItems.length > 0) && (\n <DropdownMenuSeparator />\n )}\n {accountMenuFooter}\n {onLogout && (\n <>\n {(topMenuItems.length > 0 ||\n menuItems.length > 0 ||\n accountMenuFooter) && <DropdownMenuSeparator />}\n <DropdownMenuItem onClick={onLogout} variant=\"destructive\">\n {isLoggingOut ? (\n <span className=\"mr-2\">...</span>\n ) : (\n <IconLogout className=\"mr-2 size-4\" />\n )}\n Log out\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n </div>\n );\n}\n","'use client';\n\nimport { IconSearch } from '@tabler/icons-react';\nimport * as React from 'react';\nimport { cn } from '../lib/utils';\nimport { Button } from './ui/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from './ui/command';\n\ntype SpotlightItem = {\n id: string;\n title: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n};\n\ntype SpotlightGroup = {\n heading: string;\n items: SpotlightItem[];\n};\n\ntype SpotlightSearchProps = {\n groups?: SpotlightGroup[];\n placeholder?: string;\n emptyMessage?: string;\n className?: string;\n triggerClassName?: string;\n onSearch?: (query: string) => void;\n};\n\nexport function SpotlightSearch({\n groups = [],\n placeholder = 'Search...',\n emptyMessage = 'No results found.',\n className,\n triggerClassName,\n onSearch,\n}: SpotlightSearchProps) {\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n\n const filteredGroups = React.useMemo(() => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return groups;\n }\n\n return groups\n .map((group) => ({\n ...group,\n items: group.items.filter((item) =>\n item.title.toLowerCase().includes(normalizedQuery),\n ),\n }))\n .filter((group) => group.items.length > 0);\n }, [groups, query]);\n\n const commandItems = React.useMemo(\n () =>\n filteredGroups.map((group) => ({\n ...group,\n items: group.items,\n })),\n [filteredGroups],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((open) => !open);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, []);\n\n React.useEffect(() => {\n if (!open) {\n setQuery('');\n onSearch?.('');\n }\n }, [open, onSearch]);\n\n return (\n <>\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 min-w-9 p-0 xl:h-9 xl:min-w-[12rem] xl:w-60 xl:justify-start xl:px-3 xl:py-2',\n triggerClassName,\n )}\n onClick={() => setOpen(true)}\n >\n <IconSearch className=\"h-4 w-4 xl:mr-2\" />\n <span className=\"hidden xl:inline-flex\">Search...</span>\n <kbd className=\"cn-spotlight-kbd pointer-events-none absolute right-1.5 top-1/2 hidden h-5 -translate-y-1/2 select-none items-center gap-1 px-1.5 font-mono text-[10px] font-medium opacity-100 xl:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n <CommandDialog\n open={open}\n onOpenChange={setOpen}\n title=\"Search\"\n description=\"Search for pages, actions, and more\"\n showCloseButton={false}\n className={className}\n commandProps={{\n items: commandItems,\n value: query,\n onValueChange: (value: string) => {\n setQuery(value);\n onSearch?.(value);\n },\n itemToStringValue: (item: unknown) => (item as SpotlightItem).title,\n mode: 'none',\n open: true,\n }}\n >\n <CommandInput placeholder={placeholder} />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n {filteredGroups.map((group, index) => (\n <React.Fragment key={group.heading}>\n {index > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading} items={group.items}>\n {group.items.map((item) => (\n <CommandItem\n key={item.id}\n value={item}\n onSelect={() => {\n item.onSelect?.();\n setOpen(false);\n }}\n >\n {item.icon}\n <span>{item.title}</span>\n {item.shortcut && (\n <kbd className=\"cn-spotlight-kbd pointer-events-none ml-auto hidden h-5 select-none items-center gap-1 px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n {item.shortcut}\n </kbd>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n </>\n );\n}\n","// biome-ignore-all lint/a11y/useButtonType: polymorphic default;\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { Spinner } from './spinner';\n\nconst BUTTON_BASE_CN = cn(\n // shadcn/base-ui base\n 'cn-button inline-flex items-center justify-center whitespace-nowrap',\n 'transition-all disabled:pointer-events-none disabled:opacity-50',\n '[&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none',\n 'group/button select-none',\n // mesob extensions\n 'relative',\n);\n\nconst buttonVariants = cva(BUTTON_BASE_CN, {\n variants: {\n variant: {\n default: 'cn-button-variant-default',\n destructive: 'cn-button-variant-destructive',\n outline: 'cn-button-variant-outline',\n secondary: 'cn-button-variant-secondary',\n ghost: 'cn-button-variant-ghost',\n link: 'cn-button-variant-link',\n light: 'cn-button-variant-light',\n },\n size: {\n xs: 'cn-button-size-xs',\n sm: 'cn-button-size-sm',\n default: 'cn-button-size-default',\n md: 'cn-button-size-default',\n lg: 'cn-button-size-lg',\n xl: 'cn-button-size-xl',\n icon: 'cn-button-size-icon',\n 'icon-xs': 'cn-button-size-icon-xs',\n 'icon-sm': 'cn-button-size-icon-sm',\n 'icon-lg': 'cn-button-size-icon-lg',\n 'icon-xl': 'cn-button-size-icon-xl',\n },\n radius: {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n },\n fullWidth: { true: 'w-full', false: '' },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n fullWidth: false,\n },\n});\n\ntype ButtonLoaderProps = {\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n};\n\ntype ButtonProps = ButtonPrimitive.Props &\n VariantProps<typeof buttonVariants> & {\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n loading?: boolean;\n loaderProps?: ButtonLoaderProps;\n color?: ComponentColor;\n };\n\nfunction getLoaderSize(\n size: ButtonProps['size'],\n loaderPropsSize?: 'sm' | 'md' | 'lg',\n): 'sm' | 'md' | 'lg' {\n if (loaderPropsSize) {\n return loaderPropsSize;\n }\n if (\n size === 'xs' ||\n size === 'sm' ||\n size === 'icon-xs' ||\n size === 'icon-sm'\n ) {\n return 'sm';\n }\n if (\n size === 'lg' ||\n size === 'xl' ||\n size === 'icon-lg' ||\n size === 'icon-xl'\n ) {\n return 'lg';\n }\n return 'md';\n}\n\nfunction Button({\n className,\n variant = 'default',\n size = 'default',\n radius,\n fullWidth,\n color,\n leftIcon,\n rightIcon,\n leftSection,\n rightSection,\n loading = false,\n loaderProps,\n disabled,\n children,\n ...props\n}: ButtonProps) {\n const leftContent = leftSection || leftIcon;\n const rightContent = rightSection || rightIcon;\n const loaderSize = getLoaderSize(size, loaderProps?.size);\n\n const colorStyle = color\n ? ({\n '--btn-color': `var(--${color})`,\n '--btn-color-hover': `color-mix(in srgb, var(--${color}) 90%, black)`,\n } as React.CSSProperties)\n : undefined;\n\n return (\n <ButtonPrimitive\n {...props}\n nativeButton={props.render ? false : undefined}\n type={props.type ?? 'button'}\n disabled={disabled || loading}\n data-slot=\"button\"\n data-loading={loading || undefined}\n style={{ ...colorStyle, ...props.style }}\n className={cn(\n buttonVariants({ variant, size, radius, fullWidth }),\n color && 'bg-[var(--btn-color)] hover:bg-[var(--btn-color-hover)]',\n className,\n )}\n >\n {loading && (\n <span className=\"absolute inset-0 flex items-center justify-center text-current\">\n <Spinner\n className={cn(\n '!text-current',\n loaderSize === 'sm' && 'size-3',\n loaderSize === 'md' && 'size-4',\n loaderSize === 'lg' && 'size-5',\n loaderProps?.className,\n )}\n />\n </span>\n )}\n <span\n className={cn(\n 'inline-flex items-center gap-2 transition-transform',\n loading && 'opacity-0 translate-y-1',\n )}\n >\n {leftContent}\n {children}\n {rightContent}\n </span>\n </ButtonPrimitive>\n );\n}\n\nexport { Button, buttonVariants };\nexport type { ButtonProps, ButtonLoaderProps };\n","import { IconLoader2 } from '@tabler/icons-react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\nconst sizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3',\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n xl: 'size-7',\n};\n\ntype SpinnerProps = Omit<React.ComponentProps<typeof IconLoader2>, 'size'> & {\n size?: ComponentSize;\n};\n\nfunction Spinner({ className, size = 'md', ...props }: SpinnerProps) {\n return (\n <IconLoader2\n role=\"status\"\n aria-label=\"Loading\"\n className={cn('cn-spinner', sizeClasses[size], className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\nexport type { SpinnerProps };\n","'use client';\n\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';\nimport { IconSearch } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from './dialog';\nimport { InputGroup, InputGroupAddon } from './input-group';\nimport { Separator } from './separator';\n\ntype CommandProps = Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Root>,\n 'children'\n> & {\n className?: string;\n children?: React.ReactNode;\n};\n\nfunction Command({ className, children, ...props }: CommandProps) {\n return (\n <div\n data-slot=\"command\"\n className={cn(\n 'cn-command flex h-full min-h-0 w-full flex-col overflow-hidden',\n className,\n )}\n >\n <AutocompletePrimitive.Root {...props}>\n {children}\n </AutocompletePrimitive.Root>\n </div>\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n commandProps,\n ...props\n}: Omit<React.ComponentProps<typeof Dialog>, 'children'> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n commandProps?: Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Root>,\n 'children'\n >;\n children?: React.ReactNode;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('cn-command-dialog overflow-hidden', className)}\n showCloseButton={showCloseButton}\n >\n <Command {...commandProps}>{children}</Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n onValueChange,\n onChange,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.Input> & {\n onValueChange?: (value: string) => void;\n}) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"cn-command-input-wrapper\">\n <InputGroup className=\"cn-command-input-group\">\n <AutocompletePrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'cn-command-input outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n onChange={(event) => {\n onChange?.(event);\n onValueChange?.(event.currentTarget.value);\n }}\n {...props}\n />\n <InputGroupAddon>\n <IconSearch className=\"cn-command-input-icon\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.List>) {\n return (\n <AutocompletePrimitive.List\n data-slot=\"command-list\"\n className={cn(\n 'cn-command-list max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.Empty>) {\n return (\n <AutocompletePrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('cn-command-empty text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype CommandGroupProps = Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Group>,\n 'children'\n> & {\n heading?: string;\n children?:\n | React.ReactNode\n | ((item: unknown, index: number) => React.ReactNode);\n};\n\nfunction CommandGroup({\n className,\n heading,\n items,\n children,\n ...props\n}: CommandGroupProps) {\n const resolvedChildren =\n typeof children === 'function' ? (\n <AutocompletePrimitive.Collection>\n {children}\n </AutocompletePrimitive.Collection>\n ) : (\n children\n );\n\n return (\n <AutocompletePrimitive.Group\n data-slot=\"command-group\"\n items={items}\n className={cn('cn-command-group', className)}\n {...props}\n >\n {heading && (\n <AutocompletePrimitive.GroupLabel\n data-slot=\"command-group-label\"\n cmdk-group-heading=\"\"\n >\n {heading}\n </AutocompletePrimitive.GroupLabel>\n )}\n {resolvedChildren}\n </AutocompletePrimitive.Group>\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"command-separator\"\n className={cn('cn-command-separator', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n onSelect,\n onClick,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.Item> & {\n onSelect?: React.MouseEventHandler<HTMLElement>;\n}) {\n return (\n <AutocompletePrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'cn-command-item group/command-item data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n onSelect?.(event);\n }}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn('cn-command-shortcut', className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Backdrop>) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn('cn-dialog-overlay', className)}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Popup> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn('cn-dialog-content', className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"cn-dialog-close\"\n >\n <IconX className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('cn-dialog-header', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('cn-dialog-footer', className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('cn-dialog-title', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('cn-dialog-description', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Textarea } from './textarea';\n\nconst INPUT_GROUP_BASE_CN =\n 'group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto';\n\nfunction InputGroup({\n className,\n disabled,\n ...props\n}: React.ComponentProps<'fieldset'>) {\n return (\n <fieldset\n data-slot=\"input-group\"\n data-disabled={disabled || undefined}\n disabled={disabled}\n className={cn(INPUT_GROUP_BASE_CN, 'cn-input-group', className)}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n 'cn-input-group-addon flex cursor-text items-center justify-center select-none appearance-none border-0 bg-transparent p-0 text-inherit',\n {\n variants: {\n align: {\n 'inline-start': 'cn-input-group-addon-align-inline-start order-first',\n 'inline-end': 'cn-input-group-addon-align-inline-end order-last',\n 'block-start': 'cn-input-group-addon-align-block-start order-first',\n 'block-end': 'cn-input-group-addon-align-block-end order-last',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = 'inline-start',\n type = 'button',\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <button\n type={type}\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.currentTarget\n .closest('[data-slot=input-group]')\n ?.querySelector<HTMLElement>('input, textarea, [role=combobox]')\n ?.focus();\n }}\n onKeyDown={(e) => {\n if (e.key !== 'Enter' && e.key !== ' ') {\n return;\n }\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.preventDefault();\n e.currentTarget\n .closest('[data-slot=input-group]')\n ?.querySelector<HTMLElement>('input, textarea, [role=combobox]')\n ?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n 'cn-input-group-button shadow-none flex items-center',\n {\n variants: {\n size: {\n xs: 'cn-input-group-button-size-xs',\n sm: '',\n 'icon-xs': 'cn-input-group-button-size-icon-xs',\n 'icon-sm': 'cn-input-group-button-size-icon-sm',\n },\n },\n defaultVariants: {\n size: 'xs',\n },\n },\n);\n\nfunction InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'size'> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn('cn-input-group-text flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<'input'>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn('cn-input-group-input flex-1', className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<'textarea'>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn('cn-input-group-textarea flex-1 resize-none', className)}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n","import { Input as InputPrimitive } from '@base-ui/react/input';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst INPUT_BASE_CN =\n 'file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(INPUT_BASE_CN, 'cn-input', className)}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import type * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\ntype TextareaBaseProps = Omit<React.ComponentProps<'textarea'>, 'size'> & {\n size?: ComponentSize;\n};\n\nconst TEXTAREA_BASE_CN =\n 'placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50';\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n ({ className, size, ...props }, ref) => {\n const sizeClasses = {\n xs: 'min-h-12 text-xs px-2 py-1.5',\n sm: 'min-h-14 text-sm px-2.5 py-2',\n md: 'min-h-16 text-sm px-3 py-2',\n lg: 'min-h-20 text-base px-4 py-2.5',\n xl: 'min-h-24 text-lg px-5 py-3',\n };\n\n const defaultSizeClass = 'min-h-16 px-2.5 py-2 text-base md:text-sm';\n\n return (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n TEXTAREA_BASE_CN,\n 'cn-textarea',\n size ? sizeClasses[size] : defaultSizeClass,\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\n\ntype TextareaInputProps = TextareaBaseProps &\n Omit<InputWrapperProps, 'children'> & {\n autosize?: boolean;\n minRows?: number;\n maxRows?: number;\n };\n\nconst TextareaInput = forwardRef<HTMLTextAreaElement, TextareaInputProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size,\n autosize,\n minRows,\n maxRows,\n ...textareaProps\n },\n ref,\n ) => {\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const textareaElement = (\n <Textarea\n ref={ref}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n required={required}\n size={size}\n rows={minRows}\n className={cn(\n autosize && 'resize-none',\n maxRows && `max-h-[${maxRows * 1.5}rem]`,\n className,\n )}\n {...textareaProps}\n />\n );\n\n if (!hasWrapper) {\n return textareaElement;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {textareaElement}\n </InputWrapper>\n );\n },\n);\n\nTextareaInput.displayName = 'TextareaInput';\n\nexport { Textarea, TextareaInput };\nexport type { TextareaBaseProps, TextareaInputProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { Fragment } from 'react';\nimport type { InputWrapperOrder } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { Field, FieldDescription, FieldError, FieldLabel } from './field';\n\nexport type InputWrapperProps = {\n /** Input element or component to wrap */\n children: React.ReactNode;\n /** Label text */\n label?: React.ReactNode;\n /** Description text (helper text) */\n description?: React.ReactNode;\n /** Error message or array of errors */\n error?: React.ReactNode | Array<{ message?: string } | undefined>;\n /** Adds required attribute to the input and asterisk to label */\n required?: boolean;\n /** Shows asterisk on label without required attribute */\n withAsterisk?: boolean;\n /** Controls order of elements */\n inputWrapperOrder?: InputWrapperOrder;\n /** Props for label */\n labelProps?: React.ComponentProps<typeof FieldLabel>;\n /** Props for description */\n descriptionProps?: React.ComponentProps<typeof FieldDescription>;\n /** Props for error */\n errorProps?: React.ComponentProps<typeof FieldError>;\n /** Input container wrapper function */\n inputContainer?: (children: React.ReactNode) => React.ReactNode;\n /** Disabled state (passed to Field) */\n disabled?: boolean;\n /** Class name for wrapper */\n className?: string;\n};\n\nexport function InputWrapper({\n children,\n label,\n description,\n error,\n required = false,\n withAsterisk = false,\n inputWrapperOrder = ['label', 'description', 'input', 'error'],\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n}: InputWrapperProps) {\n const showAsterisk = required || withAsterisk;\n\n const labelElement = label ? (\n <FieldLabel {...labelProps}>\n {label}\n {showAsterisk && <span className=\"text-destructive ml-1\">*</span>}\n </FieldLabel>\n ) : null;\n\n const descriptionElement = description ? (\n <FieldDescription {...descriptionProps}>{description}</FieldDescription>\n ) : null;\n\n const errorElement = error ? (\n <FieldError\n {...errorProps}\n errors={Array.isArray(error) ? error : undefined}\n >\n {Array.isArray(error) ? undefined : error}\n </FieldError>\n ) : null;\n\n const inputElement = inputContainer ? inputContainer(children) : children;\n\n const elements: Record<string, React.ReactNode> = {\n label: labelElement,\n description: descriptionElement,\n input: inputElement,\n error: errorElement,\n };\n\n return (\n <Field data-disabled={disabled || undefined} className={cn(className)}>\n {inputWrapperOrder.map((key) => {\n const el = elements[key];\n return el ? <Fragment key={key}>{el}</Fragment> : null;\n })}\n </Field>\n );\n}\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\nimport { Separator } from './separator';\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn('cn-field-set flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = 'legend',\n ...props\n}: React.ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn('cn-field-legend', className)}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n 'cn-field-group group/field-group @container/field-group flex w-full flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n 'cn-field group/field flex w-full data-[invalid=true]:text-destructive',\n {\n variants: {\n orientation: {\n vertical: ['flex-col [&>*]:w-full [&>.sr-only]:w-auto'],\n horizontal: [\n 'flex-row items-center',\n '[&>[data-slot=field-label]]:flex-auto',\n 'has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',\n ],\n responsive: [\n 'flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto',\n '@md/field-group:[&>[data-slot=field-label]]:flex-auto',\n '@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',\n ],\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n },\n);\n\nfunction Field({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<'fieldset'> & VariantProps<typeof fieldVariants>) {\n return (\n <fieldset\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(\n fieldVariants({ orientation }),\n 'border-0 p-0 m-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n 'cn-field-content group/field-content flex flex-1 flex-col leading-snug',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n 'cn-field-label group/field-label peer/field-label flex w-fit leading-snug transition-colors',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-title\"\n className={cn(\n 'cn-field-title flex w-fit items-center leading-snug',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n 'cn-field-description group-has-[[data-orientation=horizontal]]/field:text-balance last:mt-0 nth-last-2:-mt-1',\n '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n 'cn-field-separator relative group-data-[variant=outline]/field-group:-mb-2',\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"cn-field-separator-content\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<'div'> & {\n errors?: Array<{ message?: string } | undefined>;\n}) {\n let content = children;\n\n if (!content && errors?.length) {\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ];\n\n if (uniqueErrors.length === 1) {\n content = uniqueErrors[0]?.message;\n } else {\n content = (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error) =>\n error?.message && <li key={error.message}>{error.message}</li>,\n )}\n </ul>\n );\n }\n }\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn('cn-field-error', className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Label({ className, ...props }: React.ComponentProps<'label'>) {\n return (\n // biome-ignore lint/a11y/noLabelWithoutControl: composable label, parent provides htmlFor\n <label data-slot=\"label\" className={cn('cn-label', className)} {...props} />\n );\n}\n\nexport { Label };\n","'use client';\n\nimport { Separator as SeparatorPrimitive } from '@base-ui/react/separator';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive>) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n 'cn-separator',\n orientation === 'horizontal' && 'cn-separator-horizontal',\n orientation === 'vertical' && 'cn-separator-vertical self-stretch',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","'use client';\n\nimport { Avatar as AvatarPrimitive } from '@base-ui/react/avatar';\nimport type * as React from 'react';\nimport type { ComponentRadius, ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype AvatarProps = React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: ComponentSize;\n radius?: ComponentRadius;\n};\n\nfunction Avatar({\n className,\n size = 'md',\n radius: _radius,\n ...props\n}: AvatarProps) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'cn-avatar relative flex shrink-0 overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('cn-avatar-image aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'cn-avatar-fallback flex size-full items-center justify-center text-xs font-medium uppercase',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\nexport type { AvatarProps };\n","'use client';\n\nimport { Menu as DropdownMenuPrimitive } from '@base-ui/react/menu';\nimport { IconCheck, IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst DROPDOWN_MENU_POSITIONER_CN = 'isolate z-50 outline-none';\n\nconst DROPDOWN_MENU_CONTENT_CN = cn(\n 'cn-dropdown-menu-content cn-dropdown-menu-content-logical cn-menu-target',\n 'z-50 max-h-(--available-height) w-(--anchor-width)',\n 'origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none',\n 'data-closed:overflow-hidden',\n);\n\nconst DROPDOWN_MENU_ITEM_BASE_CN = cn(\n 'group/dropdown-menu-item relative flex cursor-default items-center',\n 'outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nconst DROPDOWN_MENU_SUB_TRIGGER_BASE_CN = cn(\n 'flex cursor-default items-center outline-hidden select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Popup>) {\n return (\n <DropdownMenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(DROPDOWN_MENU_CONTENT_CN, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuPositioner({\n align = 'start',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Positioner>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Positioner\n data-slot=\"dropdown-menu-positioner\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className={cn(DROPDOWN_MENU_POSITIONER_CN, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'cn-dropdown-menu-item',\n DROPDOWN_MENU_ITEM_BASE_CN,\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n 'cn-dropdown-menu-checkbox-item',\n DROPDOWN_MENU_ITEM_BASE_CN,\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n >\n <DropdownMenuPrimitive.CheckboxItemIndicator>\n <IconCheck className=\"size-4\" />\n </DropdownMenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n 'cn-dropdown-menu-radio-item',\n DROPDOWN_MENU_ITEM_BASE_CN,\n className,\n )}\n {...props}\n >\n <span\n data-slot=\"dropdown-menu-radio-item-indicator\"\n className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n >\n <DropdownMenuPrimitive.RadioItemIndicator>\n <IconCheck className=\"size-4\" />\n </DropdownMenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.GroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn('cn-dropdown-menu-label', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('cn-dropdown-menu-separator', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn('cn-dropdown-menu-shortcut', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubmenuRoot>) {\n return (\n <DropdownMenuPrimitive.SubmenuRoot\n data-slot=\"dropdown-menu-sub\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'cn-dropdown-menu-sub-trigger',\n DROPDOWN_MENU_SUB_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Popup> &\n Pick<\n React.ComponentProps<typeof DropdownMenuPrimitive.Positioner>,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Positioner\n className={DROPDOWN_MENU_POSITIONER_CN}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <DropdownMenuPrimitive.Popup\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n 'cn-dropdown-menu-sub-content',\n DROPDOWN_MENU_CONTENT_CN,\n 'w-auto',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Positioner>\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuPositioner,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconChevronDown } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { cn } from '../../lib/utils';\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n} from '../ui/sidebar';\nimport { useSidebar } from '../ui/sidebar-context';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';\n\nexport type NavItem = {\n title: string;\n href?: string;\n icon?: React.ComponentType<{ className?: string }>;\n group?: string;\n children?: NavItem[];\n pathMatch?: 'exact' | 'prefix';\n permission?: string[];\n};\n\ntype AppSidebarProps = {\n logo: React.ReactNode;\n navItems: NavItem[];\n footer?: React.ReactNode;\n pathname?: string;\n roles?: string[];\n};\n\nfunction isLinkActive(\n pathname: string | undefined,\n href: string | undefined,\n pathMatch: 'exact' | 'prefix' = 'prefix',\n): boolean {\n if (!pathname) {\n return false;\n }\n if (!href) {\n return false;\n }\n if (pathMatch === 'exact') {\n return pathname === href;\n }\n if (pathname === href) {\n return true;\n }\n return pathname.startsWith(`${href}/`);\n}\n\nfunction hasActiveDescendant(item: NavItem, pathname?: string): boolean {\n if (!pathname) {\n return false;\n }\n if (isLinkActive(pathname, item.href, item.pathMatch ?? 'prefix')) {\n return true;\n }\n return item.children?.some((c) => hasActiveDescendant(c, pathname)) ?? false;\n}\n\nfunction hasPermission(roles?: string[], permission?: string[]): boolean {\n if (!permission?.length) {\n return true;\n }\n if (!roles?.length) {\n return true;\n }\n return permission.some((p) => roles.includes(p));\n}\n\nconst TRUNCATION_TOOLTIP_MIN_LENGTH = 24;\n\nfunction TruncationTooltip({\n text,\n children,\n}: {\n text: string;\n children: React.ReactNode;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n const [truncated, setTruncated] = useState(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-measure when label changes (ResizeObserver doesn't fire on text change)\n useEffect(() => {\n const el = ref.current;\n if (!el) {\n return;\n }\n const check = () => setTruncated(el.scrollWidth > el.clientWidth);\n check();\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [text]);\n const showTooltip = truncated || text.length >= TRUNCATION_TOOLTIP_MIN_LENGTH;\n const inner = (\n <span ref={ref} className=\"min-w-0 truncate block\">\n {children}\n </span>\n );\n if (!showTooltip) {\n return inner;\n }\n return (\n <Tooltip>\n <TooltipTrigger render={inner} />\n <TooltipContent side=\"right\" sideOffset={8}>\n {text}\n </TooltipContent>\n </Tooltip>\n );\n}\n\ntype MenuLabelProps = {\n icon?: React.ComponentType<{ className?: string }>;\n label: string;\n};\n\nfunction MenuLabel({ icon: Icon, label }: MenuLabelProps) {\n return (\n <div className=\"text-sidebar-foreground flex min-h-0 min-w-0 flex-1 cursor-pointer items-center gap-2 text-sm\">\n {Icon ? <Icon className=\"size-4 shrink-0\" /> : null}\n <TruncationTooltip text={label}>{label}</TruncationTooltip>\n </div>\n );\n}\n\nfunction RowContent({\n item,\n hasChildren,\n showChildren,\n}: {\n item: NavItem;\n hasChildren: boolean;\n showChildren: boolean;\n}) {\n return (\n <>\n <MenuLabel icon={item.icon} label={item.title} />\n {hasChildren && (\n <IconChevronDown\n className={cn(\n 'ml-auto size-4 shrink-0 cursor-pointer transition-transform',\n showChildren && 'rotate-180',\n )}\n aria-hidden\n />\n )}\n </>\n );\n}\n\ntype NavItemRowProps = {\n item: NavItem;\n level: number;\n pathname?: string;\n roles?: string[];\n onNavClick?: () => void;\n};\n\nfunction NavItemRow({\n item,\n level,\n pathname,\n roles,\n onNavClick,\n}: NavItemRowProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const [open, toggle] = useToggle(hasActiveDescendant(item, pathname));\n const hasChildren = (item.children?.length ?? 0) > 0;\n const showChildren =\n (open || hasActiveDescendant(item, pathname)) && hasChildren;\n const pathMatch = item.pathMatch ?? 'prefix';\n const isActive = isLinkActive(pathname, item.href, pathMatch);\n const lineLeft = 28 + 20 * level;\n\n if (!hasPermission(roles, item.permission)) {\n return null;\n }\n\n const paddingLeft = 20 + 20 * level;\n const rowWrapperClass = cn(\n 'cn-app-sidebar-item text-sidebar-foreground relative flex h-8 w-full min-w-0 items-center pr-2 text-left text-sm transition duration-300 ease-in-out cursor-pointer',\n isActive && 'text-sidebar-primary',\n );\n const rowContent = (\n <>\n {isActive && (\n <div\n className=\"cn-app-sidebar-active-indicator absolute left-1 top-1.5 bottom-1.5 z-10 w-[3px]\"\n aria-hidden\n />\n )}\n <RowContent\n item={item}\n hasChildren={hasChildren}\n showChildren={showChildren}\n />\n </>\n );\n\n if (!item.href) {\n return (\n <li className=\"relative mt-1\">\n <button\n type=\"button\"\n onClick={toggle}\n className={rowWrapperClass}\n style={{ paddingLeft }}\n aria-expanded={showChildren}\n aria-label={item.title}\n data-active={isActive || undefined}\n >\n {rowContent}\n </button>\n </li>\n );\n }\n\n const linkProps = {\n href: item.href,\n onClick: hasChildren ? toggle : onNavClick,\n className: rowWrapperClass,\n style: { paddingLeft },\n 'aria-current': isActive ? ('page' as const) : undefined,\n 'data-active': isActive || undefined,\n ...(locale && { locale }),\n };\n\n return (\n <li className=\"relative mt-1\">\n {Link ? (\n <Link {...linkProps}>{rowContent}</Link>\n ) : (\n <a {...linkProps}>{rowContent}</a>\n )}\n\n {showChildren && (\n <ul className=\"relative mt-1\">\n <div\n className=\"absolute top-0 bottom-0 z-10 w-px bg-sidebar-border\"\n style={{ left: lineLeft }}\n aria-hidden\n />\n {(item.children ?? []).map((child, index) => (\n <NavItemRow\n key={`${item.href ?? item.title}-child-${index}-${child.href ?? child.title}`}\n item={child}\n level={level + 1}\n pathname={pathname}\n roles={roles}\n onNavClick={onNavClick}\n />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\nexport function AppSidebar({\n logo,\n navItems,\n footer,\n pathname,\n roles,\n}: AppSidebarProps) {\n const { isMobile, setOpenMobile } = useSidebar();\n const closeSidebar = () => {\n if (isMobile) {\n setOpenMobile(false);\n }\n };\n const groupedItems = navItems.reduce(\n (acc, item) => {\n const group = item.group ?? 'default';\n if (!acc[group]) {\n acc[group] = [];\n }\n acc[group].push(item);\n return acc;\n },\n {} as Record<string, NavItem[]>,\n );\n\n return (\n <Sidebar>\n <SidebarHeader>{logo}</SidebarHeader>\n <SidebarContent>\n <nav\n aria-label=\"Main navigation\"\n className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden overflow-y-auto\"\n >\n {Object.entries(groupedItems).map(([groupName, items]) => (\n <SidebarGroup key={groupName} className=\"py-0\">\n {groupName !== 'default' && (\n <SidebarGroupLabel className=\"uppercase tracking-wide\">\n {groupName}\n </SidebarGroupLabel>\n )}\n <SidebarGroupContent>\n <ul className=\"flex w-full min-w-0 list-none flex-col gap-0 p-0\">\n {items.map((item, index) => (\n <NavItemRow\n key={`${groupName}-${index}-${item.href ?? item.title}`}\n item={item}\n level={0}\n pathname={pathname}\n roles={roles}\n onNavClick={closeSidebar}\n />\n ))}\n </ul>\n </SidebarGroupContent>\n </SidebarGroup>\n ))}\n </nav>\n </SidebarContent>\n {footer && <SidebarFooter>{footer}</SidebarFooter>}\n </Sidebar>\n );\n}\n","'use client';\n\nimport { useRender } from '@base-ui/react/use-render';\nimport { IconMenu2 } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { useIsMobile } from '../../hooks/use-mobile';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from './sheet';\nimport {\n SidebarContext,\n type SidebarContextProps,\n useSidebar,\n} from './sidebar-context';\nimport { Skeleton } from './skeleton';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from './tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_WIDTH_COOKIE = 'sidebar_width';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH_DEFAULT = 256;\nconst SIDEBAR_WIDTH_MIN = 200;\nconst SIDEBAR_WIDTH_MAX = 480;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\nfunction getWidthFromCookie(): number {\n if (typeof document === 'undefined') {\n return SIDEBAR_WIDTH_DEFAULT;\n }\n const m = document.cookie.match(\n new RegExp(`(?:^|; )${SIDEBAR_WIDTH_COOKIE}=([^;]*)`),\n );\n const n = m ? Number(m[1]) : Number.NaN;\n return Number.isFinite(n) && n >= SIDEBAR_WIDTH_MIN && n <= SIDEBAR_WIDTH_MAX\n ? n\n : SIDEBAR_WIDTH_DEFAULT;\n}\n\nfunction setWidthCookie(width: number) {\n // biome-ignore lint/suspicious/noDocumentCookie: simple persistent UI preference\n document.cookie = `${SIDEBAR_WIDTH_COOKIE}=${width}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n const [width, setWidthState] = React.useState(getWidthFromCookie);\n\n const setWidth = React.useCallback((w: number) => {\n const clamped = Math.max(SIDEBAR_WIDTH_MIN, Math.min(SIDEBAR_WIDTH_MAX, w));\n setWidthState(clamped);\n setWidthCookie(clamped);\n }, []);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // biome-ignore lint/suspicious/noDocumentCookie: simple persistent UI preference\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [open, setOpenProp],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((value) => !value)\n : setOpen((value) => !value);\n }, [isMobile, setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue: SidebarContextProps = {\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n width,\n setWidth,\n minWidth: SIDEBAR_WIDTH_MIN,\n maxWidth: SIDEBAR_WIDTH_MAX,\n };\n\n const sidebarWidthValue = open ? `${width}px` : SIDEBAR_WIDTH;\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delay={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': sidebarWidthValue,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'cn-sidebar-gap relative w-(--sidebar-width) bg-transparent',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"cn-sidebar-inner flex h-full w-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <IconMenu2 />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'cn-sidebar-rail absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'cn-sidebar-inset relative flex w-full flex-1 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('cn-sidebar-input', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('cn-sidebar-header flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('cn-sidebar-footer flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('cn-sidebar-separator w-auto', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'cn-sidebar-content flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'cn-sidebar-group relative flex w-full min-w-0 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n render = <div />,\n ...props\n}: React.ComponentProps<'div'> & { render?: useRender.RenderProp }) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-group-label',\n 'data-sidebar': 'group-label',\n className: cn(\n 'cn-sidebar-group-label flex h-8 shrink-0 items-center outline-hidden',\n className,\n ),\n },\n defaultTagName: 'div',\n });\n}\n\nfunction SidebarGroupAction({\n className,\n render = <button type=\"button\" />,\n ...props\n}: React.ComponentProps<'button'> & { render?: useRender.RenderProp }) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-group-action',\n 'data-sidebar': 'group-action',\n className: cn(\n 'cn-sidebar-group-action flex aspect-square items-center justify-center outline-hidden transition-transform cursor-pointer disabled:cursor-not-allowed',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n className,\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('cn-sidebar-group-content w-full', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('cn-sidebar-menu flex w-full min-w-0 flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'cn-sidebar-menu-button peer/menu-button flex w-full min-w-0 items-center overflow-hidden text-left outline-hidden [&>span:last-child]:truncate [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'cn-sidebar-menu-button-variant-default',\n outline: 'cn-sidebar-menu-button-variant-outline',\n },\n size: {\n default: 'cn-sidebar-menu-button-size-default',\n sm: 'cn-sidebar-menu-button-size-sm',\n lg: 'cn-sidebar-menu-button-size-lg',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction SidebarMenuButton({\n render = <button type=\"button\" />,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n render?: useRender.RenderProp;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar();\n\n const button = useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-menu-button',\n 'data-sidebar': 'menu-button',\n 'data-size': size,\n 'data-active': isActive,\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n defaultTagName: 'button',\n });\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger render={button} />\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n render = <button type=\"button\" />,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n render?: useRender.RenderProp;\n showOnHover?: boolean;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-menu-action',\n 'data-sidebar': 'menu-action',\n className: cn(\n 'cn-sidebar-menu-action flex aspect-square items-center justify-center outline-hidden transition-transform cursor-pointer disabled:cursor-not-allowed',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[panel-open]:opacity-100 md:opacity-0',\n className,\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn('cn-sidebar-menu-badge', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(\n () => `${Math.floor(Math.random() * 40) + 50}%`,\n );\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('cn-sidebar-menu-skeleton flex items-center', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"cn-sidebar-menu-skeleton-icon\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"cn-sidebar-menu-skeleton-text h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'cn-sidebar-menu-sub relative flex min-w-0 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n // biome-ignore lint/a11y/useAnchorContent: default render prop, content from consumer\n // biome-ignore lint/a11y/useValidAnchor: default render prop, href from consumer\n render = <a />,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n render?: useRender.RenderProp;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-menu-sub-button',\n 'data-sidebar': 'menu-sub-button',\n 'data-size': size,\n 'data-active': isActive,\n className: cn(\n 'cn-sidebar-menu-sub-button flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate',\n 'data-[active=true]:relative data-[active=true]:bg-primary/10 data-[active=true]:pl-3 data-[active=true]:text-sidebar-primary data-[active=true]:before:absolute data-[active=true]:before:left-1 data-[active=true]:before:top-[6px] data-[active=true]:before:bottom-[6px] data-[active=true]:before:w-[3px] data-[active=true]:before:rounded-full data-[active=true]:before:bg-primary data-[active=true]:before:content-[\"\"]',\n className,\n ),\n },\n defaultTagName: 'a',\n });\n}\n\nexport { useSidebar } from './sidebar-context';\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n};\n","import * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","'use client';\n\nimport { Dialog as SheetPrimitive } from '@base-ui/react/dialog';\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Backdrop>) {\n return (\n <SheetPrimitive.Backdrop\n data-slot=\"sheet-overlay\"\n className={cn('cn-sheet-overlay fixed inset-0 z-50', className)}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Popup> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Popup\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn('cn-sheet-content', className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"cn-sheet-close\"\n />\n }\n >\n <IconX className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('cn-sheet-header flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('cn-sheet-footer mt-auto flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('cn-sheet-title', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('cn-sheet-description', className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","'use client';\n\nimport * as React from 'react';\n\nexport type SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean | ((open: boolean) => boolean)) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n width: number;\n setWidth: (w: number) => void;\n minWidth: number;\n maxWidth: number;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\nexport { SidebarContext };\n","import type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype SkeletonProps = React.ComponentProps<'div'> & {\n radius?: ComponentRadius;\n circle?: boolean;\n animate?: boolean;\n};\n\nfunction Skeleton({\n className,\n radius: _radius = 'md',\n circle = false,\n animate = true,\n ...props\n}: SkeletonProps) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\n 'cn-skeleton',\n animate && 'animate-pulse',\n circle && 'rounded-full aspect-square',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\nexport type { SkeletonProps };\n","'use client';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\n\nimport { cn } from '../../lib/utils';\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n side = 'top',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n 'cn-tooltip-content cn-tooltip-content-logical bg-foreground text-background z-50 w-fit max-w-xs origin-(--transform-origin)',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"cn-tooltip-arrow cn-tooltip-arrow-logical bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype CardProps = React.ComponentProps<'div'> & {\n size?: 'default' | 'sm';\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n radius?: ComponentRadius;\n withBorder?: boolean;\n variant?: 'default' | 'outline' | 'filled';\n};\n\nfunction Card({\n className,\n children,\n size = 'default',\n padding,\n radius,\n withBorder,\n variant,\n ...props\n}: CardProps) {\n const paddingClasses = {\n none: 'p-0',\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-5',\n lg: 'p-6',\n xl: 'p-8',\n };\n\n const radiusClasses = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n };\n\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'cn-card group/card flex flex-col',\n variant === 'outline' && 'cn-card-variant-outline',\n variant === 'filled' && 'cn-card-variant-filled',\n withBorder && 'cn-card-with-border',\n padding && paddingClasses[padding],\n radius && radiusClasses[radius],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'cn-card-header group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn('cn-card-title', className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('cn-card-description', className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n 'col-start-2 row-span-2 row-start-1 self-start justify-self-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn('cn-card-content', className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn('cn-card-footer flex items-center', className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype LoaderType = 'oval' | 'bars' | 'dots';\n\ntype LoaderProps = {\n type?: LoaderType;\n size?: number | string;\n color?: string;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst OvalLoader = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 38 38\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn('loader-oval', className)}\n style={{\n width: 'var(--loader-size)',\n height: 'var(--loader-size)',\n }}\n aria-label=\"Loading\"\n >\n <title>Loading</title>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(1 1)\" strokeWidth=\"2\">\n <circle\n stroke=\"var(--loader-color)\"\n strokeOpacity=\".2\"\n cx=\"18\"\n cy=\"18\"\n r=\"18\"\n />\n <path stroke=\"var(--loader-color)\" d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n </svg>\n);\n\nconst BarsLoader = ({ className }: { className?: string }) => (\n <div\n className={cn('loader-bars inline-flex gap-1', className)}\n style={{\n width: 'var(--loader-size)',\n height: 'var(--loader-size)',\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={`bar-${i}`}\n className=\"cn-loader-bars-bar w-1/5 animate-pulse\"\n style={{\n backgroundColor: 'var(--loader-color)',\n animationDelay: `${i * 0.15}s`,\n }}\n />\n ))}\n </div>\n);\n\nconst DotsLoader = ({ className }: { className?: string }) => (\n <div\n className={cn('loader-dots inline-flex items-center gap-1', className)}\n style={{\n width: 'var(--loader-size)',\n height: 'calc(var(--loader-size) / 3)',\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={`dot-${i}`}\n className=\"cn-loader-dot size-[calc(var(--loader-size)/5)] animate-bounce\"\n style={{\n backgroundColor: 'var(--loader-color)',\n animationDelay: `${i * 0.15}s`,\n }}\n />\n ))}\n </div>\n);\n\nconst loaders: Record<\n LoaderType,\n React.ComponentType<{ className?: string }>\n> = {\n oval: OvalLoader,\n bars: BarsLoader,\n dots: DotsLoader,\n};\n\nconst sizeMap: Record<string, string> = {\n xs: '1rem',\n sm: '1.25rem',\n md: '1.5rem',\n lg: '2rem',\n xl: '2.5rem',\n};\n\nconst getLoaderSize = (size: number | string): string => {\n if (typeof size === 'number') {\n return `${size / 16}rem`;\n }\n return sizeMap[size] || size;\n};\n\nconst Loader = React.forwardRef<HTMLOutputElement, LoaderProps>(\n (\n { type = 'oval', size = 'md', color = 'currentColor', className, children },\n ref,\n ) => {\n if (children) {\n return <>{children}</>;\n }\n\n const loaderSize = getLoaderSize(size);\n const LoaderComponent = loaders[type];\n\n return (\n <output\n ref={ref}\n className={cn(\n 'text-muted-foreground inline-flex items-center justify-center',\n className,\n )}\n style={\n {\n '--loader-size': loaderSize,\n '--loader-color': color,\n } as React.CSSProperties\n }\n aria-label=\"Loading\"\n >\n <LoaderComponent />\n <span className=\"sr-only\">Loading</span>\n </output>\n );\n },\n);\n\nLoader.displayName = 'Loader';\n\nexport { Loader };\nexport type { LoaderProps, LoaderType };\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype OverlayProps = React.ComponentProps<'div'> & {\n blur?: number;\n opacity?: number;\n color?: string;\n};\n\nfunction Overlay({\n className,\n blur = 0,\n opacity = 0.6,\n color,\n style,\n ...props\n}: OverlayProps) {\n return (\n <div\n data-slot=\"overlay\"\n className={cn('cn-overlay absolute inset-0 rounded-[inherit]', className)}\n style={{\n opacity,\n backdropFilter: blur > 0 ? `blur(${blur}px)` : undefined,\n backgroundColor: color,\n ...style,\n }}\n {...props}\n />\n );\n}\n\nexport { Overlay };\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Loader, type LoaderType } from './loader';\nimport { Overlay } from './overlay';\n\ntype LoadingOverlayProps = {\n visible: boolean;\n zIndex?: number;\n blur?: number;\n opacity?: number;\n loaderSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;\n loaderType?: LoaderType;\n loaderColor?: string;\n loaderProps?: React.ComponentProps<typeof Loader>;\n className?: string;\n};\n\nfunction LoadingOverlay({\n visible,\n zIndex = 1000,\n blur = 0,\n opacity = 0.75,\n loaderSize = 'md',\n loaderType = 'oval',\n loaderColor,\n loaderProps,\n className,\n}: LoadingOverlayProps) {\n if (!visible) {\n return null;\n }\n\n return (\n <div\n data-slot=\"loading-overlay\"\n className={cn('cn-loading-overlay', className)}\n style={{ zIndex }}\n >\n <Overlay blur={blur} opacity={opacity} />\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Loader\n size={loaderSize}\n type={loaderType}\n color={loaderColor}\n {...loaderProps}\n />\n </div>\n </div>\n );\n}\n\nexport { LoadingOverlay };\nexport type { LoadingOverlayProps };\n","'use client';\n\nimport { cn } from '../../lib/utils';\nimport { Card } from '../ui/card';\nimport {\n LoadingOverlay,\n type LoadingOverlayProps,\n} from '../ui/loading-overlay';\n\ntype EmptyCardLoadingProps = {\n className?: string;\n zIndex?: number;\n minHeight?: boolean;\n loaderSize?: LoadingOverlayProps['loaderSize'];\n loaderType?: LoadingOverlayProps['loaderType'];\n};\n\nfunction EmptyCardLoading({\n className,\n zIndex = 100,\n minHeight = true,\n loaderSize = 'md',\n loaderType = 'oval',\n}: EmptyCardLoadingProps) {\n return (\n <Card\n className={cn(\n 'relative overflow-hidden',\n minHeight && 'min-h-[300px]',\n className,\n )}\n >\n <LoadingOverlay\n visible\n zIndex={zIndex}\n loaderSize={loaderSize}\n loaderType={loaderType}\n />\n </Card>\n );\n}\n\nexport { EmptyCardLoading };\nexport type { EmptyCardLoadingProps };\n","'use client';\n\nimport { cn } from '../../lib/utils';\nimport {\n LoadingOverlay,\n type LoadingOverlayProps,\n} from '../ui/loading-overlay';\n\ntype EntityPageLoadingProps = {\n className?: string;\n loaderSize?: LoadingOverlayProps['loaderSize'];\n loaderType?: LoadingOverlayProps['loaderType'];\n};\n\nfunction EntityPageLoading({\n className,\n loaderSize = 'md',\n loaderType = 'oval',\n}: EntityPageLoadingProps) {\n return (\n <div\n className={cn(\n 'cn-entity-page-loading relative flex h-full max-h-screen min-h-[100px] w-full items-center justify-center',\n className,\n )}\n >\n <LoadingOverlay\n visible\n loaderSize={loaderSize}\n loaderType={loaderType}\n opacity={0.5}\n />\n </div>\n );\n}\n\nexport { EntityPageLoading };\nexport type { EntityPageLoadingProps };\n","import type { ReactNode } from 'react';\nimport { Button } from '../ui/button';\n\ntype ErrorPageViewProps = {\n code: string;\n title: string;\n description: string;\n primaryAction: ReactNode;\n secondaryAction?: ReactNode;\n onRetry?: () => void;\n};\n\nexport function ErrorPageView({\n code,\n title,\n description,\n primaryAction,\n secondaryAction,\n onRetry,\n}: ErrorPageViewProps) {\n return (\n <div className=\"flex min-h-svh flex-col items-center justify-center bg-background px-6 py-16 sm:px-8\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_80%_50%_at_50%_-20%,var(--color-primary)/0.08,transparent)]\" />\n <div className=\"relative flex w-full min-w-72 max-w-3xl shrink-0 flex-col items-center gap-8 text-center\">\n <span className=\"font-mono text-[7rem] font-bold leading-none tracking-tighter text-muted-foreground/50\">\n {code}\n </span>\n <div className=\"w-full space-y-2\">\n <h1 className=\"text-2xl font-semibold tracking-tight text-foreground sm:text-3xl\">\n {title}\n </h1>\n <p className=\"w-full text-sm text-muted-foreground sm:text-base\">\n {description}\n </p>\n </div>\n <div className=\"flex w-full flex-col gap-3 sm:flex-row sm:justify-center\">\n {primaryAction}\n {secondaryAction}\n {onRetry && (\n <Button variant=\"ghost\" size=\"lg\" onClick={onRetry}>\n Try again\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport {\n IconAlertCircle,\n IconCertificateOff,\n IconMessage,\n IconShoppingCartOff,\n} from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { Button } from '../ui/button';\nimport { Card } from '../ui/card';\nimport { Text } from '../ui/text';\n\nconst isExternal = (href: string) =>\n href.startsWith('http') ||\n href.startsWith('//') ||\n href.startsWith('mailto:') ||\n href.startsWith('tel:');\n\ntype NoDataAvailableProps = {\n title: string;\n message: string;\n iconType?: 'certificate' | 'alert' | 'cart' | 'message';\n buttonText?: string;\n buttonLink?: string;\n icon?: React.ReactNode;\n};\n\nfunction NoDataAvailable({\n title,\n message,\n iconType = 'alert',\n buttonText,\n buttonLink,\n icon,\n}: NoDataAvailableProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const iconMap = {\n certificate: IconCertificateOff,\n cart: IconShoppingCartOff,\n message: IconMessage,\n alert: IconAlertCircle,\n };\n\n const IconComponent = iconMap[iconType];\n\n return (\n <Card>\n <div className=\"flex justify-center\">\n <div className=\"flex flex-col items-center gap-4 text-center\">\n {icon || (\n <IconComponent size={80} className=\"text-primary\" stroke={1.5} />\n )}\n <Text\n size=\"2xl\"\n weight=\"semibold\"\n className=\"mt-2 text-muted-foreground\"\n >\n {title}\n </Text>\n <Text size=\"lg\" variant=\"muted\">\n {message}\n </Text>\n {buttonText &&\n buttonLink &&\n (Link && !isExternal(buttonLink) ? (\n <Button\n render={\n <Link href={buttonLink} {...(locale && { locale })}>\n {buttonText}\n </Link>\n }\n variant=\"outline\"\n className=\"mt-2\"\n >\n {buttonText}\n </Button>\n ) : (\n <Button\n render={<a href={buttonLink}>{buttonText}</a>}\n variant=\"outline\"\n className=\"mt-2\"\n >\n {buttonText}\n </Button>\n ))}\n </div>\n </div>\n </Card>\n );\n}\n\nexport { NoDataAvailable };\nexport type { NoDataAvailableProps };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst textVariants = cva('text-pretty', {\n variants: {\n size: {\n xs: 'text-xs leading-4',\n sm: 'text-sm leading-5',\n md: 'text-base leading-6',\n lg: 'text-lg leading-7',\n xl: 'text-xl leading-7',\n '2xl': 'text-2xl leading-8',\n },\n weight: {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n start: 'text-start',\n end: 'text-end',\n },\n transform: {\n none: 'normal-case',\n uppercase: 'uppercase',\n lowercase: 'lowercase',\n capitalize: 'capitalize',\n },\n decoration: {\n none: 'no-underline',\n underline: 'underline',\n 'line-through': 'line-through',\n },\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n primary: 'text-primary',\n secondary: 'text-foreground/80',\n destructive: 'text-destructive',\n accent: 'text-accent-foreground',\n success: 'text-green-600 dark:text-green-400',\n warning: 'text-yellow-600 dark:text-yellow-400',\n dimmed: 'text-foreground/60',\n },\n truncate: {\n true: 'truncate',\n false: '',\n },\n inherit: {\n true: 'font-inherit text-inherit leading-inherit',\n false: '',\n },\n italic: {\n true: 'italic',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n weight: 'normal',\n variant: 'default',\n truncate: false,\n inherit: false,\n italic: false,\n },\n});\n\ntype TextProps = React.ComponentPropsWithoutRef<'span'> &\n VariantProps<typeof textVariants> & {\n as?: 'span' | 'p' | 'div' | 'label' | 'strong' | 'em';\n lineClamp?: number;\n gradient?: boolean;\n span?: boolean;\n };\n\nfunction Text({\n className,\n size,\n weight,\n align,\n transform,\n decoration,\n variant,\n truncate,\n inherit,\n italic,\n as,\n lineClamp,\n gradient,\n span,\n style,\n children,\n ...props\n}: TextProps): React.ReactElement {\n const Component = as || (span ? 'span' : 'p');\n const classes = cn(\n textVariants({\n size,\n weight,\n align,\n transform,\n decoration,\n variant,\n truncate,\n inherit,\n italic,\n }),\n lineClamp && 'line-clamp-[var(--line-clamp)]',\n gradient &&\n 'bg-gradient-to-r from-primary via-primary/70 to-accent bg-clip-text text-transparent font-semibold',\n className,\n );\n\n const styles: React.CSSProperties = {\n ...(lineClamp && { '--line-clamp': lineClamp.toString() }),\n ...style,\n } as React.CSSProperties;\n\n return React.createElement(\n Component,\n {\n 'data-slot': 'text',\n className: classes,\n style: styles,\n ...props,\n },\n children,\n );\n}\n\nexport { Text, textVariants };\nexport type { TextProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\nimport { cn } from '../../lib/utils';\nimport { ScrollArea } from '../ui/scroll-area';\n\nexport type DisplayTableVariant = 'horizontal' | 'vertical';\n\nexport type DisplayTableData = {\n caption?: React.ReactNode;\n head?: React.ReactNode[];\n body: React.ReactNode[][];\n foot?: React.ReactNode[];\n};\n\ntype DisplayTableRootProps = React.HTMLAttributes<HTMLTableElement> & {\n variant?: DisplayTableVariant;\n striped?: boolean;\n stripedInverted?: boolean;\n highlightOnHover?: boolean;\n withTableBorder?: boolean;\n withColumnBorders?: boolean;\n withRowBorders?: boolean;\n stickyHeader?: boolean;\n stickyHeaderOffset?: number;\n captionSide?: 'top' | 'bottom';\n tabularNums?: boolean;\n data?: DisplayTableData;\n};\n\nfunction renderTableData(\n data: DisplayTableData,\n opts: { captionSide?: 'top' | 'bottom'; stickyHeader?: boolean },\n) {\n return (\n <>\n {data.caption != null && (\n <DisplayTableCaption\n className={\n opts.captionSide === 'bottom' ? 'caption-bottom' : undefined\n }\n >\n {data.caption}\n </DisplayTableCaption>\n )}\n {data.head != null && data.head.length > 0 && (\n <DisplayTableThead\n className={\n opts.stickyHeader ? 'sticky z-10 bg-background' : undefined\n }\n >\n <DisplayTableTr>\n {data.head.map((cell, i) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven head */\n <DisplayTableTh key={`head-${i}`}>{cell}</DisplayTableTh>\n ))}\n </DisplayTableTr>\n </DisplayTableThead>\n )}\n <DisplayTableTbody>\n {data.body.map((row, ri) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven row */\n <DisplayTableTr key={`row-${ri}`}>\n {row.map((cell, ci) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven cell */\n <DisplayTableTd key={`row-${ri}-${ci}`}>{cell}</DisplayTableTd>\n ))}\n </DisplayTableTr>\n ))}\n </DisplayTableTbody>\n {data.foot != null && data.foot.length > 0 && (\n <DisplayTableTfoot>\n <DisplayTableTr>\n {data.foot.map((cell, i) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven foot */\n <DisplayTableTh key={`foot-${i}`}>{cell}</DisplayTableTh>\n ))}\n </DisplayTableTr>\n </DisplayTableTfoot>\n )}\n </>\n );\n}\n\nconst DisplayTableRoot = forwardRef<HTMLTableElement, DisplayTableRootProps>(\n (\n {\n className,\n variant = 'horizontal',\n striped = true,\n stripedInverted,\n highlightOnHover = true,\n withTableBorder,\n withColumnBorders,\n withRowBorders = true,\n stickyHeader,\n stickyHeaderOffset = 0,\n captionSide,\n tabularNums,\n data,\n children,\n style,\n ...props\n },\n ref,\n ) => {\n const tableContent = data\n ? renderTableData(data, { captionSide, stickyHeader })\n : children;\n const table = (\n <table\n ref={ref}\n className={cn(\n 'cn-display-table',\n tabularNums && 'tabular-nums',\n className,\n )}\n style={style}\n data-variant={variant}\n data-striped={striped ?? undefined}\n data-stripe-inverted={stripedInverted ?? undefined}\n data-hover={highlightOnHover || undefined}\n data-with-row-borders={withRowBorders || undefined}\n data-with-column-borders={withColumnBorders || undefined}\n {...props}\n >\n {tableContent}\n </table>\n );\n return (\n <div\n className={cn('cn-display-table-container')}\n style={\n {\n ...(stickyHeader && {\n '--sticky-offset': `${stickyHeaderOffset}px`,\n }),\n } as React.CSSProperties\n }\n data-border={withTableBorder || undefined}\n data-sticky-header={stickyHeader || undefined}\n >\n <div className=\"cn-display-table-scroll\">{table}</div>\n </div>\n );\n },\n);\nDisplayTableRoot.displayName = 'DisplayTable';\n\ntype ScrollContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n minWidth?: number;\n maxHeight?: number;\n type?: 'native' | 'scroll-area';\n};\n\nfunction DisplayTableScrollContainer({\n className,\n minWidth,\n maxHeight,\n type = 'native',\n children,\n style,\n ...props\n}: ScrollContainerProps) {\n const containerStyle = {\n minWidth: minWidth ?? undefined,\n maxHeight: maxHeight ?? undefined,\n ...style,\n };\n if (type === 'scroll-area') {\n return (\n <ScrollArea\n className={cn('w-full', className)}\n style={containerStyle}\n {...props}\n >\n {children}\n </ScrollArea>\n );\n }\n return (\n <div\n className={cn('overflow-auto', className)}\n style={containerStyle}\n {...props}\n >\n {children}\n </div>\n );\n}\nDisplayTableScrollContainer.displayName = 'DisplayTableScrollContainer';\n\nconst DisplayTableThead = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn('cn-display-table-thead', className)}\n {...props}\n />\n));\nDisplayTableThead.displayName = 'DisplayTableThead';\n\nconst DisplayTableTbody = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('cn-display-table-tbody', className)}\n {...props}\n />\n));\nDisplayTableTbody.displayName = 'DisplayTableTbody';\n\nconst DisplayTableTfoot = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('cn-display-table-tfoot', className)}\n {...props}\n />\n));\nDisplayTableTfoot.displayName = 'DisplayTableTfoot';\n\nconst DisplayTableTr = forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement> & { variant?: DisplayTableVariant }\n>(({ className, variant = 'horizontal', ...props }, ref) => (\n <tr\n ref={ref}\n className={cn('cn-display-table-tr', className)}\n data-variant={variant}\n {...props}\n />\n));\nDisplayTableTr.displayName = 'DisplayTableTr';\n\nconst DisplayTableTh = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement> & { w?: number | string }\n>(({ className, style, w, ...props }, ref) => (\n <th\n ref={ref}\n className={cn('cn-display-table-th', className)}\n style={{ width: w ?? undefined, minWidth: w ?? undefined, ...style }}\n {...props}\n />\n));\nDisplayTableTh.displayName = 'DisplayTableTh';\n\nconst DisplayTableTd = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td ref={ref} className={cn('cn-display-table-td', className)} {...props} />\n));\nDisplayTableTd.displayName = 'DisplayTableTd';\n\nconst DisplayTableCaption = forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('cn-display-table-caption', className)}\n {...props}\n />\n));\nDisplayTableCaption.displayName = 'DisplayTableCaption';\n\nexport const DisplayTable = Object.assign(DisplayTableRoot, {\n Thead: DisplayTableThead,\n Tbody: DisplayTableTbody,\n Tfoot: DisplayTableTfoot,\n Tr: DisplayTableTr,\n Th: DisplayTableTh,\n Td: DisplayTableTd,\n Caption: DisplayTableCaption,\n ScrollContainer: DisplayTableScrollContainer,\n});\n\nexport {\n DisplayTableThead,\n DisplayTableTbody,\n DisplayTableTfoot,\n DisplayTableTr,\n DisplayTableTh,\n DisplayTableTd,\n DisplayTableCaption,\n DisplayTableScrollContainer,\n};\n","'use client';\n\nimport { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn('relative', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"cn-scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n 'cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"cn-scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","'use client';\n\nimport { IconChevronDown, IconDownload, IconTrash } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../ui/alert-dialog';\nimport { Button } from '../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu';\n\ntype BulkAction = {\n label: string;\n icon?: ReactNode;\n onClick: () => void;\n variant?: 'default' | 'destructive';\n confirmTitle?: string;\n confirmDescription?: string;\n};\n\ntype EntityBulkActionsProps = {\n selectedCount: number;\n actions?: BulkAction[];\n onDelete?: () => void;\n onExport?: () => void;\n itemName?: string;\n};\n\nexport function EntityBulkActions({\n selectedCount,\n actions,\n onDelete,\n onExport,\n itemName = 'item',\n}: EntityBulkActionsProps) {\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n const hasSelection = selectedCount > 0;\n\n const defaultActions: BulkAction[] = [];\n\n if (onExport) {\n defaultActions.push({\n label: 'Export',\n icon: <IconDownload className=\"mr-2 h-4 w-4\" />,\n onClick: onExport,\n });\n }\n\n if (onDelete) {\n defaultActions.push({\n label: 'Delete',\n icon: <IconTrash className=\"mr-2 h-4 w-4\" />,\n onClick: () => setShowDeleteConfirm(true),\n variant: 'destructive',\n });\n }\n\n const allActions = actions ? [...actions, ...defaultActions] : defaultActions;\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={!hasSelection}\n className=\"min-w-[140px]\"\n />\n }\n >\n {hasSelection ? `${selectedCount} selected` : 'Bulk Actions'}\n <IconChevronDown className=\"ml-2 h-4 w-4\" />\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"end\">\n <DropdownMenuContent>\n {allActions.map((action, index) => (\n <div key={action.label}>\n {action.variant === 'destructive' && index > 0 && (\n <DropdownMenuSeparator />\n )}\n <DropdownMenuItem\n onClick={action.onClick}\n className={\n action.variant === 'destructive' ? 'text-destructive' : ''\n }\n >\n {action.icon}\n {action.label}\n </DropdownMenuItem>\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n\n <AlertDialog open={showDeleteConfirm} onOpenChange={setShowDeleteConfirm}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n Delete {selectedCount} {itemName}(s)?\n </AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete the selected {itemName}(s). This\n action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={() => {\n onDelete?.();\n setShowDeleteConfirm(false);\n }}\n variant=\"destructive\"\n >\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","'use client';\n\nimport { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from './button';\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Backdrop>) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'cn-alert-dialog-overlay fixed inset-0 isolate z-50',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Popup> & {\n size?: 'default' | 'sm';\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n className={cn(\n 'cn-alert-dialog-content group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-3 outline-none',\n className,\n )}\n data-size={size}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn('cn-alert-dialog-header', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn('cn-alert-dialog-media', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn('cn-alert-dialog-title', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('cn-alert-dialog-description', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Close> & {\n variant?:\n | 'default'\n | 'destructive'\n | 'outline'\n | 'secondary'\n | 'ghost'\n | 'link'\n | 'light';\n}) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n className={cn(buttonVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Close>) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(buttonVariants({ variant: 'outline' }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogMedia,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconChevronDown, IconMenu2 } from '@tabler/icons-react';\nimport {\n cloneElement,\n isValidElement,\n type ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../lib/utils';\nimport { PageGoBack } from '../layout/page/page-go-back';\nimport { Card } from '../ui/card';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../ui/select';\nimport { Skeleton } from '../ui/skeleton';\n\nexport type TabItem = {\n name: string;\n value: string;\n href?: string;\n content?: ReactNode;\n};\n\ntype EntityDetailHeaderProps = {\n title: ReactNode;\n icon?: ReactNode;\n showBack?: boolean;\n loading?: boolean;\n actions?: ReactNode;\n tabs: TabItem[];\n className?: string;\n};\n\nexport function EntityDetailHeader({\n title,\n icon,\n showBack = true,\n loading = false,\n actions,\n tabs,\n className,\n}: EntityDetailHeaderProps) {\n const mesob = useMesob();\n const LinkComponent = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const pathname = mesob?.pathname ?? '';\n const locale = mesob?.locale;\n\n const goBack = mesob?.goBack ?? (() => window.history.back());\n const resolvedBackButton = showBack ? (\n <PageGoBack onBack={goBack} label=\"Go back\" />\n ) : undefined;\n\n const hrefBasedActiveTab = useMemo(() => {\n const hasPathname = Boolean(pathname);\n const allHaveHref = tabs.every((t) => t.href);\n if (!(hasPathname && allHaveHref)) {\n return null;\n }\n const matched = [...tabs]\n .filter(\n (t) => t.href && (pathname === t.href || pathname.endsWith(t.href)),\n )\n .sort((a, b) => (b.href?.length ?? 0) - (a.href?.length ?? 0))[0];\n return matched?.value ?? null;\n }, [pathname, tabs]);\n\n const [internalActiveTab, setInternalActiveTab] = useState(\n tabs[0]?.value ?? '',\n );\n const activeTab = hrefBasedActiveTab ?? internalActiveTab;\n\n const [visibleTabs, setVisibleTabs] = useState<TabItem[]>(tabs);\n const [overflowTabs, setOverflowTabs] = useState<TabItem[]>([]);\n const containerRef = useRef<HTMLDivElement>(null);\n const tabsListRef = useRef<HTMLDivElement>(null);\n const dropdownTriggerRef = useRef<HTMLButtonElement>(null);\n const tabRefs = useRef<(HTMLElement | null)[]>([]);\n\n const handleTabChange = (newValue: string) => {\n const tab = tabs.find((t) => t.value === newValue);\n if (tab?.href) {\n mesob?.navigate?.(tab.href);\n return;\n }\n setInternalActiveTab(newValue);\n };\n\n useLayoutEffect(() => {\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: layout + measurement logic\n const updateTabs = () => {\n if (\n typeof window !== 'undefined' &&\n !window.matchMedia('(min-width: 640px)').matches\n ) {\n setVisibleTabs(tabs);\n setOverflowTabs([]);\n return;\n }\n if (!containerRef.current) {\n return;\n }\n if (!tabsListRef.current) {\n return;\n }\n\n const containerWidth = containerRef.current.offsetWidth;\n const dropdownWidth = 80;\n const padding = 16;\n const availableWidth = containerWidth - padding;\n\n let totalWidth = 0;\n const visible: TabItem[] = [];\n const overflow: TabItem[] = [];\n let hasOverflow = false;\n\n for (const [i, tab] of tabs.entries()) {\n const tabEl = tabRefs.current[i];\n\n if (!tabEl || tabEl.offsetWidth === 0) {\n if (hasOverflow) {\n overflow.push(tab);\n } else {\n visible.push(tab);\n }\n continue;\n }\n\n const tabWidth = tabEl.scrollWidth || tabEl.offsetWidth;\n const wouldFitWithoutDropdown = totalWidth + tabWidth <= availableWidth;\n const wouldFitWithDropdown =\n totalWidth + tabWidth + dropdownWidth <= availableWidth;\n\n if (!hasOverflow && wouldFitWithoutDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n } else if (!hasOverflow && wouldFitWithDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n hasOverflow = true;\n } else {\n hasOverflow = true;\n overflow.push(tab);\n }\n }\n\n setVisibleTabs(visible);\n setOverflowTabs(overflow);\n };\n\n const timeoutId = setTimeout(updateTabs, 100);\n\n const resizeObserver = new ResizeObserver(() => {\n setTimeout(updateTabs, 0);\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n if (tabsListRef.current) {\n resizeObserver.observe(tabsListRef.current);\n }\n\n window.addEventListener('resize', updateTabs);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateTabs);\n };\n }, [tabs]);\n\n const activeTabData = useMemo(\n () => tabs.find((tab) => tab.value === activeTab),\n [tabs, activeTab],\n );\n\n const renderTab = (tab: TabItem, originalIndex: number) => {\n const isActive = activeTab === tab.value;\n\n const tabClassName = cn(\n 'cn-entity-detail-header-tab relative z-10 px-4 py-3 text-sm font-medium transition-all duration-200 cursor-pointer',\n isActive ? 'text-primary' : 'text-muted-foreground hover:text-foreground',\n );\n\n const setRef = (el: HTMLElement | null) => {\n if (originalIndex >= 0) {\n tabRefs.current[originalIndex] = el;\n }\n };\n\n const underline = isActive ? (\n <div className=\"cn-entity-detail-header-underline absolute bottom-0 left-0 right-0 z-20 h-0.5 bg-primary\" />\n ) : null;\n\n if (tab.href && LinkComponent) {\n return (\n <LinkComponent\n key={tab.value}\n href={tab.href}\n data-active={isActive}\n className={tabClassName}\n ref={setRef as React.Ref<HTMLAnchorElement>}\n {...(locale && { locale })}\n >\n {tab.name}\n {underline}\n </LinkComponent>\n );\n }\n\n return (\n <button\n key={tab.value}\n type=\"button\"\n ref={setRef}\n onClick={() => handleTabChange(tab.value)}\n data-active={isActive}\n className={tabClassName}\n >\n {tab.name}\n {underline}\n </button>\n );\n };\n\n const renderDropdownItem = (tab: TabItem) => {\n const isActive = activeTab === tab.value;\n const itemClassName = cn(\n 'cursor-pointer',\n isActive && 'bg-accent font-medium',\n );\n\n if (tab.href && LinkComponent) {\n return (\n <DropdownMenuItem\n key={tab.value}\n render={\n <LinkComponent href={tab.href} {...(locale && { locale })}>\n {tab.name}\n </LinkComponent>\n }\n className={itemClassName}\n />\n );\n }\n\n return (\n <DropdownMenuItem\n key={tab.value}\n onClick={() => handleTabChange(tab.value)}\n className={itemClassName}\n >\n {tab.name}\n </DropdownMenuItem>\n );\n };\n\n if (loading) {\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n <Skeleton className=\"h-24 w-full rounded-xl\" />\n </div>\n );\n }\n\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n <Card className=\"overflow-hidden p-0 gap-0\">\n <div className=\"flex items-center justify-between gap-2 pl-1 pr-4 pt-4\">\n <div className=\"flex items-center \">\n {resolvedBackButton}\n {icon &&\n (isValidElement(icon)\n ? cloneElement(\n icon as React.ReactElement<{ className?: string }>,\n {\n className: cn(\n 'size-5',\n (icon as React.ReactElement<{ className?: string }>)\n .props.className,\n ),\n },\n )\n : icon)}\n <span className=\"text-lg font-semibold ml-2\">{title}</span>\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n <div ref={containerRef} className=\"w-full px-4\">\n <div className=\"mb-3 w-full sm:hidden\">\n <Select\n value={activeTab}\n onValueChange={(v) => handleTabChange(v as string)}\n >\n <SelectTrigger className=\"h-9 w-full gap-2 [&>svg:first-child]:shrink-0\">\n <IconMenu2 className=\"size-4 text-muted-foreground\" />\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {tabs.map((tab) => (\n <SelectItem key={tab.value} value={tab.value}>\n {tab.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div\n ref={tabsListRef}\n className=\"relative hidden items-center sm:flex\"\n >\n {visibleTabs.map((tab) => {\n const originalIndex = tabs.findIndex(\n (t) => t.value === tab.value,\n );\n return renderTab(tab, originalIndex);\n })}\n\n {overflowTabs.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger\n ref={dropdownTriggerRef}\n className={cn(\n 'cn-entity-detail-header-tab relative z-10 flex items-center gap-1 px-4 py-3 text-sm font-medium transition-all duration-200 cursor-pointer',\n overflowTabs.some((tab) => tab.value === activeTab)\n ? 'text-primary'\n : 'text-muted-foreground hover:text-foreground',\n )}\n data-active={overflowTabs.some(\n (tab) => tab.value === activeTab,\n )}\n >\n More\n <IconChevronDown className=\"h-4 w-4\" />\n {overflowTabs.some((tab) => tab.value === activeTab) && (\n <div className=\"cn-entity-detail-header-underline absolute bottom-0 left-0 right-0 z-20 h-0.5 bg-primary\" />\n )}\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"start\">\n <DropdownMenuContent className=\"min-w-40\">\n {overflowTabs.map(renderDropdownItem)}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n )}\n </div>\n </div>\n </Card>\n\n {activeTabData?.content && (\n <div className=\"flex-1\">{activeTabData.content}</div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconArrowLeft } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../../ui/tooltip';\n\ntype PageGoBackProps = {\n onBack: () => void;\n label?: string;\n children?: ReactNode;\n};\n\nexport function PageGoBack({\n onBack,\n label = 'Go back',\n children,\n}: PageGoBackProps) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger\n render={\n <Button variant=\"ghost\" onClick={onBack} aria-label={label} />\n }\n >\n {children ?? <IconArrowLeft className=\"size-5\" stroke={1.5} />}\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{label}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n","'use client';\n\nimport { Select as SelectPrimitive } from '@base-ui/react/select';\nimport { IconCheck, IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SELECT_TRIGGER_BASE_CN =\n 'flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nconst SELECT_CONTENT_BASE_CN =\n 'cn-menu-target relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none';\n\nconst SELECT_ITEM_BASE_CN =\n 'relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn('cn-select-group', className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn('cn-select-value', className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(SELECT_TRIGGER_BASE_CN, 'cn-select-trigger', className)}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon data-slot=\"select-trigger-icon\">\n <IconChevronDown className=\"cn-select-trigger-icon\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = 'bottom',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n SELECT_CONTENT_BASE_CN,\n 'cn-select-content',\n 'cn-select-content-logical',\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn('cn-select-label', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(SELECT_ITEM_BASE_CN, 'cn-select-item', className)}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"cn-select-item-text\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={<span className=\"cn-select-item-indicator\" />}\n >\n <IconCheck className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('cn-select-separator', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn('cn-select-scroll-up-button top-0 w-full', className)}\n {...props}\n >\n <IconChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn('cn-select-scroll-down-button bottom-0 w-full', className)}\n {...props}\n >\n <IconChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../ui/alert-dialog';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from '../ui/sheet';\n\ntype EntityDrawerProps = {\n title: ReactNode;\n form: ReactNode;\n actions: ReactNode;\n open: boolean;\n onClose: () => void;\n isDirty?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n};\n\nconst sizeClasses = {\n sm: 'w-full min-w-0 sm:!max-w-[26rem]',\n md: 'w-full min-w-0 sm:!max-w-[32rem]',\n lg: 'w-full min-w-0 sm:!max-w-[36rem]',\n xl: 'w-full min-w-0 sm:!max-w-[40rem]',\n};\n\nexport function EntityDrawer({\n title,\n form,\n actions,\n open,\n onClose,\n isDirty = false,\n size = 'xl',\n}: EntityDrawerProps) {\n const [showConfirm, setShowConfirm] = useState(false);\n\n const handleClose = () => {\n if (isDirty) {\n setShowConfirm(true);\n } else {\n onClose();\n }\n };\n\n const handleConfirmDiscard = () => {\n setShowConfirm(false);\n onClose();\n };\n\n return (\n <>\n <Sheet\n open={open}\n onOpenChange={(\n isOpen: boolean,\n details?: { reason?: string; cancel?: () => void },\n ) => {\n if (!isOpen) {\n if (\n isDirty &&\n (details?.reason === 'escape-key' ||\n details?.reason === 'interact-outside')\n ) {\n details?.cancel?.();\n setShowConfirm(true);\n } else {\n handleClose();\n }\n }\n }}\n >\n <SheetContent\n className={`${sizeClasses[size]} flex min-h-0 flex-col overflow-hidden p-0`}\n >\n <SheetHeader className=\"cn-entity-drawer-header p-4\">\n <SheetTitle className=\"text-lg font-semibold\">{title}</SheetTitle>\n </SheetHeader>\n <div className=\"cn-entity-drawer-body p-4\">{form}</div>\n <div className=\"cn-entity-drawer-footer p-4\">{actions}</div>\n </SheetContent>\n </Sheet>\n\n <AlertDialog open={showConfirm} onOpenChange={setShowConfirm}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Discard changes?</AlertDialogTitle>\n <AlertDialogDescription>\n You have unsaved changes. Are you sure you want to discard them?\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirmDiscard}\n variant=\"destructive\"\n >\n Discard\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","'use client';\n\nimport { IconChevronRight, IconPencil, IconPlus } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\n\ntype EntityDrawerTriggerProps = {\n mode: 'new' | 'edit';\n entity?: string;\n label?: string;\n children: (open: boolean, onClose: () => void) => ReactNode;\n variant?: 'default' | 'icon' | 'outline';\n disabled?: boolean;\n className?: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport function EntityDrawerTrigger({\n mode,\n entity,\n label,\n children,\n variant = 'default',\n disabled = false,\n className,\n open: controlledOpen,\n onOpenChange,\n}: EntityDrawerTriggerProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const handleOpen = () => {\n if (isControlled) {\n onOpenChange?.(true);\n } else {\n setUncontrolledOpen(true);\n }\n };\n\n const handleClose = () => {\n if (isControlled) {\n onOpenChange?.(false);\n } else {\n setUncontrolledOpen(false);\n }\n };\n\n const buttonLabel =\n label || (mode === 'new' ? `New ${entity}` : `Edit ${entity}`);\n\n return (\n <>\n {mode === 'edit' && variant === 'icon' && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={`size-8 opacity-0 group-hover:opacity-100 transition-opacity ${className}`}\n onClick={handleOpen}\n disabled={disabled}\n >\n <IconChevronRight className=\"size-4\" />\n </Button>\n )}\n {mode === 'edit' && variant !== 'icon' && (\n <Button\n variant={variant === 'outline' ? 'outline' : 'default'}\n size=\"sm\"\n onClick={handleOpen}\n disabled={disabled}\n className={className}\n leftIcon={<IconPencil className=\"size-4\" />}\n >\n {buttonLabel}\n </Button>\n )}\n {mode === 'new' && (\n <Button\n variant={variant === 'outline' ? 'outline' : 'default'}\n size=\"sm\"\n onClick={handleOpen}\n disabled={disabled}\n className={cn(\n 'max-sm:h-8 max-sm:w-8 max-sm:shrink-0 max-sm:justify-center max-sm:p-0',\n className,\n )}\n leftIcon={<IconPlus className=\"size-4\" />}\n >\n <span className=\"hidden sm:inline\">{buttonLabel}</span>\n </Button>\n )}\n {open && children(open, handleClose)}\n </>\n );\n}\n","'use client';\n\nimport { IconPackage, IconPlus } from '@tabler/icons-react';\nimport type { ComponentType, ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from '../ui/empty';\n\ntype EntityEmptyStateProps = {\n icon?: ComponentType<Record<string, unknown>>;\n title?: string;\n description?: string;\n entityName?: string;\n actionLabel?: string;\n onAction?: () => void;\n children?: ReactNode;\n className?: string;\n};\n\nexport function EntityEmptyState({\n icon: Icon = IconPackage,\n title,\n description,\n entityName = 'item',\n actionLabel,\n onAction,\n children,\n className,\n}: EntityEmptyStateProps) {\n const defaultTitle = `No ${entityName}s yet`;\n const defaultDescription = `Get started by creating your first ${entityName}.`;\n const defaultActionLabel = `Create ${entityName}`;\n\n return (\n <Empty className={cn('cn-entity-empty-state w-full', className)}>\n <EmptyHeader className=\"flex w-full max-w-lg flex-col items-center text-center\">\n <EmptyMedia variant=\"icon\">\n <Icon className=\"size-5\" />\n </EmptyMedia>\n <EmptyTitle>{title ?? defaultTitle}</EmptyTitle>\n <EmptyDescription>{description ?? defaultDescription}</EmptyDescription>\n </EmptyHeader>\n <EmptyContent className=\"flex w-full items-center justify-center\">\n {children ??\n (onAction && (\n <Button\n onClick={onAction}\n leftIcon={<IconPlus className=\"size-4\" />}\n >\n {actionLabel ?? defaultActionLabel}\n </Button>\n ))}\n </EmptyContent>\n </Empty>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nfunction Empty({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"empty\" className={cn('cn-empty', className)} {...props} />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn('cn-empty-header', className)}\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n 'cn-empty-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'cn-empty-media-default',\n icon: 'cn-empty-media-icon',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn('cn-empty-title', className)}\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn('cn-empty-description', className)}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn('cn-empty-content', className)}\n {...props}\n />\n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","'use client';\n\nimport { IconFilter } from '@tabler/icons-react';\nimport { parseAsInteger, parseAsString, useQueryState } from 'nuqs';\nimport { cn } from '../../lib/utils';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype EntityFilterProps = {\n options: FilterOption[];\n placeholder?: string;\n className?: string;\n label?: string;\n};\n\nexport function EntityFilter({\n options,\n placeholder = 'Filter',\n className,\n label,\n}: EntityFilterProps) {\n const [value, setValue] = useQueryState('filter', parseAsString);\n const [, setPage] = useQueryState('page', parseAsInteger.withDefault(1));\n\n const hasAllOption = options.some((opt) => opt.value === '');\n const allLabel = options.find((opt) => opt.value === '')?.label || 'All';\n const isAll = !value || value === '__all__';\n let displayValue: string | undefined;\n if (isAll) {\n displayValue = hasAllOption ? '' : undefined;\n } else {\n displayValue = value ?? undefined;\n }\n\n const handleChange = (newValue: string) => {\n setValue(newValue === '' ? null : newValue || null);\n setPage(1);\n };\n\n const validOptions = options.filter((opt) => opt.value !== '');\n const filterLabel =\n displayValue === ''\n ? allLabel\n : (options.find((o) => o.value === displayValue)?.label ?? placeholder);\n const showPlaceholder = displayValue === undefined;\n\n return (\n <div className={cn('flex w-full items-center gap-2', className)}>\n {label && (\n <span className=\"shrink-0 text-sm text-muted-foreground\">{label}</span>\n )}\n <div className=\"min-w-0 flex-1\">\n <Select\n value={displayValue}\n onValueChange={(v) => handleChange(v as string)}\n >\n <SelectTrigger className=\"h-9 w-full min-w-[150px]\">\n <IconFilter className=\"size-4\" />\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n showPlaceholder && 'text-muted-foreground',\n )}\n >\n {filterLabel}\n </span>\n </SelectTrigger>\n <SelectContent>\n {hasAllOption && (\n <SelectItem key=\"\" value=\"\">\n {allLabel}\n </SelectItem>\n )}\n {validOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { IconFilter } from '@tabler/icons-react';\nimport { cn } from '../../lib/utils';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype FilterOption = { label: string; value: string };\n\ntype EntityFilterStateProps = {\n value: string;\n onValueChange: (v: string) => void;\n options: FilterOption[];\n placeholder?: string;\n className?: string;\n};\n\nexport function EntityFilterState({\n value,\n onValueChange,\n options,\n placeholder = 'Filter',\n className,\n}: EntityFilterStateProps) {\n const hasAll = options.some((o) => o.value === '');\n const allLabel = options.find((o) => o.value === '')?.label ?? 'All';\n const displayValue = value === '' || value === '__all__' ? '' : value;\n const label =\n displayValue === ''\n ? allLabel\n : (options.find((o) => o.value === displayValue)?.label ?? placeholder);\n\n return (\n <div className={cn('flex w-full items-center gap-2', className)}>\n <div className=\"min-w-0 flex-1\">\n <Select\n value={displayValue}\n onValueChange={(v) => onValueChange(v === '' ? '' : (v as string))}\n >\n <SelectTrigger className=\"h-9 w-full min-w-[150px]\">\n <IconFilter className=\"size-4\" />\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n !displayValue && 'text-muted-foreground',\n )}\n >\n {label}\n </span>\n </SelectTrigger>\n <SelectContent>\n {hasAll && <SelectItem value=\"\">{allLabel}</SelectItem>}\n {options\n .filter((o) => o.value !== '')\n .map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport {\n IconDeviceFloppy,\n IconRotateClockwise,\n IconTrash,\n} from '@tabler/icons-react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from '../ui/alert-dialog';\nimport { Button } from '../ui/button';\nimport { Spinner } from '../ui/spinner';\n\ntype EntityFormActionsProps = {\n mode: 'new' | 'edit';\n onSubmit?: () => void;\n onReset?: () => void;\n onDelete?: () => void;\n onCancel?: () => void;\n isSubmitting?: boolean;\n isDeleting?: boolean;\n disabled?: boolean;\n submitLabel?: string;\n deleteLabel?: string;\n itemName?: string;\n};\n\nexport function EntityFormActions({\n mode,\n onSubmit,\n onReset,\n onDelete,\n onCancel,\n isSubmitting = false,\n isDeleting = false,\n disabled = false,\n submitLabel,\n deleteLabel = 'Delete',\n itemName = 'item',\n}: EntityFormActionsProps) {\n const defaultSubmitLabel = mode === 'new' ? 'Create' : 'Update';\n const label = submitLabel || defaultSubmitLabel;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onSubmit && (\n <Button\n onClick={onSubmit}\n disabled={disabled || isSubmitting}\n className=\"cursor-pointer\"\n leftIcon={\n isSubmitting ? (\n <Spinner className=\"size-4\" />\n ) : (\n <IconDeviceFloppy className=\"size-4\" />\n )\n }\n >\n {label}\n </Button>\n )}\n\n {mode === 'new' && onReset && (\n <Button\n variant=\"outline\"\n onClick={onReset}\n disabled={disabled}\n className=\"cursor-pointer\"\n >\n <IconRotateClockwise className=\"size-4\" />\n Reset\n </Button>\n )}\n\n {mode === 'edit' && onDelete && (\n <AlertDialog>\n <AlertDialogTrigger\n render={\n <Button\n variant=\"destructive\"\n disabled={disabled || isDeleting}\n className=\"cursor-pointer\"\n leftIcon={\n isDeleting ? (\n <Spinner className=\"size-4\" />\n ) : (\n <IconTrash className=\"size-4\" />\n )\n }\n />\n }\n >\n {deleteLabel}\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete this {itemName}. This action cannot\n be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={onDelete} variant=\"destructive\">\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )}\n\n {onCancel && (\n <Button\n variant=\"ghost\"\n onClick={onCancel}\n disabled={disabled}\n className=\"cursor-pointer\"\n >\n Cancel\n </Button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Card } from '../ui/card';\n\ntype EntityHeaderProps = {\n title: ReactNode;\n icon?: ReactNode;\n actions?: ReactNode;\n search?: ReactNode;\n filter?: ReactNode;\n sort?: ReactNode;\n view?: ReactNode;\n /** When false, render without Card wrapper (e.g. inside EntitySection) */\n wrapInCard?: boolean;\n};\n\nexport function EntityHeader({\n title,\n icon,\n actions,\n search,\n filter,\n sort,\n view,\n wrapInCard = true,\n}: EntityHeaderProps) {\n const [toolbarOpen, setToolbarOpen] = useState(false);\n const hasToolbar = [search, filter, sort, view].some(Boolean);\n const hasTitleRow = title || icon || actions;\n\n const content = (\n <div className=\"flex flex-col gap-4\">\n {hasTitleRow && (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {icon}\n <span className=\"text-lg font-semibold\">{title}</span>\n </div>\n <div className=\"flex items-center gap-3\">\n {actions}\n {hasToolbar && (\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n className=\"md:hidden\"\n onClick={() => setToolbarOpen((o) => !o)}\n aria-expanded={toolbarOpen}\n aria-label={toolbarOpen ? 'Hide filters' : 'Show filters'}\n >\n {toolbarOpen ? (\n <IconChevronUp className=\"h-4 w-4\" />\n ) : (\n <IconChevronDown className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n </div>\n </div>\n )}\n {hasToolbar && (\n <div\n className={cn(\n 'flex flex-col gap-2 md:flex-row md:items-center md:gap-2 md:justify-between',\n !toolbarOpen && 'hidden',\n 'md:flex',\n )}\n >\n <div className=\"w-full min-w-0 flex-1 md:min-w-[12rem]\">{search}</div>\n <div className=\"flex w-full shrink-0 flex-col gap-2 *:w-full md:w-auto md:flex-row md:items-center md:gap-2 md:*:w-auto\">\n {filter}\n {sort}\n {view}\n </div>\n </div>\n )}\n </div>\n );\n\n return wrapInCard ? <Card className=\"p-4\">{content}</Card> : content;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Skeleton } from '../ui/skeleton';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '../ui/table';\n\ntype EntityLoadingStateProps = {\n view: 'table' | 'card';\n rowCount?: number;\n columnCount?: number;\n cardCount?: number;\n className?: string;\n};\n\nexport function EntityLoadingState({\n view,\n rowCount = 5,\n columnCount = 5,\n cardCount = 8,\n className,\n}: EntityLoadingStateProps) {\n const makeKey = React.useCallback(() => {\n return (\n globalThis.crypto?.randomUUID?.() ??\n `${Date.now()}-${Math.random().toString(36).slice(2)}`\n );\n }, []);\n\n const headerKeys = React.useMemo(() => {\n return Array.from({ length: columnCount }, makeKey);\n }, [columnCount, makeKey]);\n\n const rowKeys = React.useMemo(() => {\n return Array.from({ length: rowCount }, makeKey);\n }, [rowCount, makeKey]);\n\n const cellKeys = React.useMemo(() => {\n return rowKeys.map(() => Array.from({ length: columnCount }, makeKey));\n }, [rowKeys, columnCount, makeKey]);\n\n const cardKeys = React.useMemo(() => {\n return Array.from({ length: cardCount }, makeKey);\n }, [cardCount, makeKey]);\n\n if (view === 'table') {\n return (\n <div className={cn('cn-entity-loading-table', className)}>\n <Table>\n <TableHeader>\n <TableRow>\n {Array.from({ length: columnCount }).map((_, i) => (\n <TableHead key={headerKeys[i]}>\n <Skeleton className=\"h-4 w-24\" />\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {Array.from({ length: rowCount }).map((_, rowIndex) => (\n <TableRow key={rowKeys[rowIndex]}>\n {Array.from({ length: columnCount }).map((_, colIndex) => (\n <TableCell key={cellKeys[rowIndex][colIndex]}>\n <Skeleton className=\"h-4 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4',\n className,\n )}\n >\n {Array.from({ length: cardCount }).map((_, i) => (\n <div key={cardKeys[i]} className=\"cn-entity-loading-card\">\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-4 w-4 rounded-full\" />\n <Skeleton className=\"h-5 w-32\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-5 w-16\" />\n <Skeleton className=\"h-5 w-16\" />\n </div>\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-3 w-24\" />\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"cn-table-container\">\n <table\n data-slot=\"table\"\n className={cn('cn-table', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('cn-table-header', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('cn-table-body', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('cn-table-footer', className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn('cn-table-row', className)}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn('cn-table-head', className)}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn('cn-table-cell', className)}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('cn-table-caption', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","'use client';\n\nimport { IconSearch, IconX } from '@tabler/icons-react';\nimport { parseAsInteger, parseAsString, useQueryState } from 'nuqs';\nimport { useRef } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { cn } from '../../lib/utils';\nimport { Input } from '../ui/input';\n\ntype EntitySearchProps = {\n paramKey?: string;\n placeholder?: string;\n className?: string;\n};\n\nexport function EntitySearch({\n paramKey = 'search',\n placeholder = 'Search...',\n className,\n}: EntitySearchProps) {\n const [value, setValue] = useQueryState(\n paramKey,\n parseAsString.withDefault(''),\n );\n const [, setPage] = useQueryState('page', parseAsInteger.withDefault(1));\n const ref = useRef<HTMLInputElement>(null);\n\n const handleSearch = useDebouncedCallback((term: string) => {\n setValue(term || null);\n setPage(1);\n }, 300);\n\n const handleClear = () => {\n setValue(null);\n setPage(1);\n if (ref.current) {\n ref.current.value = '';\n }\n };\n\n return (\n <div className={cn('relative w-full min-w-0', className)}>\n <IconSearch className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n ref={ref}\n placeholder={placeholder}\n defaultValue={value}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full min-w-0 pl-9 pr-9\"\n />\n {value && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground cursor-pointer\"\n >\n <IconX className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconSearch, IconX } from '@tabler/icons-react';\nimport { useRef } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { cn } from '../../lib/utils';\nimport { Input } from '../ui/input';\n\ntype EntitySearchStateProps = {\n value: string;\n onValueChange: (v: string) => void;\n placeholder?: string;\n className?: string;\n debounceMs?: number;\n};\n\nexport function EntitySearchState({\n value,\n onValueChange,\n placeholder = 'Search...',\n className,\n debounceMs = 300,\n}: EntitySearchStateProps) {\n const ref = useRef<HTMLInputElement>(null);\n const handleSearch = useDebouncedCallback((term: string) => {\n onValueChange(term);\n }, debounceMs);\n\n const handleClear = () => {\n onValueChange('');\n if (ref.current) {\n ref.current.value = '';\n }\n };\n\n return (\n <div className={cn('relative w-full min-w-0', className)}>\n <IconSearch className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n ref={ref}\n placeholder={placeholder}\n defaultValue={value}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full min-w-0 pl-9 pr-9\"\n />\n {value ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground cursor-pointer\"\n >\n <IconX className=\"h-4 w-4\" />\n </button>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { Card } from '../../ui/card';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '../../ui/collapsible';\n\ntype SectionProps = {\n title: ReactNode;\n children: ReactNode;\n /** Shown in header before expand/collapse button, only when section is open */\n actions?: ReactNode;\n defaultOpen?: boolean;\n lazy?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n headerClassName?: string;\n contentClassName?: string;\n};\n\nexport function Section({\n title,\n children,\n actions,\n defaultOpen = false,\n lazy = false,\n onOpenChange,\n className,\n headerClassName,\n contentClassName,\n}: SectionProps) {\n const [open, setOpen] = useState(defaultOpen);\n const handleOpenChange = (next: boolean) => {\n setOpen(next);\n onOpenChange?.(next);\n };\n return (\n <Collapsible open={open} onOpenChange={handleOpenChange}>\n <Card className={cn('gap-0 p-0', className)}>\n <div\n className={cn(\n 'flex items-center justify-between gap-2 p-4 has-[[data-panel-open]]:border-b',\n headerClassName,\n )}\n >\n <div className=\"text-lg font-semibold\">{title}</div>\n <div className=\"flex items-center gap-2\">\n {open && actions}\n <CollapsibleTrigger\n render={\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"group border-primary text-primary hover:bg-primary/10 hover:text-primary\"\n />\n }\n >\n <span className=\"group-data-[panel-open]:hidden\">Expand</span>\n <span className=\"hidden group-data-[panel-open]:inline\">\n Collapse\n </span>\n </CollapsibleTrigger>\n </div>\n </div>\n <CollapsibleContent className=\"overflow-hidden\">\n <div className={cn('p-4', contentClassName)}>\n {lazy ? open && children : children}\n </div>\n </CollapsibleContent>\n </Card>\n </Collapsible>\n );\n}\n","'use client';\n\nimport { Collapsible as CollapsiblePrimitive } from '@base-ui/react/collapsible';\nimport { cn } from '../../lib/utils';\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Trigger>) {\n return (\n <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n );\n}\n\nfunction CollapsibleContent({\n className,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Panel>) {\n return (\n <CollapsiblePrimitive.Panel\n data-slot=\"collapsible-content\"\n className={cn(\n 'data-[ending-style]:animate-accordion-up data-[starting-style]:animate-accordion-down overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","'use client';\n\nimport {\n IconSortAscendingLetters,\n IconSortDescendingLetters,\n} from '@tabler/icons-react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype SortOption = { label: string; value: string };\n\ntype EntitySortStateProps = {\n sort: string;\n order: 'asc' | 'desc';\n onSortChange: (v: string) => void;\n onOrderChange: (v: 'asc' | 'desc') => void;\n options: SortOption[];\n className?: string;\n};\n\nexport function EntitySortState({\n sort,\n order,\n onSortChange,\n onOrderChange,\n options,\n className,\n}: EntitySortStateProps) {\n const sortLabel = options.find((o) => o.value === sort)?.label;\n\n return (\n <div className={cn('flex w-full items-center gap-0', className)}>\n <div className=\"min-w-0 flex-1\">\n <Select value={sort} onValueChange={(v) => onSortChange(v as string)}>\n <SelectTrigger className=\"h-9 w-full min-w-[150px] rounded-r-none border-r-0\">\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n !sortLabel && 'text-muted-foreground',\n )}\n >\n {sortLabel ?? 'Sort by'}\n </span>\n </SelectTrigger>\n <SelectContent>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-9 shrink-0 rounded-l-none\"\n onClick={() => onOrderChange(order === 'asc' ? 'desc' : 'asc')}\n >\n {order === 'asc' ? (\n <IconSortAscendingLetters className=\"h-4 w-4\" />\n ) : (\n <IconSortDescendingLetters className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport { IconGridDots, IconList, IconTable } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Tabs, TabsList, TabsTrigger } from '../ui/tabs';\n\nexport type ViewOption = 'table' | 'card' | 'list';\n\ntype EntityViewToggleStateProps = {\n value: ViewOption;\n onValueChange: (v: ViewOption) => void;\n views?: ViewOption[];\n className?: string;\n};\n\nconst viewIcons: Record<ViewOption, ReactNode> = {\n table: <IconTable className=\"size-4\" />,\n card: <IconGridDots className=\"size-4\" />,\n list: <IconList className=\"size-4\" />,\n};\n\nexport function EntityViewToggleState({\n value,\n onValueChange,\n views = ['table', 'card'],\n className,\n}: EntityViewToggleStateProps) {\n return (\n <Tabs\n value={value}\n onValueChange={(v) => onValueChange(v as ViewOption)}\n className={cn('w-full! md:w-auto!', className)}\n >\n <TabsList className=\"cn-entity-view-toggle w-full! md:w-auto!\">\n {views.map((v) => (\n <TabsTrigger\n key={v}\n value={v}\n aria-label={`${v} view`}\n className=\"min-w-0 flex-1 px-3\"\n >\n {viewIcons[v]}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","'use client';\n\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Tabs({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n 'cn-tabs group/tabs flex flex-col gap-2 data-[orientation=vertical]:flex-row',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst tabsListVariants = cva(\n 'cn-tabs-list group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col',\n {\n variants: {\n variant: {\n default: 'bg-muted',\n line: 'gap-1 bg-transparent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants> & {\n variant?: 'default' | 'line' | 'outline' | 'pills';\n radius?: unknown;\n }) {\n const variant = props.variant === 'line' ? 'line' : ('default' as const);\n const { radius: _radius, ...rest } = props;\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...rest}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Tab>) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n 'cn-tabs-trigger focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n 'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent',\n 'data-active:bg-background dark:data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 data-active:text-foreground',\n 'after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Panel>) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn('cn-tabs-content flex-1 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { Section } from '../layout/section/section';\nimport { EntityFilterState } from './entity-filter-state';\nimport { EntityHeader } from './entity-header';\nimport { EntitySearchState } from './entity-search-state';\nimport { EntitySortState } from './entity-sort-state';\nimport { EntityViewToggleState } from './entity-view-toggle-state';\nimport type { EntitySectionView } from './use-entity-section-state';\n\nexport type EntitySectionState = {\n search: string;\n setSearch: (v: string) => void;\n filter: string;\n setFilter: (v: string) => void;\n sort: string;\n setSort: (v: string) => void;\n order: 'asc' | 'desc';\n setOrder: (v: 'asc' | 'desc') => void;\n view: EntitySectionView;\n setView: (v: EntitySectionView) => void;\n page: number;\n setPage: (v: number) => void;\n pageSize: number;\n setPageSize: (v: number) => void;\n setPageReset: () => void;\n filterOptions: { label: string; value: string }[];\n sortOptions: { label: string; value: string }[];\n views: EntitySectionView[];\n};\n\ntype EntitySectionConfig = {\n searchPlaceholder?: string;\n filterOptions?: { label: string; value: string }[];\n sortOptions?: { label: string; value: string }[];\n views?: EntitySectionView[];\n};\n\ntype EntitySectionProps = {\n title: ReactNode;\n icon?: ReactNode;\n actions?: ReactNode;\n config?: EntitySectionConfig;\n state: EntitySectionState;\n onOpenChange?: (open: boolean) => void;\n /** When false, the toolbar row (search, filter, sort, view) is not rendered */\n showToolbar?: boolean;\n children: (state: EntitySectionState) => ReactNode;\n};\n\nexport function EntitySection({\n title,\n icon,\n actions,\n config = {},\n state,\n onOpenChange,\n showToolbar = true,\n children,\n}: EntitySectionProps) {\n const {\n search,\n setSearch,\n filter,\n setFilter,\n sort,\n setSort,\n order,\n setOrder,\n view,\n setView,\n setPageReset,\n filterOptions,\n sortOptions,\n views,\n } = state;\n\n const searchPlaceholder = config.searchPlaceholder ?? 'Search...';\n const hasFilter = (config.filterOptions ?? filterOptions).length > 0;\n const hasSort = (config.sortOptions ?? sortOptions).length > 0;\n const hasView = (config.views ?? views).length > 0;\n\n const handleSearch = (v: string) => {\n setSearch(v);\n setPageReset();\n };\n const handleFilter = (v: string) => {\n setFilter(v);\n setPageReset();\n };\n const handleSort = (v: string) => {\n setSort(v);\n setPageReset();\n };\n\n const filterOpts = config.filterOptions ?? filterOptions;\n const sortOpts = config.sortOptions ?? sortOptions;\n const viewOpts = config.views ?? views;\n\n return (\n <Section title={title} onOpenChange={onOpenChange} actions={actions}>\n <div className=\"space-y-4\">\n {showToolbar && (\n <EntityHeader\n wrapInCard={false}\n title=\"\"\n icon={icon}\n search={\n <EntitySearchState\n value={search}\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n />\n }\n filter={\n hasFilter ? (\n <EntityFilterState\n value={filter}\n onValueChange={handleFilter}\n options={filterOpts}\n placeholder=\"Filter\"\n />\n ) : undefined\n }\n sort={\n hasSort ? (\n <EntitySortState\n sort={sort}\n order={order}\n onSortChange={handleSort}\n onOrderChange={(v) => {\n setOrder(v);\n setPageReset();\n }}\n options={sortOpts}\n />\n ) : undefined\n }\n view={\n hasView ? (\n <EntityViewToggleState\n value={view}\n onValueChange={setView}\n views={viewOpts}\n />\n ) : undefined\n }\n />\n )}\n {children(state)}\n </div>\n </Section>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { DisplayTable, Tbody, Td, Th, Thead, Tr } from '../display-table';\nimport { Button } from '../ui/button';\nimport { Checkbox } from '../ui/checkbox';\nimport { Chip } from '../ui/chip';\nimport { DataTablePagination } from '../ui/data-table/data-table-pagination';\nimport { RadioGroup, RadioGroupItem } from '../ui/radio-group';\nimport { EntityEmptyState } from './entity-empty-state';\nimport { EntityFilterState } from './entity-filter-state';\nimport { EntityHeader } from './entity-header';\nimport { EntityLoadingState } from './entity-loading-state';\nimport { EntitySearchState } from './entity-search-state';\nimport type { EntitySectionState } from './entity-section';\nimport {\n EntitySelectorModal,\n type EntitySelectorModalSize,\n} from './entity-selector-modal';\nimport { EntitySortState } from './entity-sort-state';\nimport { EntityViewToggleState } from './entity-view-toggle-state';\nimport { useEntityPagination } from './use-entity-pagination';\n\ntype BaseItem = { id: string };\n\nexport type EntitySelectorColumn<T> = {\n key: string;\n header: ReactNode;\n cell: (item: T) => ReactNode;\n className?: string;\n};\n\nexport type EntitySelectorConfig<T extends BaseItem> = {\n title: string;\n modalSize?: EntitySelectorModalSize;\n contentClassName?: string;\n multiple?: boolean;\n minSelect?: number;\n maxSelect?: number;\n entityName: string;\n entityIcon: React.ComponentType<{ className?: string }>;\n emptyTitle?: string;\n emptyDescription?: string;\n columns: EntitySelectorColumn<T>[];\n columnCount?: number;\n getItemLabel: (item: T) => string;\n searchPlaceholder?: string;\n filterOptions?: { label: string; value: string }[];\n sortOptions?: { label: string; value: string }[];\n showViewToggle?: boolean;\n wrapHeaderInCard?: boolean;\n renderCard?: (item: T, selected: boolean, onToggle: () => void) => ReactNode;\n};\n\nexport type EntitySelectorProps<T extends BaseItem> = {\n trigger: ReactNode;\n config: EntitySelectorConfig<T>;\n onSelect: (items: T[]) => void;\n items: T[];\n total?: number;\n isLoading?: boolean;\n state: EntitySectionState;\n};\n\nfunction EntitySelectorFooter({\n onCancel,\n onSelect,\n selectedCount,\n multiple,\n minSelect,\n maxSelect,\n}: {\n onCancel: () => void;\n onSelect: () => void;\n selectedCount: number;\n multiple: boolean;\n minSelect?: number;\n maxSelect?: number;\n}) {\n const min = minSelect ?? (multiple ? 1 : 1);\n const meetsMin = selectedCount >= min;\n const meetsMax = maxSelect === undefined || selectedCount <= maxSelect;\n const canSelect = multiple ? meetsMin && meetsMax : selectedCount === 1;\n let hint = '';\n if (multiple) {\n if (minSelect !== undefined && maxSelect !== undefined) {\n hint = ` (${selectedCount}/${minSelect}-${maxSelect})`;\n } else if (minSelect !== undefined) {\n hint = ` (${selectedCount}, min ${minSelect})`;\n } else if (maxSelect !== undefined) {\n hint = ` (${selectedCount}/${maxSelect})`;\n } else if (selectedCount > 0) {\n hint = ` (${selectedCount})`;\n }\n }\n return (\n <>\n <Button variant=\"outline\" size=\"md\" onClick={onCancel}>\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"md\"\n onClick={onSelect}\n disabled={!canSelect}\n >\n Select{hint}\n </Button>\n </>\n );\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: selector combines header, table, cards, selection, pagination\nexport function EntitySelector<T extends BaseItem>({\n trigger,\n config,\n onSelect,\n items,\n total: totalProp,\n isLoading = false,\n state,\n}: EntitySelectorProps<T>) {\n const {\n title,\n modalSize = 'xl',\n contentClassName,\n multiple = false,\n minSelect,\n maxSelect,\n entityName,\n entityIcon: EntityIcon,\n emptyTitle,\n emptyDescription,\n columns,\n columnCount,\n getItemLabel,\n searchPlaceholder,\n filterOptions = [],\n sortOptions = [],\n showViewToggle = true,\n wrapHeaderInCard = true,\n renderCard,\n } = config;\n\n const [open, setOpen] = useState(false);\n const [rowSelection, setRowSelection] = useState<Record<string, boolean>>({});\n const [selectedItems, setSelectedItems] = useState<T[]>([]);\n\n const handleOpenChange = useCallback((next: boolean) => setOpen(next), []);\n const handleSelect = useCallback(() => {\n onSelect(selectedItems);\n handleOpenChange(false);\n }, [selectedItems, onSelect, handleOpenChange]);\n\n const openSelector = useCallback(() => {\n setRowSelection({});\n setSelectedItems([]);\n setOpen(true);\n }, []);\n\n useEffect(() => {\n const ids = Object.entries(rowSelection)\n .filter(([, v]) => v)\n .map(([id]) => id);\n setSelectedItems((prev) => {\n const next = ids\n .map(\n (id) =>\n items.find((u) => u.id === id) ?? prev.find((u) => u.id === id),\n )\n .filter((u): u is T => Boolean(u));\n if (\n next.length === prev.length &&\n next.every((u, i) => u.id === prev[i]?.id)\n ) {\n return prev;\n }\n return next;\n });\n }, [rowSelection, items]);\n\n const handleRowSelectionChange = useCallback(\n (\n updater:\n | Record<string, boolean>\n | ((prev: Record<string, boolean>) => Record<string, boolean>),\n ) => {\n setRowSelection((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater;\n if (!multiple) {\n const keys = Object.entries(next)\n .filter(([, v]) => v)\n .map(([k]) => k);\n const last = keys.at(-1);\n if (keys.length > 1 && last) {\n return { [last]: true };\n }\n }\n return next;\n });\n },\n [multiple],\n );\n\n const onToggleRowSelection = useCallback(\n (rowId: string, selected: boolean) => {\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: selection rules for single/multi + maxSelect\n handleRowSelectionChange((prev) => {\n if (multiple) {\n if (selected && maxSelect !== undefined) {\n const currentCount = Object.values(prev).filter(Boolean).length;\n if (currentCount >= maxSelect) {\n return prev;\n }\n }\n return { ...prev, [rowId]: selected };\n }\n return selected ? { [rowId]: true } : {};\n });\n },\n [multiple, maxSelect, handleRowSelectionChange],\n );\n\n const selectedId =\n Object.keys(rowSelection).find((id) => rowSelection[id]) ?? '';\n const { total, pageCount } = useEntityPagination({\n items,\n total: totalProp,\n pageSize: state.pageSize,\n });\n const colCount = columnCount ?? columns.length + 1;\n\n const handleSearch = useCallback(\n (v: string) => {\n state.setSearch(v);\n state.setPageReset();\n },\n [state],\n );\n const handleFilter = useCallback(\n (v: string) => {\n state.setFilter(v);\n state.setPageReset();\n },\n [state],\n );\n const handleSort = useCallback(\n (v: string) => {\n state.setSort(v);\n state.setPageReset();\n },\n [state],\n );\n const handleOrder = useCallback(\n (v: 'asc' | 'desc') => {\n state.setOrder(v);\n state.setPageReset();\n },\n [state],\n );\n\n let content: ReactNode;\n if (isLoading) {\n content = (\n <EntityLoadingState\n view={state.view === 'list' ? 'table' : state.view}\n rowCount={state.pageSize}\n columnCount={colCount}\n cardCount={state.pageSize}\n />\n );\n } else if (total === 0) {\n content = (\n <EntityEmptyState\n icon={EntityIcon}\n entityName={entityName}\n title={emptyTitle ?? `No ${entityName}s found`}\n description={emptyDescription ?? 'Try adjusting search or filters.'}\n />\n );\n } else {\n content = (\n <>\n <EntityHeader\n wrapInCard={wrapHeaderInCard}\n title=\"\"\n search={\n searchPlaceholder !== undefined && (\n <EntitySearchState\n value={state.search}\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n />\n )\n }\n filter={\n filterOptions.length > 0 ? (\n <EntityFilterState\n value={state.filter}\n onValueChange={handleFilter}\n options={filterOptions}\n placeholder=\"Filter\"\n />\n ) : undefined\n }\n sort={\n sortOptions.length > 0 ? (\n <EntitySortState\n sort={state.sort}\n order={state.order}\n onSortChange={handleSort}\n onOrderChange={handleOrder}\n options={sortOptions}\n />\n ) : undefined\n }\n view={\n showViewToggle && renderCard ? (\n <EntityViewToggleState\n value={state.view}\n onValueChange={state.setView}\n views={['table', 'card']}\n />\n ) : undefined\n }\n />\n {state.view === 'table' || !renderCard ? (\n <div className=\"space-y-4\">\n {multiple ? (\n <DisplayTable withTableBorder>\n <Thead>\n <Tr>\n <Th className=\"w-[50px]\" />\n {columns.map((col) => (\n <Th key={col.key} className={col.className}>\n {col.header}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {items.map((item) => (\n <Tr\n key={item.id}\n className=\"group\"\n data-state={\n rowSelection[item.id] ? 'selected' : undefined\n }\n >\n <Td>\n <Checkbox\n checked={!!rowSelection[item.id]}\n onCheckedChange={(checked) =>\n onToggleRowSelection(item.id, !!checked)\n }\n aria-label={`Select ${getItemLabel(item)}`}\n />\n </Td>\n {columns.map((col) => (\n <Td key={col.key} className={col.className}>\n {col.cell(item)}\n </Td>\n ))}\n </Tr>\n ))}\n </Tbody>\n </DisplayTable>\n ) : (\n <div className=\"mb-4\">\n <RadioGroup\n className=\"contents\"\n value={selectedId}\n onChange={(valueOrEvent: unknown) => {\n const id =\n typeof valueOrEvent === 'string'\n ? valueOrEvent\n : (valueOrEvent as { target?: { value?: string } })\n .target?.value;\n if (id) {\n handleRowSelectionChange(() => ({ [id]: true }));\n }\n }}\n >\n <DisplayTable withTableBorder>\n <Thead>\n <Tr>\n <Th className=\"w-[50px]\" />\n {columns.map((col) => (\n <Th key={col.key} className={col.className}>\n {col.header}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {items.map((item) => (\n <Tr\n key={item.id}\n className={cn(\n 'group cursor-pointer transition-colors hover:bg-muted/50',\n rowSelection[item.id] && 'bg-muted/50',\n )}\n data-state={\n rowSelection[item.id] ? 'selected' : undefined\n }\n onClick={() => onToggleRowSelection(item.id, true)}\n >\n <Td className=\"w-[50px] align-middle\">\n <RadioGroupItem value={item.id} />\n </Td>\n {columns.map((col) => (\n <Td key={col.key} className={col.className}>\n {col.cell(item)}\n </Td>\n ))}\n </Tr>\n ))}\n </Tbody>\n </DisplayTable>\n </RadioGroup>\n </div>\n )}\n <DataTablePagination\n pageIndex={state.page - 1}\n pageSize={state.pageSize}\n pageCount={pageCount}\n totalRows={total}\n onPageChange={(p) => state.setPage(p + 1)}\n onPageSizeChange={(size) => {\n state.setPageSize(size);\n state.setPage(1);\n }}\n />\n </div>\n ) : (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n {items.map((item) => (\n <div key={item.id}>\n {renderCard(item, Boolean(rowSelection[item.id]), () =>\n handleRowSelectionChange(\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: card selection toggle logic\n (prev) => {\n if (multiple) {\n const isSelected = prev[item.id];\n if (!isSelected && maxSelect !== undefined) {\n const currentCount =\n Object.values(prev).filter(Boolean).length;\n if (currentCount >= maxSelect) {\n return prev;\n }\n }\n return { ...prev, [item.id]: !isSelected };\n }\n return prev[item.id] ? {} : { [item.id]: true };\n },\n ),\n )}\n </div>\n ))}\n </div>\n <DataTablePagination\n pageIndex={state.page - 1}\n pageSize={state.pageSize}\n pageCount={pageCount}\n totalRows={total}\n onPageChange={(p) => state.setPage(p + 1)}\n onPageSizeChange={(size) => {\n state.setPageSize(size);\n state.setPage(1);\n }}\n />\n </div>\n )}\n </>\n );\n }\n\n return (\n <>\n {/* biome-ignore lint/a11y/useSemanticElements: div avoids nested button when trigger is Button */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={openSelector}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openSelector();\n }\n }}\n className=\"inline-block cursor-pointer\"\n >\n {trigger}\n </div>\n <EntitySelectorModal\n open={open}\n onOpenChange={handleOpenChange}\n title={title}\n size={modalSize}\n contentClassName={contentClassName}\n footer={\n <EntitySelectorFooter\n onCancel={() => handleOpenChange(false)}\n onSelect={handleSelect}\n selectedCount={selectedItems.length}\n multiple={multiple}\n minSelect={minSelect}\n maxSelect={maxSelect}\n />\n }\n >\n <div className=\"flex flex-col gap-4\">\n {selectedItems.length > 0 && (\n <div className=\"cn-selector-selected-bar\">\n <span className=\"cn-selector-selected-bar-label\">Selected:</span>\n {selectedItems.map((item) => (\n <Chip\n key={item.id}\n variant=\"secondary\"\n removable={multiple}\n onRemove={\n multiple\n ? () =>\n setRowSelection((prev) => ({\n ...prev,\n [item.id]: false,\n }))\n : undefined\n }\n >\n {getItemLabel(item)}\n </Chip>\n ))}\n </div>\n )}\n {content}\n </div>\n </EntitySelectorModal>\n </>\n );\n}\n","'use client';\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { IconCheck } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport type { ComponentColor, ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root> & {\n size?: ComponentSize;\n color?: ComponentColor;\n};\n\nfunction Checkbox({\n className,\n size = 'md',\n color: _color,\n ...props\n}: CheckboxProps) {\n const sizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3.5',\n sm: 'size-4',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6',\n };\n\n const iconSizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-3.5',\n lg: 'size-4',\n xl: 'size-5',\n };\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'cn-checkbox peer relative shrink-0 outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n sizeClasses[size],\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className={cn(\n 'cn-checkbox-indicator grid place-content-center text-current transition-none',\n )}\n >\n <IconCheck className={cn(iconSizeClasses[size])} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\nexport type { CheckboxProps };\n","'use client';\n\nimport { IconX } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst chipVariants = cva(\n 'cn-chip inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium transition-colors border',\n {\n variants: {\n variant: {\n default: 'cn-chip-variant-default',\n secondary: 'cn-chip-variant-secondary',\n outline: 'cn-chip-variant-outline',\n input: 'cn-chip-variant-input',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype ChipProps = React.ComponentProps<'div'> &\n VariantProps<typeof chipVariants> & {\n onRemove?: () => void;\n removable?: boolean;\n };\n\nfunction Chip({\n className,\n variant,\n onRemove,\n removable = true,\n children,\n ...props\n}: ChipProps) {\n return (\n <div\n data-slot=\"chip\"\n className={cn(chipVariants({ variant }), className)}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n {removable && onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"cn-chip-remove -mr-1 p-0.5 transition-colors cursor-pointer\"\n aria-label=\"Remove\"\n >\n <IconX className=\"size-3\" />\n </button>\n )}\n </div>\n );\n}\n\nexport { Chip, chipVariants };\n","'use client';\n\nimport {\n IconChevronLeft,\n IconChevronRight,\n IconChevronsLeft,\n IconChevronsRight,\n} from '@tabler/icons-react';\nimport { useTranslations } from 'next-intl';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../select';\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageSize: number;\n pageCount: number;\n totalRows: number;\n selectedRows?: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n pageSizeOptions?: number[];\n};\n\nfunction addRange(pages: (number | string)[], start: number, end: number) {\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n}\n\nfunction getPageNumbers(pageIndex: number, pageCount: number) {\n const total = pageCount || 1;\n const current = pageIndex + 1;\n const pages: (number | string)[] = [];\n\n if (total <= 1) {\n return [1];\n }\n\n if (total <= 5) {\n addRange(pages, 1, total);\n return pages;\n }\n\n pages.push(1);\n\n const isNearStart = current <= 3;\n const isNearEnd = current >= total - 2;\n\n if (isNearStart) {\n addRange(pages, 2, 4);\n pages.push('ellipsis', total);\n } else if (isNearEnd) {\n pages.push('ellipsis');\n addRange(pages, total - 3, total);\n } else {\n pages.push('ellipsis');\n addRange(pages, current - 1, current + 1);\n pages.push('ellipsis', total);\n }\n\n return pages;\n}\n\nexport function DataTablePagination({\n pageIndex,\n pageSize,\n pageCount,\n totalRows,\n selectedRows = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 30, 50],\n}: DataTablePaginationProps) {\n const t = useTranslations('Pagination');\n\n if (pageCount <= 1) {\n return null;\n }\n\n const canPreviousPage = pageIndex > 0;\n const canNextPage = pageIndex < pageCount - 1;\n const pageNumbers = getPageNumbers(pageIndex, pageCount);\n\n const rowLabel = totalRows === 1 ? t('row') : t('rows');\n const hasSelection = selectedRows > 0;\n const rowText = hasSelection\n ? `${selectedRows} ${t('of')} ${totalRows} ${rowLabel} ${t('selected')}`\n : `${totalRows} ${rowLabel} ${t('total')}`;\n const pageText = `${t('page')} ${pageIndex + 1} ${t('of')} ${pageCount || 1}`;\n\n return (\n <div className=\"cn-data-table-pagination flex flex-col sm:flex-row\">\n <div className=\"cn-data-table-pagination-left flex items-center justify-center sm:justify-start\">\n <div className=\"cn-data-table-pagination-summary text-muted-foreground\">\n <span>\n {rowText}\n <span className=\"mx-2\">·</span>\n {pageText}\n </span>\n </div>\n <div className=\"cn-data-table-pagination-size flex items-center\">\n <span className=\"cn-data-table-pagination-size-label font-medium whitespace-nowrap\">\n {t('rowsPerPage')}\n </span>\n <Select\n value={`${pageSize}`}\n onValueChange={(value) => onPageSizeChange(Number(value))}\n >\n <SelectTrigger\n className={cn('cn-data-table-pagination-size-trigger w-[70px]')}\n >\n <SelectValue placeholder={pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={`${size}`}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <div className=\"cn-data-table-pagination-right flex justify-center sm:justify-end\">\n <nav\n aria-label=\"Pagination\"\n className=\"cn-data-table-pagination-nav flex items-center gap-1\"\n >\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn hidden h-8 w-8 lg:flex\"\n onClick={() => onPageChange(0)}\n disabled={!canPreviousPage}\n aria-label={t('firstPage')}\n >\n <IconChevronsLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('firstPage')}</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn h-8 w-8\"\n onClick={() => onPageChange(pageIndex - 1)}\n disabled={!canPreviousPage}\n aria-label={t('previousPage')}\n >\n <IconChevronLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('previousPage')}</span>\n </Button>\n {pageNumbers.map((page, idx) => {\n if (page === 'ellipsis') {\n const prevPage = idx > 0 ? pageNumbers[idx - 1] : null;\n const nextPage =\n idx < pageNumbers.length - 1 ? pageNumbers[idx + 1] : null;\n return (\n <span\n key={`ellipsis-${prevPage}-${nextPage}`}\n className=\"cn-data-table-pagination-ellipsis flex h-8 w-8 items-center justify-center text-muted-foreground\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n );\n }\n const pageNum = page as number;\n const isActive = pageNum === pageIndex + 1;\n return (\n <Button\n key={pageNum}\n variant={isActive ? 'default' : 'outline'}\n size=\"icon\"\n className=\"cn-data-table-pagination-page-btn h-8 w-8\"\n onClick={() => onPageChange(pageNum - 1)}\n aria-label={`${t('goToPage')} ${pageNum}`}\n aria-current={isActive ? 'page' : undefined}\n >\n {pageNum}\n </Button>\n );\n })}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn h-8 w-8\"\n onClick={() => onPageChange(pageIndex + 1)}\n disabled={!canNextPage}\n aria-label={t('nextPage')}\n >\n <IconChevronRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('nextPage')}</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn hidden h-8 w-8 lg:flex\"\n onClick={() => onPageChange(pageCount - 1)}\n disabled={!canNextPage}\n aria-label={t('lastPage')}\n >\n <IconChevronsRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('lastPage')}</span>\n </Button>\n </nav>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive>) {\n return (\n <RadioGroupPrimitive\n data-slot=\"radio-group\"\n className={cn('cn-radio-group w-full', className)}\n {...props}\n />\n );\n}\n\ntype RadioGroupItemProps = React.ComponentProps<typeof RadioPrimitive.Root> & {\n size?: ComponentSize;\n variant?: 'outline' | 'filled';\n};\n\nfunction RadioGroupItem({\n className,\n size = 'md',\n variant = 'outline',\n ...props\n}: RadioGroupItemProps) {\n const sizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3.5',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-6',\n xl: 'size-7',\n };\n\n const dotSizeClasses: Record<ComponentSize, string> = {\n xs: 'size-1.5',\n sm: 'size-1',\n md: 'size-1.5',\n lg: 'size-2.5',\n xl: 'size-3',\n };\n\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n data-variant={variant}\n className={cn(\n 'cn-radio-group-item group/radio-group-item peer relative aspect-square shrink-0 border outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed',\n 'aria-disabled:!bg-muted aria-disabled:!border-muted-foreground/25',\n 'aria-disabled:!shadow-none aria-disabled:!text-muted-foreground',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed',\n sizeClasses[size],\n variant === 'outline' && [\n 'aria-checked:border-primary aria-checked:bg-background',\n 'aria-checked:text-primary',\n ],\n variant === 'filled' && [\n 'aria-checked:border-primary aria-checked:bg-primary',\n 'aria-checked:text-primary-foreground',\n ],\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"cn-radio-group-indicator\"\n >\n <span\n data-slot=\"radio-group-indicator-icon\"\n className={cn(\n 'cn-radio-group-indicator-icon',\n dotSizeClasses[size],\n variant === 'outline' && 'bg-primary',\n variant === 'filled' && 'bg-primary-foreground',\n 'group-aria-disabled/radio-group-item:!bg-muted-foreground',\n )}\n />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\nexport type { RadioGroupItemProps };\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '../ui/dialog';\n\nexport type EntitySelectorModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nconst modalSizeClasses: Record<EntitySelectorModalSize, string> = {\n sm: 'sm:max-w-[28rem]',\n md: 'sm:max-w-[36rem]',\n lg: 'sm:max-w-[42rem]',\n xl: 'sm:max-w-[56rem]',\n full: 'sm:max-w-[calc(100vw-2rem)] sm:h-[calc(100vh-2rem)]',\n};\n\ntype EntitySelectorModalProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: ReactNode;\n size?: EntitySelectorModalSize;\n contentClassName?: string;\n footer?: ReactNode;\n children: ReactNode;\n};\n\nexport function EntitySelectorModal({\n open,\n onOpenChange,\n title,\n size = 'xl',\n contentClassName,\n footer,\n children,\n}: EntitySelectorModalProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n className={cn(\n 'flex max-h-[90vh] min-w-[280px] flex-col gap-0 p-0 sm:min-w-[320px]',\n modalSizeClasses[size],\n )}\n showCloseButton\n >\n {title && (\n <DialogHeader className=\"cn-selector-modal-header\">\n <DialogTitle>{title}</DialogTitle>\n </DialogHeader>\n )}\n <div\n className={cn(\n 'cn-selector-modal-body min-h-0 flex-1 overflow-y-auto',\n contentClassName,\n )}\n >\n {children}\n </div>\n {footer && (\n <DialogFooter className=\"cn-selector-modal-footer\">\n {footer}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n );\n}\n","type PaginationData = {\n items: unknown[];\n total?: number | string | null;\n pageSize: number;\n};\n\nexport function useEntityPagination({\n items,\n total,\n pageSize,\n}: PaginationData) {\n const totalCount = Number(total ?? items.length);\n const pageCount = Math.ceil(totalCount / pageSize);\n\n return {\n total: totalCount,\n pageCount,\n hasData: items.length > 0,\n isEmpty: totalCount === 0,\n };\n}\n","'use client';\n\nimport {\n IconSortAscendingLetters,\n IconSortDescendingLetters,\n} from '@tabler/icons-react';\nimport { parseAsInteger, parseAsString, useQueryState } from 'nuqs';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype SortOption = {\n label: string;\n value: string;\n};\n\ntype EntitySortProps = {\n options: SortOption[];\n defaultSort?: string;\n defaultOrder?: 'asc' | 'desc';\n className?: string;\n};\n\nexport function EntitySort({\n options,\n defaultSort = 'createdAt',\n defaultOrder = 'desc',\n className,\n}: EntitySortProps) {\n const [sort, setSort] = useQueryState(\n 'sort',\n parseAsString.withDefault(defaultSort),\n );\n const [order, setOrder] = useQueryState(\n 'order',\n parseAsString.withDefault(defaultOrder),\n );\n const [, setPage] = useQueryState('page', parseAsInteger.withDefault(1));\n\n const handleSortChange = (value: string) => {\n setSort(value);\n setPage(1);\n };\n\n const toggleOrder = () => {\n setOrder(order === 'asc' ? 'desc' : 'asc');\n setPage(1);\n };\n\n const sortLabel = options.find((o) => o.value === sort)?.label;\n\n return (\n <div className={cn('flex w-full items-center gap-0', className)}>\n <div className=\"min-w-0 flex-1\">\n <Select\n value={sort}\n onValueChange={(v) => handleSortChange(v as string)}\n >\n <SelectTrigger className=\"h-9 w-full min-w-[150px] rounded-r-none border-r-0\">\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n !sortLabel && 'text-muted-foreground',\n )}\n >\n {sortLabel ?? 'Sort by'}\n </span>\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-9 shrink-0 rounded-l-none\"\n onClick={toggleOrder}\n >\n {order === 'asc' ? (\n <IconSortAscendingLetters className=\"h-4 w-4\" />\n ) : (\n <IconSortDescendingLetters className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport { IconGridDots, IconList, IconTable } from '@tabler/icons-react';\nimport { parseAsString, useQueryState } from 'nuqs';\nimport type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Tabs, TabsList, TabsTrigger } from '../ui/tabs';\n\ntype ViewOption = 'table' | 'card' | 'list';\n\ntype EntityViewToggleProps = {\n views?: ViewOption[];\n className?: string;\n};\n\nconst viewIcons: Record<ViewOption, ReactNode> = {\n table: <IconTable className=\"size-4\" />,\n card: <IconGridDots className=\"size-4\" />,\n list: <IconList className=\"size-4\" />,\n};\n\nexport function EntityViewToggle({\n views = ['table', 'card'],\n className,\n}: EntityViewToggleProps) {\n const [value, setValue] = useQueryState(\n 'view',\n parseAsString.withDefault('table'),\n );\n\n return (\n <Tabs\n value={value}\n onValueChange={(v) => setValue(v as ViewOption)}\n className={cn('w-full! md:w-auto!', className)}\n >\n <TabsList className=\"cn-entity-view-toggle w-full! md:w-auto!\">\n {views.map((v) => (\n <TabsTrigger\n key={v}\n value={v}\n aria-label={`${v} view`}\n className=\"min-w-0 flex-1 px-3\"\n >\n {viewIcons[v]}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","'use client';\n\nimport { parseAsInteger, parseAsString, useQueryStates } from 'nuqs';\nimport { useMemo } from 'react';\n\ntype EntityParamsConfig = {\n searchKey?: string;\n searchParamName?: string;\n defaultSort?: string;\n defaultOrder?: 'asc' | 'desc';\n defaultPageSize?: number;\n};\n\nexport function useEntityParams(config: EntityParamsConfig = {}) {\n const {\n searchKey = 'search',\n searchParamName,\n defaultSort = 'createdAt',\n defaultOrder = 'desc',\n defaultPageSize = 10,\n } = config;\n\n const [params, setParams] = useQueryStates({\n ...(searchKey && {\n [searchKey]: parseAsString.withDefault(''),\n }),\n view: parseAsString.withDefault('table'),\n page: parseAsInteger.withDefault(1),\n pageSize: parseAsInteger.withDefault(defaultPageSize),\n filter: parseAsString,\n sort: parseAsString.withDefault(defaultSort),\n order: parseAsString.withDefault(defaultOrder),\n });\n\n const queryConfig = useMemo(\n () => ({\n params: {\n query: {\n page: params.page,\n limit: params.pageSize,\n ...(searchKey &&\n (params as Record<string, string | number | null | undefined>)[\n searchKey\n ] && {\n [searchParamName ||\n (searchKey === 'search' ? 'search' : 'handle')]: (\n params as Record<string, string | number | null | undefined>\n )[searchKey],\n }),\n ...(params.filter && { filter: params.filter }),\n ...(params.sort && { sort: params.sort, order: params.order }),\n },\n },\n }),\n [params, searchKey, searchParamName],\n );\n\n return {\n params,\n setParams,\n queryConfig,\n };\n}\n","'use client';\n\nimport { useCallback, useMemo, useState } from 'react';\n\nexport type EntitySectionView = 'table' | 'card' | 'list';\n\ntype FilterOption = { label: string; value: string };\ntype SortOption = { label: string; value: string };\n\nexport type EntityParams = {\n search: string;\n filter: string;\n sort: string;\n order: 'asc' | 'desc';\n view: EntitySectionView;\n page: number;\n pageSize: number;\n};\n\nexport type UseEntitySectionStateConfig = {\n defaultSort?: string;\n defaultOrder?: 'asc' | 'desc';\n defaultPageSize?: number;\n defaultView?: EntitySectionView;\n searchPlaceholder?: string;\n /** API query param name for search (default 'search') */\n searchParamName?: string;\n filterOptions?: FilterOption[];\n sortOptions?: SortOption[];\n views?: EntitySectionView[];\n};\n\nexport function useEntitySectionState(\n config: UseEntitySectionStateConfig = {},\n) {\n const {\n defaultSort = 'createdAt',\n defaultOrder = 'desc',\n defaultPageSize = 10,\n defaultView = 'table',\n searchParamName = 'search',\n filterOptions = [],\n sortOptions = [\n { label: 'Created', value: 'createdAt' },\n { label: 'Updated', value: 'updatedAt' },\n { label: 'Code', value: 'code' },\n ],\n views = ['table', 'card'],\n } = config;\n\n const [search, setSearch] = useState('');\n const [filter, setFilter] = useState('');\n const [sort, setSort] = useState(defaultSort);\n const [order, setOrder] = useState<'asc' | 'desc'>(defaultOrder);\n const [view, setView] = useState<EntitySectionView>(defaultView);\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(defaultPageSize);\n\n const setPageReset = useCallback(() => setPage(1), []);\n\n const queryConfig = useMemo(\n () => ({\n params: {\n query: {\n page,\n limit: pageSize,\n ...(search && { [searchParamName]: search }),\n ...(filter && { filter }),\n ...(sort && { sort, order }),\n },\n },\n }),\n [page, pageSize, search, filter, sort, order, searchParamName],\n );\n\n const params: EntityParams = useMemo(\n () => ({\n search,\n filter,\n sort,\n order,\n view,\n page,\n pageSize,\n }),\n [search, filter, sort, order, view, page, pageSize],\n );\n\n const setParams = useCallback((update: Partial<EntityParams>) => {\n if (update.search !== undefined) {\n setSearch(update.search);\n }\n if (update.filter !== undefined) {\n setFilter(update.filter);\n }\n if (update.sort !== undefined) {\n setSort(update.sort);\n }\n if (update.order !== undefined) {\n setOrder(update.order);\n }\n if (update.view !== undefined) {\n setView(update.view);\n }\n if (update.page !== undefined) {\n setPage(update.page);\n }\n if (update.pageSize !== undefined) {\n setPageSize(update.pageSize);\n }\n }, []);\n\n return {\n search,\n setSearch,\n filter,\n setFilter,\n sort,\n setSort,\n order,\n setOrder,\n view,\n setView,\n page,\n setPage,\n pageSize,\n setPageSize,\n setPageReset,\n queryConfig,\n params,\n setParams,\n filterOptions,\n sortOptions,\n views,\n };\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageBodyProps = {\n className?: string;\n children: ReactNode;\n};\n\nexport function PageBody({ className, children }: PageBodyProps) {\n return (\n <div className={cn('flex flex-col gap-4 px-4', className)}>{children}</div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageContainerProps = {\n className?: string;\n children: ReactNode;\n};\n\nexport function PageContainer({ className, children }: PageContainerProps) {\n return (\n <div className={cn('flex flex-1 flex-col gap-4 p-4 pt-0', className)}>\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageSectionProps = {\n title?: ReactNode;\n className?: string;\n children: ReactNode;\n};\n\nexport function PageSection({ title, className, children }: PageSectionProps) {\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n {title ? <h4 className=\"font-medium text-foreground\">{title}</h4> : null}\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageSubTitleProps = {\n className?: string;\n children: ReactNode;\n};\n\nexport function PageSubTitle({ className, children }: PageSubTitleProps) {\n return (\n <span className={cn('text-sm text-muted-foreground', className)}>\n {children}\n </span>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageTitleProps = {\n icon?: ReactNode;\n back?: ReactNode;\n action?: ReactNode;\n children: ReactNode;\n className?: string;\n};\n\nexport function PageTitle({\n icon,\n back,\n action,\n children,\n className,\n}: PageTitleProps) {\n return (\n <div\n className={cn(\n 'cn-page-title flex min-h-12 items-center gap-2 text-foreground',\n className,\n )}\n >\n {back ?? null}\n {icon ?? null}\n <div className=\"flex grow items-center justify-between\">\n <h3 className=\"font-medium\">{children}</h3>\n {action ?? null}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport {\n IconAlertTriangle,\n IconCircleCheck,\n IconInfoCircle,\n IconLoader2,\n IconX,\n} from '@tabler/icons-react';\nimport { useTheme } from 'next-themes';\nimport type { CSSProperties } from 'react';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n const toastOptions: ToasterProps['toastOptions'] = {\n ...props.toastOptions,\n classNames: {\n toast: [\n 'cn-toast group toast',\n 'group-[.toaster]:bg-background',\n 'group-[.toaster]:text-foreground',\n 'group-[.toaster]:border-border',\n 'group-[.toaster]:shadow-lg',\n props.toastOptions?.classNames?.toast,\n ]\n .filter(Boolean)\n .join(' '),\n description: [\n 'group-[.toast]:text-muted-foreground',\n props.toastOptions?.classNames?.description,\n ]\n .filter(Boolean)\n .join(' '),\n actionButton: [\n 'group-[.toast]:bg-primary',\n 'group-[.toast]:text-primary-foreground',\n props.toastOptions?.classNames?.actionButton,\n ]\n .filter(Boolean)\n .join(' '),\n cancelButton: [\n 'group-[.toast]:bg-muted',\n 'group-[.toast]:text-muted-foreground',\n props.toastOptions?.classNames?.cancelButton,\n ]\n .filter(Boolean)\n .join(' '),\n ...props.toastOptions?.classNames,\n },\n };\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className=\"toaster group\"\n icons={{\n success: <IconCircleCheck className=\"size-4\" />,\n info: <IconInfoCircle className=\"size-4\" />,\n warning: <IconAlertTriangle className=\"size-4\" />,\n error: <IconX className=\"size-4\" />,\n loading: <IconLoader2 className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n '--normal-bg': 'var(--popover)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n '--border-radius': 'var(--radius)',\n } as CSSProperties & Record<string, string>\n }\n toastOptions={toastOptions}\n {...props}\n />\n );\n};\n\nexport { Toaster };\nexport { toast } from 'sonner';\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { AppBreadcrumbs, BreadcrumbProvider } from '../app/app-breadcrumbs';\nimport { Separator } from '../ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../ui/sidebar';\nimport { Toaster } from '../ui/sonner';\n\ntype ShellProps = {\n sidebar: React.ReactNode;\n headerActions?: React.ReactNode;\n children: React.ReactNode;\n showToaster?: boolean;\n contentClassName?: string;\n};\n\nexport function Shell({\n sidebar,\n headerActions,\n children,\n showToaster = true,\n contentClassName,\n}: ShellProps) {\n return (\n <BreadcrumbProvider>\n <SidebarProvider>\n {sidebar}\n <SidebarInset>\n <header className=\"cn-shell-header\">\n <div className=\"flex items-center gap-2\">\n <SidebarTrigger className=\"-ml-1\" />\n <div className=\"hidden md:flex md:items-center md:gap-2\">\n <Separator\n orientation=\"vertical\"\n className=\"mr-2 data-[orientation=vertical]:h-4\"\n />\n <AppBreadcrumbs />\n </div>\n </div>\n {headerActions}\n </header>\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-4 overflow-auto p-4',\n contentClassName,\n )}\n >\n <div className=\"mx-auto w-full max-w-7xl\">{children}</div>\n </div>\n </SidebarInset>\n {showToaster && <Toaster />}\n </SidebarProvider>\n </BreadcrumbProvider>\n );\n}\n","'use client';\n\nimport {\n IconArrowsMaximize,\n IconTextRecognition,\n IconX,\n} from '@tabler/icons-react';\nimport { useState } from 'react';\nimport type { Control, FieldError } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { useLocaleConfig } from '../../provider/mesob-provider';\nimport { RichTextInput } from '../rich-text/rich-text-input';\nimport { Dialog, DialogContent, DialogTitle } from '../ui/dialog';\nimport { Label } from '../ui/label';\nimport { VisuallyHidden } from '../ui/visually-hidden';\n\nexport type LocaleInputRichTextProps = {\n label?: string;\n required?: boolean;\n field: string;\n control: Control<any>;\n errors?: Record<string, unknown>;\n className?: string;\n enabledControllers?: string[];\n placeholder?: string;\n mode?: 'small' | 'large';\n};\n\nexport function LocaleInputRichText({\n label,\n required,\n field,\n control,\n errors,\n className,\n enabledControllers = [],\n placeholder,\n mode = 'large',\n}: LocaleInputRichTextProps) {\n const [expanded, setExpanded] = useState(false);\n const [fullscreen, setFullscreen] = useState(false);\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n const otherLanguages = supportedLanguages.filter(\n (lang) => lang.value !== defaultLanguage,\n );\n\n return (\n <div className={cn('cn-locale-input', className)}>\n {label && (\n <Label>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n\n {/* Default Language Editor */}\n <div className=\"relative\">\n <Controller\n control={control}\n name={`${field}.${defaultLanguage}`}\n render={({ field: inputField }) => (\n <RichTextInput\n field={inputField}\n error={\n (errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]\n }\n enabledControllers={enabledControllers}\n placeholder={placeholder}\n mode={mode}\n />\n )}\n />\n <div className=\"absolute top-3 right-2 z-10 flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => setFullscreen(true)}\n className=\"cn-locale-input-toggle-icon\"\n >\n <IconArrowsMaximize size={18} />\n </button>\n {otherLanguages.length > 0 && (\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"cn-locale-input-toggle-icon\"\n >\n <IconTextRecognition size={18} />\n </button>\n )}\n </div>\n </div>\n\n {/* Other Languages */}\n {expanded && otherLanguages.length > 0 && (\n <div className=\"cn-locale-input-expanded-rich\">\n {otherLanguages.map((lang) => (\n <div key={lang.value} className=\"space-y-2\">\n <Label className=\"text-xs text-muted-foreground\">\n {lang.label}\n </Label>\n <Controller\n control={control}\n name={`${field}.${lang.value}`}\n render={({ field: inputField }) => (\n <RichTextInput\n field={inputField}\n error={\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[lang.value]\n }\n enabledControllers={enabledControllers}\n placeholder={placeholder}\n mode={mode}\n />\n )}\n />\n </div>\n ))}\n </div>\n )}\n\n {/* Fullscreen Dialog */}\n <Dialog open={fullscreen} onOpenChange={setFullscreen}>\n <DialogContent\n showCloseButton={false}\n className={cn(\n 'cn-locale-input-fullscreen-content flex flex-col p-6',\n '!top-0 !left-0 !right-0 !bottom-0 !h-screen !w-screen !max-w-none !translate-x-0 !translate-y-0 !rounded-none',\n )}\n >\n <VisuallyHidden>\n <DialogTitle>\n {label || 'Edit content'} - Fullscreen editor\n </DialogTitle>\n </VisuallyHidden>\n <button\n type=\"button\"\n onClick={() => setFullscreen(false)}\n className=\"cn-locale-input-fullscreen-close\"\n >\n <IconX size={20} />\n </button>\n <div className=\"flex-1 overflow-auto flex items-start justify-center\">\n <div className=\"w-full max-w-5xl\">\n <Controller\n control={control}\n name={`${field}.${defaultLanguage}`}\n render={({ field: inputField }) => (\n <RichTextInput\n field={inputField}\n error={\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[defaultLanguage]\n }\n enabledControllers={enabledControllers}\n placeholder={placeholder}\n mode=\"large\"\n />\n )}\n />\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n","'use client';\n\nimport { useLocale } from 'next-intl';\nimport { createNavigation } from 'next-intl/navigation';\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport { TooltipProvider } from '../components/ui/tooltip';\nimport {\n DEFAULT_LANGUAGE,\n SUPPORTED_LANGUAGES,\n type SupportedLanguage,\n} from '../lib/locale';\n\ntype Navigation = ReturnType<typeof createNavigation>;\n\ntype MesobContextValue = {\n navigation: Navigation;\n linkComponent: Navigation['Link'];\n goBack: () => void;\n navigate: (href: string) => void;\n pathname: string;\n locale: string;\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n t?: (key: string, params?: Record<string, string | number>) => string;\n};\n\nconst MesobContext = createContext<MesobContextValue | null>(null);\n\nconst MESOB_ERR = '[MesobProvider]';\n\nexport type MesobProviderProps = {\n children: ReactNode;\n routing: Parameters<typeof createNavigation>[0];\n linkComponent?: Navigation['Link'];\n defaultLanguage?: string;\n supportedLanguages?: SupportedLanguage[];\n};\n\nexport function MesobProvider({\n children,\n routing,\n linkComponent: linkComponentProp,\n defaultLanguage = DEFAULT_LANGUAGE,\n supportedLanguages = SUPPORTED_LANGUAGES,\n}: MesobProviderProps) {\n if (!routing) {\n throw new Error(`${MESOB_ERR} routing is required`);\n }\n\n const locale = useLocale();\n const navigation = useMemo(() => createNavigation(routing), [routing]);\n const router = navigation.useRouter();\n const pathname = navigation.usePathname();\n\n const value = useMemo(() => {\n const linkComponent = linkComponentProp ?? navigation?.Link;\n if (!linkComponent) {\n throw new Error(\n `${MESOB_ERR} linkComponent or valid createNavigation required`,\n );\n }\n return {\n navigation,\n linkComponent,\n goBack: () => router.back(),\n navigate: (href: string) => router.push(href),\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n };\n }, [\n navigation,\n linkComponentProp,\n router,\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n ]);\n\n return (\n <MesobContext.Provider value={value}>\n <TooltipProvider delay={0}>{children}</TooltipProvider>\n </MesobContext.Provider>\n );\n}\n\nexport function useMesob(): MesobContextValue | null {\n return useContext(MesobContext);\n}\n\nexport function useLocaleConfig(): {\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n} {\n const mesob = useMesob();\n return {\n defaultLanguage: mesob?.defaultLanguage ?? DEFAULT_LANGUAGE,\n supportedLanguages: mesob?.supportedLanguages ?? SUPPORTED_LANGUAGES,\n };\n}\n","import { z } from 'zod';\n\nexport type LocaleKey = 'am' | 'en' | 'om' | 'ti' | 'so' | 'sw' | 'fr' | 'ar';\n\nexport type Locale = {\n [key in LocaleKey | string]?: string;\n};\n\nexport type Translation = (key: string) => string;\n\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport type SupportedLanguage = { value: string; label: string; key: string };\n\nexport const SUPPORTED_LANGUAGES: SupportedLanguage[] = [\n { value: 'en', label: 'English', key: 'En' },\n { value: 'am', label: 'አማርኛ', key: 'አማ' },\n];\n\nexport const LOCALE_INPUT_DEFAULT = Object.fromEntries(\n SUPPORTED_LANGUAGES.map(({ value }) => [value, '']),\n);\n\ntype SchemaAccumulator = {\n [key: string]: z.ZodTypeAny;\n};\n\nexport function createLocalInputSchema(\n defaultValidation: z.ZodTypeAny,\n otherValidation: z.ZodTypeAny,\n): z.ZodObject<SchemaAccumulator> {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n SUPPORTED_LANGUAGES.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] =\n value === DEFAULT_LANGUAGE ? defaultValidation : otherValidation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition);\n}\n\nexport function createLocalRequiredInputSchema(\n validation: z.ZodTypeAny,\n): z.ZodEffects<z.ZodObject<SchemaAccumulator>> {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n SUPPORTED_LANGUAGES.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] = validation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition).superRefine((data, ctx) => {\n const hasValue = Object.values(data).some(\n (value) => typeof value === 'string' && value.trim().length > 0,\n );\n\n if (!hasValue) {\n for (const { value } of SUPPORTED_LANGUAGES) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'field is required',\n path: [value],\n });\n }\n }\n });\n}\n\nexport const LOCALE_REQUIRED_INPUT_SCHEMA = createLocalRequiredInputSchema(\n z.string().optional(),\n);\n\nexport const LOCALE_OPTIONAL_INPUT_SCHEMA = createLocalInputSchema(\n z.string().optional(),\n z.string().optional(),\n);\n","'use client';\n\nimport {\n IconAlignCenter,\n IconAlignJustified,\n IconAlignLeft,\n IconAlignRight,\n IconBlockquote,\n IconBold,\n IconClearFormatting,\n IconCode,\n IconH1,\n IconH2,\n IconH3,\n IconH4,\n IconHighlight,\n IconItalic,\n IconLink,\n IconList,\n IconListNumbers,\n IconStrikethrough,\n IconSubscript,\n IconSuperscript,\n IconUnderline,\n IconUnlink,\n} from '@tabler/icons-react';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Highlight from '@tiptap/extension-highlight';\nimport Image from '@tiptap/extension-image';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport SubScript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport { Table } from '@tiptap/extension-table';\nimport { TableCell } from '@tiptap/extension-table-cell';\nimport { TableHeader } from '@tiptap/extension-table-header';\nimport { TableRow } from '@tiptap/extension-table-row';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport Youtube from '@tiptap/extension-youtube';\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport type * as React from 'react';\nimport type { ControllerRenderProps, FieldError } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { HardbreakControl } from './controls/hardbreak-control';\nimport { IframeControl } from './controls/iframe-control';\nimport { ImageControl } from './controls/image-control';\nimport { TableControl } from './controls/table-control';\nimport { YoutubeControl } from './controls/youtube-control';\nimport { CustomHeading } from './extensions/custom-heading';\nimport { Iframe } from './extensions/iframe-extension';\nimport {\n RichTextEditor,\n RichTextEditorContent,\n RichTextEditorControl,\n RichTextEditorControlsGroup,\n RichTextEditorToolbar,\n} from './rich-text-editor';\n\ntype RichTextInputProps = {\n // biome-ignore lint/suspicious/noExplicitAny: react-hook-form types\n field: ControllerRenderProps<any, any>;\n label?: React.ReactNode;\n error?: FieldError;\n className?: string;\n withAsterisk?: boolean;\n enabledControllers?: string[];\n mode?: 'small' | 'large';\n withOnUpdate?: boolean;\n placeholder?: string;\n};\n\nexport function RichTextInput({\n field,\n label,\n error,\n className,\n withAsterisk,\n enabledControllers = [],\n mode = 'large',\n withOnUpdate = false,\n placeholder = 'Start typing...',\n}: RichTextInputProps) {\n const { value, onChange } = field;\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: tiptap editor configuration\n const editor = useEditor({\n immediatelyRender: false,\n extensions: [\n StarterKit.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n bulletList: { HTMLAttributes: { class: 'list-disc pl-4' } },\n // biome-ignore lint/style/useNamingConvention: tiptap API\n orderedList: { HTMLAttributes: { class: 'list-decimal pl-4' } },\n }),\n HardBreak.configure({ keepMarks: false }),\n Underline,\n Link.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: { class: 'text-primary underline' },\n openOnClick: false,\n }),\n Superscript,\n SubScript,\n Highlight,\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n Placeholder.configure({ placeholder }),\n Image.configure({\n inline: true,\n allowBase64: true,\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'w-full h-auto my-3 rounded-[var(--radius-md)]',\n },\n }),\n Youtube.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: { class: 'w-full aspect-video my-4' },\n }),\n Table.configure({\n resizable: true,\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'border-collapse table-auto w-full my-4',\n },\n }),\n TableRow.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: { class: 'border border-border' },\n }),\n TableCell.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'border border-border p-2 min-w-[100px] min-h-[40px]',\n },\n }),\n TableHeader.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'border border-border p-2 bg-muted font-semibold',\n },\n }),\n CustomHeading,\n Iframe,\n ],\n content: value || '',\n ...(withOnUpdate && {\n onUpdate: (props) => onChange?.(props?.editor?.getHTML() ?? '<p></p>'),\n }),\n ...(!withOnUpdate && {\n onBlur: (props) => onChange(props?.editor?.getHTML() ?? '<p></p>'),\n }),\n });\n\n const enabledControllersLength = enabledControllers.length;\n\n const isControllerEnabled = (controller: string) =>\n enabledControllersLength === 0 || enabledControllers.includes(controller);\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n {label && (\n <Label>\n {label}\n {withAsterisk && <span className=\"text-destructive\">*</span>}\n </Label>\n )}\n <RichTextEditor editor={editor}>\n <RichTextEditorToolbar>\n <RichTextEditorControlsGroup>\n {isControllerEnabled('bold') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleBold().run()}\n active={editor?.isActive('bold')}\n disabled={!editor?.can().chain().focus().toggleBold().run()}\n aria-label=\"Bold\"\n title=\"Bold\"\n >\n <IconBold className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('italic') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleItalic().run()}\n active={editor?.isActive('italic')}\n disabled={!editor?.can().chain().focus().toggleItalic().run()}\n aria-label=\"Italic\"\n title=\"Italic\"\n >\n <IconItalic className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('code') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleCode().run()}\n active={editor?.isActive('code')}\n disabled={!editor?.can().chain().focus().toggleCode().run()}\n aria-label=\"Code\"\n title=\"Code\"\n >\n <IconCode className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('underline') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleUnderline().run()}\n active={editor?.isActive('underline')}\n disabled={\n !editor?.can().chain().focus().toggleUnderline().run()\n }\n aria-label=\"Underline\"\n title=\"Underline\"\n >\n <IconUnderline className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('strikethrough') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleStrike().run()}\n active={editor?.isActive('strike')}\n disabled={!editor?.can().chain().focus().toggleStrike().run()}\n aria-label=\"Strikethrough\"\n title=\"Strikethrough\"\n >\n <IconStrikethrough className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('clearFormatting') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().clearNodes().unsetAllMarks().run()\n }\n aria-label=\"Clear formatting\"\n title=\"Clear formatting\"\n >\n <IconClearFormatting className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('highlight') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleHighlight().run()}\n active={editor?.isActive('highlight')}\n aria-label=\"Highlight\"\n title=\"Highlight\"\n >\n <IconHighlight className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('h1') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 1 }).run()\n }\n active={editor?.isActive('heading', { level: 1 })}\n aria-label=\"Heading 1\"\n title=\"Heading 1\"\n >\n <IconH1 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('h2') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 2 }).run()\n }\n active={editor?.isActive('heading', { level: 2 })}\n aria-label=\"Heading 2\"\n title=\"Heading 2\"\n >\n <IconH2 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('h3') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 3 }).run()\n }\n active={editor?.isActive('heading', { level: 3 })}\n aria-label=\"Heading 3\"\n title=\"Heading 3\"\n >\n <IconH3 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('h4') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 4 }).run()\n }\n active={editor?.isActive('heading', { level: 4 })}\n aria-label=\"Heading 4\"\n title=\"Heading 4\"\n >\n <IconH4 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('bulletList') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleBulletList().run()}\n active={editor?.isActive('bulletList')}\n aria-label=\"Bullet list\"\n title=\"Bullet list\"\n >\n <IconList className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('orderedList') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleOrderedList().run()\n }\n active={editor?.isActive('orderedList')}\n aria-label=\"Ordered list\"\n title=\"Ordered list\"\n >\n <IconListNumbers className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('link') && (\n <>\n <RichTextEditorControl\n onClick={() => {\n const url = window.prompt('Enter URL');\n if (url) {\n editor?.chain().focus().setLink({ href: url }).run();\n }\n }}\n active={editor?.isActive('link')}\n aria-label=\"Link\"\n title=\"Link\"\n >\n <IconLink className=\"size-4\" />\n </RichTextEditorControl>\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().unsetLink().run()}\n disabled={!editor?.isActive('link')}\n aria-label=\"Unlink\"\n title=\"Unlink\"\n >\n <IconUnlink className=\"size-4\" />\n </RichTextEditorControl>\n </>\n )}\n {isControllerEnabled('blockquote') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleBlockquote().run()}\n active={editor?.isActive('blockquote')}\n aria-label=\"Blockquote\"\n title=\"Blockquote\"\n >\n <IconBlockquote className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('alignLeft') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('left').run()\n }\n active={editor?.isActive({ textAlign: 'left' })}\n aria-label=\"Align left\"\n title=\"Align left\"\n >\n <IconAlignLeft className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('alignCenter') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('center').run()\n }\n active={editor?.isActive({ textAlign: 'center' })}\n aria-label=\"Align center\"\n title=\"Align center\"\n >\n <IconAlignCenter className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('alignRight') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('right').run()\n }\n active={editor?.isActive({ textAlign: 'right' })}\n aria-label=\"Align right\"\n title=\"Align right\"\n >\n <IconAlignRight className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('alignJustify') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('justify').run()\n }\n active={editor?.isActive({ textAlign: 'justify' })}\n aria-label=\"Align justify\"\n title=\"Align justify\"\n >\n <IconAlignJustified className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('subscript') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleSubscript().run()}\n active={editor?.isActive('subscript')}\n aria-label=\"Subscript\"\n title=\"Subscript\"\n >\n <IconSubscript className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('superscript') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleSuperscript().run()\n }\n active={editor?.isActive('superscript')}\n aria-label=\"Superscript\"\n title=\"Superscript\"\n >\n <IconSuperscript className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n {editor && isControllerEnabled('hardBreak') && (\n <HardbreakControl editor={editor} />\n )}\n\n {mode === 'large' && (\n <>\n {isControllerEnabled('table') && (\n <RichTextEditorControlsGroup>\n <TableControl editor={editor} />\n </RichTextEditorControlsGroup>\n )}\n <RichTextEditorControlsGroup>\n {isControllerEnabled('image') && <ImageControl />}\n {isControllerEnabled('youtube') && <YoutubeControl />}\n {isControllerEnabled('map') && <IframeControl />}\n </RichTextEditorControlsGroup>\n {/* <RichTextEditorControlsGroup>\n {isControllerEnabled('undo') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().undo().run()}\n disabled={!editor?.can().chain().focus().undo().run()}\n aria-label=\"Undo\"\n title=\"Undo\"\n >\n <IconArrowBackUp className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('redo') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().redo().run()}\n disabled={!editor?.can().chain().focus().redo().run()}\n aria-label=\"Redo\"\n title=\"Redo\"\n >\n <IconArrowForwardUp className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup> */}\n </>\n )}\n </RichTextEditorToolbar>\n <RichTextEditorContent>\n <EditorContent editor={editor} />\n </RichTextEditorContent>\n </RichTextEditor>\n {error?.message && (\n <p className=\"text-destructive text-sm\">{error.message}</p>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconPageBreak } from '@tabler/icons-react';\nimport type { Editor } from '@tiptap/react';\nimport {\n RichTextEditorControl,\n RichTextEditorControlsGroup,\n} from '../rich-text-editor';\n\ntype HardbreakControlProps = {\n editor: Editor;\n};\n\nexport function HardbreakControl({ editor }: HardbreakControlProps) {\n const handleHardbreak = (e: React.MouseEvent) => {\n e.preventDefault();\n if (editor) {\n editor.chain().focus().setHardBreak().run();\n }\n };\n\n return (\n <RichTextEditorControlsGroup>\n <RichTextEditorControl\n onClick={handleHardbreak}\n disabled={!editor}\n aria-label=\"Insert hard break\"\n title=\"Insert hard break\"\n >\n <IconPageBreak className=\"size-4\" />\n </RichTextEditorControl>\n </RichTextEditorControlsGroup>\n );\n}\n","'use client';\n\nimport type { Editor } from '@tiptap/react';\nimport type * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype RichTextEditorContextValue = {\n editor: Editor | null;\n};\n\nconst RichTextEditorContext = createContext<RichTextEditorContextValue>({\n editor: null,\n});\n\nexport const useRichTextEditorContext = () => useContext(RichTextEditorContext);\n\ntype RichTextEditorProps = {\n editor: Editor | null;\n children: React.ReactNode;\n className?: string;\n};\n\nexport function RichTextEditor({\n editor,\n children,\n className,\n}: RichTextEditorProps) {\n return (\n <RichTextEditorContext.Provider value={{ editor }}>\n <div className={cn('cn-rich-text-editor overflow-hidden', className)}>\n {children}\n </div>\n </RichTextEditorContext.Provider>\n );\n}\n\ntype RichTextEditorToolbarProps = React.ComponentProps<'div'> & {\n sticky?: boolean;\n stickyOffset?: number;\n};\n\nexport function RichTextEditorToolbar({\n children,\n className,\n sticky,\n stickyOffset = 0,\n ...props\n}: RichTextEditorToolbarProps) {\n return (\n <div\n className={cn(\n 'cn-rich-text-editor-toolbar flex flex-wrap items-center gap-1 p-2',\n sticky && 'sticky z-10',\n className,\n )}\n style={sticky ? { top: `${stickyOffset}px` } : undefined}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function RichTextEditorContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n className={cn(\n 'prose dark:prose-invert max-w-none p-4 min-h-[200px] focus:outline-none',\n '[&_.tiptap]:outline-none [&_.tiptap]:min-h-[180px]',\n '[&_.tiptap_p.is-editor-empty:first-child::before]:text-muted-foreground [&_.tiptap_p.is-editor-empty:first-child::before]:content-[attr(data-placeholder)] [&_.tiptap_p.is-editor-empty:first-child::before]:float-left [&_.tiptap_p.is-editor-empty:first-child::before]:h-0 [&_.tiptap_p.is-editor-empty:first-child::before]:pointer-events-none',\n className,\n )}\n {...props}\n />\n );\n}\n\ntype RichTextEditorControlsGroupProps = React.ComponentProps<'div'>;\n\nexport function RichTextEditorControlsGroup({\n children,\n className,\n ...props\n}: RichTextEditorControlsGroupProps) {\n return (\n <div className={cn('flex items-center gap-0.5', className)} {...props}>\n {children}\n </div>\n );\n}\n\ntype RichTextEditorControlProps = React.ComponentProps<'button'> & {\n active?: boolean;\n};\n\nexport function RichTextEditorControl({\n children,\n className,\n active,\n disabled,\n ...props\n}: RichTextEditorControlProps) {\n return (\n <button\n type=\"button\"\n className={cn(\n 'cn-rich-text-editor-control inline-flex items-center justify-center p-2 text-sm font-medium transition-colors cursor-pointer disabled:cursor-not-allowed',\n 'focus-visible:ring-ring/50 focus-visible:ring-[2px] focus-visible:outline-none',\n 'disabled:pointer-events-none disabled:opacity-50',\n className,\n )}\n disabled={disabled}\n data-active={active}\n {...props}\n >\n {children}\n </button>\n );\n}\n","'use client';\n\nimport { IconExternalLink } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog';\nimport { Input } from '../../ui/input';\nimport { Label } from '../../ui/label';\nimport {\n RichTextEditorControl,\n useRichTextEditorContext,\n} from '../rich-text-editor';\n\nexport function IframeControl() {\n const { editor } = useRichTextEditorContext();\n const [open, setOpen] = useState(false);\n const [iframeTag, setIframeTag] = useState('');\n\n const handleOpen = () => {\n const oldIframeTag = editor?.getAttributes('iframe').src ?? '';\n setIframeTag(oldIframeTag);\n setOpen(true);\n };\n\n const isValidIframeTag = (input: string) => {\n const iframePattern = /^<iframe.*src=\"https?:\\/\\/.*\".*><\\/iframe>$/;\n return iframePattern.test(input);\n };\n\n const makeIframeResponsive = (iframe: string) => {\n const srcMatch = iframe.match(/src=\"([^\"]+)\"/);\n if (!srcMatch) {\n return iframe;\n }\n\n const src = srcMatch[1];\n return `<iframe src=\"${src}\" style=\"top: 0; left: 0; width: 95%; height: 480px; border: 0; margin: 0 auto; display: block;\" allowfullscreen loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\"></iframe>`;\n };\n\n const handleAdd = () => {\n if (iframeTag && isValidIframeTag(iframeTag) && editor) {\n const responsiveIframeTag = makeIframeResponsive(iframeTag);\n editor.chain().focus().insertContent(responsiveIframeTag).run();\n setOpen(false);\n setIframeTag('');\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setIframeTag('');\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger\n render={\n <RichTextEditorControl\n onClick={handleOpen}\n active={editor?.isActive('iframe')}\n aria-label=\"Insert iframe\"\n title=\"Insert iframe\"\n />\n }\n >\n <IconExternalLink className=\"size-4\" />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Insert Iframe</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"iframe-tag\">Iframe Tag</Label>\n <Input\n id=\"iframe-tag\"\n placeholder='<iframe src=\"...\" ></iframe>'\n value={iframeTag}\n onChange={(e) => setIframeTag(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n }}\n />\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button onClick={handleAdd}>Add Iframe</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","'use client';\n\nimport { IconPhoto } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog';\nimport { Input } from '../../ui/input';\nimport { Label } from '../../ui/label';\nimport {\n RichTextEditorControl,\n useRichTextEditorContext,\n} from '../rich-text-editor';\n\nexport function ImageControl() {\n const { editor } = useRichTextEditorContext();\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n\n const handleOpen = () => {\n const oldUrl = editor?.getAttributes('image').src ?? '';\n setUrl(oldUrl);\n setOpen(true);\n };\n\n const handleAdd = () => {\n if (url && editor) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n setOpen(false);\n setUrl('');\n };\n\n const handleClose = () => {\n setOpen(false);\n setUrl('');\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger\n render={\n <RichTextEditorControl\n onClick={handleOpen}\n active={editor?.isActive('image')}\n aria-label=\"Insert image\"\n title=\"Insert image\"\n />\n }\n >\n <IconPhoto className=\"size-4\" />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Insert Image</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"image-url\">Image URL</Label>\n <Input\n id=\"image-url\"\n placeholder=\"https://example.com/image.jpg\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n }}\n />\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button onClick={handleAdd}>Add Image</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","'use client';\n\nimport {\n IconColumnInsertRight,\n IconFreezeRow,\n IconRowInsertBottom,\n IconTable,\n IconTableMinus,\n IconTrash,\n} from '@tabler/icons-react';\nimport type { Editor } from '@tiptap/react';\nimport { RichTextEditorControl } from '../rich-text-editor';\n\ntype TableControlProps = {\n editor: Editor | null;\n};\n\nexport function TableControl({ editor }: TableControlProps) {\n if (!editor) {\n return null;\n }\n\n const handleInsertTable = () => {\n editor\n .chain()\n .focus()\n .insertTable({ rows: 2, cols: 2, withHeaderRow: true })\n .run();\n };\n\n return (\n <>\n <RichTextEditorControl\n onClick={handleInsertTable}\n disabled={!editor.can().insertTable()}\n aria-label=\"Insert table\"\n title=\"Insert table\"\n >\n <IconTable className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n disabled={!editor.can().addColumnAfter()}\n aria-label=\"Add column\"\n title=\"Add column\"\n >\n <IconColumnInsertRight className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().addRowAfter().run()}\n disabled={!editor.can().addRowAfter()}\n aria-label=\"Add row\"\n title=\"Add row\"\n >\n <IconRowInsertBottom className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().deleteColumn().run()}\n disabled={!editor.can().deleteColumn()}\n aria-label=\"Delete column\"\n title=\"Delete column\"\n >\n <IconTableMinus className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().deleteRow().run()}\n disabled={!editor.can().deleteRow()}\n aria-label=\"Delete row\"\n title=\"Delete row\"\n >\n <IconFreezeRow className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().deleteTable().run()}\n disabled={!editor.can().deleteTable()}\n aria-label=\"Delete table\"\n title=\"Delete table\"\n >\n <IconTrash className=\"size-4\" />\n </RichTextEditorControl>\n </>\n );\n}\n","'use client';\n\nimport { IconBrandYoutube } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog';\nimport { Input } from '../../ui/input';\nimport { Label } from '../../ui/label';\nimport {\n RichTextEditorControl,\n useRichTextEditorContext,\n} from '../rich-text-editor';\n\nexport function YoutubeControl() {\n const { editor } = useRichTextEditorContext();\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n\n const handleOpen = () => {\n const oldUrl = editor?.getAttributes('youtube').src ?? '';\n setUrl(oldUrl);\n setOpen(true);\n };\n\n const handleAdd = () => {\n if (url && editor) {\n editor.chain().focus().setYoutubeVideo({ src: url }).run();\n }\n setOpen(false);\n setUrl('');\n };\n\n const handleClose = () => {\n setOpen(false);\n setUrl('');\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger\n render={\n <RichTextEditorControl\n onClick={handleOpen}\n active={editor?.isActive('youtube')}\n aria-label=\"Insert YouTube video\"\n title=\"Insert YouTube video\"\n />\n }\n >\n <IconBrandYoutube className=\"size-4\" />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Insert YouTube Video</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"youtube-url\">YouTube URL</Label>\n <Input\n id=\"youtube-url\"\n placeholder=\"https://youtube.com/watch?v=video-id\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n }}\n />\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button onClick={handleAdd}>Add Video</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import { mergeAttributes } from '@tiptap/core';\nimport { Heading } from '@tiptap/extension-heading';\n\nexport const CustomHeading = Heading.extend({\n addAttributes() {\n return {\n class: {\n default: '',\n },\n };\n },\n renderHTML({ node }) {\n const level = node.attrs.level;\n\n const classes = {\n 1: 'text-4xl font-bold text-foreground mb-4',\n 2: 'text-3xl font-semibold text-foreground mb-3',\n 3: 'text-2xl font-medium text-foreground mb-2',\n 4: 'text-xl font-normal text-foreground mb-1',\n };\n\n return [\n `h${level}`,\n mergeAttributes(this.options.HTMLAttributes, {\n class: classes[level as 1 | 2 | 3 | 4],\n }),\n 0,\n ];\n },\n});\n","import { mergeAttributes, Node, nodePasteRule } from '@tiptap/core';\n\nexport type IframeOptions = {\n addPasteHandler: boolean;\n allowFullscreen: boolean;\n height: number;\n width: number;\n htmlAttributes: Record<string, unknown>;\n inline: boolean;\n src: string;\n style?: string;\n loading?: string;\n referrerpolicy?: string;\n};\n\ntype SetIframeOptions = {\n src: string;\n width?: number;\n height?: number;\n style?: string;\n loading?: string;\n referrerpolicy?: string;\n};\n\nconst trimSrcLink = (src: string) => src.trim();\nconst getEmbedUrlFromSrc = ({ src }: { src: string }) => trimSrcLink(src);\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n iframe: {\n setIframe: (options: SetIframeOptions) => ReturnType;\n };\n }\n}\n\nexport const Iframe = Node.create<IframeOptions>({\n name: 'iframe',\n\n addOptions() {\n return {\n addPasteHandler: true,\n allowFullscreen: true,\n height: 480,\n width: 640,\n htmlAttributes: {},\n inline: false,\n src: '',\n style: 'border:0;',\n loading: 'lazy',\n referrerpolicy: 'no-referrer-when-downgrade',\n };\n },\n\n inline() {\n return this.options.inline;\n },\n\n group() {\n return this.options.inline ? 'inline' : 'block';\n },\n\n draggable: true,\n\n addAttributes() {\n return {\n src: { default: null },\n width: { default: this.options.width },\n height: { default: this.options.height },\n style: { default: this.options.style },\n loading: { default: this.options.loading },\n referrerpolicy: { default: this.options.referrerpolicy },\n };\n },\n\n parseHTML() {\n return [{ tag: 'iframe' }, { tag: 'iframe[src]' }];\n },\n\n addCommands() {\n return {\n setIframe:\n (options: SetIframeOptions) =>\n ({ commands }) => {\n const trimmedSrc = trimSrcLink(options.src);\n if (!trimmedSrc) {\n return false;\n }\n return commands.insertContent({ type: this.name, attrs: options });\n },\n };\n },\n\n addPasteRules() {\n if (this.options.addPasteHandler) {\n return [\n nodePasteRule({\n find: /<iframe[^>]*src=[\"']([^\"']+)[\"'][^>]*>/g,\n type: this.type,\n getAttributes: (match) => {\n return { src: match[1] };\n },\n }),\n ];\n }\n return [];\n },\n\n renderHTML({ HTMLAttributes }) {\n const embedUrl = getEmbedUrlFromSrc({\n src: HTMLAttributes.src,\n });\n\n const iframeStyle = HTMLAttributes.style || this.options.style;\n\n return [\n 'iframe',\n mergeAttributes(\n this.options.htmlAttributes,\n {\n width: HTMLAttributes.width || this.options.width,\n height: HTMLAttributes.height || this.options.height,\n allowfullscreen: this.options.allowFullscreen,\n style: iframeStyle,\n loading: this.options.loading,\n referrerpolicy: this.options.referrerpolicy,\n },\n { ...HTMLAttributes, src: embedUrl },\n ),\n ];\n },\n});\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction VisuallyHidden({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"visually-hidden\"\n className={cn('sr-only', className)}\n {...props}\n />\n );\n}\n\nexport { VisuallyHidden };\n","'use client';\n\nimport { IconTextRecognition } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport type { FieldError, UseFormRegister } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { useLocaleConfig } from '../../provider/mesob-provider';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport type LocaleInputTextProps = {\n label?: string;\n required?: boolean;\n field: string;\n register: UseFormRegister<any>;\n errors?: Record<string, unknown>;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n};\n\nexport function LocaleInputText({\n label,\n required,\n field,\n register,\n errors,\n placeholder,\n className,\n disabled,\n}: LocaleInputTextProps) {\n const [expanded, setExpanded] = useState(false);\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n const otherLanguages = supportedLanguages.filter(\n (lang) => lang.value !== defaultLanguage,\n );\n\n return (\n <div className={cn('cn-locale-input', className)}>\n {label && (\n <Label>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n <div className=\"relative\">\n <Input\n {...register(`${field}.${defaultLanguage}`)}\n placeholder={placeholder}\n disabled={disabled}\n aria-invalid={\n !!(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]\n }\n className={cn(otherLanguages.length > 0 && 'pr-11')}\n />\n {otherLanguages.length > 0 && (\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n disabled={disabled}\n className=\"cn-locale-input-toggle\"\n >\n <IconTextRecognition size={18} />\n </button>\n )}\n </div>\n {(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ] && (\n <p className=\"cn-locale-input-error\">\n {\n (errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]?.message\n }\n </p>\n )}\n\n {expanded && otherLanguages.length > 0 && (\n <div className=\"cn-locale-input-expanded\">\n {otherLanguages.map((lang) => (\n <div key={lang.value} className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Label className=\"min-w-[60px] text-xs text-muted-foreground\">\n {lang.label}\n </Label>\n <div className=\"flex-1 space-y-1\">\n <Input\n {...register(`${field}.${lang.value}`)}\n placeholder={placeholder}\n disabled={disabled}\n className=\"text-sm\"\n />\n {(\n errors?.[field] as Record<string, FieldError | undefined>\n )?.[lang.value] && (\n <p className=\"text-destructive text-xs\">\n {\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[lang.value]?.message\n }\n </p>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconTextRecognition } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport type { FieldError, UseFormRegister } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { useLocaleConfig } from '../../provider/mesob-provider';\nimport { Label } from '../ui/label';\nimport { Textarea } from '../ui/textarea';\n\nexport type LocaleInputTextareaProps = {\n label?: string;\n required?: boolean;\n field: string;\n register: UseFormRegister<any>;\n errors?: Record<string, unknown>;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n rows?: number;\n};\n\nexport function LocaleInputTextarea({\n label,\n required,\n field,\n register,\n errors,\n placeholder,\n className,\n disabled,\n rows = 4,\n}: LocaleInputTextareaProps) {\n const [expanded, setExpanded] = useState(false);\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n const otherLanguages = supportedLanguages.filter(\n (lang) => lang.value !== defaultLanguage,\n );\n\n return (\n <div className={cn('cn-locale-input', className)}>\n {label && (\n <Label>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n <div className=\"relative\">\n <Textarea\n {...register(`${field}.${defaultLanguage}`)}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n aria-invalid={\n !!(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]\n }\n className={cn(otherLanguages.length > 0 && 'pr-11')}\n />\n {otherLanguages.length > 0 && (\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n disabled={disabled}\n className=\"cn-locale-input-toggle-textarea\"\n >\n <IconTextRecognition size={18} />\n </button>\n )}\n </div>\n {(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ] && (\n <p className=\"cn-locale-input-error\">\n {\n (errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]?.message\n }\n </p>\n )}\n\n {expanded && otherLanguages.length > 0 && (\n <div className=\"cn-locale-input-expanded\">\n {otherLanguages.map((lang) => (\n <div key={lang.value} className=\"space-y-1\">\n <div className=\"flex items-start gap-2\">\n <Label className=\"min-w-[60px] text-xs text-muted-foreground mt-2\">\n {lang.label}\n </Label>\n <div className=\"flex-1 space-y-1\">\n <Textarea\n {...register(`${field}.${lang.value}`)}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n className=\"text-sm\"\n />\n {(\n errors?.[field] as Record<string, FieldError | undefined>\n )?.[lang.value] && (\n <p className=\"text-destructive text-xs\">\n {\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[lang.value]?.message\n }\n </p>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport parse from 'html-react-parser';\nimport { useLocale } from 'next-intl';\nimport type { Locale } from '../../lib/locale';\n\nexport type LocaleRichTextProps = {\n text?: Locale;\n defaultLocale?: string;\n className?: string;\n};\n\nexport function LocaleRichText({\n text,\n defaultLocale,\n className,\n}: LocaleRichTextProps) {\n const locale = useLocale();\n const currentLocale = defaultLocale || locale || 'en';\n\n if (!text) {\n return null;\n }\n\n return (\n <div className={className}>\n {parse(text?.[currentLocale] || text?.en || '')}\n </div>\n );\n}\n","'use client';\n\nimport { useLocale } from 'next-intl';\nimport type { Locale } from '../../lib/locale';\n\ntype LocaleTextProps = {\n text?: Locale;\n defaultLocale?: string;\n};\n\nexport function LocaleText({ text, defaultLocale }: LocaleTextProps) {\n const locale = useLocale();\n const currentLocale = defaultLocale || locale || 'en';\n\n if (!text) {\n return null;\n }\n\n return <>{text?.[currentLocale] || text?.en || ''}</>;\n}\n","type MesobLogoProps = {\n width?: number;\n height?: number;\n textColor?: string;\n iconBackgroundColor?: string;\n iconColor?: string;\n className?: string;\n};\n\nexport function MesobLogo({\n width,\n height,\n textColor = '#09f',\n iconBackgroundColor = '#19e',\n iconColor = '#fff',\n className,\n}: MesobLogoProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 315.9 98.15\"\n width={width}\n height={height}\n aria-label=\"Mesob Logo\"\n role=\"presentation\"\n className={className}\n >\n <path\n d=\"M158.89,21.29v44q0,9.15-5.3,14.23t-14.18,5.07q-9,0-14.5-5.21t-5.52-14.54H132a10,10,0,0,0,1.93,6.28,6.49,6.49,0,0,0,5.34,2.25,6.4,6.4,0,0,0,5.21-2.16,9,9,0,0,0,1.79-5.92v-44Z\"\n fill={textColor}\n />\n <path\n d=\"M174.38,26.18a7,7,0,0,1-2.2-5.25,7,7,0,0,1,2.2-5.25,8.28,8.28,0,0,1,11,0,7,7,0,0,1,2.2,5.25,7,7,0,0,1-2.2,5.25,8.28,8.28,0,0,1-11,0Zm11.71,8V84H173.52V34.22Z\"\n fill={textColor}\n />\n <path\n d=\"M217.38,35.74a17.65,17.65,0,0,1,8.93-2.24V46.69H223q-5.93,0-8.94,2.79t-3,9.69V84H198.48V34.22h12.57v7.72A17.57,17.57,0,0,1,217.38,35.74Z\"\n fill={textColor}\n />\n <path\n d=\"M280.62,62.85H244.26A12.38,12.38,0,0,0,248,71.29a11.62,11.62,0,0,0,8.17,3q7,0,10-6h13.55a22.59,22.59,0,0,1-8.26,11.8,24.05,24.05,0,0,1-15,4.63,25.87,25.87,0,0,1-12.88-3.19,22.44,22.44,0,0,1-8.89-9,27.7,27.7,0,0,1-3.18-13.47,28.09,28.09,0,0,1,3.14-13.55,21.92,21.92,0,0,1,8.79-9,28.27,28.27,0,0,1,25.72-.09,21.49,21.49,0,0,1,8.71,8.66A26.18,26.18,0,0,1,281,58,29.48,29.48,0,0,1,280.62,62.85ZM268,54.41a9.93,9.93,0,0,0-3.5-7.76,12.43,12.43,0,0,0-8.35-2.92,11.37,11.37,0,0,0-7.85,2.83,12.4,12.4,0,0,0-3.91,7.85Z\"\n fill={textColor}\n />\n <path\n d=\"M304.77,44.54V68.6A4.73,4.73,0,0,0,306,72.23a6,6,0,0,0,4.09,1.13h5.83V84H308q-15.88,0-15.89-15.44v-24h-5.92V34.22h5.92V21.92h12.66v12.3H315.9V44.54Z\"\n fill={textColor}\n />\n <rect\n width=\"98.15\"\n height=\"98.15\"\n rx=\"20.49\"\n fill={iconBackgroundColor}\n />\n <path\n d=\"M59.84,54.58a15.77,15.77,0,0,0,6.7,3.6,30.16,30.16,0,0,0,8.56.48l-.36,13.89a46.14,46.14,0,0,1-6,.43,33.3,33.3,0,0,1-6.42-.56,27.77,27.77,0,0,1-6.23-1.93,23.13,23.13,0,0,1-5.67-3.64,17.61,17.61,0,0,1-4.87-6.67c-1-2.53-1.89-4.88-2.57-7a51.59,51.59,0,0,0-1.79-4.94,10.55,10.55,0,0,0-2.82-4,17.36,17.36,0,0,0-6.66-3.74A28.24,28.24,0,0,0,23,39.8l1-14.38a44.34,44.34,0,0,1,5.87-.25,34.47,34.47,0,0,1,6.2.72A30.31,30.31,0,0,1,42.28,28a24.51,24.51,0,0,1,5.85,3.8,18.32,18.32,0,0,1,4.92,6.54,70.94,70.94,0,0,1,2.59,6.9c.53,1.7,1.06,3.42,1.59,5.18A8.77,8.77,0,0,0,59.84,54.58Z\"\n fill={iconColor}\n />\n </svg>\n );\n}\n","import { cn } from '../lib/utils';\nimport { MesobLogo } from './mesob-logo';\n\ntype PoweredByProps = {\n className?: string;\n};\n\nexport function PoweredBy({ className }: PoweredByProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center gap-1.5 py-3 text-center',\n className,\n )}\n >\n <a\n href=\"https://mesob.com\"\n target=\"_blank\"\n className=\"text-muted-foreground hover:text-foreground flex items-center justify-center gap-1.5 text-[13px] transition-colors\"\n rel=\"noopener noreferrer\"\n >\n <span>Powered by</span>\n <MesobLogo height={18} />\n </a>\n </div>\n );\n}\n","'use client';\n\nimport parse from 'html-react-parser';\nimport { useLocale } from 'next-intl';\nimport { cn } from '../../lib/utils';\n\ntype RichTextDisplayProps = {\n content: string | { [key: string]: string };\n className?: string;\n};\n\nexport function RichTextDisplay({ content, className }: RichTextDisplayProps) {\n const locale = useLocale();\n\n if (!content) {\n return null;\n }\n\n const contentString =\n typeof content === 'string'\n ? content\n : content[locale] || Object.values(content)[0] || '';\n\n return (\n <div\n className={cn(\n 'cn-rich-text-display prose dark:prose-invert max-w-none',\n 'prose-headings:text-foreground prose-p:text-foreground prose-li:text-foreground',\n 'prose-a:text-primary prose-a:no-underline hover:prose-a:underline',\n className,\n )}\n >\n {parse(contentString)}\n </div>\n );\n}\n","'use client';\n\nimport { IconMoon, IconSun } from '@tabler/icons-react';\nimport { useTheme } from 'next-themes';\nimport { cn } from '../lib/utils';\nimport { Button } from './ui/button';\n\ntype ThemeToggleProps = {\n className?: string;\n};\n\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { resolvedTheme, setTheme, theme } = useTheme();\n const isDark = (theme ?? resolvedTheme) === 'dark';\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={() => setTheme(isDark ? 'light' : 'dark')}\n aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}\n >\n <IconSun className=\"size-5 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <IconMoon className=\"absolute size-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n </Button>\n );\n}\n","'use client';\n\nimport { Accordion as AccordionPrimitive } from '@base-ui/react/accordion';\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n // Legacy props (kept for compatibility; style presets own visuals).\n variant?: 'default' | 'separated' | 'contained' | 'filled';\n radius?: unknown;\n chevronPosition?: 'left' | 'right';\n chevronSize?: number | string;\n chevronIconSize?: number | string;\n chevron?: React.ReactNode | null;\n disableChevronRotation?: boolean;\n transitionDuration?: number;\n order?: 2 | 3 | 4 | 5 | 6;\n unstyled?: boolean;\n};\n\nconst ACCORDION_ROOT_BASE_CN = 'flex w-full flex-col';\nconst ACCORDION_TRIGGER_BASE_CN = cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between',\n 'border border-transparent transition-all outline-none',\n 'disabled:pointer-events-none disabled:opacity-50',\n);\n\nfunction Accordion({\n className,\n variant,\n chevronPosition = 'right',\n transitionDuration,\n unstyled = false,\n radius: _radius,\n chevronSize: _chevronSize,\n chevronIconSize: _chevronIconSize,\n chevron: _chevron,\n disableChevronRotation: _disableChevronRotation,\n order: _order,\n ...props\n}: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n data-chevron-position={chevronPosition}\n data-unstyled={unstyled ? '' : undefined}\n className={cn(\n ACCORDION_ROOT_BASE_CN,\n unstyled ? undefined : 'cn-accordion',\n className,\n )}\n style={\n {\n '--accordion-duration':\n transitionDuration == null ? undefined : `${transitionDuration}ms`,\n } as React.CSSProperties\n }\n {...props}\n />\n );\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('cn-accordion-item', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n chevron,\n chevronPosition,\n icon,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n chevron?: React.ReactNode | null;\n chevronPosition?: 'left' | 'right';\n icon?: React.ReactNode;\n}) {\n const showChevron = chevron !== null;\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'cn-accordion-trigger',\n ACCORDION_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {showChevron && chevronPosition === 'left' && (\n <span className=\"mr-2 inline-flex items-center\">\n {\n (chevron ?? (\n <>\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 !ml-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 !ml-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n )) as React.ReactNode\n }\n </span>\n )}\n {icon && (\n <span className=\"text-muted-foreground mr-2 inline-flex shrink-0\">\n {icon}\n </span>\n )}\n {children}\n {showChevron &&\n chevronPosition !== 'left' &&\n (chevron ?? (\n <>\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n ))}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Panel>) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"cn-accordion-content overflow-hidden\"\n style={\n {\n animationDuration: 'var(--accordion-duration)',\n } as React.CSSProperties\n }\n {...props}\n >\n <div\n data-slot=\"accordion-content-inner\"\n className={cn(\n 'cn-accordion-content-inner',\n 'h-(--accordion-panel-height) data-ending-style:h-0 data-starting-style:h-0',\n '[&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3',\n '[&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\nexport type { AccordionProps };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { Spinner } from './spinner';\n\nconst actionIconVariants = cva(\n \"cn-action-icon inline-flex items-center justify-center shrink-0 font-medium transition-colors cursor-pointer select-none leading-none relative overflow-hidden disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[loading]:cursor-not-allowed [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: 'cn-action-icon-variant-default',\n destructive: 'cn-action-icon-variant-destructive',\n outline: 'cn-action-icon-variant-outline',\n secondary: 'cn-action-icon-variant-secondary',\n ghost: 'cn-action-icon-variant-ghost',\n light: 'cn-action-icon-variant-light',\n },\n size: {\n xs: 'size-[18px] [&_svg]:size-[12px]',\n sm: 'size-[22px] [&_svg]:size-[14px]',\n md: 'size-[28px] [&_svg]:size-[16px]',\n lg: 'size-[34px] [&_svg]:size-[18px]',\n xl: 'size-[44px] [&_svg]:size-[22px]',\n },\n radius: {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n radius: 'md',\n },\n },\n);\n\ntype ActionIconProps = React.ComponentProps<'button'> &\n VariantProps<typeof actionIconVariants> & {\n render?: useRender.RenderProp;\n loading?: boolean;\n color?: ComponentColor;\n };\n\nfunction ActionIcon({\n className,\n variant,\n size,\n radius,\n color,\n render = <button type=\"button\" />,\n loading = false,\n disabled,\n children,\n ...props\n}: ActionIconProps) {\n let loaderSize: 'sm' | 'md' | 'lg' = 'md';\n if (size === 'xs' || size === 'sm') {\n loaderSize = 'sm';\n } else if (size === 'xl') {\n loaderSize = 'lg';\n }\n\n const colorStyle = color\n ? ({\n '--action-icon-color': `var(--${color})`,\n '--action-icon-color-hover': `color-mix(in srgb, var(--${color}) 90%, black)`,\n } as React.CSSProperties)\n : undefined;\n\n return useRender({\n render,\n props: {\n ...props,\n disabled: disabled || loading,\n 'data-slot': 'action-icon',\n 'data-loading': loading || undefined,\n style: { ...colorStyle, ...props.style },\n className: cn(\n actionIconVariants({ variant, size, radius }),\n color &&\n 'bg-[var(--action-icon-color)] hover:bg-[var(--action-icon-color-hover)]',\n className,\n ),\n children: (\n <>\n {loading && (\n <span className=\"cn-action-icon-loader absolute inset-0 flex items-center justify-center\">\n <Spinner\n className={cn(\n loaderSize === 'sm' && 'size-3',\n loaderSize === 'md' && 'size-4',\n loaderSize === 'lg' && 'size-5',\n )}\n />\n </span>\n )}\n <span\n className={cn(\n 'inline-flex items-center justify-center transition-transform',\n loading && 'opacity-0 translate-y-1',\n )}\n >\n {children}\n </span>\n </>\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nexport { ActionIcon, actionIconVariants };\nexport type { ActionIconProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../lib/utils';\n\ntype Position = {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n};\n\ntype AffixProps = React.ComponentProps<'div'> & {\n position: Position;\n zIndex?: number;\n withinPortal?: boolean;\n};\n\nfunction Affix({\n className,\n position,\n zIndex = 1000,\n withinPortal = true,\n children,\n style,\n ...props\n}: AffixProps) {\n const content = (\n <div\n data-slot=\"affix\"\n className={cn('fixed', className)}\n style={{\n zIndex,\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n if (!withinPortal || typeof document === 'undefined') {\n return content;\n }\n\n return createPortal(content, document.body);\n}\n\nexport { Affix };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AlertProps = React.ComponentProps<'div'> & {\n variant?: 'default' | 'destructive' | 'filled' | 'light' | 'outline';\n radius?: unknown;\n color?: unknown;\n};\n\nfunction Alert({\n className,\n variant = 'default',\n radius: _radius,\n color: _color,\n ...props\n}: AlertProps) {\n const mappedVariant = variant === 'destructive' ? 'destructive' : 'default';\n\n return (\n <div\n data-slot=\"alert\"\n data-variant={mappedVariant}\n role=\"alert\"\n className={cn(\n 'cn-alert group/alert',\n mappedVariant === 'destructive'\n ? 'cn-alert-variant-destructive'\n : 'cn-alert-variant-default',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn('cn-alert-title', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('cn-alert-description', className)}\n {...props}\n />\n );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn('cn-alert-action', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\nexport type { AlertProps };\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst isExternal = (href?: string) =>\n !href ||\n href.startsWith('http') ||\n href.startsWith('//') ||\n href.startsWith('mailto:') ||\n href.startsWith('tel:');\n\nconst anchorVariants = cva(\n 'cn-anchor inline-flex items-center gap-1 transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n default: 'cn-anchor-variant-default',\n subtle: 'cn-anchor-variant-subtle',\n gradient: 'cn-anchor-variant-gradient',\n muted: 'cn-anchor-variant-muted',\n },\n underline: {\n always: 'underline',\n hover: 'hover:underline',\n never: 'no-underline',\n },\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'default',\n underline: 'hover',\n size: 'md',\n weight: 'normal',\n },\n },\n);\n\ntype AnchorProps = React.ComponentProps<'a'> &\n VariantProps<typeof anchorVariants>;\n\nfunction Anchor({\n className,\n variant,\n underline,\n size,\n weight,\n children,\n href,\n ...props\n}: AnchorProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const useLink = href && !isExternal(href) && Link;\n const Comp = useLink ? Link : 'a';\n const linkProps = useLink\n ? { ...props, href, ...(locale && { locale }) }\n : { ...props, href };\n\n return (\n <Comp\n data-slot=\"anchor\"\n className={cn(\n anchorVariants({ variant, underline, size, weight }),\n className,\n )}\n {...linkProps}\n >\n {children}\n </Comp>\n );\n}\n\nexport { Anchor, anchorVariants };\nexport type { AnchorProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { useCallback, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AngleSliderProps = React.ComponentProps<'div'> & {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n onChangeEnd?: (value: number) => void;\n size?: number;\n step?: number;\n withLabel?: boolean;\n formatLabel?: (value: number) => React.ReactNode;\n disabled?: boolean;\n};\n\nconst TAU = 2 * Math.PI;\n\nfunction AngleSlider({\n className,\n value: valueProp,\n defaultValue = 0,\n onChange,\n onChangeEnd,\n size = 120,\n step = 1,\n withLabel = true,\n formatLabel,\n disabled = false,\n ...props\n}: AngleSliderProps) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const value = valueProp ?? internalValue;\n const isControlled = valueProp !== undefined;\n const setValue = useCallback(\n (v: number) => {\n const clamped = ((v % 360) + 360) % 360;\n if (!isControlled) {\n setInternalValue(clamped);\n }\n onChange?.(clamped);\n },\n [isControlled, onChange],\n );\n\n const ref = useRef<HTMLDivElement>(null);\n const angleRef = useRef(value);\n\n const getAngle = useCallback(\n (clientX: number, clientY: number) => {\n const el = ref.current;\n if (!el) {\n return value;\n }\n const rect = el.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n let a = (Math.atan2(dy, dx) * 180) / Math.PI + 90;\n if (a < 0) {\n a += 360;\n }\n const stepped = Math.round(a / step) * step;\n return stepped % 360;\n },\n [value, step],\n );\n\n const handleMove = useCallback(\n (clientX: number, clientY: number) => {\n const a = getAngle(clientX, clientY);\n angleRef.current = a;\n setValue(a);\n },\n [getAngle, setValue],\n );\n\n const handlePointerDown = (e: React.PointerEvent) => {\n if (disabled) {\n return;\n }\n e.currentTarget.setPointerCapture(e.pointerId);\n handleMove(e.clientX, e.clientY);\n const onMove = (ev: PointerEvent) => handleMove(ev.clientX, ev.clientY);\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n onChangeEnd?.(angleRef.current);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n };\n\n const angleRad = ((360 - value) * Math.PI) / 180;\n const r = size / 2 - 10;\n const thumbSize = Math.max(10, Math.round(size * 0.09));\n const thumbOffset = thumbSize / 2;\n const innerInset = Math.max(12, Math.round(size * 0.18));\n const thumbX = size / 2 + r * Math.cos(angleRad) - thumbOffset;\n const thumbY = size / 2 + r * Math.sin(angleRad) - thumbOffset;\n\n return (\n <div\n ref={ref}\n data-slot=\"angle-slider\"\n role=\"slider\"\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={value}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n data-disabled={disabled || undefined}\n className={cn(\n 'relative select-none touch-none rounded-full',\n disabled && 'pointer-events-none cursor-not-allowed opacity-50',\n className,\n )}\n style={{ width: size, height: size }}\n onPointerDown={handlePointerDown}\n {...props}\n >\n {/* biome-ignore lint/a11y/noSvgWithoutTitle: decorative track, parent has aria */}\n <svg\n className=\"absolute inset-0 size-full\"\n viewBox={`0 0 ${size} ${size}`}\n aria-hidden\n >\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n className=\"text-border/70\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"6\"\n strokeDasharray={`${(value / 360) * TAU * r} ${TAU * r}`}\n className=\"text-primary\"\n strokeLinecap=\"round\"\n style={{ transform: 'rotate(-90deg)', transformOrigin: 'center' }}\n />\n </svg>\n <div\n className=\"cn-angle-slider-inner absolute\"\n style={{\n inset: innerInset,\n }}\n />\n <div\n data-slot=\"angle-slider-thumb\"\n className=\"cn-angle-slider-thumb absolute\"\n style={{\n width: thumbSize,\n height: thumbSize,\n left: thumbX,\n top: thumbY,\n }}\n />\n {withLabel && (\n <div className=\"absolute inset-0 flex items-center justify-center text-sm font-semibold text-foreground\">\n {formatLabel ? formatLabel(value) : `${Math.round(value)}°`}\n </div>\n )}\n </div>\n );\n}\n\nexport { AngleSlider };\nexport type { AngleSliderProps };\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconChevronDown } from '@tabler/icons-react';\nimport { motion } from 'motion/react';\nimport type { ComponentType, ReactNode } from 'react';\nimport { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from './dropdown-menu';\n\nexport type AnimatedTabItem = {\n name: string;\n value: string;\n href?: string;\n content?: ReactNode;\n};\n\ntype LinkComponentProps = {\n href: string;\n className?: string;\n children: ReactNode;\n ref?: React.Ref<HTMLAnchorElement>;\n};\n\ntype AnimatedTabsProps = {\n tabs: AnimatedTabItem[];\n activeTab?: string;\n defaultTab?: string;\n onTabChange?: (value: string) => void;\n className?: string;\n linkComponent?: ComponentType<LinkComponentProps>;\n};\n\nexport function AnimatedTabs({\n tabs,\n activeTab: controlledActiveTab,\n defaultTab,\n onTabChange,\n className,\n linkComponent: linkProp,\n}: AnimatedTabsProps) {\n const mesob = useMesob();\n const LinkComponent =\n linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const [internalActiveTab, setInternalActiveTab] = useState(\n defaultTab ?? tabs[0]?.value ?? '',\n );\n const activeTab = controlledActiveTab ?? internalActiveTab;\n\n const [visibleTabs, setVisibleTabs] = useState<AnimatedTabItem[]>(tabs);\n const [overflowTabs, setOverflowTabs] = useState<AnimatedTabItem[]>([]);\n const containerRef = useRef<HTMLDivElement>(null);\n const tabsListRef = useRef<HTMLDivElement>(null);\n const dropdownTriggerRef = useRef<HTMLButtonElement>(null);\n const tabRefs = useRef<(HTMLElement | null)[]>([]);\n const [underlineStyle, setUnderlineStyle] = useState({ left: 0, width: 0 });\n\n const handleTabChange = (newValue: string) => {\n if (!controlledActiveTab) {\n setInternalActiveTab(newValue);\n }\n onTabChange?.(newValue);\n };\n\n useLayoutEffect(() => {\n const updateTabs = () => {\n if (!containerRef.current) {\n return;\n }\n if (!tabsListRef.current) {\n return;\n }\n\n const containerWidth = containerRef.current.offsetWidth;\n const dropdownWidth = 80;\n const padding = 16;\n const availableWidth = containerWidth - padding;\n\n let totalWidth = 0;\n const visible: AnimatedTabItem[] = [];\n const overflow: AnimatedTabItem[] = [];\n let hasOverflow = false;\n\n for (const [i, tab] of tabs.entries()) {\n const tabEl = tabRefs.current[i];\n\n if (!tabEl || tabEl.offsetWidth === 0) {\n if (hasOverflow) {\n overflow.push(tab);\n } else {\n visible.push(tab);\n }\n continue;\n }\n\n const tabWidth = tabEl.scrollWidth || tabEl.offsetWidth;\n const wouldFitWithoutDropdown = totalWidth + tabWidth <= availableWidth;\n const wouldFitWithDropdown =\n totalWidth + tabWidth + dropdownWidth <= availableWidth;\n\n if (!hasOverflow && wouldFitWithoutDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n } else if (!hasOverflow && wouldFitWithDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n hasOverflow = true;\n } else {\n hasOverflow = true;\n overflow.push(tab);\n }\n }\n\n setVisibleTabs(visible);\n setOverflowTabs(overflow);\n };\n\n const timeoutId = setTimeout(updateTabs, 100);\n\n const resizeObserver = new ResizeObserver(() => {\n setTimeout(updateTabs, 0);\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n if (tabsListRef.current) {\n resizeObserver.observe(tabsListRef.current);\n }\n\n window.addEventListener('resize', updateTabs);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateTabs);\n };\n }, [tabs]);\n\n useLayoutEffect(() => {\n const updateUnderline = () => {\n const isInOverflow = overflowTabs.some((tab) => tab.value === activeTab);\n\n if (isInOverflow && dropdownTriggerRef.current) {\n const { offsetLeft, offsetWidth } = dropdownTriggerRef.current;\n setUnderlineStyle({\n left: offsetLeft,\n width: offsetWidth,\n });\n return;\n }\n\n const activeTabIndex = tabs.findIndex((tab) => tab.value === activeTab);\n const activeTabElement = tabRefs.current[activeTabIndex];\n\n if (\n activeTabElement &&\n visibleTabs.some((tab) => tab.value === activeTab)\n ) {\n const { offsetLeft, offsetWidth } = activeTabElement;\n setUnderlineStyle({\n left: offsetLeft,\n width: offsetWidth,\n });\n }\n };\n\n updateUnderline();\n }, [activeTab, visibleTabs, overflowTabs, tabs]);\n\n const activeTabData = useMemo(\n () => tabs.find((tab) => tab.value === activeTab),\n [tabs, activeTab],\n );\n\n const renderTab = (tab: AnimatedTabItem, originalIndex: number) => {\n const isActive = activeTab === tab.value;\n\n const tabClassName = cn(\n 'cn-animated-tabs-tab',\n isActive\n ? 'cn-animated-tabs-tab-active'\n : 'cn-animated-tabs-tab-inactive',\n );\n\n const setRef = (el: HTMLElement | null) => {\n if (originalIndex >= 0) {\n tabRefs.current[originalIndex] = el;\n }\n };\n\n if (tab.href && LinkComponent) {\n return (\n <LinkComponent\n key={tab.value}\n href={tab.href}\n className={tabClassName}\n ref={setRef as React.Ref<HTMLAnchorElement>}\n {...(locale && { locale })}\n >\n {tab.name}\n </LinkComponent>\n );\n }\n\n return (\n <button\n key={tab.value}\n type=\"button\"\n ref={setRef}\n onClick={() => handleTabChange(tab.value)}\n className={tabClassName}\n >\n {tab.name}\n </button>\n );\n };\n\n const renderDropdownItem = (tab: AnimatedTabItem) => {\n const isActive = activeTab === tab.value;\n const itemClassName = cn(\n 'cn-animated-tabs-dropdown-item',\n isActive && 'cn-animated-tabs-dropdown-item-active',\n );\n\n if (tab.href && LinkComponent) {\n return (\n <DropdownMenuItem\n key={tab.value}\n render={\n <LinkComponent href={tab.href} {...(locale && { locale })}>\n {tab.name}\n </LinkComponent>\n }\n className={itemClassName}\n >\n {tab.name}\n </DropdownMenuItem>\n );\n }\n\n return (\n <DropdownMenuItem\n key={tab.value}\n onClick={() => handleTabChange(tab.value)}\n className={itemClassName}\n >\n {tab.name}\n </DropdownMenuItem>\n );\n };\n\n return (\n <div\n data-slot=\"animated-tabs\"\n className={cn('cn-animated-tabs flex flex-col', className)}\n >\n <div ref={containerRef} className=\"w-full\">\n <div\n ref={tabsListRef}\n data-slot=\"animated-tabs-list\"\n className=\"cn-animated-tabs-list relative flex items-center\"\n >\n {visibleTabs.map((tab) => {\n const originalIndex = tabs.findIndex((t) => t.value === tab.value);\n return renderTab(tab, originalIndex);\n })}\n\n {overflowTabs.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger\n ref={dropdownTriggerRef}\n className={cn(\n 'cn-animated-tabs-tab cn-animated-tabs-more relative z-10 flex items-center',\n overflowTabs.some((tab) => tab.value === activeTab)\n ? 'cn-animated-tabs-tab-active'\n : 'cn-animated-tabs-tab-inactive',\n )}\n >\n More\n <IconChevronDown className=\"h-4 w-4\" />\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"start\">\n <DropdownMenuContent className=\"min-w-40\">\n {overflowTabs.map(renderDropdownItem)}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n )}\n\n <motion.div\n data-slot=\"animated-tabs-underline\"\n className=\"cn-animated-tabs-underline absolute\"\n animate={{\n left: underlineStyle.left,\n width: underlineStyle.width,\n }}\n transition={{\n type: 'spring',\n stiffness: 400,\n damping: 40,\n }}\n />\n </div>\n </div>\n\n {activeTabData?.content && (\n <div className=\"flex-1\">{activeTabData.content}</div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AspectRatioProps = React.ComponentProps<'div'> & {\n ratio?: number;\n};\n\nfunction AspectRatio({\n className,\n ratio = 1,\n style,\n children,\n ...props\n}: AspectRatioProps) {\n return (\n <div\n data-slot=\"aspect-ratio\"\n className={cn('cn-aspect-ratio relative w-full', className)}\n style={{ paddingBottom: `${100 / ratio}%`, ...style }}\n {...props}\n >\n <div className=\"absolute inset-0\">{children}</div>\n </div>\n );\n}\n\nexport { AspectRatio };\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype BackgroundImageProps = React.ComponentProps<'div'> & {\n src: string;\n radius?: ComponentRadius;\n};\n\nfunction BackgroundImage({\n className,\n src,\n radius = 'md',\n style,\n ...props\n}: BackgroundImageProps) {\n return (\n <div\n data-slot=\"background-image\"\n data-radius={radius}\n className={cn(\n 'cn-background-image bg-cover bg-center bg-no-repeat',\n className,\n )}\n style={{\n backgroundImage: `url(${src})`,\n ...style,\n }}\n {...props}\n />\n );\n}\n\nexport { BackgroundImage };\nexport type { BackgroundImageProps };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\nconst BADGE_VARIANT_CN: Record<\n NonNullable<VariantProps<typeof badgeVariants>['variant']>,\n string\n> = {\n default: 'cn-badge-variant-default',\n secondary: 'cn-badge-variant-secondary',\n destructive: 'cn-badge-variant-destructive-filled',\n outline: 'cn-badge-variant-outline',\n light: 'cn-badge-variant-light',\n dot: 'cn-badge-variant-dot',\n success: 'cn-badge-variant-success',\n warning: 'cn-badge-variant-warning',\n ghost: 'cn-badge-variant-ghost',\n link: 'cn-badge-variant-link',\n};\n\nconst badgeVariants = cva(\n 'cn-badge inline-flex items-center justify-center border font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none overflow-hidden',\n {\n variants: {\n variant: {\n default: '',\n secondary: '',\n destructive: '',\n outline: '',\n light: '',\n dot: '',\n success: '',\n warning: '',\n ghost: '',\n link: '',\n },\n size: {\n xs: 'text-[10px] px-1.5 py-0 gap-0.5 [&>svg]:size-2.5 h-4',\n sm: 'text-xs px-2 py-0.5 gap-1 [&>svg]:size-3 h-5',\n md: 'text-xs px-2.5 py-1 gap-1 [&>svg]:size-3 h-6',\n lg: 'text-sm px-3 py-1 gap-1.5 [&>svg]:size-3.5 h-7',\n xl: 'text-base px-4 py-1.5 gap-2 [&>svg]:size-4 h-8',\n },\n radius: {\n none: 'rounded-none',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n full: 'rounded-full',\n },\n circle: { true: 'rounded-full aspect-square p-0', false: '' },\n },\n defaultVariants: {\n variant: 'default',\n size: 'sm',\n radius: 'full',\n circle: false,\n },\n },\n);\n\ntype BadgeProps = React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n render?: useRender.RenderProp;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n color?: ComponentColor;\n };\n\nfunction Badge({\n className,\n variant = 'default',\n size,\n radius,\n circle,\n color,\n render = <span />,\n leftSection,\n rightSection,\n children,\n ...props\n}: BadgeProps) {\n const colorStyle = color\n ? ({\n '--badge-color': `var(--${color})`,\n '--badge-color-fg': `var(--${color}-foreground, white)`,\n } as React.CSSProperties)\n : undefined;\n\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'badge',\n style: { ...colorStyle, ...props.style },\n className: cn(\n BADGE_VARIANT_CN[variant ?? 'default'],\n badgeVariants({ size, radius, circle }),\n color && 'bg-[var(--badge-color)] text-[var(--badge-color-fg)]',\n className,\n ),\n children: (\n <>\n {leftSection}\n {children}\n {rightSection}\n </>\n ),\n },\n defaultTagName: 'span',\n });\n}\n\nexport { Badge, badgeVariants };\nexport type { BadgeProps };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst blockquoteVariants = cva(\n 'cn-blockquote border-l-4 pl-4 text-sm leading-relaxed text-foreground',\n {\n variants: {\n variant: {\n default: 'cn-blockquote-variant-default',\n primary: 'cn-blockquote-variant-primary',\n secondary: 'cn-blockquote-variant-secondary',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Blockquote({\n className,\n variant,\n ...props\n}: React.ComponentProps<'blockquote'> &\n VariantProps<typeof blockquoteVariants>) {\n return (\n <blockquote\n data-slot=\"blockquote\"\n className={cn(blockquoteVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Blockquote, blockquoteVariants };\n","'use client';\n\nimport { IconMenu2, IconX } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst burgerVariants = cva(\n 'cn-burger inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring cursor-pointer disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n size: {\n sm: 'size-8 [&>svg]:size-4',\n md: 'size-9 [&>svg]:size-5',\n lg: 'size-10 [&>svg]:size-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\ntype BurgerProps = Omit<React.ComponentProps<'button'>, 'children'> &\n VariantProps<typeof burgerVariants> & {\n opened: boolean;\n ariaLabel?: string;\n };\n\nfunction Burger({\n className,\n size,\n opened,\n ariaLabel = 'Toggle menu',\n ...props\n}: BurgerProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"burger\"\n data-opened={opened}\n className={cn(burgerVariants({ size }), className)}\n aria-label={ariaLabel}\n aria-expanded={opened}\n {...props}\n >\n {opened ? <IconX /> : <IconMenu2 />}\n </button>\n );\n}\n\nexport { Burger, burgerVariants };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\nimport { Separator } from './separator';\n\nconst BUTTON_GROUP_BASE_CN = cn(\n 'flex w-fit items-stretch',\n '[&>*]:focus-visible:relative [&>*]:focus-visible:z-10',\n \"[&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit\",\n '[&>input]:flex-1',\n);\n\nfunction ButtonGroup({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<'fieldset'> & {\n orientation?: 'horizontal' | 'vertical';\n}) {\n return (\n <fieldset\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(\n BUTTON_GROUP_BASE_CN,\n 'cn-button-group',\n orientation === 'vertical'\n ? 'cn-button-group-orientation-vertical flex-col'\n : 'cn-button-group-orientation-horizontal',\n orientation === 'vertical'\n ? '[&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none'\n : '[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({\n className,\n render = <div />,\n ...props\n}: React.ComponentProps<'div'> & {\n render?: useRender.RenderProp;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n className: cn(\n 'cn-button-group-text flex h-9 items-center leading-5',\n className,\n ),\n },\n defaultTagName: 'div',\n });\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n 'cn-button-group-separator relative !m-0 self-stretch data-[orientation=vertical]:h-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText };\n","'use client';\n\nimport {\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n} from '@tabler/icons-react';\nimport * as React from 'react';\nimport {\n type DayButton,\n DayPicker,\n getDefaultClassNames,\n} from 'react-day-picker';\n\nexport type { DateRange } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { Button, buttonVariants } from './button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'cn-calendar bg-background group/calendar [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn(\n 'flex gap-4 flex-col md:flex-row relative',\n defaultClassNames.months,\n ),\n month: cn('flex flex-col w-full gap-4', defaultClassNames.month),\n nav: cn(\n 'flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between',\n defaultClassNames.nav,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_previous,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_next,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n month_caption: cn(\n 'flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)',\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n 'w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5',\n defaultClassNames.dropdowns,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n dropdown_root: cn(\n 'cn-calendar-dropdown-root relative',\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\n 'absolute bg-popover inset-0 opacity-0',\n defaultClassNames.dropdown,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : cn(\n 'cn-calendar-caption-label flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5',\n ),\n defaultClassNames.caption_label,\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-muted-foreground rounded-[var(--cell-radius)] flex-1 font-normal text-[0.8rem] select-none',\n defaultClassNames.weekday,\n ),\n week: cn('flex w-full mt-2', defaultClassNames.week),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n week_number_header: cn(\n 'select-none w-(--cell-size)',\n defaultClassNames.week_number_header,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n week_number: cn(\n 'text-[0.8rem] select-none text-muted-foreground',\n defaultClassNames.week_number,\n ),\n day: cn(\n 'relative w-full h-full p-0 text-center group/day aspect-square select-none',\n '[&:last-child[data-selected=true]_button]:rounded-r-[var(--cell-radius)]',\n props.showWeekNumber\n ? '[&:nth-child(2)[data-selected=true]_button]:rounded-l-[var(--cell-radius)]'\n : '[&:first-child[data-selected=true]_button]:rounded-l-[var(--cell-radius)]',\n defaultClassNames.day,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n range_start: cn(\n 'rounded-l-[var(--cell-radius)] bg-accent',\n defaultClassNames.range_start,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n range_end: cn(\n 'rounded-r-[var(--cell-radius)] bg-accent',\n defaultClassNames.range_end,\n ),\n today: cn(\n 'bg-accent/60 text-accent-foreground rounded-[var(--cell-radius)] data-[selected=true]:rounded-none',\n defaultClassNames.today,\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside,\n ),\n disabled: cn(\n 'text-muted-foreground opacity-50',\n defaultClassNames.disabled,\n ),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <IconChevronLeft className={cn('size-4', className)} {...props} />\n );\n }\n\n if (orientation === 'right') {\n return (\n <IconChevronRight\n className={cn('size-4', className)}\n {...props}\n />\n );\n }\n\n return (\n <IconChevronDown className={cn('size-4', className)} {...props} />\n );\n },\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n DayButton: CalendarDayButton,\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) {\n ref.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 rounded-[var(--cell-radius)] leading-none font-normal transition-colors hover:bg-muted/60 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-[var(--cell-radius)] data-[range-end=true]:rounded-r-[var(--cell-radius)] data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-[var(--cell-radius)] data-[range-start=true]:rounded-l-[var(--cell-radius)] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n","'use client';\n\nimport { IconChevronLeft, IconChevronRight } from '@tabler/icons-react';\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\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 ...props\n}: React.ComponentProps<'div'> & CarouselProps) {\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 scrollPrev = () => {\n api?.scrollPrev();\n };\n\n const scrollNext = () => {\n api?.scrollNext();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n scrollNext();\n }\n };\n\n React.useEffect(() => {\n if (!(api && setApi)) {\n return;\n }\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n\n const handleSelect = (carouselApi: CarouselApi) => {\n if (!carouselApi) {\n return;\n }\n setCanScrollPrev(carouselApi.canScrollPrev());\n setCanScrollNext(carouselApi.canScrollNext());\n };\n\n handleSelect(api);\n api.on('reInit', handleSelect);\n api.on('select', handleSelect);\n\n return () => {\n api.off('select', handleSelect);\n api.off('reInit', handleSelect);\n };\n }, [api]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <section\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </section>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<'div'>) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\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 ...props\n}: React.ComponentProps<'fieldset'>) {\n const { orientation } = useCarousel();\n\n return (\n <fieldset\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full border-0 p-0 m-0',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n 'cn-carousel-previous absolute size-8',\n orientation === 'horizontal'\n ? 'top-1/2 -left-8 -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 >\n <IconChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n 'cn-carousel-next absolute size-8',\n orientation === 'horizontal'\n ? 'top-1/2 -right-8 -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 >\n <IconChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype CenterProps = React.ComponentProps<'div'> & {\n inline?: boolean;\n};\n\nfunction Center({ className, inline, children, ...props }: CenterProps) {\n return (\n <div\n data-slot=\"center\"\n className={cn(\n 'flex items-center justify-center',\n inline && 'inline-flex',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { Center };\n","'use client';\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\nimport { cn } from '../../lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nconst sanitizeToken = (value: string) => value.replace(/[^a-zA-Z0-9-_]/g, '');\n\nexport type ChartConfig = {\n [k in string]: {\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 ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n}) {\n const uniqueId = React.useId();\n const sanitizedUniqueId = sanitizeToken(uniqueId);\n const chartToken = id ? sanitizeToken(id) : sanitizedUniqueId;\n const chartId = `chart-${chartToken || sanitizedUniqueId}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\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 // biome-ignore lint/security/noDangerouslySetInnerHtml: CSS injection for chart themes\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 const token = sanitizeToken(key);\n\n if (!color) {\n return null;\n }\n\n if (!token) {\n return null;\n }\n\n return ` --color-${token}: ${color};`;\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 }) {\n const { config } = useChart();\n\n const tooltipLabel = getTooltipLabel({\n hideLabel,\n payload,\n labelKey,\n label,\n labelFormatter,\n labelClassName,\n config,\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 'cn-chart-tooltip grid min-w-[8rem] items-start',\n className,\n )}\n >\n {nestLabel ? null : tooltipLabel}\n <div className=\"grid gap-1.5\">\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(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\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': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n },\n )}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center',\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\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 Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-4',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== 'none')\n .map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n '[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3',\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 let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nfunction getTooltipLabel({\n hideLabel,\n payload,\n labelKey,\n label,\n labelFormatter,\n labelClassName,\n config,\n}: {\n hideLabel: boolean;\n payload?: React.ComponentProps<typeof RechartsPrimitive.Tooltip>['payload'];\n labelKey?: string;\n label: React.ReactNode;\n labelFormatter?: React.ComponentProps<\n typeof RechartsPrimitive.Tooltip\n >['labelFormatter'];\n labelClassName?: string;\n config: ChartConfig;\n}) {\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 as keyof typeof config]?.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\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","'use client';\n\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype CloseButtonProps = Omit<\n React.ComponentProps<typeof Button>,\n 'children'\n> & {\n iconSize?: number;\n};\n\nfunction CloseButton({\n className,\n size = 'icon-sm',\n variant = 'ghost',\n iconSize = 16,\n ...props\n}: CloseButtonProps) {\n return (\n <Button\n data-slot=\"close-button\"\n size={size}\n variant={variant}\n className={cn('cn-close-button shrink-0', className)}\n {...props}\n >\n <IconX size={iconSize} />\n </Button>\n );\n}\n\nexport { CloseButton };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst codeVariants = cva('font-mono', {\n variants: {\n variant: {\n inline: 'cn-code-inline relative px-1.5 py-0.5 text-sm',\n block: 'cn-code-block block w-full p-4 text-sm overflow-x-auto',\n },\n },\n defaultVariants: {\n variant: 'inline',\n },\n});\n\nfunction Code({\n className,\n variant = 'inline',\n ...props\n}: React.ComponentProps<'code'> & VariantProps<typeof codeVariants>) {\n if (variant === 'block') {\n return (\n <pre className=\"my-4\">\n <code\n data-slot=\"code\"\n className={cn(codeVariants({ variant }), className)}\n {...props}\n />\n </pre>\n );\n }\n\n return (\n <code\n data-slot=\"code\"\n className={cn(codeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Code, codeVariants };\n","'use client';\n\nimport { IconColorPicker } from '@tabler/icons-react';\nimport * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n type ColorFormat,\n formatColor,\n isColorValid,\n parseColor,\n} from '../../lib/color-utils';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { ActionIcon } from './action-icon';\nimport { ColorPicker } from './color-picker';\nimport { ColorSwatch } from './color-swatch';\nimport { Input } from './input';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\nimport { Popover, PopoverContent } from './popover';\n\nconst sizeClasses: Record<ComponentSize, string> = {\n xs: 'h-7 text-xs px-2',\n sm: 'h-8 text-sm px-2.5',\n md: 'h-9 text-sm px-3',\n lg: 'h-10 text-base px-4',\n xl: 'h-12 text-lg px-5',\n};\n\nconst previewSizes: Record<ComponentSize, number> = {\n xs: 16,\n sm: 18,\n md: 22,\n lg: 28,\n xl: 36,\n};\n\ntype ColorInputProps = Omit<\n React.ComponentProps<typeof Input>,\n 'type' | 'value' | 'defaultValue' | 'onChange'\n> &\n Omit<InputWrapperProps, 'children'> & {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onValueChange?: (value: string) => void;\n onChangeEnd?: (value: string) => void;\n format?: ColorFormat;\n size?: ComponentSize;\n /** If true, input value resets to last valid on blur. @default true */\n fixOnBlur?: boolean;\n /** If true, user can only pick via picker/swatches, not type. */\n disallowInput?: boolean;\n /** Show color preview swatch on the left. @default true */\n withPreview?: boolean;\n /** Show eye dropper button. @default true when supported */\n withEyeDropper?: boolean;\n eyeDropperIcon?: React.ReactNode;\n /** Close dropdown when a swatch is clicked. @default false */\n closeOnColorSwatchClick?: boolean;\n /** Preset swatches in dropdown */\n swatches?: string[];\n swatchesPerRow?: number;\n /** Show saturation/hue/alpha picker in dropdown. @default true */\n withPicker?: boolean;\n /** When false, no dropdown popover (e.g. when used inside ColorPicker). @default true */\n withPopover?: boolean;\n };\n\nfunction useEyeDropper(): {\n supported: boolean;\n open: () => Promise<{ sRGBHex: string } | undefined>;\n} {\n const supported = typeof window !== 'undefined' && 'EyeDropper' in window;\n const open = useCallback(async () => {\n if (!(supported && 'EyeDropper' in window)) {\n return undefined;\n }\n const w = window as unknown as Window & { [key: string]: unknown };\n const Klass = w.EyeDropper;\n if (typeof Klass !== 'function') {\n return undefined;\n }\n const dropper = new (\n Klass as new () => { open: () => Promise<{ sRGBHex: string }> }\n )();\n return await dropper.open();\n }, [supported]);\n return { supported: !!supported, open };\n}\n\nexport const ColorInput = React.forwardRef<HTMLInputElement, ColorInputProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size = 'sm',\n value: valueProp,\n defaultValue,\n onChange,\n onValueChange,\n onChangeEnd,\n format = 'hex',\n fixOnBlur = true,\n disallowInput = false,\n withPreview = true,\n withEyeDropper: withEyeDropperProp = true,\n eyeDropperIcon,\n closeOnColorSwatchClick = false,\n swatches = [],\n swatchesPerRow = 7,\n withPicker = true,\n withPopover = true,\n onFocus,\n onBlur,\n onClick,\n readOnly,\n placeholder,\n ...inputProps\n },\n ref,\n ) => {\n const [dropdownOpened, setDropdownOpened] = useState(false);\n const [lastValidValue, setLastValidValue] = useState('');\n const [internalValue, setInternalValue] = useState(\n defaultValue ?? valueProp ?? '',\n );\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : internalValue;\n const setValue = useCallback(\n (v: string) => {\n if (!isControlled) {\n setInternalValue(v);\n }\n onChange?.(v);\n onValueChange?.(v);\n },\n [isControlled, onChange, onValueChange],\n );\n const { supported: eyeDropperSupported, open: openEyeDropper } =\n useEyeDropper();\n const _withEyeDropper = withEyeDropperProp && eyeDropperSupported;\n const inputRef = useRef<HTMLInputElement | null>(null);\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const popoverContentRef = useRef<HTMLDivElement | null>(null);\n const openTimestampRef = useRef(0);\n const pointerDownInPopoverRef = useRef(false);\n\n useEffect(() => {\n if (isColorValid(value) || value.trim() === '') {\n setLastValidValue(value);\n }\n }, [value]);\n\n const prevFormatRef = useRef(format);\n useEffect(() => {\n if (prevFormatRef.current !== format && isColorValid(value)) {\n setValue(formatColor(parseColor(value), format));\n prevFormatRef.current = format;\n }\n }, [format, value, setValue]);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n openTimestampRef.current = Date.now();\n setDropdownOpened(true);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (fixOnBlur) {\n setValue(lastValidValue);\n if (!isControlled) {\n setInternalValue(lastValidValue);\n }\n }\n onBlur?.(e);\n const next = e.relatedTarget as Node | null;\n const inputContainer = inputRef.current?.parentElement;\n const stayedInInputArea = next && inputContainer?.contains(next);\n const checkClose = () => {\n if (Date.now() - openTimestampRef.current < 150) {\n return;\n }\n if (pointerDownInPopoverRef.current) {\n return;\n }\n const active = document.activeElement;\n const inPopover =\n popoverContentRef.current?.contains(active) ||\n (next && popoverContentRef.current?.contains(next));\n if (!(inPopover || stayedInInputArea) && active !== inputRef.current) {\n setDropdownOpened(false);\n }\n };\n setTimeout(checkClose, 0);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n onClick?.(e);\n openTimestampRef.current = Date.now();\n setDropdownOpened(true);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = e.currentTarget.value;\n setValue(v);\n if (!isControlled) {\n setInternalValue(v);\n }\n if (isColorValid(v)) {\n onChangeEnd?.(formatColor(parseColor(v), format));\n }\n };\n\n const handleEyeDropper = async () => {\n try {\n const payload = await openEyeDropper();\n if (payload?.sRGBHex) {\n const color = formatColor(parseColor(payload.sRGBHex), format);\n setValue(color);\n if (!isControlled) {\n setInternalValue(color);\n }\n onChangeEnd?.(color);\n }\n } catch {\n // User cancelled or error\n }\n };\n\n const hasWrapper =\n label || description || error || required || withAsterisk;\n const popoverDisabled =\n readOnly ||\n disabled ||\n (withPicker === false && (!swatches.length || swatches.length === 0));\n\n const leftSection = withPreview && (\n <ColorSwatch\n color={isColorValid(value) ? value : '#fff'}\n size={previewSizes[size as ComponentSize]}\n radius=\"sm\"\n withShadow\n className=\"shrink-0\"\n />\n );\n\n const eyeDropperSizes: Record<ComponentSize, string> = {\n xs: 'w-[22px] h-[22px]',\n sm: 'w-[26px] h-[26px]',\n md: 'w-7 h-7',\n lg: 'w-8 h-8',\n xl: 'w-10 h-10',\n };\n\n const eyeDropperIconSizes: Record<ComponentSize, string> = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-4 h-4',\n md: 'w-[18px] h-[18px]',\n lg: 'w-5 h-5',\n xl: 'w-[22px] h-[22px]',\n };\n\n const rightSection =\n withEyeDropperProp && !disabled && !readOnly && eyeDropperSupported ? (\n <ActionIcon\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Pick color from screen\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleEyeDropper();\n }}\n className={cn(\n 'cn-color-input-eye-dropper',\n eyeDropperSizes[size as ComponentSize],\n )}\n >\n {eyeDropperIcon ?? (\n <IconColorPicker\n className={eyeDropperIconSizes[size as ComponentSize]}\n stroke={1.5}\n />\n )}\n </ActionIcon>\n ) : null;\n\n const inputEl = (\n <div ref={anchorRef} className=\"relative w-full\">\n {leftSection && (\n <div className=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 flex items-center\">\n {leftSection}\n </div>\n )}\n <Input\n ref={(el) => {\n (\n inputRef as React.MutableRefObject<HTMLInputElement | null>\n ).current = el;\n if (typeof ref === 'function') {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n type=\"text\"\n autoComplete=\"off\"\n spellCheck={false}\n value={value}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={handleClick}\n readOnly={disallowInput || readOnly}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n required={required}\n placeholder={\n placeholder ?? (format === 'hex' ? '#000000' : 'rgb(0, 0, 0)')\n }\n className={cn(\n sizeClasses[size as ComponentSize],\n leftSection && 'pl-10',\n rightSection && 'pr-10',\n (disallowInput || readOnly) && 'cursor-pointer',\n 'transition-colors',\n className,\n )}\n {...inputProps}\n />\n {rightSection && (\n <div className=\"absolute right-0.5 top-1/2 -translate-y-1/2 flex items-center pointer-events-auto\">\n {rightSection}\n </div>\n )}\n </div>\n );\n\n const content =\n !withPopover || popoverDisabled ? (\n inputEl\n ) : (\n <Popover open={dropdownOpened} onOpenChange={setDropdownOpened}>\n {inputEl}\n <PopoverContent\n anchor={anchorRef}\n align=\"start\"\n side=\"bottom\"\n sideOffset={5}\n className=\"cn-color-input-popover\"\n initialFocus={false}\n onPointerDownCapture={() => {\n pointerDownInPopoverRef.current = true;\n }}\n onPointerUpCapture={() => {\n setTimeout(() => {\n pointerDownInPopoverRef.current = false;\n }, 50);\n }}\n onMouseDown={(e: React.MouseEvent) => {\n const t = e.target as HTMLElement;\n if (\n !(\n t.closest('[data-slot=\"slider\"]') ||\n t.closest('[role=\"slider\"]') ||\n t.closest('button')\n )\n ) {\n e.preventDefault();\n }\n }}\n >\n <div ref={popoverContentRef}>\n <ColorPicker\n value={value}\n onChange={(v) => {\n setValue(v);\n if (!isControlled) {\n setInternalValue(v);\n }\n }}\n onChangeEnd={onChangeEnd}\n format={format}\n swatches={swatches}\n swatchesPerRow={swatchesPerRow}\n withPicker={withPicker}\n size={size as ComponentSize}\n onColorSwatchClick={\n closeOnColorSwatchClick\n ? () => setDropdownOpened(false)\n : undefined\n }\n />\n </div>\n </PopoverContent>\n </Popover>\n );\n\n if (!hasWrapper) {\n return content;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {content}\n </InputWrapper>\n );\n },\n);\n\nColorInput.displayName = 'ColorInput';\n","/** Hsva: h 0-360, s/v/a 0-1 */\nexport type Hsva = { h: number; s: number; v: number; a: number };\n\nexport type ColorFormat = 'hex' | 'hexa' | 'rgb' | 'rgba' | 'hsl' | 'hsla';\n\nfunction hex2rgb(hex: string): [number, number, number] {\n const n = hex.replace(/^#/, '');\n if (n.length === 3) {\n const r = Number.parseInt(n[0] + n[0], 16);\n const g = Number.parseInt(n[1] + n[1], 16);\n const b = Number.parseInt(n[2] + n[2], 16);\n return [r, g, b];\n }\n return [\n Number.parseInt(n.slice(0, 2), 16),\n Number.parseInt(n.slice(2, 4), 16),\n Number.parseInt(n.slice(4, 6), 16),\n ];\n}\n\nfunction rgb2hsv(r: number, g: number, b: number): [number, number, number] {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n const v = max;\n const s = max === 0 ? 0 : d / max;\n let h = 0;\n if (max !== min) {\n switch (max) {\n case rn:\n h = (gn - bn) / d + (gn < bn ? 6 : 0);\n break;\n case gn:\n h = (bn - rn) / d + 2;\n break;\n default:\n h = (rn - gn) / d + 4;\n }\n h /= 6;\n }\n return [h * 360, s, v];\n}\n\nfunction hsv2rgb(h: number, s: number, v: number): [number, number, number] {\n const hn = (h % 360) / 360;\n const i = Math.floor(hn * 6);\n const f = hn * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n return [v * 255, t * 255, p * 255];\n case 1:\n return [q * 255, v * 255, p * 255];\n case 2:\n return [p * 255, v * 255, t * 255];\n case 3:\n return [p * 255, q * 255, v * 255];\n case 4:\n return [t * 255, p * 255, v * 255];\n default: {\n return [v * 255, p * 255, q * 255];\n }\n }\n}\n\nconst RGB_RE =\n /rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/;\nconst HEX_RE = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\nconst HSL_RE =\n /hsla?\\s*\\(\\s*(\\d+)\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/;\n\n/** Returns true if the string is empty or a parseable color (hex, rgb, rgba, hsl, hsla). */\nexport function isColorValid(value: string | null | undefined): boolean {\n const t = value?.trim();\n if (t === '' || t == null) {\n return true;\n }\n return HEX_RE.test(t) || RGB_RE.test(t) || HSL_RE.test(t);\n}\n\nfunction hsl2rgb(h: number, s: number, l: number): [number, number, number] {\n const sn = s / 100;\n const ln = l / 100;\n const c = (1 - Math.abs(2 * ln - 1)) * sn;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = ln - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n return [(r + m) * 255, (g + m) * 255, (b + m) * 255];\n}\n\nfunction rgb2hsl(r: number, g: number, b: number): [number, number, number] {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n if (max !== min) {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn:\n h = (gn - bn) / d + (gn < bn ? 6 : 0);\n break;\n case gn:\n h = (bn - rn) / d + 2;\n break;\n default:\n h = (rn - gn) / d + 4;\n }\n h /= 6;\n }\n return [h * 360, s * 100, l * 100];\n}\n\n/** Parse color string to Hsva. Falls back to black opaque on parse failure. */\nexport function parseColor(value: string): Hsva {\n const fallback: Hsva = { h: 0, s: 0, v: 0, a: 1 };\n const trimmed = value?.trim();\n if (!trimmed) {\n return fallback;\n }\n\n const hex = HEX_RE.exec(trimmed);\n if (hex) {\n const part = hex[1];\n const [r, g, b] =\n part.length <= 4\n ? hex2rgb(part)\n : [\n Number.parseInt(part.slice(0, 2), 16),\n Number.parseInt(part.slice(2, 4), 16),\n Number.parseInt(part.slice(4, 6), 16),\n ];\n const a =\n part.length === 8 ? Number.parseInt(part.slice(6, 8), 16) / 255 : 1;\n const [h, s, vv] = rgb2hsv(r, g, b);\n return { h, s, v: vv, a };\n }\n\n const rgb = RGB_RE.exec(trimmed);\n if (rgb) {\n const r = Number(rgb[1]);\n const g = Number(rgb[2]);\n const b = Number(rgb[3]);\n const a = rgb[4] != null ? Number(rgb[4]) : 1;\n const [h, s, vv] = rgb2hsv(r, g, b);\n return { h, s, v: vv, a };\n }\n\n const hsl = HSL_RE.exec(trimmed);\n if (hsl) {\n const h = Number(hsl[1]);\n const s = Number(hsl[2]);\n const l = Number(hsl[3]);\n const a = hsl[4] != null ? Number(hsl[4]) : 1;\n const [r, g, b] = hsl2rgb(h, s, l);\n const [hh, ss, vv] = rgb2hsv(r, g, b);\n return { h: hh, s: ss, v: vv, a };\n }\n\n return fallback;\n}\n\n/** Format Hsva to string by format. */\nexport function formatColor(hsva: Hsva, format: ColorFormat): string {\n const [r, g, b] = hsv2rgb(hsva.h, hsva.s, hsva.v);\n const rr = Math.round(r);\n const gg = Math.round(g);\n const bb = Math.round(b);\n const a = hsva.a;\n\n switch (format) {\n case 'hex':\n return `#${[rr, gg, bb].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n case 'hexa':\n return `#${[rr, gg, bb, Math.round(a * 255)].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n case 'rgb':\n return `rgb(${rr}, ${gg}, ${bb})`;\n case 'rgba':\n return `rgba(${rr}, ${gg}, ${bb}, ${a})`;\n case 'hsl': {\n const [h, s, l] = rgb2hsl(rr, gg, bb);\n return `hsl(${Math.round(h)}, ${Math.round(s)}%, ${Math.round(l)}%)`;\n }\n case 'hsla': {\n const [h, s, l] = rgb2hsl(rr, gg, bb);\n return `hsla(${Math.round(h)}, ${Math.round(s)}%, ${Math.round(l)}%, ${a})`;\n }\n default:\n return formatColor(hsva, 'hex');\n }\n}\n\nexport function hasAlpha(format: ColorFormat): boolean {\n return format === 'hexa' || format === 'rgba' || format === 'hsla';\n}\n","'use client';\n\nimport type * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n type ColorFormat,\n formatColor,\n type Hsva,\n hasAlpha,\n parseColor,\n} from '../../lib/color-utils';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { ColorInput } from './color-input';\nimport { ColorSwatch } from './color-swatch';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\ntype ColorPickerProps = Omit<\n React.ComponentProps<typeof ColorInput>,\n 'label' | 'description' | 'error' | 'onChange' | 'onValueChange' | 'size'\n> &\n Omit<InputWrapperProps, 'children'> & {\n size?: ComponentSize;\n value?: string;\n onChange?: (value: string) => void;\n onChangeEnd?: (value: string) => void;\n /** hex | hexa | rgb | rgba | hsl | hsla */\n format?: ColorFormat;\n /** Show saturation + hue (+ alpha) picker. false = swatches only */\n withPicker?: boolean;\n fullWidth?: boolean;\n /** Preset colors */\n swatches?: string[];\n swatchesPerRow?: number;\n /** Called when a swatch is clicked (e.g. to close parent dropdown) */\n onColorSwatchClick?: () => void;\n saturationLabel?: string;\n hueLabel?: string;\n alphaLabel?: string;\n };\n\nconst SATURATION_HEIGHT: Record<ComponentSize, number> = {\n xs: 80,\n sm: 100,\n md: 120,\n lg: 140,\n xl: 160,\n};\n\nconst THUMB_SIZE: Record<ComponentSize, number> = {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 18,\n xl: 20,\n};\n\nconst SLIDER_TRACK_H: Record<ComponentSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-1.5',\n lg: 'h-1.5',\n xl: 'h-1.5',\n};\nconst SLIDER_THUMB_SZ: Record<ComponentSize, string> = {\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-4',\n xl: 'size-4',\n};\n\n/** Pointer-based slider (no position:fixed input) - works inside popovers */\nfunction HueAlphaSlider({\n value,\n min,\n max,\n onChange,\n onEnd,\n disabled,\n size,\n trackBg,\n ariaLabel,\n className,\n}: {\n value: number;\n min: number;\n max: number;\n onChange: (v: number) => void;\n onEnd: (value: number) => void;\n disabled?: boolean;\n size: ComponentSize;\n trackBg?: string;\n ariaLabel?: string;\n className?: string;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const lastRef = useRef(value);\n const handleMove = useCallback(\n (clientX: number) => {\n const el = ref.current;\n if (!el) {\n return;\n }\n const rect = el.getBoundingClientRect();\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const v = min + pct * (max - min);\n lastRef.current = v;\n onChange(v);\n },\n [min, max, onChange],\n );\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) {\n return;\n }\n e.currentTarget.setPointerCapture(e.pointerId);\n handleMove(e.clientX);\n const onMove = (ev: PointerEvent) => handleMove(ev.clientX);\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n onEnd(lastRef.current);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n },\n [disabled, handleMove, onEnd],\n );\n const pct = ((value - min) / (max - min)) * 100;\n const trackH = SLIDER_TRACK_H[size];\n const thumbSz = SLIDER_THUMB_SZ[size];\n return (\n <div\n ref={ref}\n role=\"slider\"\n aria-label={ariaLabel}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex w-full touch-none select-none items-center overflow-hidden rounded-full',\n trackH,\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n style={\n trackBg ? ({ background: trackBg } as React.CSSProperties) : undefined\n }\n onPointerDown={handlePointerDown}\n >\n <div\n className={cn('cn-color-picker-slider-thumb absolute', thumbSz)}\n style={{\n left: `${pct}%`,\n top: '50%',\n transform: 'translate(-50%, -50%)',\n }}\n />\n </div>\n );\n}\n\n// biome-ignore lint: color picker has many format/size branches\nfunction ColorPicker({\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n disabled,\n className,\n size = 'md',\n format = 'hex',\n withPicker = true,\n fullWidth = false,\n swatches = [],\n swatchesPerRow = 7,\n onColorSwatchClick,\n value,\n onChange,\n onChangeEnd,\n saturationLabel,\n hueLabel,\n alphaLabel,\n ...inputProps\n}: ColorPickerProps) {\n const [hsva, setHsva] = useState<Hsva>(() =>\n parseColor(String(value ?? inputProps.defaultValue ?? '#000000')),\n );\n const isControlled = value !== undefined;\n const valueRef = useRef(value);\n const saturationRef = useRef<HTMLDivElement>(null);\n const lastHsvaRef = useRef<Hsva>(hsva);\n lastHsvaRef.current = hsva;\n\n useEffect(() => {\n if (value === valueRef.current) {\n return;\n }\n valueRef.current = value;\n if (value != null) {\n const next = parseColor(\n typeof value === 'string' ? value : String(value),\n );\n setHsva(next);\n lastHsvaRef.current = next;\n }\n }, [value]);\n\n const emit = useCallback(\n (next: Hsva) => {\n const str = formatColor(next, format);\n if (!isControlled) {\n setHsva(next);\n }\n onChange?.(str);\n },\n [format, isControlled, onChange],\n );\n\n const emitEnd = useCallback(\n (next: Hsva) => {\n const str = formatColor(next, format);\n onChangeEnd?.(str);\n },\n [format, onChangeEnd],\n );\n\n const handleSaturationMove = useCallback(\n (clientX: number, clientY: number) => {\n const el = saturationRef.current;\n if (!el) {\n return;\n }\n const rect = el.getBoundingClientRect();\n const x = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const y = Math.max(\n 0,\n Math.min(1, 1 - (clientY - rect.top) / rect.height),\n );\n const next = { ...hsva, s: x, v: y };\n lastHsvaRef.current = next;\n setHsva(next);\n onChange?.(formatColor(next, format));\n },\n [format, hsva, onChange],\n );\n\n const handleSaturationPointerDown = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) {\n return;\n }\n e.currentTarget.setPointerCapture(e.pointerId);\n handleSaturationMove(e.clientX, e.clientY);\n const onMove = (ev: PointerEvent) =>\n handleSaturationMove(ev.clientX, ev.clientY);\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n emitEnd(lastHsvaRef.current);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n },\n [disabled, emitEnd, handleSaturationMove],\n );\n\n const hueHex = formatColor({ ...hsva, s: 1, v: 1, a: 1 }, 'hex');\n const showAlpha = hasAlpha(format);\n const satHeight = SATURATION_HEIGHT[size];\n const thumbSize = THUMB_SIZE[size];\n\n const pickerEl = (\n <div\n className={cn(\n 'cn-color-picker flex flex-col gap-3',\n fullWidth && 'w-full',\n !fullWidth && 'w-[var(--cp-width,220px)]',\n className,\n )}\n style={\n {\n '--cp-saturation-height': `${satHeight}px`,\n '--cp-thumb-size': `${thumbSize}px`,\n } as React.CSSProperties\n }\n >\n {withPicker && (\n <>\n {/* Saturation / value 2D picker */}\n <div\n ref={saturationRef}\n role=\"slider\"\n aria-label={saturationLabel ?? 'Saturation and brightness'}\n aria-valuenow={hsva.s * 100}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'cn-color-picker-saturation relative touch-none select-none',\n disabled && 'pointer-events-none opacity-50',\n )}\n style={{\n height: satHeight,\n background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, ${hueHex})`,\n }}\n onPointerDown={handleSaturationPointerDown}\n >\n <div\n className=\"cn-color-picker-thumb absolute\"\n style={{\n left: `${hsva.s * 100}%`,\n top: `${(1 - hsva.v) * 100}%`,\n width: thumbSize,\n height: thumbSize,\n marginLeft: -thumbSize / 2,\n marginTop: -thumbSize / 2,\n backgroundColor: formatColor(hsva, 'hex'),\n }}\n />\n </div>\n\n {/* Hue slider */}\n <div className=\"flex flex-col gap-1\">\n {hueLabel && (\n <span className=\"text-muted-foreground text-xs\">{hueLabel}</span>\n )}\n <HueAlphaSlider\n value={Math.round(hsva.h)}\n min={0}\n max={360}\n onChange={(h) => emit({ ...hsva, h })}\n onEnd={(h) => emitEnd({ ...hsva, h })}\n disabled={disabled}\n size={size}\n trackBg=\"linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)\"\n ariaLabel={hueLabel ?? 'Hue'}\n className=\"cn-color-picker-slider\"\n />\n </div>\n\n {/* Alpha slider */}\n {showAlpha && (\n <div className=\"flex flex-col gap-1\">\n {alphaLabel && (\n <span className=\"text-muted-foreground text-xs\">\n {alphaLabel}\n </span>\n )}\n <div className=\"relative\">\n <div\n className=\"cn-color-picker-alpha-bg absolute inset-0 pointer-events-none\"\n style={{\n background: `linear-gradient(to right, transparent, ${hueHex})`,\n }}\n aria-hidden\n />\n <HueAlphaSlider\n value={Math.round(hsva.a * 100)}\n min={0}\n max={100}\n onChange={(a) => emit({ ...hsva, a: a / 100 })}\n onEnd={(a) => emitEnd({ ...hsva, a: a / 100 })}\n disabled={disabled}\n size={size}\n ariaLabel={alphaLabel ?? 'Alpha'}\n className=\"cn-color-picker-slider relative\"\n />\n </div>\n </div>\n )}\n\n {/* Color preview when alpha */}\n {showAlpha && (\n <div className=\"flex items-center gap-2\">\n <ColorSwatch\n color={formatColor(hsva, format)}\n size={28}\n withShadow\n />\n <ColorInput\n value={formatColor(hsva, format)}\n onValueChange={(v) => {\n const parsed = parseColor(v);\n setHsva(parsed);\n onChange?.(v);\n }}\n disabled={disabled}\n format={\n (format as ColorFormat) === 'hexa'\n ? 'hex'\n : (format as 'hex' | 'rgb' | 'rgba')\n }\n className=\"flex-1 min-w-0\"\n withPopover={false}\n />\n </div>\n )}\n\n {/* Hex/rgb input when no alpha */}\n {!showAlpha && (\n <ColorInput\n value={formatColor(hsva, format)}\n onValueChange={(v) => {\n const parsed = parseColor(v);\n setHsva(parsed);\n onChange?.(v);\n }}\n disabled={disabled}\n format={format}\n withPopover={false}\n {...inputProps}\n />\n )}\n </>\n )}\n\n {swatches.length > 0 && (\n <div\n className=\"grid gap-2\"\n style={{\n gridTemplateColumns: `repeat(${Math.max(1, swatchesPerRow)}, minmax(0, 1fr))`,\n }}\n >\n {swatches.map((color) => (\n <ColorSwatch\n key={color}\n color={color}\n size={26}\n withShadow\n className=\"cn-color-picker-swatch\"\n tabIndex={disabled ? undefined : 0}\n role=\"button\"\n aria-label={`Color ${color}`}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n const parsed = parseColor(color);\n setHsva(parsed);\n onChange?.(color);\n }\n }}\n onClick={() => {\n const parsed = parseColor(color);\n setHsva(parsed);\n onChange?.(color);\n onColorSwatchClick?.();\n }}\n />\n ))}\n </div>\n )}\n </div>\n );\n\n const hasWrapper = label || description || error || required || withAsterisk;\n\n if (!hasWrapper) {\n return pickerEl;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n disabled={disabled}\n >\n {pickerEl}\n </InputWrapper>\n );\n}\n\nexport { ColorPicker };\nexport type { ColorPickerProps };\nexport type { ColorFormat } from '../../lib/color-utils';\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype ColorSwatchProps = React.ComponentProps<'div'> & {\n color: string;\n size?: number | string;\n radius?: ComponentRadius;\n withShadow?: boolean;\n};\n\nconst radiusClasses: Record<ComponentRadius, string> = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n};\n\nfunction ColorSwatch({\n className,\n color,\n size = 28,\n radius = 'full',\n withShadow = true,\n children,\n style,\n ...props\n}: ColorSwatchProps) {\n const sizeStyle =\n typeof size === 'number'\n ? { width: size, height: size, minWidth: size, minHeight: size }\n : { width: size, height: size, minWidth: size, minHeight: size };\n\n return (\n <div\n data-slot=\"color-swatch\"\n className={cn(\n 'cn-color-swatch relative inline-block overflow-hidden transition-colors',\n radiusClasses[radius],\n className,\n )}\n style={{ ...sizeStyle, ...style }}\n {...props}\n >\n <span\n className=\"absolute inset-0 block\"\n style={{ backgroundColor: color }}\n />\n {withShadow && <span className=\"cn-color-swatch-shadow\" aria-hidden />}\n {children && (\n <span className=\"relative z-10 flex size-full items-center justify-center\">\n {children}\n </span>\n )}\n </div>\n );\n}\n\nexport { ColorSwatch };\nexport type { ColorSwatchProps };\n","'use client';\n\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst POPOVER_POSITIONER_CN = 'isolate z-50';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n anchor,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Popup> & {\n align?: React.ComponentProps<typeof PopoverPrimitive.Positioner>['align'];\n alignOffset?: React.ComponentProps<\n typeof PopoverPrimitive.Positioner\n >['alignOffset'];\n side?: React.ComponentProps<typeof PopoverPrimitive.Positioner>['side'];\n sideOffset?: React.ComponentProps<\n typeof PopoverPrimitive.Positioner\n >['sideOffset'];\n anchor?: React.ComponentProps<typeof PopoverPrimitive.Positioner>['anchor'];\n}) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n anchor={anchor}\n className={POPOVER_POSITIONER_CN}\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n 'cn-popover-content cn-popover-content-logical z-50 w-72 origin-(--transform-origin) outline-hidden',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn('cn-popover-header', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverTitle({\n className,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Title>) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn('cn-popover-title', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Description>) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn('cn-popover-description', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n PopoverAnchor,\n};\n","'use client';\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { IconCheck, IconChevronDown } from '@tabler/icons-react';\nimport { useMemo, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from './input-group';\n\ntype ComboboxOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype ComboboxProps = Omit<\n ComboboxPrimitive.Root.Props<string>,\n 'children' | 'onValueChange' | 'value' | 'inputValue' | 'onInputValueChange'\n> & {\n options: ComboboxOption[];\n value?: string | null;\n onValueChange?: (value: string | null) => void;\n placeholder?: string;\n emptyText?: string;\n disabled?: boolean;\n showClear?: boolean;\n className?: string;\n};\n\nconst COMBOBOX_CONTENT_BASE_CN =\n 'cn-menu-target group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width)';\n\nconst COMBOBOX_ITEM_BASE_CN =\n 'relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nfunction Combobox({\n options,\n value,\n onValueChange,\n placeholder = 'Select an option...',\n emptyText = 'No results found.',\n disabled = false,\n showClear = false,\n className,\n ...props\n}: ComboboxProps) {\n const [inputValue, setInputValue] = useState('');\n\n const selectedOption = useMemo(\n () => options.find((opt) => opt.value === value) ?? null,\n [options, value],\n );\n\n const filteredOptions = useMemo(() => {\n if (!inputValue) {\n return options;\n }\n const q = inputValue.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(q));\n }, [inputValue, options]);\n\n return (\n <ComboboxPrimitive.Root\n data-slot=\"combobox\"\n disabled={disabled}\n value={value ?? undefined}\n inputValue={inputValue}\n onInputValueChange={(next) => setInputValue(next)}\n onValueChange={(next) => onValueChange?.((next as string | null) ?? null)}\n {...props}\n >\n <InputGroup className={cn('w-auto', className)}>\n <ComboboxPrimitive.Input\n render={\n <InputGroupInput\n disabled={disabled}\n placeholder={selectedOption?.label ?? placeholder}\n />\n }\n />\n\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n render={\n <ComboboxPrimitive.Trigger data-slot=\"combobox-trigger\">\n <IconChevronDown\n data-slot=\"combobox-trigger-icon\"\n className=\"cn-combobox-trigger-icon\"\n />\n </ComboboxPrimitive.Trigger>\n }\n disabled={disabled}\n className={cn(\n showClear &&\n 'group-has-data-[slot=combobox-clear]/input-group:hidden',\n 'data-pressed:bg-transparent',\n )}\n />\n\n {showClear && (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n disabled={disabled}\n >\n <span className=\"sr-only\">Clear</span>\n </ComboboxPrimitive.Clear>\n )}\n </InputGroupAddon>\n </InputGroup>\n\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side=\"bottom\"\n sideOffset={6}\n align=\"start\"\n alignOffset={0}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n className={cn(COMBOBOX_CONTENT_BASE_CN, 'cn-combobox-content')}\n >\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className=\"cn-combobox-list\"\n >\n {filteredOptions.length === 0 ? (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className=\"cn-combobox-empty\"\n >\n {emptyText}\n </ComboboxPrimitive.Empty>\n ) : (\n filteredOptions.map((option) => (\n <ComboboxPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n data-slot=\"combobox-item\"\n className={cn(COMBOBOX_ITEM_BASE_CN, 'cn-combobox-item')}\n >\n <span className=\"cn-combobox-item-text\">\n {option.label}\n </span>\n\n <ComboboxPrimitive.ItemIndicator\n render={<span className=\"cn-combobox-item-indicator\" />}\n >\n <IconCheck className=\"size-4\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n ))\n )}\n </ComboboxPrimitive.List>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n}\n\nexport { Combobox };\nexport type { ComboboxOption };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst containerVariants = cva('mx-auto w-full', {\n variants: {\n size: {\n xs: 'max-w-screen-xs',\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n fluid: 'max-w-full',\n },\n px: {\n none: 'px-0',\n sm: 'px-4',\n md: 'px-6',\n lg: 'px-8',\n xl: 'px-12',\n },\n },\n defaultVariants: {\n size: 'lg',\n px: 'md',\n },\n});\n\ntype ContainerProps = React.ComponentProps<'div'> &\n VariantProps<typeof containerVariants> & {\n fluid?: boolean;\n };\n\nfunction Container({\n className,\n size,\n px,\n fluid,\n children,\n ...props\n}: ContainerProps) {\n return (\n <div\n data-slot=\"container\"\n className={cn(\n 'cn-container min-w-0 transition-[max-width,padding]',\n containerVariants({ size: fluid ? 'fluid' : size, px }),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { Container, containerVariants };\nexport type { ContainerProps };\n","'use client';\n\nimport { ContextMenu as ContextMenuPrimitive } from '@base-ui/react/context-menu';\nimport { IconCheck, IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst CONTEXT_MENU_POSITIONER_CN = 'isolate z-50 outline-none';\n\nconst CONTEXT_MENU_CONTENT_CN = cn(\n 'cn-context-menu-content cn-context-menu-content-logical cn-menu-target',\n 'z-50 max-h-(--available-height)',\n 'origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none',\n 'data-closed:overflow-hidden',\n);\n\nconst CONTEXT_MENU_ITEM_BASE_CN = cn(\n 'group/context-menu-item relative flex cursor-default items-center',\n 'outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nconst CONTEXT_MENU_SUB_TRIGGER_BASE_CN = cn(\n 'flex cursor-default items-center outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={cn('select-none', className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubmenuRoot>) {\n return (\n <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n );\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubmenuTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'cn-context-menu-sub-trigger',\n CONTEXT_MENU_SUB_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto\" />\n </ContextMenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Popup> &\n Pick<\n React.ComponentProps<typeof ContextMenuPrimitive.Positioner>,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Positioner\n className={CONTEXT_MENU_POSITIONER_CN}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <ContextMenuPrimitive.Popup\n data-slot=\"context-menu-sub-content\"\n className={cn(\n 'cn-context-menu-sub-content cn-context-menu-content-logical cn-context-menu-subcontent',\n 'z-50 max-h-(--available-height) w-auto origin-(--transform-origin)',\n 'overflow-x-hidden overflow-y-auto outline-none',\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Positioner>\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Popup>) {\n return (\n <ContextMenuPrimitive.Popup\n data-slot=\"context-menu-content\"\n className={cn(CONTEXT_MENU_CONTENT_CN, className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuPositioner({\n align = 'start',\n alignOffset = 0,\n side = 'right',\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Positioner>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Positioner\n data-slot=\"context-menu-positioner\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n className={cn(CONTEXT_MENU_POSITIONER_CN, className)}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'cn-context-menu-item',\n CONTEXT_MENU_ITEM_BASE_CN,\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n 'cn-context-menu-checkbox-item',\n CONTEXT_MENU_ITEM_BASE_CN,\n className,\n )}\n checked={checked}\n {...props}\n >\n {children}\n <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n <ContextMenuPrimitive.CheckboxItemIndicator>\n <IconCheck className=\"size-4\" />\n </ContextMenuPrimitive.CheckboxItemIndicator>\n </span>\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n 'cn-context-menu-radio-item',\n CONTEXT_MENU_ITEM_BASE_CN,\n className,\n )}\n data-inset={inset}\n {...props}\n >\n {children}\n <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n <ContextMenuPrimitive.RadioItemIndicator>\n <IconCheck className=\"size-4\" />\n </ContextMenuPrimitive.RadioItemIndicator>\n </span>\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.GroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.GroupLabel\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn('cn-context-menu-label', className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn('cn-context-menu-separator', className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn('cn-context-menu-shortcut', className)}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuPositioner,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","'use client';\n\nimport { IconCheck, IconCopy } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype CopyButtonProps = Omit<\n React.ComponentProps<typeof Button>,\n 'onClick' | 'children'\n> & {\n value: string;\n timeout?: number;\n children?: React.ReactNode;\n};\n\nfunction CopyButton({\n value,\n timeout = 2000,\n children,\n size = 'icon-sm',\n variant = 'ghost',\n className,\n ...props\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), timeout);\n } catch {\n // Failed to copy - silently fail\n }\n };\n\n return (\n <Button\n data-slot=\"copy-button\"\n data-variant={variant}\n size={size}\n variant={variant}\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy to clipboard'}\n className={cn(\n 'cn-copy-button transition-colors disabled:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children ||\n (copied ? (\n <IconCheck className=\"size-4\" />\n ) : (\n <IconCopy className=\"size-4\" />\n ))}\n </Button>\n );\n}\n\nexport { CopyButton };\n","'use client';\n\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '../table';\n\ntype DataTableProps<TData, TValue> = {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n rowSelection?: Record<string, boolean>;\n onRowSelectionChange?: (selection: Record<string, boolean>) => void;\n pageSize?: number;\n pageIndex?: number;\n onPaginationChange?: (pageIndex: number, pageSize: number) => void;\n getRowId?: (row: TData) => string;\n};\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n sorting = [],\n onSortingChange,\n columnFilters = [],\n onColumnFiltersChange,\n columnVisibility = {},\n onColumnVisibilityChange,\n rowSelection = {},\n onRowSelectionChange,\n pageSize = 10,\n pageIndex = 0,\n getRowId,\n}: DataTableProps<TData, TValue>) {\n const [internalSorting, setInternalSorting] =\n React.useState<SortingState>(sorting);\n const [internalColumnFilters, setInternalColumnFilters] =\n React.useState<ColumnFiltersState>(columnFilters);\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>(columnVisibility);\n const [internalRowSelection, setInternalRowSelection] =\n React.useState<Record<string, boolean>>(rowSelection);\n\n const processedColumns = React.useMemo(() => {\n return columns.map((col) => {\n if (\n (col.id === 'actions' || col.id === 'select') &&\n col.size === undefined\n ) {\n return {\n ...col,\n size: 50,\n minSize: col.minSize,\n maxSize: col.maxSize,\n };\n }\n return col;\n });\n }, [columns]);\n\n const table = useReactTable({\n data,\n columns: processedColumns,\n getRowId: getRowId || ((_, index) => String(index)),\n state: {\n sorting: onSortingChange ? sorting : internalSorting,\n columnFilters: onColumnFiltersChange\n ? columnFilters\n : internalColumnFilters,\n columnVisibility: onColumnVisibilityChange\n ? columnVisibility\n : internalColumnVisibility,\n rowSelection: onRowSelectionChange ? rowSelection : internalRowSelection,\n pagination: { pageIndex, pageSize },\n },\n enableRowSelection: true,\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === 'function'\n ? updater(onSortingChange ? sorting : internalSorting)\n : updater;\n if (onSortingChange) {\n onSortingChange(newSorting);\n } else {\n setInternalSorting(newSorting);\n }\n },\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === 'function'\n ? updater(\n onColumnFiltersChange ? columnFilters : internalColumnFilters,\n )\n : updater;\n if (onColumnFiltersChange) {\n onColumnFiltersChange(newFilters);\n } else {\n setInternalColumnFilters(newFilters);\n }\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === 'function'\n ? updater(\n onColumnVisibilityChange\n ? columnVisibility\n : internalColumnVisibility,\n )\n : updater;\n if (onColumnVisibilityChange) {\n onColumnVisibilityChange(newVisibility);\n } else {\n setInternalColumnVisibility(newVisibility);\n }\n },\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === 'function'\n ? updater(onRowSelectionChange ? rowSelection : internalRowSelection)\n : updater;\n if (onRowSelectionChange) {\n onRowSelectionChange(newSelection);\n } else {\n setInternalRowSelection(newSelection);\n }\n },\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n });\n\n return (\n <div data-slot=\"data-table\" className=\"cn-data-table\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, index) => {\n const isFirst = index === 0;\n const isLast = index === headerGroup.headers.length - 1;\n let className: string | undefined;\n if (isFirst) {\n className = 'pl-4';\n } else if (isLast) {\n className = 'pr-4';\n }\n return (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{ width: header.getSize() }}\n className={className}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n className={cn('cn-data-table-row group')}\n >\n {row.getVisibleCells().map((cell, index) => {\n const visibleCells = row.getVisibleCells();\n const isFirst = index === 0;\n const isLast = index === visibleCells.length - 1;\n let className: string | undefined;\n if (isFirst) {\n className = 'pl-4';\n } else if (isLast) {\n className = 'pr-4';\n }\n return (\n <TableCell\n key={cell.id}\n style={{ width: cell.column.getSize() }}\n className={className}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n );\n })}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n );\n}\n","'use client';\n\nimport { IconChevronRight } from '@tabler/icons-react';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\ntype DataTableActionProps = {\n onClick: () => void;\n disabled?: boolean;\n 'aria-label'?: string;\n};\n\nexport function DataTableAction({\n onClick,\n disabled,\n 'aria-label': ariaLabel = 'Open menu',\n}: DataTableActionProps) {\n return (\n <div className=\"cn-data-table-action flex justify-end\">\n <Button\n variant=\"ghost\"\n className={cn('cn-data-table-action-button group-hover:opacity-100')}\n onClick={onClick}\n disabled={disabled}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n <IconChevronRight className=\"cn-data-table-action-icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport type { Column } from '@tanstack/react-table';\nimport { cn } from '../../../lib/utils';\n\ntype DataTableColumnHeaderProps<TData, TValue> = {\n column: Column<TData, TValue>;\n title: string;\n className?: string;\n};\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <div\n className={cn('cn-data-table-column-header flex items-center', className)}\n >\n <span>{title}</span>\n </div>\n );\n}\n","'use client';\n\nimport { IconSettings } from '@tabler/icons-react';\nimport type { Table } from '@tanstack/react-table';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from '../dropdown-menu';\n\ntype DataTableViewOptionsProps<TData> = {\n table: Table<TData>;\n};\n\nexport function DataTableViewOptions<TData>({\n table,\n}: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={cn(\n 'cn-data-table-view-options-trigger ml-auto hidden lg:flex',\n )}\n />\n }\n >\n <IconSettings className=\"cn-data-table-view-options-icon mr-2 h-4 w-4\" />\n View\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"end\">\n <DropdownMenuContent\n className={cn('cn-data-table-view-options-content w-[150px]')}\n >\n <DropdownMenuGroup>\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n {table\n .getAllColumns()\n .filter(\n (column) =>\n typeof column.accessorFn !== 'undefined' &&\n column.getCanHide(),\n )\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className={cn('cn-data-table-view-options-item capitalize')}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n );\n}\n","'use client';\n\nexport {\n DirectionProvider,\n useDirection,\n} from '@base-ui/react/direction-provider';\n","'use client';\n\nimport { Dialog as DrawerPrimitive } from '@base-ui/react/dialog';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Backdrop>) {\n return (\n <DrawerPrimitive.Backdrop\n data-slot=\"drawer-overlay\"\n className={cn('cn-drawer-overlay fixed inset-0 z-50', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n side = 'bottom',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Popup> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\" keepMounted>\n <DrawerOverlay />\n <DrawerPrimitive.Popup\n data-slot=\"drawer-content\"\n data-vaul-drawer-direction={side}\n className={cn(\n 'cn-drawer-content group/drawer-content fixed z-50',\n className,\n )}\n {...props}\n >\n <div className=\"cn-drawer-handle\" />\n {children}\n </DrawerPrimitive.Popup>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn('cn-drawer-header flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('cn-drawer-footer mt-auto flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('cn-drawer-title', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('cn-drawer-description', className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { useRef } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype FileButtonProps = Omit<\n React.ComponentProps<typeof Button>,\n 'onChange' | 'onClick'\n> & {\n onChange: (files: FileList | null) => void;\n accept?: string;\n multiple?: boolean;\n capture?: boolean | 'user' | 'environment';\n};\n\nfunction FileButton({\n onChange,\n accept,\n multiple,\n capture,\n children,\n disabled,\n className,\n ...props\n}: FileButtonProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.files);\n };\n\n return (\n <>\n <input\n ref={inputRef}\n type=\"file\"\n onChange={handleChange}\n accept={accept}\n multiple={multiple}\n capture={capture}\n style={{ display: 'none' }}\n disabled={disabled}\n />\n <Button\n data-slot=\"file-button\"\n onClick={handleClick}\n disabled={disabled}\n className={cn('cn-file-button', className)}\n {...props}\n >\n {children}\n </Button>\n </>\n );\n}\n\nexport { FileButton };\n","'use client';\n\nimport { IconFile, IconUpload, IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype FileInputProps = Omit<React.ComponentProps<'input'>, 'type'> & {\n onFilesChange?: (files: File[]) => void;\n clearable?: boolean;\n};\n\nfunction FileInput({\n className,\n onFilesChange,\n clearable = true,\n multiple,\n ...props\n}: FileInputProps) {\n const [files, setFiles] = useState<File[]>([]);\n const [isDragging, setIsDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []);\n setFiles(selectedFiles);\n onFilesChange?.(selectedFiles);\n props.onChange?.(e);\n };\n\n const handleClear = () => {\n setFiles([]);\n onFilesChange?.([]);\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (props.disabled) {\n return;\n }\n setIsDragging(true);\n };\n\n const handleDragLeave = () => {\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n if (props.disabled) {\n return;\n }\n setIsDragging(false);\n const droppedFiles = Array.from(e.dataTransfer.files);\n setFiles(droppedFiles);\n onFilesChange?.(droppedFiles);\n };\n\n const inputId = useId();\n\n return (\n <div\n data-slot=\"file-input-wrapper\"\n data-disabled={props.disabled || undefined}\n className={cn('cn-file-input-wrapper', className)}\n >\n <label\n htmlFor={inputId}\n className=\"cn-file-input-dropzone\"\n data-dragging={isDragging || undefined}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n data-slot=\"file-input\"\n className=\"cn-file-input-hidden-input\"\n onChange={handleChange}\n multiple={multiple}\n {...props}\n />\n <div data-slot=\"file-input-prompt\" className=\"cn-file-input-prompt\">\n <IconUpload\n data-slot=\"file-input-icon\"\n className=\"cn-file-input-icon\"\n />\n <div data-slot=\"file-input-title\" className=\"cn-file-input-title\">\n <span className=\"font-medium\">Click to upload</span> or drag and\n drop\n </div>\n {props.accept && (\n <div data-slot=\"file-input-accept\" className=\"cn-file-input-accept\">\n {props.accept}\n </div>\n )}\n </div>\n </label>\n {files.length > 0 && (\n <div data-slot=\"file-input-list\" className=\"cn-file-input-list\">\n {files.map((file, index) => (\n <div\n key={`${file.name}-${index}`}\n data-slot=\"file-input-item\"\n className=\"cn-file-input-item\"\n >\n <div className=\"cn-file-input-item-left\">\n <IconFile className=\"cn-file-input-item-icon\" />\n <span className=\"cn-file-input-item-name\">{file.name}</span>\n <span className=\"cn-file-input-item-size\">\n ({(file.size / 1024).toFixed(1)} KB)\n </span>\n </div>\n {clearable && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleClear}\n aria-label=\"Remove file\"\n className=\"cn-file-input-item-remove\"\n >\n <IconX className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport { FileInput };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype FlexProps = React.ComponentProps<'div'> & {\n gap?: ComponentSize | number;\n rowGap?: ComponentSize | number;\n columnGap?: ComponentSize | number;\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n wrap?: 'wrap' | 'nowrap' | 'wrap-reverse';\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n};\n\nconst gapClasses: Record<ComponentSize, string> = {\n xs: 'gap-1.5',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n};\n\nconst rowGapClasses: Record<ComponentSize, string> = {\n xs: '[row-gap:0.375rem]',\n sm: '[row-gap:0.5rem]',\n md: '[row-gap:0.75rem]',\n lg: '[row-gap:1rem]',\n xl: '[row-gap:1.5rem]',\n};\n\nconst colGapClasses: Record<ComponentSize, string> = {\n xs: '[column-gap:0.375rem]',\n sm: '[column-gap:0.5rem]',\n md: '[column-gap:0.75rem]',\n lg: '[column-gap:1rem]',\n xl: '[column-gap:1.5rem]',\n};\n\nfunction Flex({\n className,\n gap,\n rowGap,\n columnGap,\n align = 'stretch',\n justify = 'start',\n wrap = 'nowrap',\n direction = 'row',\n style,\n ...props\n}: FlexProps) {\n const alignMap = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n };\n const justifyMap = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n };\n const wrapMap = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n };\n const dirMap = {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n };\n\n const gapStyle: React.CSSProperties = {};\n if (typeof gap === 'number') {\n gapStyle.gap = gap;\n }\n if (typeof rowGap === 'number') {\n gapStyle.rowGap = rowGap;\n }\n if (typeof columnGap === 'number') {\n gapStyle.columnGap = columnGap;\n }\n\n let gapClass = '';\n let rowGapClass = '';\n let colGapClass = '';\n if (gap != null && typeof gap !== 'number') {\n gapClass = gapClasses[gap];\n }\n if (rowGap != null && typeof rowGap !== 'number') {\n rowGapClass = rowGapClasses[rowGap];\n }\n if (columnGap != null && typeof columnGap !== 'number') {\n colGapClass = colGapClasses[columnGap];\n }\n\n return (\n <div\n data-slot=\"flex\"\n className={cn(\n 'flex min-w-0',\n dirMap[direction],\n alignMap[align],\n justifyMap[justify],\n wrapMap[wrap],\n gapClass,\n rowGapClass,\n colGapClass,\n className,\n )}\n style={{ ...gapStyle, ...style }}\n {...props}\n />\n );\n}\n\nexport { Flex };\nexport type { FlexProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype FloatingIndicatorProps = Omit<React.ComponentProps<'div'>, 'target'> & {\n target: HTMLElement | null;\n parent: HTMLElement | null;\n transitionDuration?: number;\n displayAfterTransitionEnd?: boolean;\n};\n\nfunction FloatingIndicator({\n className,\n target,\n parent,\n transitionDuration = 200,\n displayAfterTransitionEnd = false,\n style,\n ...props\n}: FloatingIndicatorProps) {\n const [position, setPosition] = useState({ x: 0, y: 0, width: 0, height: 0 });\n const [isVisible, setIsVisible] = useState(!displayAfterTransitionEnd);\n\n useEffect(() => {\n const hasTargetAndParent = target && parent;\n if (!hasTargetAndParent) {\n return;\n }\n\n const updatePosition = () => {\n const targetRect = target.getBoundingClientRect();\n const parentRect = parent.getBoundingClientRect();\n\n setPosition({\n x: targetRect.left - parentRect.left,\n y: targetRect.top - parentRect.top,\n width: targetRect.width,\n height: targetRect.height,\n });\n\n if (displayAfterTransitionEnd) {\n setIsVisible(false);\n const timeout = setTimeout(\n () => setIsVisible(true),\n transitionDuration,\n );\n return () => clearTimeout(timeout);\n }\n };\n\n updatePosition();\n\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(parent);\n resizeObserver.observe(target);\n\n return () => resizeObserver.disconnect();\n }, [target, parent, transitionDuration, displayAfterTransitionEnd]);\n\n const hasTargetAndParent = target && parent;\n const shouldHideAfterTransition = displayAfterTransitionEnd && !isVisible;\n if (!hasTargetAndParent || shouldHideAfterTransition) {\n return null;\n }\n\n return (\n <div\n data-slot=\"floating-indicator\"\n className={cn(\n 'cn-floating-indicator pointer-events-none absolute left-0 top-0',\n className,\n )}\n style={{\n transform: `translate(${position.x}px, ${position.y}px)`,\n width: position.width,\n height: position.height,\n transition: `transform ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1), width ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1), height ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n ...style,\n }}\n {...props}\n />\n );\n}\n\nexport { FloatingIndicator, type FloatingIndicatorProps };\n","'use client';\n\nimport { cloneElement, type ReactElement, useEffect, useRef } from 'react';\n\nconst FOCUSABLE =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) =>\n !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1',\n );\n}\n\nfunction useFocusTrap(active: boolean) {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!active) {\n return;\n }\n if (!ref.current) {\n return;\n }\n const el = ref.current;\n const focusable = getFocusableElements(el);\n if (focusable.length === 0) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') {\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n const firstFocus = el.querySelector<HTMLElement>('[data-autofocus]');\n (firstFocus ?? focusable[0])?.focus();\n\n el.addEventListener('keydown', handleKeyDown);\n return () => el.removeEventListener('keydown', handleKeyDown);\n }, [active]);\n\n return ref;\n}\n\ntype FocusTrapProps = {\n children: ReactElement;\n active?: boolean;\n refProp?: string;\n};\n\nfunction FocusTrap({\n children,\n active = true,\n refProp = 'ref',\n}: FocusTrapProps) {\n const trapRef = useFocusTrap(active);\n const childRef = (children as ReactElement & { ref?: React.Ref<unknown> })\n .ref;\n\n const ref = (node: HTMLElement | null) => {\n (trapRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof childRef === 'function') {\n childRef(node);\n } else if (childRef) {\n (childRef as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n };\n\n const child = cloneElement(children, { [refProp]: ref });\n return child;\n}\n\nfunction FocusTrapInitialFocus(props: React.ComponentProps<'span'>) {\n return (\n <span\n tabIndex={-1}\n data-autofocus\n data-slot=\"focus-trap-initial-focus\"\n {...props}\n />\n );\n}\n\nFocusTrap.InitialFocus = FocusTrapInitialFocus;\n\nexport { FocusTrap, FocusTrapInitialFocus };\n","'use client';\n\nimport { useRender } from '@base-ui/react/use-render';\nimport * as React from 'react';\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\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 } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\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\nfunction FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\n 'data-[error=true]:text-destructive text-sm font-semibold',\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({\n render = <input />,\n children,\n ...props\n}: React.ComponentProps<'input'> & { render?: useRender.RenderProp }) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n const mergedProps = {\n ...props,\n 'data-slot': 'form-control',\n id: formItemId,\n 'aria-describedby': error\n ? `${formDescriptionId} ${formMessageId}`\n : `${formDescriptionId}`,\n 'aria-invalid': !!error,\n };\n return useRender({\n render: React.isValidElement(children) ? children : render,\n props: mergedProps,\n defaultTagName: 'input',\n });\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('text-destructive text-sm', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst gridVariants = cva('grid w-full grid-cols-12', {\n variants: {\n gutter: {\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n },\n defaultVariants: {\n gutter: 'md',\n },\n});\n\nconst gridColVariants = cva('', {\n variants: {\n span: {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n auto: 'col-auto',\n },\n sm: {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n },\n md: {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n },\n lg: {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n },\n },\n defaultVariants: {\n span: 12,\n },\n});\n\ntype GridProps = React.ComponentProps<'div'> &\n VariantProps<typeof gridVariants>;\n\ntype GridColProps = React.ComponentProps<'div'> &\n VariantProps<typeof gridColVariants> & {\n offset?: number;\n };\n\nfunction Grid({ className, gutter, children, ...props }: GridProps) {\n return (\n <div\n data-slot=\"grid\"\n className={cn('min-w-0', gridVariants({ gutter }), className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction GridCol({\n className,\n span,\n sm,\n md,\n lg,\n offset,\n style,\n children,\n ...props\n}: GridColProps) {\n return (\n <div\n data-slot=\"grid-col\"\n className={cn(gridColVariants({ span, sm, md, lg }), className)}\n style={{\n ...(offset && { marginLeft: `${(offset / 12) * 100}%` }),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nGrid.Col = GridCol;\n\nexport { Grid, GridCol, gridVariants, gridColVariants };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype GroupProps = React.ComponentProps<'div'> & {\n gap?: ComponentSize | number;\n wrap?: 'wrap' | 'nowrap';\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n grow?: boolean;\n};\n\nfunction Group({\n className,\n gap = 'md',\n wrap = 'wrap',\n align = 'center',\n justify = 'start',\n grow = false,\n style,\n ...props\n}: GroupProps) {\n const gapClasses = {\n xs: 'gap-1.5',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n };\n\n const alignClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n };\n\n const justifyClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n };\n\n return (\n <div\n data-slot=\"group\"\n className={cn(\n 'cn-group flex min-w-0 flex-row',\n typeof gap === 'number' ? undefined : gapClasses[gap],\n wrap === 'wrap' ? 'flex-wrap' : 'flex-nowrap',\n alignClasses[align],\n justifyClasses[justify],\n grow && '[&>*]:flex-1',\n className,\n )}\n style={typeof gap === 'number' ? { gap: `${gap}px`, ...style } : style}\n {...props}\n />\n );\n}\n\nexport { Group };\nexport type { GroupProps };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype HighlightProps = React.ComponentProps<'span'> & {\n children: string;\n highlight: string | string[];\n className?: string;\n highlightClassName?: string;\n};\n\nfunction Highlight({\n children,\n highlight,\n className,\n highlightClassName,\n ...props\n}: HighlightProps) {\n if (!(children && highlight)) {\n return (\n <span className={className} {...props}>\n {children}\n </span>\n );\n }\n\n const highlights = Array.isArray(highlight) ? highlight : [highlight];\n const pattern = highlights\n .filter(Boolean)\n .map((term) => term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n .join('|');\n\n if (!pattern) {\n return (\n <span className={className} {...props}>\n {children}\n </span>\n );\n }\n\n const regex = new RegExp(`(${pattern})`, 'gi');\n const parts = children.split(regex);\n\n return (\n <span data-slot=\"highlight\" className={className} {...props}>\n {parts.map((part, i) => {\n const isMatch = highlights.some(\n (term) => term.toLowerCase() === part.toLowerCase(),\n );\n const key = `${part}-${i}`;\n return isMatch ? (\n <mark\n key={key}\n className={cn('cn-highlight-mark', highlightClassName)}\n >\n {part}\n </mark>\n ) : (\n <span key={key}>{part}</span>\n );\n })}\n </span>\n );\n}\n\nexport { Highlight };\n","'use client';\n\nimport { PreviewCard as PreviewCardPrimitive } from '@base-ui/react/preview-card';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst HOVER_CARD_POSITIONER_CN = 'isolate z-50';\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof PreviewCardPrimitive.Root>) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof PreviewCardPrimitive.Trigger>) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n alignOffset = 4,\n side = 'bottom',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PreviewCardPrimitive.Popup> & {\n align?: React.ComponentProps<typeof PreviewCardPrimitive.Positioner>['align'];\n alignOffset?: React.ComponentProps<\n typeof PreviewCardPrimitive.Positioner\n >['alignOffset'];\n side?: React.ComponentProps<typeof PreviewCardPrimitive.Positioner>['side'];\n sideOffset?: React.ComponentProps<\n typeof PreviewCardPrimitive.Positioner\n >['sideOffset'];\n}) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className={HOVER_CARD_POSITIONER_CN}\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n 'cn-hover-card-content cn-hover-card-content-logical z-50 origin-(--transform-origin) outline-hidden',\n className,\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","'use client';\n\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype ImageProps = React.ComponentProps<'img'> & {\n fallback?: React.ReactNode;\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n fit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';\n};\n\nfunction Image({\n className,\n src,\n alt = '',\n fallback,\n radius = 'md',\n fit = 'cover',\n onError,\n ...props\n}: ImageProps) {\n const [error, setError] = useState(false);\n\n const fitClasses = {\n contain: 'object-contain',\n cover: 'object-cover',\n fill: 'object-fill',\n none: 'object-none',\n 'scale-down': 'object-scale-down',\n };\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n setError(true);\n onError?.(e);\n };\n\n if (error && fallback) {\n return (\n <div\n data-slot=\"image-fallback\"\n data-radius={radius}\n className={cn(\n 'cn-image-fallback flex items-center justify-center',\n className,\n )}\n >\n {fallback}\n </div>\n );\n }\n\n return (\n <img\n data-slot=\"image\"\n data-radius={radius}\n src={src}\n alt={alt}\n className={cn('cn-image overflow-hidden', fitClasses[fit], className)}\n onError={handleError}\n {...props}\n />\n );\n}\n\nexport { Image };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst indicatorVariants = cva(\n 'cn-indicator absolute flex items-center justify-center rounded-full text-xs font-medium transition-colors',\n {\n variants: {\n position: {\n 'top-start': 'top-0 left-0 -translate-x-1/2 -translate-y-1/2',\n 'top-end': 'top-0 right-0 translate-x-1/2 -translate-y-1/2',\n 'bottom-start': 'bottom-0 left-0 -translate-x-1/2 translate-y-1/2',\n 'bottom-end': 'bottom-0 right-0 translate-x-1/2 translate-y-1/2',\n 'top-center': 'top-0 left-1/2 -translate-x-1/2 -translate-y-1/2',\n 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2',\n 'middle-start': 'top-1/2 left-0 -translate-x-1/2 -translate-y-1/2',\n 'middle-end': 'top-1/2 right-0 translate-x-1/2 -translate-y-1/2',\n },\n size: {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n lg: 'size-7',\n },\n color: {\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n accent: 'bg-accent text-accent-foreground',\n },\n withBorder: {\n true: 'cn-indicator-with-border',\n false: '',\n },\n processing: {\n true: 'animate-pulse',\n false: '',\n },\n },\n defaultVariants: {\n position: 'top-end',\n size: 'md',\n color: 'primary',\n withBorder: false,\n processing: false,\n },\n },\n);\n\ntype IndicatorProps = React.ComponentProps<'div'> &\n VariantProps<typeof indicatorVariants> & {\n label?: string | number;\n offset?: number;\n disabled?: boolean;\n inline?: boolean;\n };\n\nfunction Indicator({\n className,\n position,\n size,\n color,\n withBorder,\n processing,\n label,\n offset = 0,\n disabled,\n inline,\n children,\n style,\n ...props\n}: IndicatorProps) {\n if (disabled) {\n return <div className={cn(inline && 'inline-block')}>{children}</div>;\n }\n\n return (\n <div\n data-slot=\"indicator-wrapper\"\n className={cn('relative', inline && 'inline-block')}\n >\n {children}\n <span\n data-slot=\"indicator\"\n className={cn(\n indicatorVariants({ position, size, color, withBorder, processing }),\n className,\n )}\n style={{\n transform: offset\n ? `translate(${offset}px, -${offset}px)`\n : undefined,\n ...style,\n }}\n {...props}\n >\n {label}\n </span>\n </div>\n );\n}\n\nexport { Indicator, indicatorVariants };\n","'use client';\n\nimport { IconMinus } from '@tabler/icons-react';\nimport { OTPInput, OTPInputContext } from 'input-otp';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n 'cn-input-otp flex items-center has-disabled:opacity-50',\n containerClassName,\n )}\n spellCheck={false}\n className={cn('disabled:cursor-not-allowed', className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn('cn-input-otp-group flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n 'cn-input-otp-slot relative flex items-center justify-center data-[active=true]:z-10',\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"cn-input-otp-caret-line\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"cn-input-otp-separator flex items-center\"\n aria-hidden=\"true\"\n {...props}\n >\n <IconMinus />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Separator } from './separator';\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"item-group\"\n className={cn(\n 'cn-item-group group/item-group flex flex-col list-none p-0 m-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn('cn-item-separator', className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n 'cn-item group/item flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n {\n variants: {\n variant: {\n default: 'cn-item-variant-default',\n outline: 'cn-item-variant-outline',\n muted: 'cn-item-variant-muted',\n },\n size: {\n default: 'cn-item-size-default',\n sm: 'cn-item-size-sm',\n xs: 'cn-item-size-xs',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction Item({\n className,\n variant = 'default',\n size = 'default',\n render = <div />,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof itemVariants> & { render?: useRender.RenderProp }) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'item',\n 'data-variant': variant,\n 'data-size': size,\n className: cn(itemVariants({ variant, size, className })),\n },\n defaultTagName: 'div',\n });\n}\n\nconst itemMediaVariants = cva(\n 'cn-item-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none',\n {\n variants: {\n variant: {\n default: 'cn-item-media-variant-default',\n icon: 'cn-item-media-variant-icon',\n image: 'cn-item-media-variant-image',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction ItemMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n 'cn-item-content flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n 'cn-item-title flex w-fit items-center leading-snug',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n 'cn-item-description line-clamp-2 text-balance',\n '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn('cn-item-actions flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n 'cn-item-header flex basis-full items-center justify-between',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n 'cn-item-footer flex basis-full items-center justify-between',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Textarea } from './textarea';\n\ntype JsonInputProps = Omit<\n React.ComponentProps<typeof Textarea>,\n 'value' | 'onChange'\n> & {\n value?: string | object;\n defaultValue?: string | object;\n onChange?: (value: string) => void;\n onValueChange?: (value: object | null) => void;\n formatOnBlur?: boolean;\n validationError?: string;\n};\n\nfunction JsonInput({\n className,\n value,\n defaultValue,\n onChange,\n onValueChange,\n formatOnBlur = true,\n validationError,\n onBlur,\n ...props\n}: JsonInputProps) {\n const stringifyValue = (val: string | object | undefined) => {\n if (typeof val === 'string') {\n return val;\n }\n if (val) {\n return JSON.stringify(val, null, 2);\n }\n return '';\n };\n\n const [internalValue, setInternalValue] = useState(\n stringifyValue(defaultValue) || '{}',\n );\n const [error, setError] = useState<string | null>(null);\n\n const currentValue =\n value !== undefined ? stringifyValue(value) : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n setError(null);\n onChange?.(newValue);\n\n try {\n const parsed = JSON.parse(newValue);\n onValueChange?.(parsed);\n } catch {\n onValueChange?.(null);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n if (formatOnBlur) {\n try {\n const parsed = JSON.parse(currentValue);\n const formatted = JSON.stringify(parsed, null, 2);\n setInternalValue(formatted);\n setError(null);\n onChange?.(formatted);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Invalid JSON');\n }\n }\n onBlur?.(e);\n };\n\n const errorMessage = validationError || error;\n\n return (\n <div data-slot=\"json-input\" className=\"cn-json-input relative w-full\">\n <Textarea\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n aria-invalid={errorMessage ? true : undefined}\n className={cn('cn-json-input-textarea', className)}\n rows={10}\n {...props}\n />\n {errorMessage && (\n <p data-slot=\"json-input-error\" className=\"cn-json-input-error\">\n {errorMessage}\n </p>\n )}\n </div>\n );\n}\n\nexport { JsonInput };\n","import { cn } from '../../lib/utils';\n\nfunction Kbd({ className, ...props }: React.ComponentProps<'kbd'>) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n 'cn-kbd pointer-events-none inline-flex items-center justify-center select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn('cn-kbd-group inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst listVariants = cva('space-y-2', {\n variants: {\n listStyle: {\n disc: '[&>li]:list-disc [&>li]:ml-6',\n decimal: '[&>li]:list-decimal [&>li]:ml-6',\n none: '[&>li]:list-none',\n },\n spacing: {\n none: 'space-y-0',\n sm: 'space-y-1',\n md: 'space-y-2',\n lg: 'space-y-4',\n },\n },\n defaultVariants: {\n listStyle: 'disc',\n spacing: 'md',\n },\n});\n\ntype BaseListProps = VariantProps<typeof listVariants> & {\n ordered?: boolean;\n};\n\ntype ListProps = BaseListProps &\n (\n | ({ ordered?: false } & React.ComponentProps<'ul'>)\n | ({ ordered: true } & React.ComponentProps<'ol'>)\n );\n\nfunction List({\n className,\n listStyle,\n spacing,\n ordered = false,\n ...props\n}: ListProps) {\n const classes = cn(\n listVariants({\n listStyle: ordered && !listStyle ? 'decimal' : listStyle,\n spacing,\n }),\n className,\n );\n\n if (ordered) {\n return (\n <ol\n data-slot=\"list\"\n className={classes}\n {...(props as React.ComponentProps<'ol'>)}\n />\n );\n }\n\n return (\n <ul\n data-slot=\"list\"\n className={classes}\n {...(props as React.ComponentProps<'ul'>)}\n />\n );\n}\n\nfunction ListItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"list-item\"\n className={cn('cn-list-item', className)}\n {...props}\n />\n );\n}\n\nexport { List, ListItem, listVariants };\n","import type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype MarkProps = React.ComponentProps<'mark'> & {\n color?: ComponentColor;\n};\n\nfunction Mark({ className, color, ...props }: MarkProps) {\n const colorStyle = color\n ? ({\n '--mark-color': `var(--${color})`,\n } as React.CSSProperties)\n : undefined;\n\n return (\n <mark\n data-slot=\"mark\"\n style={colorStyle}\n className={cn(\n 'cn-mark px-1 py-0.5',\n color\n ? 'bg-[var(--mark-color)]/20 text-[var(--mark-color)]'\n : undefined,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Mark };\nexport type { MarkProps };\n","'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { Menubar as MenubarPrimitive } from '@base-ui/react/menubar';\nimport { IconCheck, IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst MENUBAR_POSITIONER_CN = 'isolate z-50 outline-none';\n\nconst MENUBAR_CONTENT_CN = cn(\n 'cn-menubar-content cn-menubar-content-logical cn-menu-target',\n 'z-50 max-h-(--available-height)',\n 'origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none',\n 'data-closed:overflow-hidden',\n);\n\nconst MENUBAR_ITEM_BASE_CN = cn(\n 'group/menubar-item relative flex cursor-default items-center',\n 'outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nconst MENUBAR_SUB_TRIGGER_BASE_CN = cn(\n 'flex cursor-default items-center outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n);\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive>) {\n return (\n <MenubarPrimitive\n data-slot=\"menubar\"\n className={cn('cn-menubar flex items-center gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Root>) {\n return <MenuPrimitive.Root data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Group>) {\n return <MenuPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Portal>) {\n return <MenuPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.RadioGroup>) {\n return (\n <MenuPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Trigger>) {\n return (\n <MenuPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n 'cn-menubar-trigger flex items-center outline-hidden select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Popup>) {\n return (\n <MenuPrimitive.Popup\n data-slot=\"menubar-content\"\n className={cn(MENUBAR_CONTENT_CN, className)}\n {...props}\n />\n );\n}\n\nfunction MenubarPositioner({\n align = 'start',\n alignOffset = -4,\n side = 'bottom',\n sideOffset = 8,\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Positioner>) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n data-slot=\"menubar-positioner\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className={cn(MENUBAR_POSITIONER_CN, className)}\n {...props}\n />\n </MenuPrimitive.Portal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn('cn-menubar-item', MENUBAR_ITEM_BASE_CN, className)}\n {...props}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n data-inset={inset}\n className={cn(\n 'cn-menubar-checkbox-item',\n MENUBAR_ITEM_BASE_CN,\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"cn-menubar-checkbox-item-indicator pointer-events-none absolute flex items-center justify-center\">\n <MenuPrimitive.CheckboxItemIndicator>\n <IconCheck className=\"size-4\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn('cn-menubar-radio-item', MENUBAR_ITEM_BASE_CN, className)}\n data-inset={inset}\n {...props}\n >\n <span className=\"cn-menubar-radio-item-indicator pointer-events-none absolute flex items-center justify-center\">\n <MenuPrimitive.RadioItemIndicator>\n <IconCheck className=\"size-4\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.GroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn('cn-menubar-label', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Separator>) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn('cn-menubar-separator', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn('cn-menubar-shortcut ml-auto', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.SubmenuRoot>) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"menubar-sub\" {...props} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'cn-menubar-sub-trigger',\n MENUBAR_SUB_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto h-4 w-4\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Popup> &\n Pick<\n React.ComponentProps<typeof MenuPrimitive.Positioner>,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className={MENUBAR_POSITIONER_CN}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"menubar-sub-content\"\n className={cn(\n 'cn-menubar-sub-content cn-menubar-content-logical',\n 'z-50 max-h-(--available-height) w-auto origin-(--transform-origin)',\n 'overflow-x-hidden overflow-y-auto outline-none',\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarPositioner,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};\n","'use client';\n\nimport { type ChangeEvent, forwardRef, useCallback, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from './input-group';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from './select';\n\ntype CurrencyOption = {\n label: string;\n value: string;\n symbol?: string;\n};\n\ntype MoneyInputProps = {\n value?: number;\n currency?: string;\n onValueChange?: (value: number, currency: string) => void;\n currencies?: CurrencyOption[];\n fractionDigits?: number;\n disabled?: boolean;\n placeholder?: string;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n id?: string;\n};\n\nconst defaultCurrencies: CurrencyOption[] = [\n { label: 'ETB', value: 'etb', symbol: 'Br' },\n { label: 'USD', value: 'usd', symbol: '$' },\n { label: 'EUR', value: 'eur', symbol: '€' },\n { label: 'GBP', value: 'gbp', symbol: '£' },\n];\n\nconst formatNumber = (num: number, fractionDigits: number): string => {\n return num.toLocaleString('en-US', {\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n });\n};\n\nconst parseFormattedNumber = (str: string): number => {\n const cleaned = str.replace(/,/g, '');\n const parsed = Number.parseFloat(cleaned);\n return Number.isNaN(parsed) ? 0 : parsed;\n};\n\nconst sizeClasses = {\n sm: {\n group: 'h-8',\n symbol: 'text-xs',\n select: 'w-[70px] text-xs',\n },\n md: {\n group: 'h-9',\n symbol: 'text-sm',\n select: 'w-[80px] text-sm',\n },\n lg: {\n group: 'h-10',\n symbol: 'text-base',\n select: 'w-[90px] text-base',\n },\n};\n\nconst MoneyInput = forwardRef<HTMLDivElement, MoneyInputProps>(\n (\n {\n value = 0,\n currency = 'etb',\n onValueChange,\n currencies = defaultCurrencies,\n fractionDigits = 2,\n disabled = false,\n placeholder = fractionDigits > 0\n ? `0.${'0'.repeat(fractionDigits)}`\n : '0',\n className = '',\n size = 'md',\n id,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = useState(value);\n const [internalCurrency, setInternalCurrency] = useState(currency);\n const [displayValue, setDisplayValue] = useState(\n formatNumber(value, fractionDigits),\n );\n\n const currentCurrency = currencies.find(\n (c) => c.value === internalCurrency,\n );\n const currencySymbol =\n currentCurrency?.symbol || currentCurrency?.label || '';\n const sizes = sizeClasses[size];\n\n const handleInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value;\n setDisplayValue(rawValue);\n\n const numValue = parseFormattedNumber(rawValue);\n setInternalValue(numValue);\n },\n [],\n );\n\n const handleBlur = useCallback(() => {\n const formatted = formatNumber(internalValue, fractionDigits);\n setDisplayValue(formatted);\n onValueChange?.(internalValue, internalCurrency);\n }, [internalValue, internalCurrency, onValueChange, fractionDigits]);\n\n const handleFocus = useCallback(() => {\n setDisplayValue(\n internalValue % 1 === 0\n ? internalValue.toString()\n : internalValue.toFixed(fractionDigits),\n );\n }, [internalValue, fractionDigits]);\n\n const handleCurrencyChange = useCallback(\n (newCurrency: string) => {\n setInternalCurrency(newCurrency);\n onValueChange?.(internalValue, newCurrency);\n },\n [internalValue, onValueChange],\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"money-input\"\n className={cn('w-full', className)}\n >\n <InputGroup disabled={disabled} className={cn(sizes.group)}>\n <InputGroupAddon\n align=\"inline-start\"\n className={cn('pointer-events-none pl-2.5 pr-1.5', sizes.symbol)}\n >\n {currencySymbol}\n </InputGroupAddon>\n\n <InputGroupInput\n id={id}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n disabled={disabled}\n placeholder={placeholder}\n className=\"tabular-nums !pl-2\"\n />\n\n <InputGroupAddon align=\"inline-end\" className=\"py-0 pr-0\">\n <div className=\"cn-money-input-currency-divider flex h-full items-center\">\n <Select\n value={internalCurrency}\n onValueChange={(v: unknown) =>\n handleCurrencyChange(v as string)\n }\n disabled={disabled}\n >\n <SelectTrigger\n className={cn(\n 'cn-money-input-currency-trigger h-full min-h-0 w-auto uppercase',\n sizes.select,\n )}\n >\n <SelectValue className=\"uppercase\" />\n </SelectTrigger>\n <SelectContent>\n {currencies.map((curr) => (\n <SelectItem key={curr.value} value={curr.value}>\n {curr.label.toUpperCase()}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n },\n);\n\nMoneyInput.displayName = 'MoneyInput';\n\nexport { MoneyInput, type CurrencyOption, type MoneyInputProps };\n","'use client';\n\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';\nimport { IconCheck, IconChevronDown, IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype MultiSelectOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype MultiSelectProps = Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Root>,\n 'children' | 'onValueChange' | 'inline'\n> & {\n options: MultiSelectOption[];\n value?: string[];\n onValueChange?: (value: string[]) => void;\n placeholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n};\n\nfunction MultiSelect({\n options,\n value = [],\n onValueChange,\n placeholder = 'Select options...',\n emptyText = 'No results found.',\n className,\n disabled,\n ...props\n}: MultiSelectProps) {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n const selectedOptions = options.filter((opt) => value.includes(opt.value));\n\n const filteredOptions =\n inputValue === ''\n ? options\n : options.filter((option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()),\n );\n\n const handleToggle = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onValueChange?.(newValue);\n };\n\n const handleRemove = (optionValue: string) => {\n onValueChange?.(value.filter((v) => v !== optionValue));\n };\n\n return (\n <div\n data-slot=\"multi-select\"\n data-disabled={disabled || undefined}\n className={cn(\n 'relative w-full data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n >\n <AutocompletePrimitive.Root\n open={disabled ? false : open}\n onOpenChange={(nextOpen) => {\n if (disabled) {\n return;\n }\n setOpen(nextOpen);\n if (!nextOpen) {\n setInputValue('');\n }\n }}\n filteredItems={filteredOptions}\n inline\n {...props}\n >\n <div className=\"relative\">\n <div className=\"cn-combobox-chips\">\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <span\n key={option.value}\n data-slot=\"multi-select-chip\"\n className=\"cn-combobox-chip\"\n >\n <span className=\"flex-1\">{option.label}</span>\n <button\n type=\"button\"\n data-slot=\"multi-select-chip-remove\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemove(option.value);\n }}\n className=\"cn-combobox-chip-remove\"\n >\n <span className=\"sr-only\">Remove</span>\n <IconX className=\"size-3\" />\n </button>\n </span>\n ))}\n <AutocompletePrimitive.Input\n data-slot=\"multi-select-input\"\n placeholder={selectedOptions.length === 0 ? placeholder : ''}\n value={inputValue}\n onChange={(e) => setInputValue(e.currentTarget.value)}\n onFocus={() => !disabled && setOpen(true)}\n disabled={disabled}\n className=\"cn-multi-select-input\"\n />\n </div>\n </div>\n <IconChevronDown className=\"cn-multi-select-trigger-icon\" />\n </div>\n {open && (\n <AutocompletePrimitive.List\n data-slot=\"multi-select-content\"\n className={cn('cn-multi-select-content cn-combobox-content')}\n >\n {filteredOptions.length === 0 ? (\n <div className=\"cn-multi-select-empty\">{emptyText}</div>\n ) : (\n filteredOptions.map((option) => (\n <AutocompletePrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n onClick={() => {\n handleToggle(option.value);\n setInputValue('');\n }}\n className={cn(\n 'cn-combobox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50',\n )}\n >\n <span className=\"flex-1\">{option.label}</span>\n {value.includes(option.value) && (\n <span className=\"cn-combobox-item-indicator\">\n <IconCheck className=\"size-4\" />\n </span>\n )}\n </AutocompletePrimitive.Item>\n ))\n )}\n </AutocompletePrimitive.List>\n )}\n </AutocompletePrimitive.Root>\n </div>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectOption };\n","'use client';\n\nimport { IconChevronDown } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\nexport type NativeSelectOption = { value: string; label: string } | string;\n\nexport type NativeSelectBaseProps = Omit<\n React.ComponentProps<'select'>,\n 'size'\n> & {\n size?: ComponentSize;\n data?: NativeSelectOption[];\n rightSection?: React.ReactNode;\n};\n\nfunction mapNativeSelectSize(size: ComponentSize): 'sm' | 'default' {\n return size === 'xs' || size === 'sm' ? 'sm' : 'default';\n}\n\nfunction parseOptions(\n data: NativeSelectOption[],\n): Array<{ value: string; label: string }> {\n return data.map((item) =>\n typeof item === 'string' ? { value: item, label: item } : item,\n );\n}\n\nconst NativeSelectBase = forwardRef<HTMLSelectElement, NativeSelectBaseProps>(\n ({ className, size = 'md', data, children, rightSection, ...props }, ref) => {\n const options = data ? parseOptions(data) : null;\n const mappedSize = mapNativeSelectSize(size);\n\n return (\n <div\n data-slot=\"native-select-wrapper\"\n data-size={mappedSize}\n className={cn(\n 'group/native-select relative w-full min-w-0 has-[select:disabled]:opacity-50',\n className,\n )}\n >\n <select\n ref={ref}\n data-slot=\"native-select\"\n data-size={mappedSize}\n className={cn(\n 'cn-native-select outline-none disabled:pointer-events-none disabled:cursor-not-allowed',\n )}\n {...props}\n >\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n <span\n data-slot=\"native-select-icon\"\n aria-hidden=\"true\"\n className=\"cn-native-select-icon pointer-events-none absolute select-none\"\n >\n {rightSection ?? <IconChevronDown className=\"size-4\" />}\n </span>\n </div>\n );\n },\n);\n\nNativeSelectBase.displayName = 'NativeSelectBase';\n\nexport type NativeSelectProps = NativeSelectBaseProps &\n Omit<InputWrapperProps, 'children'>;\n\nconst NativeSelect = forwardRef<HTMLSelectElement, NativeSelectProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n ...selectProps\n },\n ref,\n ) => {\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const select = (\n <NativeSelectBase ref={ref} disabled={disabled} {...selectProps} />\n );\n\n if (!hasWrapper) {\n return select;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {select}\n </InputWrapper>\n );\n },\n);\n\nNativeSelect.displayName = 'NativeSelect';\n\nexport { NativeSelectBase, NativeSelect };\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst isExternal = (href?: string) =>\n !href ||\n href.startsWith('http') ||\n href.startsWith('//') ||\n href.startsWith('mailto:') ||\n href.startsWith('tel:');\n\nconst navLinkVariants = cva(\n 'cn-nav-link flex items-center gap-3 px-3 py-2 text-sm font-medium transition-colors cursor-pointer',\n {\n variants: {\n active: {\n true: '',\n false: '',\n },\n variant: {\n default: '',\n subtle: '',\n },\n },\n defaultVariants: {\n active: false,\n variant: 'default',\n },\n },\n);\n\ntype NavLinkProps = React.ComponentProps<'a'> &\n VariantProps<typeof navLinkVariants> & {\n label: string;\n icon?: React.ReactNode;\n rightSection?: React.ReactNode;\n disabled?: boolean;\n };\n\nfunction NavLink({\n className,\n active,\n variant,\n label,\n icon,\n rightSection,\n disabled,\n children,\n href,\n ...props\n}: NavLinkProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const useLink = href && !isExternal(href) && Link;\n const Comp = useLink ? Link : 'a';\n const linkProps = useLink\n ? { ...props, href, ...(locale && { locale }) }\n : { ...props, href };\n\n return (\n <Comp\n data-slot=\"nav-link\"\n data-active={active}\n data-variant={variant}\n className={cn(\n navLinkVariants({ active, variant }),\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...linkProps}\n >\n {icon && (\n <span className=\"shrink-0 [&>svg]:size-5\" data-slot=\"nav-link-icon\">\n {icon}\n </span>\n )}\n <span className=\"flex-1\" data-slot=\"nav-link-label\">\n {label}\n </span>\n {rightSection && (\n <span\n className=\"shrink-0 text-muted-foreground\"\n data-slot=\"nav-link-right\"\n >\n {rightSection}\n </span>\n )}\n {children}\n </Comp>\n );\n}\n\nexport { NavLink, navLinkVariants };\n","import { NavigationMenu as NavigationMenuPrimitive } from '@base-ui/react/navigation-menu';\nimport { IconChevronDown } from '@tabler/icons-react';\nimport { cva } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'cn-navigation-menu group/navigation-menu relative flex flex-1 items-center justify-center',\n className,\n )}\n {...props}\n >\n {children}\n {viewport && (\n <NavigationMenuPrimitive.Portal>\n <NavigationMenuPrimitive.Positioner\n data-slot=\"navigation-menu-positioner\"\n className=\"cn-navigation-menu-positioner isolate z-50\"\n >\n <NavigationMenuPrimitive.Popup\n data-slot=\"navigation-menu-popup\"\n className=\"cn-navigation-menu-popup outline-none\"\n >\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPrimitive.Portal>\n )}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'cn-navigation-menu-list group flex flex-1 list-none items-center justify-center',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva('cn-navigation-menu-trigger');\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(\n navigationMenuTriggerStyle(),\n 'group/navigation-menu-trigger',\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronDown\n className=\"cn-navigation-menu-trigger-icon\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'cn-navigation-menu-content top-0 left-0 w-full md:absolute md:w-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div className=\"absolute top-full left-0 flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'cn-navigation-menu-viewport origin-top-center relative mt-1.5 w-full overflow-hidden md:w-auto',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn('cn-navigation-menu-link flex flex-col gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'cn-navigation-menu-indicator top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n >\n <div className=\"cn-navigation-menu-indicator-arrow\" />\n </div>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype NumberFormatterProps = React.ComponentProps<'span'> & {\n value: number;\n prefix?: string;\n suffix?: string;\n thousandsSeparator?: string;\n decimalSeparator?: string;\n decimalScale?: number;\n fixedDecimalScale?: boolean;\n};\n\nfunction NumberFormatter({\n className,\n value,\n prefix = '',\n suffix = '',\n thousandsSeparator = ',',\n decimalSeparator = '.',\n decimalScale,\n fixedDecimalScale = false,\n ...props\n}: NumberFormatterProps) {\n const formatNumber = () => {\n const numStr = value.toString();\n let [intPart, decPart] = numStr.split('.');\n\n // Apply decimal scale\n if (decimalScale !== undefined) {\n if (decPart) {\n decPart = fixedDecimalScale\n ? decPart.padEnd(decimalScale, '0').slice(0, decimalScale)\n : decPart.slice(0, decimalScale);\n } else if (fixedDecimalScale && decimalScale > 0) {\n decPart = '0'.repeat(decimalScale);\n }\n }\n\n // Add thousands separator\n if (thousandsSeparator) {\n intPart = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n }\n\n // Combine parts\n let result = intPart;\n if (decPart) {\n result += decimalSeparator + decPart;\n }\n\n return `${prefix}${result}${suffix}`;\n };\n\n return (\n <span\n data-slot=\"number-formatter\"\n className={cn('font-medium tabular-nums', className)}\n {...props}\n >\n {formatNumber()}\n </span>\n );\n}\n\nexport { NumberFormatter };\n","'use client';\n\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { forwardRef, useCallback } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from './input-group';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\nimport { UnstyledButton } from './unstyled-button';\n\nexport type NumberInputProps = Omit<\n React.ComponentProps<'input'>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'\n> &\n Omit<InputWrapperProps, 'children'> & {\n value?: number | string;\n defaultValue?: number | string;\n onChange?: (value: number | string) => void;\n size?: ComponentSize;\n min?: number;\n max?: number;\n step?: number;\n decimalScale?: number;\n thousandsSeparator?: string;\n decimalSeparator?: string;\n /** Show increment/decrement controls */\n controls?: boolean;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n };\n\nconst sizeClasses: Record<ComponentSize, string> = {\n xs: 'h-7',\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n xl: 'h-12',\n};\n\nfunction getNumberValue(\n value: number | string | undefined,\n): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (value === '') {\n return undefined;\n }\n return Number(value);\n}\n\nfunction getDisplayValue({\n value,\n defaultValue,\n}: {\n value: number | string | undefined;\n defaultValue: number | string | undefined;\n}): string {\n if (value !== undefined) {\n return String(value);\n }\n if (defaultValue !== undefined) {\n return String(defaultValue);\n }\n return '';\n}\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size = 'md',\n min,\n max,\n step = 1,\n controls = true,\n leftSection,\n rightSection,\n ...inputProps\n },\n ref,\n ) => {\n const numValue = getNumberValue(value);\n const displayValue = getDisplayValue({ value, defaultValue });\n\n const clamp = useCallback(\n (n: number) => {\n let v = n;\n if (min !== undefined && v < min) {\n v = min;\n }\n if (max !== undefined && v > max) {\n v = max;\n }\n return v;\n },\n [min, max],\n );\n\n const handleStep = useCallback(\n (delta: number) => {\n let current: number;\n if (numValue !== undefined) {\n current = numValue;\n } else if (defaultValue !== undefined) {\n current = Number(defaultValue);\n } else {\n current = 0;\n }\n const next = clamp(Number(current) + delta);\n onChange?.(next);\n },\n [numValue, defaultValue, onChange, clamp],\n );\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value;\n if (raw === '' || raw === '-') {\n onChange?.('');\n return;\n }\n const parsed = Number.parseFloat(raw.replace(/,/g, '.'));\n if (Number.isNaN(parsed)) {\n onChange?.(raw);\n } else {\n onChange?.(clamp(parsed));\n }\n };\n\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const showControls = controls && !disabled;\n const controlsEl = showControls ? (\n <div\n data-slot=\"number-input-controls\"\n className=\"cn-number-input-controls\"\n >\n <UnstyledButton\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n data-slot=\"number-input-control\"\n data-action=\"increment\"\n className=\"cn-number-input-control\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleStep(step ?? 1);\n }}\n >\n <IconChevronUp className=\"size-4\" />\n </UnstyledButton>\n <UnstyledButton\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n data-slot=\"number-input-control\"\n data-action=\"decrement\"\n className=\"cn-number-input-control\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleStep(-(step ?? 1));\n }}\n >\n <IconChevronDown className=\"size-4\" />\n </UnstyledButton>\n </div>\n ) : null;\n\n const inputEl = (\n <InputGroup disabled={disabled} className={cn(sizeClasses[size])}>\n {leftSection && (\n <InputGroupAddon align=\"inline-start\" className=\"pointer-events-none\">\n {leftSection}\n </InputGroupAddon>\n )}\n <InputGroupInput\n ref={ref}\n type=\"text\"\n inputMode=\"decimal\"\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n min={min}\n max={max}\n step={step}\n aria-invalid={error ? true : undefined}\n required={required}\n className={cn(className)}\n {...inputProps}\n />\n {rightSection && !showControls && (\n <InputGroupAddon align=\"inline-end\">{rightSection}</InputGroupAddon>\n )}\n {showControls && (\n <InputGroupAddon\n align=\"inline-end\"\n className=\"cn-number-input-controls-addon\"\n >\n {controlsEl}\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n\n if (!hasWrapper) {\n return inputEl;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {inputEl}\n </InputWrapper>\n );\n },\n);\n\nNumberInput.displayName = 'NumberInput';\n\nexport { NumberInput };\n","import { useRender } from '@base-ui/react/use-render';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype UnstyledButtonProps = React.ComponentProps<'button'> & {\n render?: React.ComponentProps<typeof useRender>['render'];\n};\n\nfunction UnstyledButton({\n className,\n render = <button type=\"button\" />,\n ...props\n}: UnstyledButtonProps) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'unstyled-button',\n className: cn(\n 'cn-unstyled-button inline-flex cursor-pointer items-center justify-center border-0 bg-transparent p-0 text-foreground outline-none transition-colors hover:text-foreground/80 disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-muted-foreground',\n className,\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nexport { UnstyledButton };\nexport type { UnstyledButtonProps };\n","import {\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { type Button, buttonVariants } from './button';\n\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn('cn-pagination-content flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"pagination-item\" {...props} />;\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 ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n 'transition-colors',\n className,\n )}\n {...props}\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=\"md\"\n className={cn('cn-pagination-previous gap-1', className)}\n {...props}\n >\n <IconChevronLeft />\n <span className=\"hidden sm:block\">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=\"md\"\n className={cn('cn-pagination-next gap-1', className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <IconChevronRight />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn('cn-pagination-ellipsis flex', className)}\n {...props}\n >\n <IconDots className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype PaperProps = React.ComponentProps<'div'> & {\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n radius?: ComponentRadius;\n withBorder?: boolean;\n shadow?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n};\n\nfunction Paper({\n className,\n padding = 'md',\n radius = 'md',\n withBorder = false,\n shadow = 'none',\n ...props\n}: PaperProps) {\n const paddingClasses = {\n none: 'p-0',\n xs: 'p-2',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n };\n\n const radiusClasses = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n };\n\n const shadowClasses = {\n none: '',\n xs: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n xl: 'shadow-xl',\n };\n\n return (\n <div\n data-slot=\"paper\"\n className={cn(\n 'cn-paper',\n paddingClasses[padding],\n radiusClasses[radius],\n shadowClasses[shadow],\n withBorder && 'border',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Paper };\nexport type { PaperProps };\n","'use client';\n\nimport { IconEye, IconEyeOff } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { forwardRef, useState } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from './input-group';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\ntype PasswordInputBaseProps = Omit<\n React.ComponentProps<'input'>,\n 'type' | 'size'\n> & {\n showToggle?: boolean;\n size?: ComponentSize;\n};\n\nconst PasswordInput = forwardRef<HTMLInputElement, PasswordInputBaseProps>(\n ({ className, showToggle = true, size, ...props }, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n\n const groupSizeClasses: Partial<Record<ComponentSize, string>> = {\n xs: 'h-7',\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n xl: 'h-12',\n };\n\n const iconButtonSize: React.ComponentProps<\n typeof InputGroupButton\n >['size'] = size === 'xs' || size === 'sm' ? 'icon-xs' : 'icon-sm';\n\n return (\n <InputGroup\n disabled={props.disabled}\n className={cn(size && groupSizeClasses[size])}\n >\n <InputGroupInput\n ref={ref}\n type={showPassword ? 'text' : 'password'}\n className={cn(className)}\n {...props}\n />\n\n {showToggle && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n type=\"button\"\n variant=\"ghost\"\n size={iconButtonSize}\n className=\"data-pressed:bg-transparent\"\n onClick={() => setShowPassword((prev) => !prev)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n tabIndex={-1}\n disabled={props.disabled}\n >\n {showPassword ? (\n <IconEyeOff className=\"size-4\" />\n ) : (\n <IconEye className=\"size-4\" />\n )}\n </InputGroupButton>\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n },\n);\n\nPasswordInput.displayName = 'PasswordInput';\n\ntype PasswordInputWithWrapperProps = PasswordInputBaseProps &\n Omit<InputWrapperProps, 'children'>;\n\nconst PasswordInputWithWrapper = forwardRef<\n HTMLInputElement,\n PasswordInputWithWrapperProps\n>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n ...passwordInputProps\n },\n ref,\n ) => {\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const passwordInput = (\n <PasswordInput ref={ref} disabled={disabled} {...passwordInputProps} />\n );\n\n if (!hasWrapper) {\n return passwordInput;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {passwordInput}\n </InputWrapper>\n );\n },\n);\n\nPasswordInputWithWrapper.displayName = 'PasswordInputWithWrapper';\n\nexport { PasswordInput, PasswordInputWithWrapper };\nexport type { PasswordInputBaseProps, PasswordInputWithWrapperProps };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { CloseButton } from './close-button';\n\nconst pillVariants = cva(\n 'cn-pill inline-flex items-center gap-1 font-medium shrink-0 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-100',\n {\n variants: {\n variant: {\n default: 'cn-pill-variant-default',\n contrast: 'cn-pill-variant-contrast',\n },\n size: {\n xs: 'text-[10px] px-1.5 py-0 h-4',\n sm: 'text-xs px-2 py-0.5 h-5',\n md: 'text-sm px-2.5 py-1 h-6',\n lg: 'text-base px-3 py-1 h-7',\n xl: 'text-lg px-4 py-1.5 h-8',\n },\n radius: {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'sm',\n radius: 'full',\n },\n },\n);\n\ntype PillProps = Omit<React.ComponentProps<'span'>, 'disabled'> &\n VariantProps<typeof pillVariants> & {\n withRemoveButton?: boolean;\n onRemove?: () => void;\n removeButtonProps?: React.ComponentProps<typeof CloseButton>;\n disabled?: boolean;\n };\n\nfunction Pill({\n className,\n variant,\n size,\n radius,\n withRemoveButton = false,\n onRemove,\n removeButtonProps,\n children,\n disabled,\n ...props\n}: PillProps) {\n return (\n <span\n data-slot=\"pill\"\n aria-disabled={disabled}\n className={cn(\n pillVariants({ variant, size, radius }),\n withRemoveButton && 'pr-1',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n {withRemoveButton && !disabled && (\n <CloseButton\n size=\"icon-xs\"\n variant=\"ghost\"\n aria-label=\"Remove\"\n tabIndex={-1}\n {...removeButtonProps}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeButtonProps?.onMouseDown?.(e);\n }}\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n removeButtonProps?.onClick?.(e);\n }}\n />\n )}\n </span>\n );\n}\n\nexport { Pill, pillVariants };\nexport type { PillProps };\n","'use client';\n\nimport { Progress as ProgressPrimitive } from '@base-ui/react/progress';\nimport type * as React from 'react';\nimport type {\n ComponentColor,\n ComponentRadius,\n ComponentSize,\n} from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype ProgressProps = React.ComponentProps<typeof ProgressPrimitive.Root> & {\n size?: ComponentSize;\n radius?: ComponentRadius;\n color?: ComponentColor;\n};\n\nfunction Progress({\n className,\n value,\n size = 'md',\n radius,\n color: _color,\n ...props\n}: ProgressProps) {\n const radiusClasses = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n };\n\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-size={size}\n value={value}\n className={cn(\n 'cn-progress relative w-full overflow-hidden',\n radius ? radiusClasses[radius] : undefined,\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Track\n data-slot=\"progress-track\"\n data-size={size}\n className={cn(\n 'cn-progress-track h-full w-full',\n radius && radiusClasses[radius],\n )}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"cn-progress-indicator h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Track>\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\nexport type { ProgressProps };\n","'use client';\n\nimport {\n IconStar,\n IconStarFilled,\n IconStarHalfFilled,\n} from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype RatingProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\n count?: number;\n value?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n disabled?: boolean;\n allowHalf?: boolean;\n size?: 'sm' | 'md' | 'lg';\n color?: string;\n};\n\nfunction Rating({\n count = 5,\n value = 0,\n onChange,\n readOnly = false,\n disabled = false,\n allowHalf = false,\n size = 'md',\n color = 'text-yellow-400',\n className,\n ...props\n}: RatingProps) {\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const isDisabled = readOnly || disabled;\n\n const sizeClasses = {\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n };\n\n const displayValue = hoverValue ?? value;\n\n const handleClick = (index: number, isHalf: boolean) => {\n if (isDisabled || !onChange) {\n return;\n }\n const newValue = isHalf ? index + 0.5 : index + 1;\n onChange(newValue);\n };\n\n const handleMouseMove = (\n index: number,\n e: React.MouseEvent,\n rect: DOMRect,\n ) => {\n if (isDisabled || !allowHalf) {\n return;\n }\n const isHalf = e.clientX - rect.left < rect.width / 2;\n setHoverValue(isHalf ? index + 0.5 : index + 1);\n };\n\n const renderIcon = (filled: boolean, half: boolean) => {\n if (filled) {\n return <IconStarFilled className={cn(sizeClasses[size], color)} />;\n }\n if (half) {\n return <IconStarHalfFilled className={cn(sizeClasses[size], color)} />;\n }\n return (\n <IconStar className={cn(sizeClasses[size], 'text-muted-foreground')} />\n );\n };\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset would affect layout\n <div\n data-slot=\"rating\"\n data-disabled={disabled || undefined}\n role=\"group\"\n aria-label=\"Rating\"\n aria-disabled={disabled || undefined}\n className={cn(\n 'inline-flex gap-1',\n disabled &&\n 'pointer-events-none cursor-not-allowed text-muted-foreground opacity-100',\n className,\n )}\n onMouseLeave={() => setHoverValue(null)}\n {...props}\n >\n {Array.from({ length: count }, (_, index) => {\n const isFilled = displayValue >= index + 1;\n const isHalf = displayValue >= index + 0.5 && displayValue < index + 1;\n\n const StarWrapper = isDisabled ? 'div' : 'button';\n return (\n <StarWrapper\n // biome-ignore lint/suspicious/noArrayIndexKey: static star list\n key={index}\n type={isDisabled ? undefined : 'button'}\n tabIndex={isDisabled ? undefined : 0}\n className={cn(\n 'relative border-0 bg-transparent p-0',\n !isDisabled && 'cursor-pointer transition-colors',\n sizeClasses[size],\n )}\n onClick={(e) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const half = allowHalf && e.clientX - rect.left < rect.width / 2;\n handleClick(index, half);\n }}\n onKeyDown={(e) => {\n if (isDisabled || !onChange) {\n return;\n }\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick(index, allowHalf && index + 0.5 === displayValue);\n }\n }}\n onMouseMove={(e) => {\n const rect = e.currentTarget.getBoundingClientRect();\n handleMouseMove(index, e, rect);\n }}\n >\n {renderIcon(isFilled, isHalf)}\n </StarWrapper>\n );\n })}\n </div>\n );\n}\n\nexport { Rating };\n","'use client';\n\nimport type * as React from 'react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cn } from '../../lib/utils';\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n 'flex h-full w-full data-[panel-group-direction=vertical]:flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn('cn-resizable-handle', className)}\n {...props}\n >\n {withHandle && <div aria-hidden className=\"cn-resizable-handle-icon\" />}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype RingProgressProps = React.ComponentProps<'div'> & {\n value: number;\n size?: number;\n thickness?: number;\n color?: string;\n label?: React.ReactNode;\n};\n\nfunction RingProgress({\n value,\n size = 120,\n thickness = 8,\n color = 'text-primary',\n label,\n className,\n ...props\n}: RingProgressProps) {\n const normalizedValue = Math.min(100, Math.max(0, value));\n const radius = (size - thickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (normalizedValue / 100) * circumference;\n\n return (\n <div\n data-slot=\"ring-progress\"\n className={cn(\n 'relative inline-flex items-center justify-center',\n className,\n )}\n style={{ width: size, height: size }}\n {...props}\n >\n <svg width={size} height={size} className=\"-rotate-90\" aria-hidden=\"true\">\n <title>Progress: {normalizedValue}%</title>\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n className=\"text-muted/40\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className={cn('transition-all duration-300', color)}\n />\n </svg>\n {label && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n {typeof label === 'string' ? (\n <span className=\"text-foreground text-sm font-semibold\">\n {label}\n </span>\n ) : (\n label\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport { RingProgress };\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype SemiCircleProgressProps = React.ComponentProps<'div'> & {\n value: number;\n size?: number;\n thickness?: number;\n color?: string;\n label?: React.ReactNode;\n};\n\nfunction SemiCircleProgress({\n className,\n value,\n size = 120,\n thickness = 12,\n color = 'hsl(var(--primary))',\n label,\n ...props\n}: SemiCircleProgressProps) {\n const normalizedValue = Math.max(0, Math.min(100, value));\n const radius = (size - thickness) / 2;\n const circumference = Math.PI * radius;\n const strokeDashoffset =\n circumference - (normalizedValue / 100) * circumference;\n\n return (\n <div\n data-slot=\"semi-circle-progress\"\n className={cn(\n 'cn-semi-circle-progress inline-flex flex-col items-center',\n className,\n )}\n {...props}\n >\n <svg\n width={size}\n height={size / 2 + thickness / 2}\n viewBox={`0 0 ${size} ${size / 2 + thickness / 2}`}\n style={{ overflow: 'visible' }}\n role=\"img\"\n aria-label={`Progress: ${Math.round(normalizedValue)}%`}\n >\n <title>Progress: {Math.round(normalizedValue)}%</title>\n {/* Background arc */}\n <path\n d={`M ${thickness / 2},${size / 2} A ${radius},${radius} 0 0,1 ${size - thickness / 2},${size / 2}`}\n fill=\"none\"\n stroke=\"hsl(var(--muted))\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n />\n {/* Progress arc */}\n <path\n d={`M ${thickness / 2},${size / 2} A ${radius},${radius} 0 0,1 ${size - thickness / 2},${size / 2}`}\n fill=\"none\"\n stroke={color}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n style={{\n transition: 'stroke-dashoffset 0.3s ease',\n }}\n />\n </svg>\n {label && (\n <div className=\"cn-semi-circle-progress-label text-center\">{label}</div>\n )}\n </div>\n );\n}\n\nexport { SemiCircleProgress };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst simpleGridVariants = cva('grid w-full', {\n variants: {\n cols: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5',\n 6: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6',\n auto: 'grid-cols-[repeat(auto-fit,minmax(250px,1fr))]',\n },\n spacing: {\n '0': 'gap-0',\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n '2xl': 'gap-10',\n },\n },\n defaultVariants: {\n cols: 2,\n spacing: 'md',\n },\n});\n\ntype SimpleGridProps = React.ComponentProps<'div'> &\n VariantProps<typeof simpleGridVariants> & {\n verticalSpacing?: '0' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n minChildWidth?: string | number;\n };\n\nfunction SimpleGrid({\n className,\n cols,\n spacing,\n verticalSpacing,\n minChildWidth,\n style,\n children,\n ...props\n}: SimpleGridProps) {\n const verticalGap = verticalSpacing\n ? {\n '0': '0',\n xs: '0.5rem',\n sm: '0.75rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n '2xl': '2.5rem',\n }[verticalSpacing]\n : undefined;\n\n const gridTemplateColumns = minChildWidth\n ? `repeat(auto-fit, minmax(${typeof minChildWidth === 'number' ? `${minChildWidth}px` : minChildWidth}, 1fr))`\n : undefined;\n\n return (\n <div\n data-slot=\"simple-grid\"\n className={cn(\n 'cn-simple-grid min-w-0',\n simpleGridVariants({ cols: minChildWidth ? undefined : cols, spacing }),\n className,\n )}\n style={{\n ...(verticalGap && { rowGap: verticalGap }),\n ...(gridTemplateColumns && { gridTemplateColumns }),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { SimpleGrid, simpleGridVariants };\nexport type { SimpleGridProps };\n","'use client';\n\nimport { Slider as SliderPrimitive } from '@base-ui/react/slider';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: SliderPrimitive.Root.Props) {\n const _values = React.useMemo(() => {\n if (typeof value === 'number') {\n return [value];\n }\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof defaultValue === 'number') {\n return [defaultValue];\n }\n if (Array.isArray(defaultValue)) {\n return defaultValue;\n }\n return [min];\n }, [value, defaultValue, min]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\n 'data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full',\n className,\n )}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n thumbAlignment=\"edge\"\n {...props}\n >\n <SliderPrimitive.Control className=\"cn-slider 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 <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"cn-slider-track relative grow overflow-hidden select-none\"\n >\n <SliderPrimitive.Indicator\n data-slot=\"slider-range\"\n className=\"cn-slider-range select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n />\n </SliderPrimitive.Track>\n {_values.map((thumbValue) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={thumbValue}\n className=\"cn-slider-thumb block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype SpaceProps = React.ComponentProps<'div'> & {\n /** Height (vertical spacer). Theme size or CSS value. */\n h?: ComponentSize | number | string;\n /** Width (horizontal spacer). Theme size or CSS value. */\n w?: ComponentSize | number | string;\n};\n\nconst sizeToRem: Record<ComponentSize, string> = {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '0.75rem',\n lg: '1rem',\n xl: '1.5rem',\n};\n\nfunction toSize(\n v: ComponentSize | number | string | undefined,\n): string | undefined {\n if (v == null) {\n return undefined;\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n if (typeof v === 'string' && v in sizeToRem) {\n return sizeToRem[v as ComponentSize];\n }\n return v;\n}\n\nfunction Space({ className, h, w, style, ...props }: SpaceProps) {\n const hVal = toSize(h);\n const wVal = toSize(w);\n const styleOut: React.CSSProperties = { ...style };\n if (hVal != null) {\n styleOut.height = hVal;\n styleOut.minHeight = styleOut.minHeight ?? hVal;\n }\n if (wVal != null) {\n styleOut.width = wVal;\n styleOut.minWidth = styleOut.minWidth ?? wVal;\n }\n\n return (\n <div\n data-slot=\"space\"\n className={cn('cn-space shrink-0', className)}\n style={styleOut}\n {...props}\n />\n );\n}\n\nexport { Space };\nexport type { SpaceProps };\n","'use client';\n\nimport { IconChevronDown } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype SpoilerProps = React.ComponentProps<'div'> & {\n maxHeight?: number;\n showLabel?: string;\n hideLabel?: string;\n initialState?: boolean;\n};\n\nfunction Spoiler({\n maxHeight = 100,\n showLabel = 'Show more',\n hideLabel = 'Show less',\n initialState = false,\n children,\n className,\n ...props\n}: SpoilerProps) {\n const [isExpanded, setIsExpanded] = useState(initialState);\n const [shouldShowButton, setShouldShowButton] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const el = contentRef.current;\n if (!el) {\n return;\n }\n\n const update = () => {\n setShouldShowButton(el.scrollHeight > maxHeight);\n };\n\n update();\n\n const resizeObserver = new ResizeObserver(update);\n resizeObserver.observe(el);\n window.addEventListener('resize', update);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', update);\n };\n }, [maxHeight]);\n\n return (\n <div\n data-slot=\"spoiler\"\n className={cn('cn-spoiler relative', className)}\n {...props}\n >\n <div\n ref={contentRef}\n data-slot=\"spoiler-content\"\n className=\"cn-spoiler-content\"\n style={{\n maxHeight: isExpanded ? 'none' : `${maxHeight}px`,\n }}\n >\n {children}\n </div>\n {!isExpanded && shouldShowButton && (\n <div\n data-slot=\"spoiler-fade\"\n className=\"cn-spoiler-fade pointer-events-none absolute inset-x-0 bottom-0\"\n />\n )}\n {shouldShowButton && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"mt-2 transition-colors\"\n >\n {isExpanded ? hideLabel : showLabel}\n <IconChevronDown\n className={cn(\n 'size-4 transition-transform',\n isExpanded && 'rotate-180',\n )}\n />\n </Button>\n )}\n </div>\n );\n}\n\nexport { Spoiler };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype StackProps = React.ComponentProps<'div'> & {\n gap?: ComponentSize | number;\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n};\n\nfunction Stack({\n className,\n gap = 'md',\n align = 'stretch',\n justify = 'start',\n style,\n ...props\n}: StackProps) {\n const gapClasses = {\n xs: 'gap-1.5',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n };\n\n const alignClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n };\n\n const justifyClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n };\n\n return (\n <div\n data-slot=\"stack\"\n className={cn(\n 'cn-stack flex min-w-0 flex-col',\n typeof gap === 'number' ? undefined : gapClasses[gap],\n alignClasses[align],\n justifyClasses[justify],\n className,\n )}\n style={typeof gap === 'number' ? { gap: `${gap}px`, ...style } : style}\n {...props}\n />\n );\n}\n\nexport { Stack };\nexport type { StackProps };\n","'use client';\n\nimport { IconCheck } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype StepperContextType = {\n activeStep: number;\n orientation: 'horizontal' | 'vertical';\n};\n\nconst StepperContext = createContext<StepperContextType>({\n activeStep: 0,\n orientation: 'horizontal',\n});\n\ntype StepperProps = React.ComponentProps<'div'> & {\n activeStep: number;\n orientation?: 'horizontal' | 'vertical';\n totalSteps?: number;\n};\n\nfunction Stepper({\n activeStep,\n orientation = 'horizontal',\n totalSteps,\n className,\n children,\n ...props\n}: StepperProps) {\n return (\n <StepperContext.Provider value={{ activeStep, orientation }}>\n <div\n data-slot=\"stepper\"\n className={cn(\n 'cn-stepper flex',\n orientation === 'horizontal'\n ? 'flex-row items-center'\n : 'flex-col items-start',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n}\n\ntype StepProps = React.ComponentProps<'div'> & {\n index: number;\n label?: string;\n description?: string;\n isLast?: boolean;\n};\n\nfunction Step({\n index,\n label,\n description,\n isLast = false,\n className,\n children,\n ...props\n}: StepProps) {\n const { activeStep, orientation } = useContext(StepperContext);\n const isActive = index === activeStep;\n const isCompleted = index < activeStep;\n let state: 'completed' | 'active' | 'inactive' = 'inactive';\n if (isCompleted) {\n state = 'completed';\n } else if (isActive) {\n state = 'active';\n }\n\n return (\n <div\n data-slot=\"step\"\n data-state={state}\n className={cn(\n 'cn-step flex',\n orientation === 'horizontal' ? 'flex-1 items-center' : 'flex-row gap-4',\n className,\n )}\n {...props}\n >\n <div\n className={cn(\n 'cn-step-header flex items-center',\n orientation === 'horizontal' && 'flex-col gap-2',\n )}\n >\n <div\n data-slot=\"step-indicator\"\n data-state={state}\n className={cn('cn-step-indicator')}\n >\n {isCompleted ? (\n <IconCheck className=\"size-5\" />\n ) : (\n <span>{index + 1}</span>\n )}\n </div>\n {(label || description) && (\n <div\n className={cn(\n 'cn-step-text text-center',\n orientation === 'vertical' && 'text-left',\n )}\n >\n {label && <div className={cn('cn-step-label')}>{label}</div>}\n {description && (\n <div className=\"cn-step-description\">{description}</div>\n )}\n </div>\n )}\n </div>\n {orientation === 'horizontal' && !isLast && (\n <div\n data-slot=\"step-connector\"\n data-state={state}\n className={cn('cn-step-connector')}\n />\n )}\n {orientation === 'vertical' && (\n <div className=\"flex flex-1 flex-col gap-2\">{children}</div>\n )}\n </div>\n );\n}\n\nexport { Stepper, Step };\n","'use client';\n\nimport { Switch as SwitchPrimitive } from '@base-ui/react/switch';\nimport type * as React from 'react';\nimport type { ComponentColor, ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: ComponentSize;\n color?: ComponentColor;\n};\n\nfunction mapSwitchSize(size: ComponentSize): 'sm' | 'default' {\n return size === 'xs' || size === 'sm' ? 'sm' : 'default';\n}\n\nfunction Switch({\n className,\n size = 'md',\n color: _color,\n ...props\n}: SwitchProps) {\n const mappedSize = mapSwitchSize(size);\n\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={mappedSize}\n className={cn(\n 'cn-switch peer group/switch relative inline-flex items-center transition-all outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"cn-switch-thumb pointer-events-none block ring-0 transition-transform\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\nexport type { SwitchProps };\n","'use client';\n\nimport type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { UnstyledButton } from './unstyled-button';\n\nexport type TableOfContentsItem = {\n id: string;\n label: string;\n depth?: number;\n};\n\ntype TableOfContentsProps = React.ComponentProps<'nav'> & {\n items: TableOfContentsItem[];\n /** Currently active item id (e.g. from scroll spy) */\n activeId?: string | null;\n /** Called when an item is clicked (e.g. scroll to #id) */\n onItemClick?: (id: string) => void;\n size?: ComponentSize;\n /** Left padding offset per depth level (px) */\n depthOffset?: number;\n minDepth?: number;\n};\n\nfunction TableOfContents({\n className,\n items,\n activeId,\n onItemClick,\n size = 'md',\n depthOffset = 16,\n minDepth = 1,\n ...props\n}: TableOfContentsProps) {\n return (\n <nav\n data-slot=\"table-of-contents\"\n aria-label=\"Table of contents\"\n className={cn('cn-table-of-contents flex flex-col', className)}\n {...props}\n >\n {items.map((item) => {\n const depth = item.depth ?? 1;\n const paddingLeft = Math.max(0, depth - minDepth) * depthOffset;\n const isActive = activeId === item.id;\n\n return (\n <UnstyledButton\n key={item.id}\n type=\"button\"\n className={cn('cn-table-of-contents-item')}\n data-size={size}\n data-active={isActive}\n style={{\n paddingLeft: paddingLeft ? `${paddingLeft}px` : undefined,\n }}\n onClick={() => onItemClick?.(item.id)}\n >\n {item.label}\n </UnstyledButton>\n );\n })}\n </nav>\n );\n}\n\nexport { TableOfContents };\nexport type { TableOfContentsProps };\n","'use client';\n\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype TagsInputProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n placeholder?: string;\n maxTags?: number;\n allowDuplicates?: boolean;\n splitChars?: string[];\n disabled?: boolean;\n};\n\nfunction TagsInput({\n className,\n value,\n defaultValue = [],\n onChange,\n placeholder = 'Add tag...',\n maxTags,\n allowDuplicates = false,\n splitChars = [',', 'Enter'],\n disabled = false,\n ...props\n}: TagsInputProps) {\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue);\n const [inputValue, setInputValue] = useState('');\n\n const tags = value ?? internalValue;\n\n const addTag = (tag: string) => {\n const trimmed = tag.trim();\n if (!trimmed) {\n return;\n }\n if (maxTags && tags.length >= maxTags) {\n return;\n }\n if (!allowDuplicates && tags.includes(trimmed)) {\n return;\n }\n\n const newTags = [...tags, trimmed];\n setInternalValue(newTags);\n onChange?.(newTags);\n setInputValue('');\n };\n\n const removeTag = (index: number) => {\n const newTags = tags.filter((_, i) => i !== index);\n setInternalValue(newTags);\n onChange?.(newTags);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (splitChars.includes(e.key)) {\n e.preventDefault();\n addTag(inputValue);\n } else if (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n removeTag(tags.length - 1);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n // Check for split chars in pasted content\n for (const char of splitChars) {\n if (char !== 'Enter' && newValue.includes(char)) {\n const parts = newValue.split(char);\n for (const part of parts) {\n addTag(part);\n }\n return;\n }\n }\n\n setInputValue(newValue);\n };\n\n return (\n <div\n data-slot=\"tags-input\"\n className={cn('cn-tags-input cn-combobox-chips', className)}\n {...props}\n >\n {tags.map((tag, index) => (\n <span\n key={allowDuplicates ? `${tag}-${index}` : tag}\n data-slot=\"tags-input-tag\"\n className=\"cn-combobox-chip\"\n >\n {tag}\n <button\n type=\"button\"\n data-slot=\"tags-input-tag-remove\"\n onClick={() => removeTag(index)}\n disabled={disabled}\n className=\"cn-combobox-chip-remove\"\n >\n <span className=\"sr-only\">Remove</span>\n <IconX className=\"size-3\" />\n </button>\n </span>\n ))}\n <input\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={tags.length === 0 ? placeholder : ''}\n disabled={disabled || (maxTags !== undefined && tags.length >= maxTags)}\n className=\"cn-tags-input-input\"\n />\n </div>\n );\n}\n\nexport { TagsInput };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from './input-group';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\nexport type TextInputProps = Omit<React.ComponentProps<'input'>, 'size'> &\n Omit<InputWrapperProps, 'children'> & {\n /** Input size */\n size?: ComponentSize;\n /** Left section (icon, text, etc.) */\n leftSection?: React.ReactNode;\n /** Right section (icon, button, etc.) */\n rightSection?: React.ReactNode;\n /** Pointer events for right section */\n rightSectionPointerEvents?: 'none' | 'all';\n };\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size,\n leftSection,\n rightSection,\n rightSectionPointerEvents = 'none',\n ...inputProps\n },\n ref,\n ) => {\n const groupSizeClasses: Partial<Record<ComponentSize, string>> = {\n xs: 'h-7',\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n xl: 'h-12',\n };\n\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const inputElement = (\n <InputGroup\n disabled={disabled}\n className={cn(size && groupSizeClasses[size])}\n >\n {leftSection && (\n <InputGroupAddon align=\"inline-start\" className=\"pointer-events-none\">\n {leftSection}\n </InputGroupAddon>\n )}\n\n <InputGroupInput\n ref={ref}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n required={required}\n className={cn(className)}\n {...inputProps}\n />\n\n {rightSection && (\n <InputGroupAddon\n align=\"inline-end\"\n className={cn(\n rightSectionPointerEvents === 'none' && 'pointer-events-none',\n )}\n >\n {rightSection}\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n\n if (!hasWrapper) {\n return inputElement;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {inputElement}\n </InputWrapper>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst themeIconVariants = cva(\n 'cn-theme-icon inline-flex items-center justify-center shrink-0 transition-colors',\n {\n variants: {\n size: {\n xs: 'size-6 [&>svg]:size-3',\n sm: 'size-8 [&>svg]:size-4',\n md: 'size-10 [&>svg]:size-5',\n lg: 'size-12 [&>svg]:size-6',\n xl: 'size-14 [&>svg]:size-7',\n '2xl': 'size-16 [&>svg]:size-8',\n },\n variant: {\n filled: 'bg-primary text-primary-foreground ',\n light: 'cn-theme-icon-variant-light',\n outline: 'cn-theme-icon-variant-outline',\n gradient:\n 'bg-gradient-to-br from-primary to-accent text-primary-foreground ',\n default: 'cn-theme-icon-variant-default',\n subtle:\n 'bg-transparent text-muted-foreground hover:bg-muted/60 hover:text-foreground',\n },\n color: {\n primary: '',\n secondary: '',\n accent: '',\n destructive: '',\n success: '',\n warning: '',\n },\n radius: {\n none: 'cn-theme-icon-radius-none',\n sm: 'cn-theme-icon-radius-sm',\n md: 'cn-theme-icon-radius-md',\n lg: 'cn-theme-icon-radius-lg',\n full: 'cn-theme-icon-radius-full',\n },\n },\n compoundVariants: [\n {\n variant: 'filled',\n color: 'secondary',\n className: 'bg-secondary text-secondary-foreground',\n },\n {\n variant: 'filled',\n color: 'accent',\n className: 'bg-accent text-accent-foreground',\n },\n {\n variant: 'filled',\n color: 'destructive',\n className: 'bg-destructive text-destructive-foreground',\n },\n {\n variant: 'light',\n color: 'secondary',\n className: 'bg-secondary/10 text-secondary-foreground',\n },\n {\n variant: 'light',\n color: 'accent',\n className: 'bg-accent/10 text-accent-foreground',\n },\n {\n variant: 'light',\n color: 'destructive',\n className: 'bg-destructive/10 text-destructive',\n },\n {\n variant: 'outline',\n color: 'secondary',\n className: 'border-secondary text-secondary-foreground',\n },\n {\n variant: 'outline',\n color: 'accent',\n className: 'border-accent text-accent-foreground',\n },\n {\n variant: 'outline',\n color: 'destructive',\n className: 'border-destructive text-destructive',\n },\n // Success color variants\n {\n variant: 'filled',\n color: 'success',\n className: 'bg-green-600 text-white dark:bg-green-500',\n },\n {\n variant: 'light',\n color: 'success',\n className:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n },\n {\n variant: 'outline',\n color: 'success',\n className:\n 'border-green-600 text-green-600 dark:border-green-500 dark:text-green-400',\n },\n // Warning color variants\n {\n variant: 'filled',\n color: 'warning',\n className: 'bg-yellow-600 text-white dark:bg-yellow-500',\n },\n {\n variant: 'light',\n color: 'warning',\n className:\n 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400',\n },\n {\n variant: 'outline',\n color: 'warning',\n className:\n 'border-yellow-600 text-yellow-600 dark:border-yellow-500 dark:text-yellow-400',\n },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'filled',\n color: 'primary',\n radius: 'md',\n },\n },\n);\n\ntype ThemeIconProps = React.ComponentProps<'div'> &\n VariantProps<typeof themeIconVariants>;\n\nfunction ThemeIcon({\n className,\n size,\n variant,\n color,\n radius,\n children,\n ...props\n}: ThemeIconProps) {\n return (\n <div\n data-slot=\"theme-icon\"\n className={cn(\n themeIconVariants({ size, variant, color, radius }),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { ThemeIcon, themeIconVariants };\nexport type { ThemeIconProps };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Timeline({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"timeline\"\n className={cn('cn-timeline relative', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"timeline-item\"\n className={cn('cn-timeline-item', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineDot({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & {\n variant?: 'default' | 'primary' | 'secondary';\n}) {\n return (\n <div\n data-slot=\"timeline-dot\"\n data-variant={variant}\n className={cn('cn-timeline-dot', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"timeline-content\"\n className={cn('cn-timeline-content', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineTitle({ className, ...props }: React.ComponentProps<'h3'>) {\n return (\n <h3\n data-slot=\"timeline-title\"\n className={cn('cn-timeline-title', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineDescription({\n className,\n ...props\n}: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"timeline-description\"\n className={cn('cn-timeline-description', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineTime({ className, ...props }: React.ComponentProps<'time'>) {\n return (\n <time\n data-slot=\"timeline-time\"\n className={cn('cn-timeline-time', className)}\n {...props}\n />\n );\n}\n\nexport {\n Timeline,\n TimelineItem,\n TimelineDot,\n TimelineContent,\n TimelineTitle,\n TimelineDescription,\n TimelineTime,\n};\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst titleVariants = cva('font-semibold tracking-tight text-pretty', {\n variants: {\n order: {\n 1: 'text-4xl md:text-5xl leading-tight',\n 2: 'text-3xl md:text-4xl leading-tight',\n 3: 'text-2xl md:text-3xl leading-snug',\n 4: 'text-xl md:text-2xl leading-snug',\n 5: 'text-lg md:text-xl leading-normal',\n 6: 'text-base md:text-lg leading-normal',\n },\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n accent: 'text-accent-foreground',\n gradient:\n 'bg-gradient-to-r from-primary via-primary/70 to-accent bg-clip-text text-transparent',\n dimmed: 'text-foreground/80',\n },\n weight: {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n order: 3,\n variant: 'default',\n weight: 'semibold',\n align: 'left',\n },\n});\n\ntype TitleProps = Omit<React.ComponentProps<'h1'>, 'ref'> &\n VariantProps<typeof titleVariants>;\n\nfunction Title({\n className,\n order = 3,\n variant,\n weight,\n align,\n children,\n ...props\n}: TitleProps) {\n const Component = `h${order}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n return (\n <Component\n data-slot=\"title\"\n className={cn(\n titleVariants({ order, variant, weight, align }),\n className,\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n\nexport { Title, titleVariants };\nexport type { TitleProps };\n","'use client';\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst toggleVariants = cva(\n 'cn-toggle inline-flex items-center justify-center gap-2 whitespace-nowrap border border-transparent outline-none transition-colors [&_svg]:pointer-events-none [&_svg:not([class*=\"size-\"])]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'cn-toggle-variant-default',\n outline: 'cn-toggle-variant-outline',\n },\n size: {\n default: 'cn-toggle-size-default',\n sm: 'cn-toggle-size-sm',\n lg: 'cn-toggle-size-lg',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","'use client';\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { toggleVariants } from './toggle';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }\n>({\n size: 'default',\n variant: 'default',\n spacing: 0,\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }) {\n return (\n <ToggleGroupPrimitive\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={cn(\n 'cn-toggle-group group/toggle-group flex w-fit items-center',\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <TogglePrimitive\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'cn-toggle-group-item w-auto min-w-0 shrink-0 focus:z-10 focus-visible:z-10',\n className,\n )}\n {...props}\n >\n {children}\n </TogglePrimitive>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","'use client';\n\nimport type * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nexport type TransitionName =\n | 'fade'\n | 'fade-up'\n | 'fade-down'\n | 'fade-left'\n | 'fade-right'\n | 'slide-down'\n | 'slide-up'\n | 'slide-left'\n | 'slide-right'\n | 'scale';\n\nconst TRANSITIONS: Record<\n TransitionName,\n { in: React.CSSProperties; out: React.CSSProperties; property: string }\n> = {\n fade: {\n in: { opacity: 1 },\n out: { opacity: 0 },\n property: 'opacity',\n },\n 'fade-up': {\n in: { opacity: 1, transform: 'translateY(0)' },\n out: { opacity: 0, transform: 'translateY(12px)' },\n property: 'opacity, transform',\n },\n 'fade-down': {\n in: { opacity: 1, transform: 'translateY(0)' },\n out: { opacity: 0, transform: 'translateY(-12px)' },\n property: 'opacity, transform',\n },\n 'fade-left': {\n in: { opacity: 1, transform: 'translateX(0)' },\n out: { opacity: 0, transform: 'translateX(12px)' },\n property: 'opacity, transform',\n },\n 'fade-right': {\n in: { opacity: 1, transform: 'translateX(0)' },\n out: { opacity: 0, transform: 'translateX(-12px)' },\n property: 'opacity, transform',\n },\n 'slide-down': {\n in: { transform: 'translateY(0)' },\n out: { transform: 'translateY(-100%)' },\n property: 'transform',\n },\n 'slide-up': {\n in: { transform: 'translateY(0)' },\n out: { transform: 'translateY(100%)' },\n property: 'transform',\n },\n 'slide-left': {\n in: { transform: 'translateX(0)' },\n out: { transform: 'translateX(100%)' },\n property: 'transform',\n },\n 'slide-right': {\n in: { transform: 'translateX(0)' },\n out: { transform: 'translateX(-100%)' },\n property: 'transform',\n },\n scale: {\n in: { opacity: 1, transform: 'scale(1)' },\n out: { opacity: 0, transform: 'scale(0.95)' },\n property: 'opacity, transform',\n },\n};\n\ntype TransitionStatus =\n | 'entering'\n | 'entered'\n | 'exiting'\n | 'exited'\n | 'pre-entering'\n | 'pre-exiting';\n\ntype TransitionProps = {\n mounted: boolean;\n children: (styles: React.CSSProperties) => React.ReactElement;\n transition?: TransitionName;\n duration?: number;\n exitDuration?: number;\n timingFunction?: string;\n keepMounted?: boolean;\n onExited?: () => void;\n onEntered?: () => void;\n onExit?: () => void;\n onEnter?: () => void;\n enterDelay?: number;\n exitDelay?: number;\n};\n\nfunction useTransitionState(\n mounted: boolean,\n duration: number,\n exitDuration: number,\n timingFunction: string,\n onEnter?: () => void,\n onEntered?: () => void,\n onExit?: () => void,\n onExited?: () => void,\n enterDelay?: number,\n exitDelay?: number,\n) {\n const [status, setStatus] = useState<TransitionStatus>(\n mounted ? 'entered' : 'exited',\n );\n const [displayDuration, setDisplayDuration] = useState(duration);\n\n useEffect(() => {\n if (mounted) {\n setDisplayDuration(duration);\n const t1 = setTimeout(() => {\n setStatus('entering');\n onEnter?.();\n }, enterDelay ?? 0);\n const t2 = setTimeout(\n () => {\n setStatus('entered');\n onEntered?.();\n },\n (enterDelay ?? 0) + duration,\n );\n return () => {\n clearTimeout(t1);\n clearTimeout(t2);\n };\n }\n setDisplayDuration(exitDuration);\n const t1 = setTimeout(() => {\n setStatus('exiting');\n onExit?.();\n }, exitDelay ?? 0);\n const t2 = setTimeout(\n () => {\n setStatus('exited');\n onExited?.();\n },\n (exitDelay ?? 0) + exitDuration,\n );\n return () => {\n clearTimeout(t1);\n clearTimeout(t2);\n };\n }, [\n mounted,\n duration,\n exitDuration,\n enterDelay,\n exitDelay,\n onEnter,\n onEntered,\n onExit,\n onExited,\n ]);\n\n return { status, duration: displayDuration, timingFunction };\n}\n\nfunction Transition({\n mounted,\n children,\n transition = 'fade',\n duration = 250,\n exitDuration = duration,\n timingFunction = 'cubic-bezier(0.2, 0, 0, 1)',\n keepMounted = false,\n onExited,\n onEntered,\n onExit,\n onEnter,\n enterDelay,\n exitDelay,\n}: TransitionProps) {\n const {\n status,\n duration: d,\n timingFunction: tf,\n } = useTransitionState(\n mounted,\n duration,\n exitDuration,\n timingFunction,\n onEnter,\n onEntered,\n onExit,\n onExited,\n enterDelay,\n exitDelay,\n );\n\n const t = TRANSITIONS[transition];\n if (!t) {\n if (mounted) {\n return <>{children({})}</>;\n }\n if (keepMounted) {\n return children({ display: 'none' });\n }\n return null;\n }\n\n if (status === 'exited') {\n if (keepMounted) {\n return children({\n ...t.out,\n display: 'none',\n transitionProperty: t.property,\n transitionDuration: `${d}ms`,\n transitionTimingFunction: tf,\n });\n }\n return null;\n }\n\n const isOut =\n status === 'exiting' ||\n status === 'pre-exiting' ||\n status === 'pre-entering';\n const styles: React.CSSProperties = {\n ...(isOut ? t.out : t.in),\n transitionProperty: t.property,\n transitionDuration: `${d}ms`,\n transitionTimingFunction: tf,\n };\n\n return <>{children(styles)}</>;\n}\n\nexport { Transition };\nexport type { TransitionProps };\n","'use client';\n\nimport { IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { UnstyledButton } from './unstyled-button';\n\nexport type TreeNodeData = {\n label: React.ReactNode;\n value: string;\n children?: TreeNodeData[];\n nodeProps?: Record<string, unknown>;\n};\n\ntype TreeProps = React.ComponentProps<'div'> & {\n data: TreeNodeData[];\n /** Selected value (controlled) */\n selectedValue?: string | null;\n /** Called when selection changes */\n onSelectedValueChange?: (value: string | null) => void;\n /** Expanded values (controlled). If undefined, internal state is used. */\n expandedValues?: Set<string>;\n onExpandedValuesChange?: (values: Set<string>) => void;\n /** Padding left per level (px) */\n levelOffset?: number;\n /** Expand node on click (when it has children) */\n expandOnClick?: boolean;\n /** Select node on click */\n selectOnClick?: boolean;\n renderNode?: (payload: {\n node: TreeNodeData;\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n selected: boolean;\n }) => React.ReactNode;\n};\n\nfunction Tree({\n className,\n data,\n selectedValue,\n onSelectedValueChange,\n expandedValues: expandedProp,\n onExpandedValuesChange,\n levelOffset = 24,\n expandOnClick = true,\n selectOnClick = true,\n renderNode,\n ...props\n}: TreeProps) {\n const [internalExpanded, setInternalExpanded] = useState<Set<string>>(\n new Set(),\n );\n const expanded = expandedProp !== undefined ? expandedProp : internalExpanded;\n const setExpanded =\n onExpandedValuesChange ??\n ((v: Set<string>) => setInternalExpanded(new Set(v)));\n\n const toggleExpand = (value: string) => {\n const next = new Set(expanded);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n setExpanded(next);\n };\n\n const handleNodeClick = (node: TreeNodeData, hasChildren: boolean) => {\n if (hasChildren && expandOnClick) {\n toggleExpand(node.value);\n }\n if (selectOnClick) {\n onSelectedValueChange?.(node.value);\n }\n };\n\n return (\n <div\n data-slot=\"tree\"\n role=\"tree\"\n className={cn('cn-tree', className)}\n {...props}\n >\n {data.map((node) => (\n <TreeNode\n key={node.value}\n node={node}\n level={0}\n expandedValues={expanded}\n toggleExpand={toggleExpand}\n selectedValue={selectedValue ?? null}\n onSelectedValueChange={onSelectedValueChange}\n handleNodeClick={handleNodeClick}\n levelOffset={levelOffset}\n renderNode={renderNode}\n />\n ))}\n </div>\n );\n}\n\ntype TreeNodeProps = {\n node: TreeNodeData;\n level: number;\n expandedValues: Set<string>;\n toggleExpand: (value: string) => void;\n selectedValue: string | null;\n onSelectedValueChange?: (value: string | null) => void;\n handleNodeClick: (node: TreeNodeData, hasChildren: boolean) => void;\n levelOffset: number;\n renderNode?: TreeProps['renderNode'];\n};\n\nfunction TreeNode({\n node,\n level,\n expandedValues,\n toggleExpand,\n selectedValue,\n handleNodeClick,\n levelOffset,\n renderNode,\n}: TreeNodeProps) {\n const hasChildren = Boolean(node.children?.length);\n const expanded = expandedValues.has(node.value);\n const selected = selectedValue === node.value;\n\n const label =\n renderNode?.({\n node,\n level,\n expanded,\n hasChildren,\n selected,\n }) ?? node.label;\n\n return (\n <div\n role=\"treeitem\"\n tabIndex={0}\n aria-expanded={hasChildren ? expanded : undefined}\n >\n <UnstyledButton\n type=\"button\"\n data-selected={selected}\n className={cn('cn-tree-node-button')}\n style={{ paddingLeft: `${level * levelOffset + 4}px` }}\n onClick={() => handleNodeClick(node, hasChildren)}\n >\n {hasChildren ? (\n <span\n className={cn(\n 'cn-tree-node-chevron text-muted-foreground flex shrink-0 transition-transform',\n expanded && 'rotate-90',\n )}\n >\n <IconChevronRight className=\"size-4\" />\n </span>\n ) : (\n <span aria-hidden className=\"cn-tree-node-spacer w-4 shrink-0\" />\n )}\n <span className=\"cn-tree-node-label min-w-0 flex-1 truncate\">\n {label}\n </span>\n </UnstyledButton>\n {hasChildren && expanded && node.children && (\n <fieldset className=\"cn-tree-node-children list-none border-0 p-0 m-0 min-w-0\">\n {node.children.map((child) => (\n <TreeNode\n key={child.value}\n node={child}\n level={level + 1}\n expandedValues={expandedValues}\n toggleExpand={toggleExpand}\n selectedValue={selectedValue ?? null}\n handleNodeClick={handleNodeClick}\n levelOffset={levelOffset}\n renderNode={renderNode}\n />\n ))}\n </fieldset>\n )}\n </div>\n );\n}\n\nexport { Tree };\nexport type { TreeProps };\n"],"mappings":"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","names":["jsx","jsxs","useBreadcrumbs","Link","useMesob","IconSearch","jsx","jsx","jsxs","jsx","jsxs","cva","jsx","Fragment","cva","jsx","jsx","jsx","jsxs","cva","jsx","jsxs","Fragment","jsx","sizeClasses","jsx","cva","jsx","jsxs","Fragment","jsx","jsxs","open","IconSearch","jsx","IconChevronRight","jsx","jsxs","IconChevronRight","Fragment","jsx","jsxs","useMesob","useMesob","useEffect","useRef","useState","useRender","cva","React","React","IconX","jsx","jsxs","IconX","React","jsx","jsx","jsxs","jsx","jsxs","useRender","cva","Fragment","jsx","jsxs","useRef","useState","useEffect","useMesob","Link","jsx","radiusClasses","React","Fragment","jsx","jsxs","getLoaderSize","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","useMesob","cva","React","cva","jsx","jsxs","useMesob","Link","forwardRef","jsx","jsxs","Fragment","jsx","jsxs","forwardRef","IconChevronDown","useState","jsx","jsxs","Fragment","jsx","jsxs","useState","IconChevronDown","useMesob","IconChevronDown","IconMenu2","isValidElement","useMemo","useRef","useState","jsx","jsxs","IconCheck","IconChevronDown","jsx","jsxs","IconChevronDown","IconCheck","jsx","jsxs","useMesob","useMemo","useState","useRef","isValidElement","IconMenu2","IconChevronDown","useState","Fragment","jsx","jsxs","sizeClasses","useState","IconChevronRight","useState","Fragment","jsx","jsxs","useState","IconChevronRight","IconPlus","cva","jsx","cva","jsx","jsxs","IconPlus","jsx","jsxs","IconFilter","jsx","jsxs","IconFilter","IconTrash","jsx","jsxs","IconTrash","IconChevronDown","IconChevronUp","useState","jsx","jsxs","useState","IconChevronUp","IconChevronDown","React","jsx","jsx","jsxs","_","IconSearch","IconX","parseAsInteger","parseAsString","useQueryState","useRef","jsx","jsxs","useQueryState","parseAsString","parseAsInteger","useRef","IconSearch","IconX","IconSearch","IconX","useRef","useDebouncedCallback","jsx","jsxs","useRef","useDebouncedCallback","IconSearch","IconX","useState","jsx","jsx","jsxs","useState","jsx","jsxs","cva","jsx","cva","jsx","jsx","jsxs","useCallback","useEffect","useState","IconCheck","jsx","sizeClasses","IconCheck","IconX","cva","jsx","jsxs","cva","IconX","IconChevronRight","jsx","jsxs","IconChevronRight","jsx","sizeClasses","jsx","jsxs","Fragment","jsx","jsxs","useState","useCallback","useEffect","IconSortAscendingLetters","IconSortDescendingLetters","parseAsInteger","parseAsString","useQueryState","jsx","jsxs","useQueryState","parseAsString","parseAsInteger","IconSortAscendingLetters","IconSortDescendingLetters","IconGridDots","IconList","IconTable","parseAsString","useQueryState","jsx","viewIcons","IconTable","IconGridDots","IconList","useQueryState","parseAsString","parseAsInteger","parseAsString","useMemo","useCallback","useMemo","useState","jsx","jsx","jsx","jsxs","jsx","jsx","jsxs","IconLoader2","IconX","jsx","jsx","jsxs","IconX","useState","createContext","useContext","useMemo","jsx","createContext","useMesob","useContext","IconList","Table","TableCell","TableHeader","TableRow","createContext","useContext","jsx","createContext","useContext","jsx","useState","jsx","jsxs","useState","useState","jsx","jsxs","useState","IconTable","IconTrash","Fragment","jsx","jsxs","IconTable","IconTrash","useState","jsx","jsxs","useState","mergeAttributes","Fragment","jsx","jsxs","Table","TableRow","TableCell","TableHeader","IconList","jsx","jsx","jsxs","useState","IconX","IconTextRecognition","useState","jsx","jsxs","useState","IconTextRecognition","IconTextRecognition","useState","jsx","jsxs","useState","IconTextRecognition","useLocale","jsx","useLocale","Fragment","jsx","jsx","jsxs","jsx","jsxs","parse","useLocale","jsx","useLocale","parse","useTheme","jsx","jsxs","useTheme","IconChevronDown","IconChevronUp","Fragment","jsx","jsxs","IconChevronDown","IconChevronUp","useRender","cva","Fragment","jsx","jsxs","cva","useRender","jsx","jsx","useMesob","cva","jsx","isExternal","cva","useMesob","Link","useCallback","useRef","useState","jsx","jsxs","useState","useCallback","useRef","useMesob","IconChevronDown","useLayoutEffect","useMemo","useRef","useState","jsx","jsxs","useMesob","useState","useRef","useLayoutEffect","useMemo","IconChevronDown","jsx","jsx","useRender","cva","Fragment","jsx","jsxs","cva","useRender","cva","jsx","cva","IconMenu2","IconX","cva","jsx","cva","IconX","IconMenu2","useRender","jsx","useRender","IconChevronDown","IconChevronLeft","IconChevronRight","React","jsx","className","props","IconChevronLeft","IconChevronRight","IconChevronDown","IconChevronLeft","IconChevronRight","React","jsx","jsxs","IconChevronLeft","IconChevronRight","jsx","React","Fragment","jsx","jsxs","config","IconX","jsx","IconX","cva","jsx","cva","React","useCallback","useEffect","useRef","useState","useCallback","useEffect","useRef","useState","jsx","jsxs","Fragment","jsx","jsxs","useRef","useCallback","pct","useState","useEffect","jsx","jsx","jsxs","sizeClasses","useCallback","useState","useRef","useEffect","inputContainer","IconCheck","IconChevronDown","useMemo","useState","jsx","jsxs","useState","useMemo","IconChevronDown","IconCheck","cva","jsx","cva","IconCheck","IconChevronRight","jsx","jsxs","IconChevronRight","IconCheck","IconCheck","useState","jsx","useState","IconCheck","React","jsx","jsxs","IconChevronRight","jsx","jsxs","IconChevronRight","jsx","jsx","jsxs","jsx","jsxs","useRef","Fragment","jsx","jsxs","useRef","IconX","useId","useRef","useState","jsx","jsxs","useState","useRef","useId","IconX","jsx","useEffect","useState","jsx","useState","useEffect","hasTargetAndParent","cloneElement","useEffect","useRef","jsx","useRender","React","Controller","jsx","Controller","useRender","cva","jsx","cva","jsx","gapClasses","jsx","Highlight","jsx","useState","jsx","Image","useState","cva","jsx","jsxs","cva","React","jsx","jsxs","useRender","cva","jsx","cva","useRender","useState","jsx","jsxs","useState","jsx","cva","jsx","cva","jsx","IconCheck","IconChevronRight","jsx","jsxs","IconCheck","IconChevronRight","forwardRef","useCallback","useState","jsx","jsxs","sizeClasses","forwardRef","useState","useCallback","AutocompletePrimitive","IconCheck","IconChevronDown","IconX","useState","jsx","jsxs","useState","AutocompletePrimitive","IconX","IconChevronDown","IconCheck","IconChevronDown","forwardRef","jsx","jsxs","forwardRef","IconChevronDown","useMesob","cva","jsx","jsxs","isExternal","cva","useMesob","Link","IconChevronDown","cva","jsx","jsxs","cva","IconChevronDown","jsx","formatNumber","IconChevronDown","IconChevronUp","forwardRef","useCallback","useRender","jsx","useRender","jsx","jsxs","sizeClasses","forwardRef","useCallback","IconChevronUp","IconChevronDown","IconChevronLeft","IconChevronRight","IconDots","jsx","jsxs","IconChevronLeft","IconChevronRight","IconDots","jsx","radiusClasses","forwardRef","useState","jsx","jsxs","forwardRef","useState","cva","jsx","jsxs","cva","jsx","radiusClasses","useState","jsx","useState","sizeClasses","jsx","jsx","jsxs","jsx","jsxs","cva","jsx","cva","React","jsx","jsxs","jsx","IconChevronDown","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useEffect","IconChevronDown","jsx","gapClasses","IconCheck","createContext","useContext","jsx","jsxs","createContext","useContext","IconCheck","jsx","jsx","IconX","useState","jsx","jsxs","useState","IconX","forwardRef","jsx","jsxs","forwardRef","cva","jsx","cva","jsx","cva","jsx","cva","cva","jsx","cva","TogglePrimitive","React","jsx","TogglePrimitive","useEffect","useState","Fragment","jsx","t1","t2","IconChevronRight","useState","jsx","jsxs","useState","IconChevronRight"]}
1
+ {"version":3,"sources":["../src/components/app/app-breadcrumbs.tsx","../src/components/ui/breadcrumb.tsx","../src/lib/utils.ts","../src/components/app/app-breadcrumbs-context.tsx","../src/components/app/app-header-actions.tsx","../src/components/spotlight-search.tsx","../src/components/ui/button.tsx","../src/components/ui/spinner.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../src/components/ui/input-group.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/input-wrapper.tsx","../src/components/ui/field.tsx","../src/components/ui/label.tsx","../src/components/ui/separator.tsx","../src/components/ui/avatar.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/app/app-sidebar.tsx","../src/components/ui/sidebar.tsx","../src/hooks/use-mobile.ts","../src/components/ui/sheet.tsx","../src/components/ui/sidebar-context.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/components/ui/card.tsx","../src/components/ui/loader.tsx","../src/components/ui/overlay.tsx","../src/components/ui/loading-overlay.tsx","../src/components/app/empty-card-loading.tsx","../src/components/app/entity-page-loading.tsx","../src/components/app/error-page-view.tsx","../src/components/app/no-data-available.tsx","../src/components/ui/text.tsx","../src/components/display-table/display-table.tsx","../src/components/ui/scroll-area.tsx","../src/components/entity/entity-bulk-actions.tsx","../src/components/ui/alert-dialog.tsx","../src/components/entity/entity-detail-header.tsx","../src/components/layout/page/page-go-back.tsx","../src/components/ui/select.tsx","../src/components/entity/entity-drawer.tsx","../src/components/entity/entity-drawer-trigger.tsx","../src/components/entity/entity-empty-state.tsx","../src/components/ui/empty.tsx","../src/components/entity/entity-filter.tsx","../src/components/entity/entity-filter-state.tsx","../src/components/entity/entity-form-actions.tsx","../src/components/entity/entity-header.tsx","../src/components/entity/entity-loading-state.tsx","../src/components/ui/table.tsx","../src/components/entity/entity-search.tsx","../src/components/entity/entity-search-state.tsx","../src/components/layout/section/section.tsx","../src/components/ui/collapsible.tsx","../src/components/entity/entity-sort-state.tsx","../src/components/entity/entity-view-toggle-state.tsx","../src/components/ui/tabs.tsx","../src/components/entity/entity-section.tsx","../src/components/entity/entity-selector.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/chip.tsx","../src/components/ui/data-table/data-table-pagination.tsx","../src/components/ui/radio-group.tsx","../src/components/entity/entity-selector-modal.tsx","../src/components/entity/use-entity-pagination.ts","../src/components/entity/entity-sort.tsx","../src/components/entity/entity-view-toggle.tsx","../src/components/entity/use-entity-params.ts","../src/components/entity/use-entity-section-state.ts","../src/components/layout/page/page-body.tsx","../src/components/layout/page/page-container.tsx","../src/components/layout/page/page-section.tsx","../src/components/layout/page/page-subtitle.tsx","../src/components/layout/page/page-title.tsx","../src/components/ui/sonner.tsx","../src/components/layout/shell.tsx","../src/components/locale/locale-input-rich-text.tsx","../src/provider/mesob-provider.tsx","../src/lib/locale.ts","../src/components/rich-text/rich-text-input.tsx","../src/components/rich-text/controls/hardbreak-control.tsx","../src/components/rich-text/rich-text-editor.tsx","../src/components/rich-text/controls/iframe-control.tsx","../src/components/rich-text/controls/image-control.tsx","../src/components/rich-text/controls/table-control.tsx","../src/components/rich-text/controls/youtube-control.tsx","../src/components/rich-text/extensions/custom-heading.ts","../src/components/rich-text/extensions/iframe-extension.ts","../src/components/ui/visually-hidden.tsx","../src/components/locale/locale-input-text.tsx","../src/components/locale/locale-input-textarea.tsx","../src/components/locale/locale-rich-text.tsx","../src/components/locale/locale-text.tsx","../src/components/mesob-logo.tsx","../src/components/powered-by.tsx","../src/components/rich-text/rich-text-display.tsx","../src/components/theme-toggle.tsx","../src/components/ui/accordion.tsx","../src/components/ui/action-icon.tsx","../src/components/ui/affix.tsx","../src/components/ui/alert.tsx","../src/components/ui/anchor.tsx","../src/components/ui/angle-slider.tsx","../src/components/ui/animated-tabs.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/background-image.tsx","../src/components/ui/badge.tsx","../src/components/ui/blockquote.tsx","../src/components/ui/burger.tsx","../src/components/ui/button-group.tsx","../src/components/ui/calendar.tsx","../src/components/ui/carousel.tsx","../src/components/ui/center.tsx","../src/components/ui/chart.tsx","../src/components/ui/close-button.tsx","../src/components/ui/code.tsx","../src/components/ui/color-input.tsx","../src/lib/color-utils.ts","../src/components/ui/color-picker.tsx","../src/components/ui/color-swatch.tsx","../src/components/ui/popover.tsx","../src/components/ui/combobox.tsx","../src/components/ui/container.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/copy-button.tsx","../src/components/ui/data-table/data-table.tsx","../src/components/ui/data-table/data-table-action.tsx","../src/components/ui/data-table/data-table-column-header.tsx","../src/components/ui/data-table/data-table-view-options.tsx","../src/components/ui/direction.tsx","../src/components/ui/drawer.tsx","../src/components/ui/file-button.tsx","../src/components/ui/file-input.tsx","../src/components/ui/flex.tsx","../src/components/ui/floating-indicator.tsx","../src/components/ui/focus-trap.tsx","../src/components/ui/form.tsx","../src/components/ui/grid.tsx","../src/components/ui/group.tsx","../src/components/ui/highlight.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/image.tsx","../src/components/ui/indicator.tsx","../src/components/ui/input-otp.tsx","../src/components/ui/item.tsx","../src/components/ui/json-input.tsx","../src/components/ui/kbd.tsx","../src/components/ui/list.tsx","../src/components/ui/mark.tsx","../src/components/ui/menubar.tsx","../src/components/ui/money-input.tsx","../src/components/ui/multi-select.tsx","../src/components/ui/native-select.tsx","../src/components/ui/nav-link.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/number-formatter.tsx","../src/components/ui/number-input.tsx","../src/components/ui/unstyled-button.tsx","../src/components/ui/pagination.tsx","../src/components/ui/paper.tsx","../src/components/ui/password-input.tsx","../src/components/ui/pill.tsx","../src/components/ui/progress.tsx","../src/components/ui/rating.tsx","../src/components/ui/resizable.tsx","../src/components/ui/ring-progress.tsx","../src/components/ui/semi-circle-progress.tsx","../src/components/ui/simple-grid.tsx","../src/components/ui/slider.tsx","../src/components/ui/space.tsx","../src/components/ui/spoiler.tsx","../src/components/ui/stack.tsx","../src/components/ui/stepper.tsx","../src/components/ui/switch.tsx","../src/components/ui/table-of-contents.tsx","../src/components/ui/tags-input.tsx","../src/components/ui/text-input.tsx","../src/components/ui/theme-icon.tsx","../src/components/ui/timeline.tsx","../src/components/ui/title.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/transition.tsx","../src/components/ui/tree.tsx"],"sourcesContent":["'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport type * as React from 'react';\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '../ui/breadcrumb';\nimport type { BreadcrumbItemData as BID } from './app-breadcrumbs-context';\nimport {\n BreadcrumbContext,\n useBreadcrumbs as useBreadcrumbsBase,\n} from './app-breadcrumbs-context';\n\nexport type { BreadcrumbItemData } from './app-breadcrumbs-context';\n\nexport function useBreadcrumbs(options?: { items?: BID[] }) {\n const context = useBreadcrumbsBase(options);\n const { setItems } = context;\n const prevItemsStrRef = useRef<string | undefined>(undefined);\n\n useEffect(() => {\n const items = options?.items;\n if (!items) {\n return;\n }\n const itemsStr = JSON.stringify(items);\n if (prevItemsStrRef.current !== itemsStr) {\n prevItemsStrRef.current = itemsStr;\n setItems(items);\n }\n }, [options?.items, setItems]);\n\n return context;\n}\n\ntype BreadcrumbProviderProps = {\n children: React.ReactNode;\n defaultItems?: BID[];\n};\n\nexport function BreadcrumbProvider({\n children,\n defaultItems = [],\n}: BreadcrumbProviderProps) {\n const [items, setItems] = useState<BID[]>(defaultItems);\n\n const push = useCallback((item: BID) => {\n setItems((prev) => [...prev, item]);\n }, []);\n\n const pop = useCallback(() => {\n setItems((prev) => prev.slice(0, -1));\n }, []);\n\n const clear = useCallback(() => {\n setItems([]);\n }, []);\n\n const value = useMemo(\n () => ({\n items,\n setItems,\n push,\n pop,\n clear,\n }),\n [items, push, pop, clear],\n );\n\n return (\n <BreadcrumbContext.Provider value={value}>\n {children}\n </BreadcrumbContext.Provider>\n );\n}\n\ntype AppBreadcrumbsProps = {\n linkComponent?: React.ComponentType<{\n href: string;\n children: React.ReactNode;\n className?: string;\n }>;\n className?: string;\n};\n\nexport function AppBreadcrumbs({\n linkComponent: linkProp,\n className,\n}: AppBreadcrumbsProps) {\n const mesob = useMesob();\n const Link = linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const { items } = useBreadcrumbs(undefined);\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <Breadcrumb className={className}>\n <BreadcrumbList>\n {items.map((crumb, index) => {\n let content: React.ReactNode;\n if (crumb.href) {\n if (Link) {\n content = (\n <Link\n href={crumb.href}\n className=\"hover:underline\"\n {...(locale && { locale })}\n >\n {crumb.label}\n </Link>\n );\n } else {\n content = (\n <a href={crumb.href} className=\"hover:underline\">\n {crumb.label}\n </a>\n );\n }\n } else {\n content = <BreadcrumbPage>{crumb.label}</BreadcrumbPage>;\n }\n\n return (\n <Fragment key={`${crumb.label}-${crumb.href ?? ''}-${index}`}>\n {index > 0 && <BreadcrumbSeparator className=\"hidden md:block\" />}\n <BreadcrumbItem className={index === 0 ? 'hidden md:block' : ''}>\n {content}\n </BreadcrumbItem>\n </Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { IconChevronRight, IconDots } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<'nav'>) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />;\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n 'cn-breadcrumb-list flex flex-wrap items-center break-words',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn('cn-breadcrumb-item inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbLink({\n className,\n // biome-ignore lint/a11y/useAnchorContent: default render prop, content from consumer\n // biome-ignore lint/a11y/useValidAnchor: default render prop, href from consumer\n render = <a />,\n ...props\n}: React.ComponentProps<'a'> & {\n render?: useRender.RenderProp;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'breadcrumb-link',\n className: cn('cn-breadcrumb-link', className),\n },\n defaultTagName: 'a',\n });\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('cn-breadcrumb-page', className)}\n {...props}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('cn-breadcrumb-separator', className)}\n {...props}\n >\n {children ?? <IconChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n 'cn-breadcrumb-ellipsis flex items-center justify-center',\n className,\n )}\n {...props}\n >\n <IconDots className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\nexport type BreadcrumbItemData = {\n label: string;\n href?: string;\n};\n\nexport type BreadcrumbContextValue = {\n items: BreadcrumbItemData[];\n setItems: (items: BreadcrumbItemData[]) => void;\n push: (item: BreadcrumbItemData) => void;\n pop: () => void;\n clear: () => void;\n};\n\nexport const BreadcrumbContext = createContext<BreadcrumbContextValue | null>(\n null,\n);\n\nexport function useBreadcrumbs(_options?: { items?: BreadcrumbItemData[] }) {\n const context = useContext(BreadcrumbContext);\n if (!context) {\n throw new Error('useBreadcrumbs must be used within BreadcrumbProvider');\n }\n return context;\n}\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconBell, IconLogout } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { isValidElement } from 'react';\nimport { SpotlightSearch } from '../spotlight-search';\nimport { Avatar, AvatarFallback, AvatarImage } from '../ui/avatar';\nimport { Button } from '../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu';\n\ntype MenuItem = {\n label: string;\n icon?: React.ReactNode;\n href?: string;\n onClick?: () => void;\n variant?: 'default' | 'destructive';\n};\n\ntype SpotlightGroup = {\n heading: string;\n items: Array<{\n id: string;\n title: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n }>;\n};\n\ntype AppHeaderActionsProps = {\n user?: {\n fullName?: string | null;\n email?: string | null;\n phone?: string | null;\n handle?: string | null;\n image?: string | null;\n };\n onLogout?: () => void | Promise<void>;\n isLoggingOut?: boolean;\n searchGroups?: SpotlightGroup[];\n menuItems?: MenuItem[];\n topMenuItems?: MenuItem[];\n actions?: React.ReactNode;\n accountMenuFooter?: React.ReactNode;\n};\n\nexport function AppHeaderActions({\n user,\n onLogout,\n isLoggingOut = false,\n searchGroups = [],\n menuItems = [],\n topMenuItems = [],\n actions,\n accountMenuFooter,\n}: AppHeaderActionsProps) {\n const mesob = useMesob();\n const LinkComponent = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n\n const hasHrefItems =\n topMenuItems.some((i) => i.href) || menuItems.some((i) => i.href);\n if (hasHrefItems && !LinkComponent) {\n throw new Error(\n '[AppHeaderActions] MesobProvider with routing is required for menu items with href',\n );\n }\n\n const initials =\n user?.fullName\n ?.split(' ')\n .map((n) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2) || 'U';\n\n const displayName = user?.fullName ?? 'Account';\n const displaySubtext = user?.email ?? user?.phone ?? user?.handle ?? '';\n\n return (\n <div className=\"flex items-center gap-2\">\n <SpotlightSearch groups={searchGroups} />\n {actions}\n <Button variant=\"ghost\" size=\"icon\" className=\"relative\">\n <IconBell className=\"size-5\" />\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"ghost\"\n className=\"cn-app-header-actions-account-trigger flex items-center gap-3 px-3 py-2 h-auto min-h-9\"\n />\n }\n >\n <Avatar className=\"size-8 shrink-0\">\n <AvatarImage src={user?.image ?? undefined} />\n <AvatarFallback className=\"text-xs\">{initials}</AvatarFallback>\n </Avatar>\n <div className=\"hidden flex-col items-start text-left md:flex min-w-0\">\n <span className=\"text-sm font-medium\">{displayName}</span>\n <span className=\"text-xs text-muted-foreground\">\n {displaySubtext}\n </span>\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"end\">\n <DropdownMenuContent className=\"w-56\">\n {topMenuItems.map((item) => {\n if (item.href) {\n return (\n <DropdownMenuItem\n key={item.href ?? item.label}\n render={\n <LinkComponent\n href={item.href}\n {...(locale && { locale })}\n />\n }\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n }\n return (\n <DropdownMenuItem\n key={item.label}\n onClick={item.onClick}\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n })}\n {topMenuItems.length > 0 && menuItems.length > 0 && (\n <DropdownMenuSeparator />\n )}\n {menuItems.map((item) => {\n if (item.href) {\n return (\n <DropdownMenuItem\n key={item.href ?? item.label}\n render={\n <LinkComponent\n href={item.href}\n {...(locale && { locale })}\n />\n }\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n }\n return (\n <DropdownMenuItem\n key={item.label}\n onClick={item.onClick}\n variant={item.variant}\n >\n {isValidElement(item.icon) &&\n (item.icon as React.ReactElement).type != null && (\n <span className=\"mr-2\">{item.icon}</span>\n )}\n {item.label}\n </DropdownMenuItem>\n );\n })}\n {accountMenuFooter &&\n (topMenuItems.length > 0 || menuItems.length > 0) && (\n <DropdownMenuSeparator />\n )}\n {accountMenuFooter}\n {onLogout && (\n <>\n {(topMenuItems.length > 0 ||\n menuItems.length > 0 ||\n accountMenuFooter) && <DropdownMenuSeparator />}\n <DropdownMenuItem onClick={onLogout} variant=\"destructive\">\n {isLoggingOut ? (\n <span className=\"mr-2\">...</span>\n ) : (\n <IconLogout className=\"mr-2 size-4\" />\n )}\n Log out\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n </div>\n );\n}\n","'use client';\n\nimport { IconSearch } from '@tabler/icons-react';\nimport * as React from 'react';\nimport { cn } from '../lib/utils';\nimport { Button } from './ui/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from './ui/command';\n\ntype SpotlightItem = {\n id: string;\n title: string;\n icon?: React.ReactNode;\n shortcut?: string;\n onSelect?: () => void;\n};\n\ntype SpotlightGroup = {\n heading: string;\n items: SpotlightItem[];\n};\n\ntype SpotlightSearchProps = {\n groups?: SpotlightGroup[];\n placeholder?: string;\n emptyMessage?: string;\n className?: string;\n triggerClassName?: string;\n onSearch?: (query: string) => void;\n};\n\nexport function SpotlightSearch({\n groups = [],\n placeholder = 'Search...',\n emptyMessage = 'No results found.',\n className,\n triggerClassName,\n onSearch,\n}: SpotlightSearchProps) {\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState('');\n\n const filteredGroups = React.useMemo(() => {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return groups;\n }\n\n return groups\n .map((group) => ({\n ...group,\n items: group.items.filter((item) =>\n item.title.toLowerCase().includes(normalizedQuery),\n ),\n }))\n .filter((group) => group.items.length > 0);\n }, [groups, query]);\n\n const commandItems = React.useMemo(\n () =>\n filteredGroups.map((group) => ({\n ...group,\n items: group.items,\n })),\n [filteredGroups],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen((open) => !open);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, []);\n\n React.useEffect(() => {\n if (!open) {\n setQuery('');\n onSearch?.('');\n }\n }, [open, onSearch]);\n\n return (\n <>\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 min-w-9 p-0 xl:h-9 xl:min-w-[12rem] xl:w-60 xl:justify-start xl:px-3 xl:py-2',\n triggerClassName,\n )}\n onClick={() => setOpen(true)}\n >\n <IconSearch className=\"h-4 w-4 xl:mr-2\" />\n <span className=\"hidden xl:inline-flex\">Search...</span>\n <kbd className=\"cn-spotlight-kbd pointer-events-none absolute right-1.5 top-1/2 hidden h-5 -translate-y-1/2 select-none items-center gap-1 px-1.5 font-mono text-[10px] font-medium opacity-100 xl:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n <CommandDialog\n open={open}\n onOpenChange={setOpen}\n title=\"Search\"\n description=\"Search for pages, actions, and more\"\n showCloseButton={false}\n className={className}\n commandProps={{\n items: commandItems,\n value: query,\n onValueChange: (value: string) => {\n setQuery(value);\n onSearch?.(value);\n },\n itemToStringValue: (item: unknown) => (item as SpotlightItem).title,\n mode: 'none',\n open: true,\n }}\n >\n <CommandInput placeholder={placeholder} />\n <CommandList>\n <CommandEmpty>{emptyMessage}</CommandEmpty>\n {filteredGroups.map((group, index) => (\n <React.Fragment key={group.heading}>\n {index > 0 && <CommandSeparator />}\n <CommandGroup heading={group.heading} items={group.items}>\n {group.items.map((item) => (\n <CommandItem\n key={item.id}\n value={item}\n onSelect={() => {\n item.onSelect?.();\n setOpen(false);\n }}\n >\n {item.icon}\n <span>{item.title}</span>\n {item.shortcut && (\n <kbd className=\"cn-spotlight-kbd pointer-events-none ml-auto hidden h-5 select-none items-center gap-1 px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n {item.shortcut}\n </kbd>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n ))}\n </CommandList>\n </CommandDialog>\n </>\n );\n}\n","// biome-ignore-all lint/a11y/useButtonType: polymorphic default;\n\nimport { Button as ButtonPrimitive } from '@base-ui/react/button';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { Spinner } from './spinner';\n\nconst BUTTON_BASE_CN = cn(\n // shadcn/base-ui base\n 'cn-button inline-flex items-center justify-center whitespace-nowrap',\n 'transition-all disabled:pointer-events-none disabled:opacity-50',\n '[&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none',\n 'group/button select-none',\n // mesob extensions\n 'relative',\n);\n\nconst buttonVariants = cva(BUTTON_BASE_CN, {\n variants: {\n variant: {\n default: 'cn-button-variant-default',\n destructive: 'cn-button-variant-destructive',\n outline: 'cn-button-variant-outline',\n secondary: 'cn-button-variant-secondary',\n ghost: 'cn-button-variant-ghost',\n link: 'cn-button-variant-link',\n light: 'cn-button-variant-light',\n },\n size: {\n xs: 'cn-button-size-xs',\n sm: 'cn-button-size-sm',\n default: 'cn-button-size-default',\n md: 'cn-button-size-default',\n lg: 'cn-button-size-lg',\n xl: 'cn-button-size-xl',\n icon: 'cn-button-size-icon',\n 'icon-xs': 'cn-button-size-icon-xs',\n 'icon-sm': 'cn-button-size-icon-sm',\n 'icon-lg': 'cn-button-size-icon-lg',\n 'icon-xl': 'cn-button-size-icon-xl',\n },\n radius: {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n },\n fullWidth: { true: 'w-full', false: '' },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n fullWidth: false,\n },\n});\n\ntype ButtonLoaderProps = {\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n};\n\ntype ButtonProps = ButtonPrimitive.Props &\n VariantProps<typeof buttonVariants> & {\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n loading?: boolean;\n loaderProps?: ButtonLoaderProps;\n color?: ComponentColor;\n };\n\nfunction getLoaderSize(\n size: ButtonProps['size'],\n loaderPropsSize?: 'sm' | 'md' | 'lg',\n): 'sm' | 'md' | 'lg' {\n if (loaderPropsSize) {\n return loaderPropsSize;\n }\n if (\n size === 'xs' ||\n size === 'sm' ||\n size === 'icon-xs' ||\n size === 'icon-sm'\n ) {\n return 'sm';\n }\n if (\n size === 'lg' ||\n size === 'xl' ||\n size === 'icon-lg' ||\n size === 'icon-xl'\n ) {\n return 'lg';\n }\n return 'md';\n}\n\nfunction Button({\n className,\n variant = 'default',\n size = 'default',\n radius,\n fullWidth,\n color,\n leftIcon,\n rightIcon,\n leftSection,\n rightSection,\n loading = false,\n loaderProps,\n disabled,\n children,\n ...props\n}: ButtonProps) {\n const leftContent = leftSection || leftIcon;\n const rightContent = rightSection || rightIcon;\n const loaderSize = getLoaderSize(size, loaderProps?.size);\n\n const colorStyle = color\n ? ({\n '--btn-color': `var(--${color})`,\n '--btn-color-hover': `color-mix(in srgb, var(--${color}) 90%, black)`,\n } as React.CSSProperties)\n : undefined;\n\n return (\n <ButtonPrimitive\n {...props}\n nativeButton={props.render ? false : undefined}\n type={props.type ?? 'button'}\n disabled={disabled || loading}\n data-slot=\"button\"\n data-loading={loading || undefined}\n style={{ ...colorStyle, ...props.style }}\n className={cn(\n buttonVariants({ variant, size, radius, fullWidth }),\n color && 'bg-[var(--btn-color)] hover:bg-[var(--btn-color-hover)]',\n className,\n )}\n >\n {loading && (\n <span className=\"absolute inset-0 flex items-center justify-center text-current\">\n <Spinner\n className={cn(\n '!text-current',\n loaderSize === 'sm' && 'size-3',\n loaderSize === 'md' && 'size-4',\n loaderSize === 'lg' && 'size-5',\n loaderProps?.className,\n )}\n />\n </span>\n )}\n <span\n className={cn(\n 'inline-flex items-center gap-2 transition-transform',\n loading && 'opacity-0 translate-y-1',\n )}\n >\n {leftContent}\n {children}\n {rightContent}\n </span>\n </ButtonPrimitive>\n );\n}\n\nexport { Button, buttonVariants };\nexport type { ButtonProps, ButtonLoaderProps };\n","import { IconLoader2 } from '@tabler/icons-react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\nconst sizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3',\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n xl: 'size-7',\n};\n\ntype SpinnerProps = Omit<React.ComponentProps<typeof IconLoader2>, 'size'> & {\n size?: ComponentSize;\n};\n\nfunction Spinner({ className, size = 'md', ...props }: SpinnerProps) {\n return (\n <IconLoader2\n role=\"status\"\n aria-label=\"Loading\"\n className={cn('cn-spinner', sizeClasses[size], className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\nexport type { SpinnerProps };\n","'use client';\n\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';\nimport { IconSearch } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from './dialog';\nimport { InputGroup, InputGroupAddon } from './input-group';\nimport { Separator } from './separator';\n\ntype CommandProps = Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Root>,\n 'children'\n> & {\n className?: string;\n children?: React.ReactNode;\n};\n\nfunction Command({ className, children, ...props }: CommandProps) {\n return (\n <div\n data-slot=\"command\"\n className={cn(\n 'cn-command flex h-full min-h-0 w-full flex-col overflow-hidden',\n className,\n )}\n >\n <AutocompletePrimitive.Root {...props}>\n {children}\n </AutocompletePrimitive.Root>\n </div>\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n className,\n showCloseButton = true,\n commandProps,\n ...props\n}: Omit<React.ComponentProps<typeof Dialog>, 'children'> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n commandProps?: Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Root>,\n 'children'\n >;\n children?: React.ReactNode;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn('cn-command-dialog overflow-hidden', className)}\n showCloseButton={showCloseButton}\n >\n <Command {...commandProps}>{children}</Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n onValueChange,\n onChange,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.Input> & {\n onValueChange?: (value: string) => void;\n}) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"cn-command-input-wrapper\">\n <InputGroup className=\"cn-command-input-group\">\n <AutocompletePrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n 'cn-command-input outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n onChange={(event) => {\n onChange?.(event);\n onValueChange?.(event.currentTarget.value);\n }}\n {...props}\n />\n <InputGroupAddon>\n <IconSearch className=\"cn-command-input-icon\" />\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.List>) {\n return (\n <AutocompletePrimitive.List\n data-slot=\"command-list\"\n className={cn(\n 'cn-command-list max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n className,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.Empty>) {\n return (\n <AutocompletePrimitive.Empty\n data-slot=\"command-empty\"\n className={cn('cn-command-empty text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype CommandGroupProps = Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Group>,\n 'children'\n> & {\n heading?: string;\n children?:\n | React.ReactNode\n | ((item: unknown, index: number) => React.ReactNode);\n};\n\nfunction CommandGroup({\n className,\n heading,\n items,\n children,\n ...props\n}: CommandGroupProps) {\n const resolvedChildren =\n typeof children === 'function' ? (\n <AutocompletePrimitive.Collection>\n {children}\n </AutocompletePrimitive.Collection>\n ) : (\n children\n );\n\n return (\n <AutocompletePrimitive.Group\n data-slot=\"command-group\"\n items={items}\n className={cn('cn-command-group', className)}\n {...props}\n >\n {heading && (\n <AutocompletePrimitive.GroupLabel\n data-slot=\"command-group-label\"\n cmdk-group-heading=\"\"\n >\n {heading}\n </AutocompletePrimitive.GroupLabel>\n )}\n {resolvedChildren}\n </AutocompletePrimitive.Group>\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"command-separator\"\n className={cn('cn-command-separator', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n onSelect,\n onClick,\n ...props\n}: React.ComponentProps<typeof AutocompletePrimitive.Item> & {\n onSelect?: React.MouseEventHandler<HTMLElement>;\n}) {\n return (\n <AutocompletePrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n 'cn-command-item group/command-item data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n onSelect?.(event);\n }}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn('cn-command-shortcut', className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Backdrop>) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn('cn-dialog-overlay', className)}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Popup> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn('cn-dialog-content', className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"cn-dialog-close\"\n >\n <IconX className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('cn-dialog-header', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('cn-dialog-footer', className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn('cn-dialog-title', className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn('cn-dialog-description', className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Textarea } from './textarea';\n\nconst INPUT_GROUP_BASE_CN =\n 'group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto';\n\nfunction InputGroup({\n className,\n disabled,\n ...props\n}: React.ComponentProps<'fieldset'>) {\n return (\n <fieldset\n data-slot=\"input-group\"\n data-disabled={disabled || undefined}\n disabled={disabled}\n className={cn(INPUT_GROUP_BASE_CN, 'cn-input-group', className)}\n {...props}\n />\n );\n}\n\nconst inputGroupAddonVariants = cva(\n 'cn-input-group-addon flex cursor-text items-center justify-center select-none appearance-none border-0 bg-transparent p-0 text-inherit',\n {\n variants: {\n align: {\n 'inline-start': 'cn-input-group-addon-align-inline-start order-first',\n 'inline-end': 'cn-input-group-addon-align-inline-end order-last',\n 'block-start': 'cn-input-group-addon-align-block-start order-first',\n 'block-end': 'cn-input-group-addon-align-block-end order-last',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nfunction InputGroupAddon({\n className,\n align = 'inline-start',\n type = 'button',\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <button\n type={type}\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.currentTarget\n .closest('[data-slot=input-group]')\n ?.querySelector<HTMLElement>('input, textarea, [role=combobox]')\n ?.focus();\n }}\n onKeyDown={(e) => {\n if (e.key !== 'Enter' && e.key !== ' ') {\n return;\n }\n if ((e.target as HTMLElement).closest('button')) {\n return;\n }\n e.preventDefault();\n e.currentTarget\n .closest('[data-slot=input-group]')\n ?.querySelector<HTMLElement>('input, textarea, [role=combobox]')\n ?.focus();\n }}\n {...props}\n />\n );\n}\n\nconst inputGroupButtonVariants = cva(\n 'cn-input-group-button shadow-none flex items-center',\n {\n variants: {\n size: {\n xs: 'cn-input-group-button-size-xs',\n sm: '',\n 'icon-xs': 'cn-input-group-button-size-icon-xs',\n 'icon-sm': 'cn-input-group-button-size-icon-sm',\n },\n },\n defaultVariants: {\n size: 'xs',\n },\n },\n);\n\nfunction InputGroupButton({\n className,\n type = 'button',\n variant = 'ghost',\n size = 'xs',\n ...props\n}: Omit<React.ComponentProps<typeof Button>, 'size'> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n className={cn('cn-input-group-text flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<'input'>) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn('cn-input-group-input flex-1', className)}\n {...props}\n />\n );\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<'textarea'>) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn('cn-input-group-textarea flex-1 resize-none', className)}\n {...props}\n />\n );\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n};\n","import { Input as InputPrimitive } from '@base-ui/react/input';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst INPUT_BASE_CN =\n 'file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(INPUT_BASE_CN, 'cn-input', className)}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import type * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\ntype TextareaBaseProps = Omit<React.ComponentProps<'textarea'>, 'size'> & {\n size?: ComponentSize;\n};\n\nconst TEXTAREA_BASE_CN =\n 'placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50';\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaBaseProps>(\n ({ className, size, ...props }, ref) => {\n const sizeClasses = {\n xs: 'min-h-12 text-xs px-2 py-1.5',\n sm: 'min-h-14 text-sm px-2.5 py-2',\n md: 'min-h-16 text-sm px-3 py-2',\n lg: 'min-h-20 text-base px-4 py-2.5',\n xl: 'min-h-24 text-lg px-5 py-3',\n };\n\n const defaultSizeClass = 'min-h-16 px-2.5 py-2 text-base md:text-sm';\n\n return (\n <textarea\n ref={ref}\n data-slot=\"textarea\"\n className={cn(\n TEXTAREA_BASE_CN,\n 'cn-textarea',\n size ? sizeClasses[size] : defaultSizeClass,\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = 'Textarea';\n\ntype TextareaInputProps = TextareaBaseProps &\n Omit<InputWrapperProps, 'children'> & {\n autosize?: boolean;\n minRows?: number;\n maxRows?: number;\n };\n\nconst TextareaInput = forwardRef<HTMLTextAreaElement, TextareaInputProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size,\n autosize,\n minRows,\n maxRows,\n ...textareaProps\n },\n ref,\n ) => {\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const textareaElement = (\n <Textarea\n ref={ref}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n required={required}\n size={size}\n rows={minRows}\n className={cn(\n autosize && 'resize-none',\n maxRows && `max-h-[${maxRows * 1.5}rem]`,\n className,\n )}\n {...textareaProps}\n />\n );\n\n if (!hasWrapper) {\n return textareaElement;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {textareaElement}\n </InputWrapper>\n );\n },\n);\n\nTextareaInput.displayName = 'TextareaInput';\n\nexport { Textarea, TextareaInput };\nexport type { TextareaBaseProps, TextareaInputProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { Fragment } from 'react';\nimport type { InputWrapperOrder } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { Field, FieldDescription, FieldError, FieldLabel } from './field';\n\nexport type InputWrapperProps = {\n /** Input element or component to wrap */\n children: React.ReactNode;\n /** Label text */\n label?: React.ReactNode;\n /** Description text (helper text) */\n description?: React.ReactNode;\n /** Error message or array of errors */\n error?: React.ReactNode | Array<{ message?: string } | undefined>;\n /** Adds required attribute to the input and asterisk to label */\n required?: boolean;\n /** Shows asterisk on label without required attribute */\n withAsterisk?: boolean;\n /** Controls order of elements */\n inputWrapperOrder?: InputWrapperOrder;\n /** Props for label */\n labelProps?: React.ComponentProps<typeof FieldLabel>;\n /** Props for description */\n descriptionProps?: React.ComponentProps<typeof FieldDescription>;\n /** Props for error */\n errorProps?: React.ComponentProps<typeof FieldError>;\n /** Input container wrapper function */\n inputContainer?: (children: React.ReactNode) => React.ReactNode;\n /** Disabled state (passed to Field) */\n disabled?: boolean;\n /** Class name for wrapper */\n className?: string;\n};\n\nexport function InputWrapper({\n children,\n label,\n description,\n error,\n required = false,\n withAsterisk = false,\n inputWrapperOrder = ['label', 'description', 'input', 'error'],\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n}: InputWrapperProps) {\n const showAsterisk = required || withAsterisk;\n\n const labelElement = label ? (\n <FieldLabel {...labelProps}>\n {label}\n {showAsterisk && <span className=\"text-destructive ml-1\">*</span>}\n </FieldLabel>\n ) : null;\n\n const descriptionElement = description ? (\n <FieldDescription {...descriptionProps}>{description}</FieldDescription>\n ) : null;\n\n const errorElement = error ? (\n <FieldError\n {...errorProps}\n errors={Array.isArray(error) ? error : undefined}\n >\n {Array.isArray(error) ? undefined : error}\n </FieldError>\n ) : null;\n\n const inputElement = inputContainer ? inputContainer(children) : children;\n\n const elements: Record<string, React.ReactNode> = {\n label: labelElement,\n description: descriptionElement,\n input: inputElement,\n error: errorElement,\n };\n\n return (\n <Field data-disabled={disabled || undefined} className={cn(className)}>\n {inputWrapperOrder.map((key) => {\n const el = elements[key];\n return el ? <Fragment key={key}>{el}</Fragment> : null;\n })}\n </Field>\n );\n}\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\nimport { Separator } from './separator';\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn('cn-field-set flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction FieldLegend({\n className,\n variant = 'legend',\n ...props\n}: React.ComponentProps<'legend'> & { variant?: 'legend' | 'label' }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn('cn-field-legend', className)}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n 'cn-field-group group/field-group @container/field-group flex w-full flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst fieldVariants = cva(\n 'cn-field group/field flex w-full data-[invalid=true]:text-destructive',\n {\n variants: {\n orientation: {\n vertical: ['flex-col gap-2 [&>*]:w-full [&>.sr-only]:w-auto'],\n horizontal: [\n 'flex-row items-center gap-2',\n '[&>[data-slot=field-label]]:flex-auto',\n 'has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',\n ],\n responsive: [\n 'flex-col gap-2 [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:gap-2 @md/field-group:[&>*]:w-auto',\n '@md/field-group:[&>[data-slot=field-label]]:flex-auto',\n '@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px',\n ],\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n },\n);\n\ntype FieldProps = React.ComponentProps<'div'> &\n VariantProps<typeof fieldVariants> & {\n 'data-invalid'?: boolean;\n };\n\nfunction Field({ className, orientation = 'vertical', ...props }: FieldProps) {\n return (\n // biome-ignore lint/a11y/useSemanticElements: div avoids nested fieldsets when Field is inside FieldSet\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n );\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n 'cn-field-content group/field-content flex flex-1 flex-col leading-snug',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n 'cn-field-label group/field-label peer/field-label flex w-fit leading-snug transition-colors',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"field-title\"\n className={cn(\n 'cn-field-title flex w-fit items-center leading-snug',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n 'cn-field-description group-has-[[data-orientation=horizontal]]/field:text-balance last:mt-0 nth-last-2:-mt-1',\n '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n children?: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n 'cn-field-separator relative group-data-[variant=outline]/field-group:-mb-2',\n className,\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"cn-field-separator-content\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n );\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<'div'> & {\n /** From react-hook-form etc. Renders list when multiple. */\n errors?: Array<{ message?: string } | undefined>;\n}) {\n let content = children;\n\n if (!content && errors?.length) {\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ].filter(Boolean);\n\n if (uniqueErrors.length === 1) {\n content = uniqueErrors[0]?.message;\n } else if (uniqueErrors.length > 1) {\n content = (\n <ul className=\"ml-4 list-disc flex flex-col gap-1\">\n {uniqueErrors.map(\n (error) =>\n error?.message && <li key={error.message}>{error.message}</li>,\n )}\n </ul>\n );\n }\n }\n\n if (!content) {\n return null;\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn('cn-field-error text-destructive text-sm', className)}\n {...props}\n >\n {content}\n </div>\n );\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Label({ className, ...props }: React.ComponentProps<'label'>) {\n return (\n // biome-ignore lint/a11y/noLabelWithoutControl: composable label, parent provides htmlFor\n <label data-slot=\"label\" className={cn('cn-label', className)} {...props} />\n );\n}\n\nexport { Label };\n","'use client';\n\nimport { Separator as SeparatorPrimitive } from '@base-ui/react/separator';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Separator({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive>) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n 'cn-separator',\n orientation === 'horizontal' && 'cn-separator-horizontal',\n orientation === 'vertical' && 'cn-separator-vertical self-stretch',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","'use client';\n\nimport { Avatar as AvatarPrimitive } from '@base-ui/react/avatar';\nimport type * as React from 'react';\nimport type { ComponentRadius, ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype AvatarProps = React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: ComponentSize;\n radius?: ComponentRadius;\n};\n\nfunction Avatar({\n className,\n size = 'md',\n radius: _radius,\n ...props\n}: AvatarProps) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'cn-avatar relative flex shrink-0 overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('cn-avatar-image aspect-square size-full', className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'cn-avatar-fallback flex size-full items-center justify-center text-xs font-medium uppercase',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarImage, AvatarFallback };\nexport type { AvatarProps };\n","'use client';\n\nimport { Menu as DropdownMenuPrimitive } from '@base-ui/react/menu';\nimport { IconCheck, IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst DROPDOWN_MENU_POSITIONER_CN = 'isolate z-50 outline-none';\n\nconst DROPDOWN_MENU_CONTENT_CN = cn(\n 'cn-dropdown-menu-content cn-dropdown-menu-content-logical cn-menu-target',\n 'z-50 max-h-(--available-height) w-(--anchor-width)',\n 'origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none',\n 'data-closed:overflow-hidden',\n);\n\nconst DROPDOWN_MENU_ITEM_BASE_CN = cn(\n 'group/dropdown-menu-item relative flex cursor-default items-center',\n 'outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nconst DROPDOWN_MENU_SUB_TRIGGER_BASE_CN = cn(\n 'flex cursor-default items-center outline-hidden select-none',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Popup>) {\n return (\n <DropdownMenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(DROPDOWN_MENU_CONTENT_CN, className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuPositioner({\n align = 'start',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Positioner>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Positioner\n data-slot=\"dropdown-menu-positioner\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className={cn(DROPDOWN_MENU_POSITIONER_CN, className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'cn-dropdown-menu-item',\n DROPDOWN_MENU_ITEM_BASE_CN,\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n 'cn-dropdown-menu-checkbox-item',\n DROPDOWN_MENU_ITEM_BASE_CN,\n className,\n )}\n checked={checked}\n {...props}\n >\n <span\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n >\n <DropdownMenuPrimitive.CheckboxItemIndicator>\n <IconCheck className=\"size-4\" />\n </DropdownMenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n 'cn-dropdown-menu-radio-item',\n DROPDOWN_MENU_ITEM_BASE_CN,\n className,\n )}\n {...props}\n >\n <span\n data-slot=\"dropdown-menu-radio-item-indicator\"\n className=\"cn-dropdown-menu-item-indicator pointer-events-none\"\n >\n <DropdownMenuPrimitive.RadioItemIndicator>\n <IconCheck className=\"size-4\" />\n </DropdownMenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.GroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn('cn-dropdown-menu-label', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn('cn-dropdown-menu-separator', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn('cn-dropdown-menu-shortcut', className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubmenuRoot>) {\n return (\n <DropdownMenuPrimitive.SubmenuRoot\n data-slot=\"dropdown-menu-sub\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'cn-dropdown-menu-sub-trigger',\n DROPDOWN_MENU_SUB_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Popup> &\n Pick<\n React.ComponentProps<typeof DropdownMenuPrimitive.Positioner>,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Positioner\n className={DROPDOWN_MENU_POSITIONER_CN}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <DropdownMenuPrimitive.Popup\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n 'cn-dropdown-menu-sub-content',\n DROPDOWN_MENU_CONTENT_CN,\n 'w-auto',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Positioner>\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuPositioner,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n};\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconChevronDown } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { useToggle } from 'react-use';\nimport { cn } from '../../lib/utils';\nimport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n} from '../ui/sidebar';\nimport { useSidebar } from '../ui/sidebar-context';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';\n\nexport type NavItem = {\n title: string;\n href?: string;\n icon?: React.ComponentType<{ className?: string }>;\n group?: string;\n children?: NavItem[];\n pathMatch?: 'exact' | 'prefix';\n permission?: string[];\n};\n\ntype AppSidebarProps = {\n logo: React.ReactNode;\n navItems: NavItem[];\n footer?: React.ReactNode;\n pathname?: string;\n roles?: string[];\n};\n\nfunction isLinkActive(\n pathname: string | undefined,\n href: string | undefined,\n pathMatch: 'exact' | 'prefix' = 'prefix',\n): boolean {\n if (!pathname) {\n return false;\n }\n if (!href) {\n return false;\n }\n if (pathMatch === 'exact') {\n return pathname === href;\n }\n if (pathname === href) {\n return true;\n }\n return pathname.startsWith(`${href}/`);\n}\n\nfunction hasActiveDescendant(item: NavItem, pathname?: string): boolean {\n if (!pathname) {\n return false;\n }\n if (isLinkActive(pathname, item.href, item.pathMatch ?? 'prefix')) {\n return true;\n }\n return item.children?.some((c) => hasActiveDescendant(c, pathname)) ?? false;\n}\n\nfunction hasPermission(roles?: string[], permission?: string[]): boolean {\n if (!permission?.length) {\n return true;\n }\n if (!roles?.length) {\n return true;\n }\n return permission.some((p) => roles.includes(p));\n}\n\nconst TRUNCATION_TOOLTIP_MIN_LENGTH = 24;\n\nfunction TruncationTooltip({\n text,\n children,\n}: {\n text: string;\n children: React.ReactNode;\n}) {\n const ref = useRef<HTMLSpanElement>(null);\n const [truncated, setTruncated] = useState(false);\n // biome-ignore lint/correctness/useExhaustiveDependencies: re-measure when label changes (ResizeObserver doesn't fire on text change)\n useEffect(() => {\n const el = ref.current;\n if (!el) {\n return;\n }\n const check = () => setTruncated(el.scrollWidth > el.clientWidth);\n check();\n const ro = new ResizeObserver(check);\n ro.observe(el);\n return () => ro.disconnect();\n }, [text]);\n const showTooltip = truncated || text.length >= TRUNCATION_TOOLTIP_MIN_LENGTH;\n const inner = (\n <span ref={ref} className=\"min-w-0 truncate block\">\n {children}\n </span>\n );\n if (!showTooltip) {\n return inner;\n }\n return (\n <Tooltip>\n <TooltipTrigger render={inner} />\n <TooltipContent side=\"right\" sideOffset={8}>\n {text}\n </TooltipContent>\n </Tooltip>\n );\n}\n\ntype MenuLabelProps = {\n icon?: React.ComponentType<{ className?: string }>;\n label: string;\n};\n\nfunction MenuLabel({ icon: Icon, label }: MenuLabelProps) {\n return (\n <div className=\"text-sidebar-foreground flex min-h-0 min-w-0 flex-1 cursor-pointer items-center gap-2 text-sm\">\n {Icon ? <Icon className=\"size-4 shrink-0\" /> : null}\n <TruncationTooltip text={label}>{label}</TruncationTooltip>\n </div>\n );\n}\n\nfunction RowContent({\n item,\n hasChildren,\n showChildren,\n}: {\n item: NavItem;\n hasChildren: boolean;\n showChildren: boolean;\n}) {\n return (\n <>\n <MenuLabel icon={item.icon} label={item.title} />\n {hasChildren && (\n <IconChevronDown\n className={cn(\n 'ml-auto size-4 shrink-0 cursor-pointer transition-transform',\n showChildren && 'rotate-180',\n )}\n aria-hidden\n />\n )}\n </>\n );\n}\n\ntype NavItemRowProps = {\n item: NavItem;\n level: number;\n pathname?: string;\n roles?: string[];\n onNavClick?: () => void;\n};\n\nfunction NavItemRow({\n item,\n level,\n pathname,\n roles,\n onNavClick,\n}: NavItemRowProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const [open, toggle] = useToggle(hasActiveDescendant(item, pathname));\n const hasChildren = (item.children?.length ?? 0) > 0;\n const showChildren =\n (open || hasActiveDescendant(item, pathname)) && hasChildren;\n const pathMatch = item.pathMatch ?? 'prefix';\n const isActive = isLinkActive(pathname, item.href, pathMatch);\n const lineLeft = 28 + 20 * level;\n\n if (!hasPermission(roles, item.permission)) {\n return null;\n }\n\n const paddingLeft = 20 + 20 * level;\n const rowWrapperClass = cn(\n 'cn-app-sidebar-item text-sidebar-foreground relative flex h-8 w-full min-w-0 items-center pr-2 text-left text-sm transition duration-300 ease-in-out cursor-pointer',\n isActive && 'text-sidebar-primary',\n );\n const rowContent = (\n <>\n {isActive && (\n <div\n className=\"cn-app-sidebar-active-indicator absolute left-1 top-1.5 bottom-1.5 z-10 w-[3px]\"\n aria-hidden\n />\n )}\n <RowContent\n item={item}\n hasChildren={hasChildren}\n showChildren={showChildren}\n />\n </>\n );\n\n if (!item.href) {\n return (\n <li className=\"relative mt-1\">\n <button\n type=\"button\"\n onClick={toggle}\n className={rowWrapperClass}\n style={{ paddingLeft }}\n aria-expanded={showChildren}\n aria-label={item.title}\n data-active={isActive || undefined}\n >\n {rowContent}\n </button>\n </li>\n );\n }\n\n const linkProps = {\n href: item.href,\n onClick: hasChildren ? toggle : onNavClick,\n className: rowWrapperClass,\n style: { paddingLeft },\n 'aria-current': isActive ? ('page' as const) : undefined,\n 'data-active': isActive || undefined,\n ...(locale && { locale }),\n };\n\n return (\n <li className=\"relative mt-1\">\n {Link ? (\n <Link {...linkProps}>{rowContent}</Link>\n ) : (\n <a {...linkProps}>{rowContent}</a>\n )}\n\n {showChildren && (\n <ul className=\"relative mt-1\">\n <div\n className=\"absolute top-0 bottom-0 z-10 w-px bg-sidebar-border\"\n style={{ left: lineLeft }}\n aria-hidden\n />\n {(item.children ?? []).map((child, index) => (\n <NavItemRow\n key={`${item.href ?? item.title}-child-${index}-${child.href ?? child.title}`}\n item={child}\n level={level + 1}\n pathname={pathname}\n roles={roles}\n onNavClick={onNavClick}\n />\n ))}\n </ul>\n )}\n </li>\n );\n}\n\nexport function AppSidebar({\n logo,\n navItems,\n footer,\n pathname,\n roles,\n}: AppSidebarProps) {\n const { isMobile, setOpenMobile } = useSidebar();\n const closeSidebar = () => {\n if (isMobile) {\n setOpenMobile(false);\n }\n };\n const groupedItems = navItems.reduce(\n (acc, item) => {\n const group = item.group ?? 'default';\n if (!acc[group]) {\n acc[group] = [];\n }\n acc[group].push(item);\n return acc;\n },\n {} as Record<string, NavItem[]>,\n );\n\n return (\n <Sidebar>\n <SidebarHeader>{logo}</SidebarHeader>\n <SidebarContent>\n <nav\n aria-label=\"Main navigation\"\n className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-x-hidden overflow-y-auto\"\n >\n {Object.entries(groupedItems).map(([groupName, items]) => (\n <SidebarGroup key={groupName} className=\"py-0\">\n {groupName !== 'default' && (\n <SidebarGroupLabel className=\"uppercase tracking-wide\">\n {groupName}\n </SidebarGroupLabel>\n )}\n <SidebarGroupContent>\n <ul className=\"flex w-full min-w-0 list-none flex-col gap-0 p-0\">\n {items.map((item, index) => (\n <NavItemRow\n key={`${groupName}-${index}-${item.href ?? item.title}`}\n item={item}\n level={0}\n pathname={pathname}\n roles={roles}\n onNavClick={closeSidebar}\n />\n ))}\n </ul>\n </SidebarGroupContent>\n </SidebarGroup>\n ))}\n </nav>\n </SidebarContent>\n {footer && <SidebarFooter>{footer}</SidebarFooter>}\n </Sidebar>\n );\n}\n","'use client';\n\nimport { useRender } from '@base-ui/react/use-render';\nimport { IconMenu2 } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { useIsMobile } from '../../hooks/use-mobile';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\nimport { Input } from './input';\nimport { Separator } from './separator';\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from './sheet';\nimport {\n SidebarContext,\n type SidebarContextProps,\n useSidebar,\n} from './sidebar-context';\nimport { Skeleton } from './skeleton';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from './tooltip';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_WIDTH_COOKIE = 'sidebar_width';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH_DEFAULT = 256;\nconst SIDEBAR_WIDTH_MIN = 200;\nconst SIDEBAR_WIDTH_MAX = 480;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\nfunction getWidthFromCookie(): number {\n if (typeof document === 'undefined') {\n return SIDEBAR_WIDTH_DEFAULT;\n }\n const m = document.cookie.match(\n new RegExp(`(?:^|; )${SIDEBAR_WIDTH_COOKIE}=([^;]*)`),\n );\n const n = m ? Number(m[1]) : Number.NaN;\n return Number.isFinite(n) && n >= SIDEBAR_WIDTH_MIN && n <= SIDEBAR_WIDTH_MAX\n ? n\n : SIDEBAR_WIDTH_DEFAULT;\n}\n\nfunction setWidthCookie(width: number) {\n // biome-ignore lint/suspicious/noDocumentCookie: simple persistent UI preference\n document.cookie = `${SIDEBAR_WIDTH_COOKIE}=${width}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n const [width, setWidthState] = React.useState(getWidthFromCookie);\n\n const setWidth = React.useCallback((w: number) => {\n const clamped = Math.max(SIDEBAR_WIDTH_MIN, Math.min(SIDEBAR_WIDTH_MAX, w));\n setWidthState(clamped);\n setWidthCookie(clamped);\n }, []);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // biome-ignore lint/suspicious/noDocumentCookie: simple persistent UI preference\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [open, setOpenProp],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((value) => !value)\n : setOpen((value) => !value);\n }, [isMobile, setOpen]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue: SidebarContextProps = {\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n width,\n setWidth,\n minWidth: SIDEBAR_WIDTH_MIN,\n maxWidth: SIDEBAR_WIDTH_MAX,\n };\n\n const sidebarWidthValue = open ? `${width}px` : SIDEBAR_WIDTH;\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delay={0}>\n <div\n data-slot=\"sidebar-wrapper\"\n style={\n {\n '--sidebar-width': sidebarWidthValue,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer text-sidebar-foreground hidden md:block\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n 'cn-sidebar-gap relative w-(--sidebar-width) bg-transparent',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"cn-sidebar-inner flex h-full w-full flex-col\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <IconMenu2 />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<'button'>) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"sidebar-rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'cn-sidebar-rail absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n 'cn-sidebar-inset relative flex w-full flex-1 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn('cn-sidebar-input', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn('cn-sidebar-header flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn('cn-sidebar-footer flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn('cn-sidebar-separator w-auto', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n 'cn-sidebar-content flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\n 'cn-sidebar-group relative flex w-full min-w-0 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n render = <div />,\n ...props\n}: React.ComponentProps<'div'> & { render?: useRender.RenderProp }) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-group-label',\n 'data-sidebar': 'group-label',\n className: cn(\n 'cn-sidebar-group-label flex h-8 shrink-0 items-center outline-hidden',\n className,\n ),\n },\n defaultTagName: 'div',\n });\n}\n\nfunction SidebarGroupAction({\n className,\n render = <button type=\"button\" />,\n ...props\n}: React.ComponentProps<'button'> & { render?: useRender.RenderProp }) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-group-action',\n 'data-sidebar': 'group-action',\n className: cn(\n 'cn-sidebar-group-action flex aspect-square items-center justify-center outline-hidden transition-transform cursor-pointer disabled:cursor-not-allowed',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n className,\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn('cn-sidebar-group-content w-full', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn('cn-sidebar-menu flex w-full min-w-0 flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'cn-sidebar-menu-button peer/menu-button flex w-full min-w-0 items-center overflow-hidden text-left outline-hidden [&>span:last-child]:truncate [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'cn-sidebar-menu-button-variant-default',\n outline: 'cn-sidebar-menu-button-variant-outline',\n },\n size: {\n default: 'cn-sidebar-menu-button-size-default',\n sm: 'cn-sidebar-menu-button-size-sm',\n lg: 'cn-sidebar-menu-button-size-lg',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction SidebarMenuButton({\n render = <button type=\"button\" />,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n}: React.ComponentProps<'button'> & {\n render?: useRender.RenderProp;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar();\n\n const button = useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-menu-button',\n 'data-sidebar': 'menu-button',\n 'data-size': size,\n 'data-active': isActive,\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n defaultTagName: 'button',\n });\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger render={button} />\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n render = <button type=\"button\" />,\n showOnHover = false,\n ...props\n}: React.ComponentProps<'button'> & {\n render?: useRender.RenderProp;\n showOnHover?: boolean;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-menu-action',\n 'data-sidebar': 'menu-action',\n className: cn(\n 'cn-sidebar-menu-action flex aspect-square items-center justify-center outline-hidden transition-transform cursor-pointer disabled:cursor-not-allowed',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 md:after:hidden',\n showOnHover &&\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[panel-open]:opacity-100 md:opacity-0',\n className,\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn('cn-sidebar-menu-badge', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(\n () => `${Math.floor(Math.random() * 40) + 50}%`,\n );\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn('cn-sidebar-menu-skeleton flex items-center', className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"cn-sidebar-menu-skeleton-icon\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"cn-sidebar-menu-skeleton-text h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n 'cn-sidebar-menu-sub relative flex min-w-0 flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n // biome-ignore lint/a11y/useAnchorContent: default render prop, content from consumer\n // biome-ignore lint/a11y/useValidAnchor: default render prop, href from consumer\n render = <a />,\n size = 'md',\n isActive = false,\n className,\n ...props\n}: React.ComponentProps<'a'> & {\n render?: useRender.RenderProp;\n size?: 'sm' | 'md';\n isActive?: boolean;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'sidebar-menu-sub-button',\n 'data-sidebar': 'menu-sub-button',\n 'data-size': size,\n 'data-active': isActive,\n className: cn(\n 'cn-sidebar-menu-sub-button flex min-w-0 -translate-x-px items-center overflow-hidden outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate',\n 'data-[active=true]:relative data-[active=true]:bg-primary/10 data-[active=true]:pl-3 data-[active=true]:text-sidebar-primary data-[active=true]:before:absolute data-[active=true]:before:left-1 data-[active=true]:before:top-[6px] data-[active=true]:before:bottom-[6px] data-[active=true]:before:w-[3px] data-[active=true]:before:rounded-full data-[active=true]:before:bg-primary data-[active=true]:before:content-[\"\"]',\n className,\n ),\n },\n defaultTagName: 'a',\n });\n}\n\nexport { useSidebar } from './sidebar-context';\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n};\n","import * as React from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(\n undefined,\n );\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","'use client';\n\nimport { Dialog as SheetPrimitive } from '@base-ui/react/dialog';\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />;\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />;\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />;\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />;\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Backdrop>) {\n return (\n <SheetPrimitive.Backdrop\n data-slot=\"sheet-overlay\"\n className={cn('cn-sheet-overlay fixed inset-0 z-50', className)}\n {...props}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Popup> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n showCloseButton?: boolean;\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Popup\n data-slot=\"sheet-content\"\n data-side={side}\n className={cn('cn-sheet-content', className)}\n {...props}\n >\n {children}\n {showCloseButton && (\n <SheetPrimitive.Close\n data-slot=\"sheet-close\"\n render={\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"cn-sheet-close\"\n />\n }\n >\n <IconX className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n )}\n </SheetPrimitive.Popup>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn('cn-sheet-header flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn('cn-sheet-footer mt-auto flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn('cn-sheet-title', className)}\n {...props}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn('cn-sheet-description', className)}\n {...props}\n />\n );\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n};\n","'use client';\n\nimport * as React from 'react';\n\nexport type SidebarContextProps = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean | ((open: boolean) => boolean)) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n width: number;\n setWidth: (w: number) => void;\n minWidth: number;\n maxWidth: number;\n};\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\nexport { SidebarContext };\n","import type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype SkeletonProps = React.ComponentProps<'div'> & {\n radius?: ComponentRadius;\n circle?: boolean;\n animate?: boolean;\n};\n\nfunction Skeleton({\n className,\n radius: _radius = 'md',\n circle = false,\n animate = true,\n ...props\n}: SkeletonProps) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\n 'cn-skeleton',\n animate && 'animate-pulse',\n circle && 'rounded-full aspect-square',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\nexport type { SkeletonProps };\n","'use client';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\n\nimport { cn } from '../../lib/utils';\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n side = 'top',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n 'cn-tooltip-content cn-tooltip-content-logical bg-foreground text-background z-50 w-fit max-w-xs origin-(--transform-origin)',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"cn-tooltip-arrow cn-tooltip-arrow-logical bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype CardProps = React.ComponentProps<'div'> & {\n size?: 'default' | 'sm';\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n radius?: ComponentRadius;\n withBorder?: boolean;\n variant?: 'default' | 'outline' | 'filled';\n};\n\nfunction Card({\n className,\n children,\n size = 'default',\n padding,\n radius,\n withBorder,\n variant,\n ...props\n}: CardProps) {\n const paddingClasses = {\n none: 'p-0',\n xs: 'p-3',\n sm: 'p-4',\n md: 'p-5',\n lg: 'p-6',\n xl: 'p-8',\n };\n\n const radiusClasses = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n };\n\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n 'cn-card group/card flex flex-col',\n variant === 'outline' && 'cn-card-variant-outline',\n variant === 'filled' && 'cn-card-variant-filled',\n withBorder && 'cn-card-with-border',\n padding && paddingClasses[padding],\n radius && radiusClasses[radius],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n 'cn-card-header group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn('cn-card-title', className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn('cn-card-description', className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n 'col-start-2 row-span-2 row-start-1 self-start justify-self-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn('cn-card-content', className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn('cn-card-footer flex items-center', className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype LoaderType = 'oval' | 'bars' | 'dots';\n\ntype LoaderProps = {\n type?: LoaderType;\n size?: number | string;\n color?: string;\n className?: string;\n children?: React.ReactNode;\n};\n\nconst OvalLoader = ({ className }: { className?: string }) => (\n <svg\n viewBox=\"0 0 38 38\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn('loader-oval', className)}\n style={{\n width: 'var(--loader-size)',\n height: 'var(--loader-size)',\n }}\n aria-label=\"Loading\"\n >\n <title>Loading</title>\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(1 1)\" strokeWidth=\"2\">\n <circle\n stroke=\"var(--loader-color)\"\n strokeOpacity=\".2\"\n cx=\"18\"\n cy=\"18\"\n r=\"18\"\n />\n <path stroke=\"var(--loader-color)\" d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n </svg>\n);\n\nconst BarsLoader = ({ className }: { className?: string }) => (\n <div\n className={cn('loader-bars inline-flex gap-1', className)}\n style={{\n width: 'var(--loader-size)',\n height: 'var(--loader-size)',\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={`bar-${i}`}\n className=\"cn-loader-bars-bar w-1/5 animate-pulse\"\n style={{\n backgroundColor: 'var(--loader-color)',\n animationDelay: `${i * 0.15}s`,\n }}\n />\n ))}\n </div>\n);\n\nconst DotsLoader = ({ className }: { className?: string }) => (\n <div\n className={cn('loader-dots inline-flex items-center gap-1', className)}\n style={{\n width: 'var(--loader-size)',\n height: 'calc(var(--loader-size) / 3)',\n }}\n >\n {[0, 1, 2].map((i) => (\n <div\n key={`dot-${i}`}\n className=\"cn-loader-dot size-[calc(var(--loader-size)/5)] animate-bounce\"\n style={{\n backgroundColor: 'var(--loader-color)',\n animationDelay: `${i * 0.15}s`,\n }}\n />\n ))}\n </div>\n);\n\nconst loaders: Record<\n LoaderType,\n React.ComponentType<{ className?: string }>\n> = {\n oval: OvalLoader,\n bars: BarsLoader,\n dots: DotsLoader,\n};\n\nconst sizeMap: Record<string, string> = {\n xs: '1rem',\n sm: '1.25rem',\n md: '1.5rem',\n lg: '2rem',\n xl: '2.5rem',\n};\n\nconst getLoaderSize = (size: number | string): string => {\n if (typeof size === 'number') {\n return `${size / 16}rem`;\n }\n return sizeMap[size] || size;\n};\n\nconst Loader = React.forwardRef<HTMLOutputElement, LoaderProps>(\n (\n { type = 'oval', size = 'md', color = 'currentColor', className, children },\n ref,\n ) => {\n if (children) {\n return <>{children}</>;\n }\n\n const loaderSize = getLoaderSize(size);\n const LoaderComponent = loaders[type];\n\n return (\n <output\n ref={ref}\n className={cn(\n 'text-muted-foreground inline-flex items-center justify-center',\n className,\n )}\n style={\n {\n '--loader-size': loaderSize,\n '--loader-color': color,\n } as React.CSSProperties\n }\n aria-label=\"Loading\"\n >\n <LoaderComponent />\n <span className=\"sr-only\">Loading</span>\n </output>\n );\n },\n);\n\nLoader.displayName = 'Loader';\n\nexport { Loader };\nexport type { LoaderProps, LoaderType };\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype OverlayProps = React.ComponentProps<'div'> & {\n blur?: number;\n opacity?: number;\n color?: string;\n};\n\nfunction Overlay({\n className,\n blur = 0,\n opacity = 0.6,\n color,\n style,\n ...props\n}: OverlayProps) {\n return (\n <div\n data-slot=\"overlay\"\n className={cn('cn-overlay absolute inset-0 rounded-[inherit]', className)}\n style={{\n opacity,\n backdropFilter: blur > 0 ? `blur(${blur}px)` : undefined,\n backgroundColor: color,\n ...style,\n }}\n {...props}\n />\n );\n}\n\nexport { Overlay };\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Loader, type LoaderType } from './loader';\nimport { Overlay } from './overlay';\n\ntype LoadingOverlayProps = {\n visible: boolean;\n zIndex?: number;\n blur?: number;\n opacity?: number;\n loaderSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;\n loaderType?: LoaderType;\n loaderColor?: string;\n loaderProps?: React.ComponentProps<typeof Loader>;\n className?: string;\n};\n\nfunction LoadingOverlay({\n visible,\n zIndex = 1000,\n blur = 0,\n opacity = 0.75,\n loaderSize = 'md',\n loaderType = 'oval',\n loaderColor,\n loaderProps,\n className,\n}: LoadingOverlayProps) {\n if (!visible) {\n return null;\n }\n\n return (\n <div\n data-slot=\"loading-overlay\"\n className={cn('cn-loading-overlay', className)}\n style={{ zIndex }}\n >\n <Overlay blur={blur} opacity={opacity} />\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Loader\n size={loaderSize}\n type={loaderType}\n color={loaderColor}\n {...loaderProps}\n />\n </div>\n </div>\n );\n}\n\nexport { LoadingOverlay };\nexport type { LoadingOverlayProps };\n","'use client';\n\nimport { cn } from '../../lib/utils';\nimport { Card } from '../ui/card';\nimport {\n LoadingOverlay,\n type LoadingOverlayProps,\n} from '../ui/loading-overlay';\n\ntype EmptyCardLoadingProps = {\n className?: string;\n zIndex?: number;\n minHeight?: boolean;\n loaderSize?: LoadingOverlayProps['loaderSize'];\n loaderType?: LoadingOverlayProps['loaderType'];\n};\n\nfunction EmptyCardLoading({\n className,\n zIndex = 100,\n minHeight = true,\n loaderSize = 'md',\n loaderType = 'oval',\n}: EmptyCardLoadingProps) {\n return (\n <Card\n className={cn(\n 'relative overflow-hidden',\n minHeight && 'min-h-[300px]',\n className,\n )}\n >\n <LoadingOverlay\n visible\n zIndex={zIndex}\n loaderSize={loaderSize}\n loaderType={loaderType}\n />\n </Card>\n );\n}\n\nexport { EmptyCardLoading };\nexport type { EmptyCardLoadingProps };\n","'use client';\n\nimport { cn } from '../../lib/utils';\nimport {\n LoadingOverlay,\n type LoadingOverlayProps,\n} from '../ui/loading-overlay';\n\ntype EntityPageLoadingProps = {\n className?: string;\n loaderSize?: LoadingOverlayProps['loaderSize'];\n loaderType?: LoadingOverlayProps['loaderType'];\n};\n\nfunction EntityPageLoading({\n className,\n loaderSize = 'md',\n loaderType = 'oval',\n}: EntityPageLoadingProps) {\n return (\n <div\n className={cn(\n 'cn-entity-page-loading relative flex h-full max-h-screen min-h-[100px] w-full items-center justify-center',\n className,\n )}\n >\n <LoadingOverlay\n visible\n loaderSize={loaderSize}\n loaderType={loaderType}\n opacity={0.5}\n />\n </div>\n );\n}\n\nexport { EntityPageLoading };\nexport type { EntityPageLoadingProps };\n","import type { ReactNode } from 'react';\nimport { Button } from '../ui/button';\n\ntype ErrorPageViewProps = {\n code: string;\n title: string;\n description: string;\n primaryAction: ReactNode;\n secondaryAction?: ReactNode;\n onRetry?: () => void;\n};\n\nexport function ErrorPageView({\n code,\n title,\n description,\n primaryAction,\n secondaryAction,\n onRetry,\n}: ErrorPageViewProps) {\n return (\n <div className=\"flex min-h-svh flex-col items-center justify-center bg-background px-6 py-16 sm:px-8\">\n <div className=\"absolute inset-0 bg-[radial-gradient(ellipse_80%_50%_at_50%_-20%,var(--color-primary)/0.08,transparent)]\" />\n <div className=\"relative flex w-full min-w-72 max-w-3xl shrink-0 flex-col items-center gap-8 text-center\">\n <span className=\"font-mono text-[7rem] font-bold leading-none tracking-tighter text-muted-foreground/50\">\n {code}\n </span>\n <div className=\"w-full space-y-2\">\n <h1 className=\"text-2xl font-semibold tracking-tight text-foreground sm:text-3xl\">\n {title}\n </h1>\n <p className=\"w-full text-sm text-muted-foreground sm:text-base\">\n {description}\n </p>\n </div>\n <div className=\"flex w-full flex-col gap-3 sm:flex-row sm:justify-center\">\n {primaryAction}\n {secondaryAction}\n {onRetry && (\n <Button variant=\"ghost\" size=\"lg\" onClick={onRetry}>\n Try again\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport {\n IconAlertCircle,\n IconCertificateOff,\n IconMessage,\n IconShoppingCartOff,\n} from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { Button } from '../ui/button';\nimport { Card } from '../ui/card';\nimport { Text } from '../ui/text';\n\nconst isExternal = (href: string) =>\n href.startsWith('http') ||\n href.startsWith('//') ||\n href.startsWith('mailto:') ||\n href.startsWith('tel:');\n\ntype NoDataAvailableProps = {\n title: string;\n message: string;\n iconType?: 'certificate' | 'alert' | 'cart' | 'message';\n buttonText?: string;\n buttonLink?: string;\n icon?: React.ReactNode;\n};\n\nfunction NoDataAvailable({\n title,\n message,\n iconType = 'alert',\n buttonText,\n buttonLink,\n icon,\n}: NoDataAvailableProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const iconMap = {\n certificate: IconCertificateOff,\n cart: IconShoppingCartOff,\n message: IconMessage,\n alert: IconAlertCircle,\n };\n\n const IconComponent = iconMap[iconType];\n\n return (\n <Card>\n <div className=\"flex justify-center\">\n <div className=\"flex flex-col items-center gap-4 text-center\">\n {icon || (\n <IconComponent size={80} className=\"text-primary\" stroke={1.5} />\n )}\n <Text\n size=\"2xl\"\n weight=\"semibold\"\n className=\"mt-2 text-muted-foreground\"\n >\n {title}\n </Text>\n <Text size=\"lg\" variant=\"muted\">\n {message}\n </Text>\n {buttonText &&\n buttonLink &&\n (Link && !isExternal(buttonLink) ? (\n <Button\n render={\n <Link href={buttonLink} {...(locale && { locale })}>\n {buttonText}\n </Link>\n }\n variant=\"outline\"\n className=\"mt-2\"\n >\n {buttonText}\n </Button>\n ) : (\n <Button\n render={<a href={buttonLink}>{buttonText}</a>}\n variant=\"outline\"\n className=\"mt-2\"\n >\n {buttonText}\n </Button>\n ))}\n </div>\n </div>\n </Card>\n );\n}\n\nexport { NoDataAvailable };\nexport type { NoDataAvailableProps };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst textVariants = cva('text-pretty', {\n variants: {\n size: {\n xs: 'text-xs leading-4',\n sm: 'text-sm leading-5',\n md: 'text-base leading-6',\n lg: 'text-lg leading-7',\n xl: 'text-xl leading-7',\n '2xl': 'text-2xl leading-8',\n },\n weight: {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n start: 'text-start',\n end: 'text-end',\n },\n transform: {\n none: 'normal-case',\n uppercase: 'uppercase',\n lowercase: 'lowercase',\n capitalize: 'capitalize',\n },\n decoration: {\n none: 'no-underline',\n underline: 'underline',\n 'line-through': 'line-through',\n },\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n primary: 'text-primary',\n secondary: 'text-foreground/80',\n destructive: 'text-destructive',\n accent: 'text-accent-foreground',\n success: 'text-green-600 dark:text-green-400',\n warning: 'text-yellow-600 dark:text-yellow-400',\n dimmed: 'text-foreground/60',\n },\n truncate: {\n true: 'truncate',\n false: '',\n },\n inherit: {\n true: 'font-inherit text-inherit leading-inherit',\n false: '',\n },\n italic: {\n true: 'italic',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n weight: 'normal',\n variant: 'default',\n truncate: false,\n inherit: false,\n italic: false,\n },\n});\n\ntype TextProps = React.ComponentPropsWithoutRef<'span'> &\n VariantProps<typeof textVariants> & {\n as?: 'span' | 'p' | 'div' | 'label' | 'strong' | 'em';\n lineClamp?: number;\n gradient?: boolean;\n span?: boolean;\n };\n\nfunction Text({\n className,\n size,\n weight,\n align,\n transform,\n decoration,\n variant,\n truncate,\n inherit,\n italic,\n as,\n lineClamp,\n gradient,\n span,\n style,\n children,\n ...props\n}: TextProps): React.ReactElement {\n const Component = as || (span ? 'span' : 'p');\n const classes = cn(\n textVariants({\n size,\n weight,\n align,\n transform,\n decoration,\n variant,\n truncate,\n inherit,\n italic,\n }),\n lineClamp && 'line-clamp-[var(--line-clamp)]',\n gradient &&\n 'bg-gradient-to-r from-primary via-primary/70 to-accent bg-clip-text text-transparent font-semibold',\n className,\n );\n\n const styles: React.CSSProperties = {\n ...(lineClamp && { '--line-clamp': lineClamp.toString() }),\n ...style,\n } as React.CSSProperties;\n\n return React.createElement(\n Component,\n {\n 'data-slot': 'text',\n className: classes,\n style: styles,\n ...props,\n },\n children,\n );\n}\n\nexport { Text, textVariants };\nexport type { TextProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\nimport { cn } from '../../lib/utils';\nimport { ScrollArea } from '../ui/scroll-area';\n\nexport type DisplayTableVariant = 'horizontal' | 'vertical';\n\nexport type DisplayTableData = {\n caption?: React.ReactNode;\n head?: React.ReactNode[];\n body: React.ReactNode[][];\n foot?: React.ReactNode[];\n};\n\ntype DisplayTableRootProps = React.HTMLAttributes<HTMLTableElement> & {\n variant?: DisplayTableVariant;\n striped?: boolean;\n stripedInverted?: boolean;\n highlightOnHover?: boolean;\n withTableBorder?: boolean;\n withColumnBorders?: boolean;\n withRowBorders?: boolean;\n stickyHeader?: boolean;\n stickyHeaderOffset?: number;\n captionSide?: 'top' | 'bottom';\n tabularNums?: boolean;\n data?: DisplayTableData;\n};\n\nfunction renderTableData(\n data: DisplayTableData,\n opts: { captionSide?: 'top' | 'bottom'; stickyHeader?: boolean },\n) {\n return (\n <>\n {data.caption != null && (\n <DisplayTableCaption\n className={\n opts.captionSide === 'bottom' ? 'caption-bottom' : undefined\n }\n >\n {data.caption}\n </DisplayTableCaption>\n )}\n {data.head != null && data.head.length > 0 && (\n <DisplayTableThead\n className={\n opts.stickyHeader ? 'sticky z-10 bg-background' : undefined\n }\n >\n <DisplayTableTr>\n {data.head.map((cell, i) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven head */\n <DisplayTableTh key={`head-${i}`}>{cell}</DisplayTableTh>\n ))}\n </DisplayTableTr>\n </DisplayTableThead>\n )}\n <DisplayTableTbody>\n {data.body.map((row, ri) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven row */\n <DisplayTableTr key={`row-${ri}`}>\n {row.map((cell, ci) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven cell */\n <DisplayTableTd key={`row-${ri}-${ci}`}>{cell}</DisplayTableTd>\n ))}\n </DisplayTableTr>\n ))}\n </DisplayTableTbody>\n {data.foot != null && data.foot.length > 0 && (\n <DisplayTableTfoot>\n <DisplayTableTr>\n {data.foot.map((cell, i) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: data-driven foot */\n <DisplayTableTh key={`foot-${i}`}>{cell}</DisplayTableTh>\n ))}\n </DisplayTableTr>\n </DisplayTableTfoot>\n )}\n </>\n );\n}\n\nconst DisplayTableRoot = forwardRef<HTMLTableElement, DisplayTableRootProps>(\n (\n {\n className,\n variant = 'horizontal',\n striped = true,\n stripedInverted,\n highlightOnHover = true,\n withTableBorder,\n withColumnBorders,\n withRowBorders = true,\n stickyHeader,\n stickyHeaderOffset = 0,\n captionSide,\n tabularNums,\n data,\n children,\n style,\n ...props\n },\n ref,\n ) => {\n const tableContent = data\n ? renderTableData(data, { captionSide, stickyHeader })\n : children;\n const table = (\n <table\n ref={ref}\n className={cn(\n 'cn-display-table',\n tabularNums && 'tabular-nums',\n className,\n )}\n style={style}\n data-variant={variant}\n data-striped={striped ?? undefined}\n data-stripe-inverted={stripedInverted ?? undefined}\n data-hover={highlightOnHover || undefined}\n data-with-row-borders={withRowBorders || undefined}\n data-with-column-borders={withColumnBorders || undefined}\n {...props}\n >\n {tableContent}\n </table>\n );\n return (\n <div\n className={cn('cn-display-table-container')}\n style={\n {\n ...(stickyHeader && {\n '--sticky-offset': `${stickyHeaderOffset}px`,\n }),\n } as React.CSSProperties\n }\n data-border={withTableBorder || undefined}\n data-sticky-header={stickyHeader || undefined}\n >\n <div className=\"cn-display-table-scroll\">{table}</div>\n </div>\n );\n },\n);\nDisplayTableRoot.displayName = 'DisplayTable';\n\ntype ScrollContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n minWidth?: number;\n maxHeight?: number;\n type?: 'native' | 'scroll-area';\n};\n\nfunction DisplayTableScrollContainer({\n className,\n minWidth,\n maxHeight,\n type = 'native',\n children,\n style,\n ...props\n}: ScrollContainerProps) {\n const containerStyle = {\n minWidth: minWidth ?? undefined,\n maxHeight: maxHeight ?? undefined,\n ...style,\n };\n if (type === 'scroll-area') {\n return (\n <ScrollArea\n className={cn('w-full', className)}\n style={containerStyle}\n {...props}\n >\n {children}\n </ScrollArea>\n );\n }\n return (\n <div\n className={cn('overflow-auto', className)}\n style={containerStyle}\n {...props}\n >\n {children}\n </div>\n );\n}\nDisplayTableScrollContainer.displayName = 'DisplayTableScrollContainer';\n\nconst DisplayTableThead = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn('cn-display-table-thead', className)}\n {...props}\n />\n));\nDisplayTableThead.displayName = 'DisplayTableThead';\n\nconst DisplayTableTbody = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn('cn-display-table-tbody', className)}\n {...props}\n />\n));\nDisplayTableTbody.displayName = 'DisplayTableTbody';\n\nconst DisplayTableTfoot = forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('cn-display-table-tfoot', className)}\n {...props}\n />\n));\nDisplayTableTfoot.displayName = 'DisplayTableTfoot';\n\nconst DisplayTableTr = forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement> & { variant?: DisplayTableVariant }\n>(({ className, variant = 'horizontal', ...props }, ref) => (\n <tr\n ref={ref}\n className={cn('cn-display-table-tr', className)}\n data-variant={variant}\n {...props}\n />\n));\nDisplayTableTr.displayName = 'DisplayTableTr';\n\nconst DisplayTableTh = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement> & { w?: number | string }\n>(({ className, style, w, ...props }, ref) => (\n <th\n ref={ref}\n className={cn('cn-display-table-th', className)}\n style={{ width: w ?? undefined, minWidth: w ?? undefined, ...style }}\n {...props}\n />\n));\nDisplayTableTh.displayName = 'DisplayTableTh';\n\nconst DisplayTableTd = forwardRef<\n HTMLTableCellElement,\n React.HTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td ref={ref} className={cn('cn-display-table-td', className)} {...props} />\n));\nDisplayTableTd.displayName = 'DisplayTableTd';\n\nconst DisplayTableCaption = forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn('cn-display-table-caption', className)}\n {...props}\n />\n));\nDisplayTableCaption.displayName = 'DisplayTableCaption';\n\nexport const DisplayTable = Object.assign(DisplayTableRoot, {\n Thead: DisplayTableThead,\n Tbody: DisplayTableTbody,\n Tfoot: DisplayTableTfoot,\n Tr: DisplayTableTr,\n Th: DisplayTableTh,\n Td: DisplayTableTd,\n Caption: DisplayTableCaption,\n ScrollContainer: DisplayTableScrollContainer,\n});\n\nexport {\n DisplayTableThead,\n DisplayTableTbody,\n DisplayTableTfoot,\n DisplayTableTr,\n DisplayTableTh,\n DisplayTableTd,\n DisplayTableCaption,\n DisplayTableScrollContainer,\n};\n","'use client';\n\nimport { ScrollArea as ScrollAreaPrimitive } from '@base-ui/react/scroll-area';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn('relative', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"cn-scroll-area-viewport\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollBar({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Scrollbar>) {\n return (\n <ScrollAreaPrimitive.Scrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n 'cn-scroll-area-scrollbar flex touch-none p-px transition-colors select-none',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Thumb\n data-slot=\"scroll-area-thumb\"\n className=\"cn-scroll-area-thumb\"\n />\n </ScrollAreaPrimitive.Scrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","'use client';\n\nimport { IconChevronDown, IconDownload, IconTrash } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../ui/alert-dialog';\nimport { Button } from '../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu';\n\ntype BulkAction = {\n label: string;\n icon?: ReactNode;\n onClick: () => void;\n variant?: 'default' | 'destructive';\n confirmTitle?: string;\n confirmDescription?: string;\n};\n\ntype EntityBulkActionsProps = {\n selectedCount: number;\n actions?: BulkAction[];\n onDelete?: () => void;\n onExport?: () => void;\n itemName?: string;\n};\n\nexport function EntityBulkActions({\n selectedCount,\n actions,\n onDelete,\n onExport,\n itemName = 'item',\n}: EntityBulkActionsProps) {\n const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);\n const hasSelection = selectedCount > 0;\n\n const defaultActions: BulkAction[] = [];\n\n if (onExport) {\n defaultActions.push({\n label: 'Export',\n icon: <IconDownload className=\"mr-2 h-4 w-4\" />,\n onClick: onExport,\n });\n }\n\n if (onDelete) {\n defaultActions.push({\n label: 'Delete',\n icon: <IconTrash className=\"mr-2 h-4 w-4\" />,\n onClick: () => setShowDeleteConfirm(true),\n variant: 'destructive',\n });\n }\n\n const allActions = actions ? [...actions, ...defaultActions] : defaultActions;\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={!hasSelection}\n className=\"min-w-[140px]\"\n />\n }\n >\n {hasSelection ? `${selectedCount} selected` : 'Bulk Actions'}\n <IconChevronDown className=\"ml-2 h-4 w-4\" />\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"end\">\n <DropdownMenuContent>\n {allActions.map((action, index) => (\n <div key={action.label}>\n {action.variant === 'destructive' && index > 0 && (\n <DropdownMenuSeparator />\n )}\n <DropdownMenuItem\n onClick={action.onClick}\n className={\n action.variant === 'destructive' ? 'text-destructive' : ''\n }\n >\n {action.icon}\n {action.label}\n </DropdownMenuItem>\n </div>\n ))}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n\n <AlertDialog open={showDeleteConfirm} onOpenChange={setShowDeleteConfirm}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n Delete {selectedCount} {itemName}(s)?\n </AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete the selected {itemName}(s). This\n action cannot be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={() => {\n onDelete?.();\n setShowDeleteConfirm(false);\n }}\n variant=\"destructive\"\n >\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","'use client';\n\nimport { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { buttonVariants } from './button';\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Backdrop>) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'cn-alert-dialog-overlay fixed inset-0 isolate z-50',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Popup> & {\n size?: 'default' | 'sm';\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n className={cn(\n 'cn-alert-dialog-content group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-3 outline-none',\n className,\n )}\n data-size={size}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn('cn-alert-dialog-header', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n 'flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn('cn-alert-dialog-media', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn('cn-alert-dialog-title', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn('cn-alert-dialog-description', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Close> & {\n variant?:\n | 'default'\n | 'destructive'\n | 'outline'\n | 'secondary'\n | 'ghost'\n | 'link'\n | 'light';\n}) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-action\"\n className={cn(buttonVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Close>) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(buttonVariants({ variant: 'outline' }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogMedia,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconChevronDown, IconMenu2 } from '@tabler/icons-react';\nimport {\n cloneElement,\n isValidElement,\n type ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../lib/utils';\nimport { PageGoBack } from '../layout/page/page-go-back';\nimport { Card } from '../ui/card';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from '../ui/dropdown-menu';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../ui/select';\nimport { Skeleton } from '../ui/skeleton';\n\nexport type TabItem = {\n name: string;\n value: string;\n href?: string;\n content?: ReactNode;\n};\n\ntype EntityDetailHeaderProps = {\n title: ReactNode;\n icon?: ReactNode;\n showBack?: boolean;\n loading?: boolean;\n actions?: ReactNode;\n tabs: TabItem[];\n className?: string;\n};\n\nexport function EntityDetailHeader({\n title,\n icon,\n showBack = true,\n loading = false,\n actions,\n tabs,\n className,\n}: EntityDetailHeaderProps) {\n const mesob = useMesob();\n const LinkComponent = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const pathname = mesob?.pathname ?? '';\n const locale = mesob?.locale;\n\n const goBack = mesob?.goBack ?? (() => window.history.back());\n const resolvedBackButton = showBack ? (\n <PageGoBack onBack={goBack} label=\"Go back\" />\n ) : undefined;\n\n const hrefBasedActiveTab = useMemo(() => {\n const hasPathname = Boolean(pathname);\n const allHaveHref = tabs.every((t) => t.href);\n if (!(hasPathname && allHaveHref)) {\n return null;\n }\n const matched = [...tabs]\n .filter(\n (t) => t.href && (pathname === t.href || pathname.endsWith(t.href)),\n )\n .sort((a, b) => (b.href?.length ?? 0) - (a.href?.length ?? 0))[0];\n return matched?.value ?? null;\n }, [pathname, tabs]);\n\n const [internalActiveTab, setInternalActiveTab] = useState(\n tabs[0]?.value ?? '',\n );\n const activeTab = hrefBasedActiveTab ?? internalActiveTab;\n\n const [visibleTabs, setVisibleTabs] = useState<TabItem[]>(tabs);\n const [overflowTabs, setOverflowTabs] = useState<TabItem[]>([]);\n const containerRef = useRef<HTMLDivElement>(null);\n const tabsListRef = useRef<HTMLDivElement>(null);\n const dropdownTriggerRef = useRef<HTMLButtonElement>(null);\n const tabRefs = useRef<(HTMLElement | null)[]>([]);\n\n const handleTabChange = (newValue: string) => {\n const tab = tabs.find((t) => t.value === newValue);\n if (tab?.href) {\n mesob?.navigate?.(tab.href);\n return;\n }\n setInternalActiveTab(newValue);\n };\n\n useLayoutEffect(() => {\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: layout + measurement logic\n const updateTabs = () => {\n if (\n typeof window !== 'undefined' &&\n !window.matchMedia('(min-width: 640px)').matches\n ) {\n setVisibleTabs(tabs);\n setOverflowTabs([]);\n return;\n }\n if (!containerRef.current) {\n return;\n }\n if (!tabsListRef.current) {\n return;\n }\n\n const containerWidth = containerRef.current.offsetWidth;\n const dropdownWidth = 80;\n const padding = 16;\n const availableWidth = containerWidth - padding;\n\n let totalWidth = 0;\n const visible: TabItem[] = [];\n const overflow: TabItem[] = [];\n let hasOverflow = false;\n\n for (const [i, tab] of tabs.entries()) {\n const tabEl = tabRefs.current[i];\n\n if (!tabEl || tabEl.offsetWidth === 0) {\n if (hasOverflow) {\n overflow.push(tab);\n } else {\n visible.push(tab);\n }\n continue;\n }\n\n const tabWidth = tabEl.scrollWidth || tabEl.offsetWidth;\n const wouldFitWithoutDropdown = totalWidth + tabWidth <= availableWidth;\n const wouldFitWithDropdown =\n totalWidth + tabWidth + dropdownWidth <= availableWidth;\n\n if (!hasOverflow && wouldFitWithoutDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n } else if (!hasOverflow && wouldFitWithDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n hasOverflow = true;\n } else {\n hasOverflow = true;\n overflow.push(tab);\n }\n }\n\n setVisibleTabs(visible);\n setOverflowTabs(overflow);\n };\n\n const timeoutId = setTimeout(updateTabs, 100);\n\n const resizeObserver = new ResizeObserver(() => {\n setTimeout(updateTabs, 0);\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n if (tabsListRef.current) {\n resizeObserver.observe(tabsListRef.current);\n }\n\n window.addEventListener('resize', updateTabs);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateTabs);\n };\n }, [tabs]);\n\n const activeTabData = useMemo(\n () => tabs.find((tab) => tab.value === activeTab),\n [tabs, activeTab],\n );\n\n const renderTab = (tab: TabItem, originalIndex: number) => {\n const isActive = activeTab === tab.value;\n\n const tabClassName = cn(\n 'cn-entity-detail-header-tab relative z-10 px-4 py-3 text-sm font-medium transition-all duration-200 cursor-pointer',\n isActive ? 'text-primary' : 'text-muted-foreground hover:text-foreground',\n );\n\n const setRef = (el: HTMLElement | null) => {\n if (originalIndex >= 0) {\n tabRefs.current[originalIndex] = el;\n }\n };\n\n const underline = isActive ? (\n <div className=\"cn-entity-detail-header-underline absolute bottom-0 left-0 right-0 z-20 h-0.5 bg-primary\" />\n ) : null;\n\n if (tab.href && LinkComponent) {\n return (\n <LinkComponent\n key={tab.value}\n href={tab.href}\n data-active={isActive}\n className={tabClassName}\n ref={setRef as React.Ref<HTMLAnchorElement>}\n {...(locale && { locale })}\n >\n {tab.name}\n {underline}\n </LinkComponent>\n );\n }\n\n return (\n <button\n key={tab.value}\n type=\"button\"\n ref={setRef}\n onClick={() => handleTabChange(tab.value)}\n data-active={isActive}\n className={tabClassName}\n >\n {tab.name}\n {underline}\n </button>\n );\n };\n\n const renderDropdownItem = (tab: TabItem) => {\n const isActive = activeTab === tab.value;\n const itemClassName = cn(\n 'cursor-pointer',\n isActive && 'bg-accent font-medium',\n );\n\n if (tab.href && LinkComponent) {\n return (\n <DropdownMenuItem\n key={tab.value}\n render={\n <LinkComponent href={tab.href} {...(locale && { locale })}>\n {tab.name}\n </LinkComponent>\n }\n className={itemClassName}\n />\n );\n }\n\n return (\n <DropdownMenuItem\n key={tab.value}\n onClick={() => handleTabChange(tab.value)}\n className={itemClassName}\n >\n {tab.name}\n </DropdownMenuItem>\n );\n };\n\n if (loading) {\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n <Skeleton className=\"h-24 w-full rounded-xl\" />\n </div>\n );\n }\n\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n <Card className=\"overflow-hidden p-0 gap-0\">\n <div className=\"flex items-center justify-between gap-2 pl-1 pr-4 pt-4\">\n <div className=\"flex items-center \">\n {resolvedBackButton}\n {icon &&\n (isValidElement(icon)\n ? cloneElement(\n icon as React.ReactElement<{ className?: string }>,\n {\n className: cn(\n 'size-5',\n (icon as React.ReactElement<{ className?: string }>)\n .props.className,\n ),\n },\n )\n : icon)}\n <span className=\"text-lg font-semibold ml-2\">{title}</span>\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n <div ref={containerRef} className=\"w-full px-4\">\n <div className=\"mb-3 w-full sm:hidden\">\n <Select\n value={activeTab}\n onValueChange={(v) => handleTabChange(v as string)}\n >\n <SelectTrigger className=\"h-9 w-full gap-2 [&>svg:first-child]:shrink-0\">\n <IconMenu2 className=\"size-4 text-muted-foreground\" />\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {tabs.map((tab) => (\n <SelectItem key={tab.value} value={tab.value}>\n {tab.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div\n ref={tabsListRef}\n className=\"relative hidden items-center sm:flex\"\n >\n {visibleTabs.map((tab) => {\n const originalIndex = tabs.findIndex(\n (t) => t.value === tab.value,\n );\n return renderTab(tab, originalIndex);\n })}\n\n {overflowTabs.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger\n ref={dropdownTriggerRef}\n className={cn(\n 'cn-entity-detail-header-tab relative z-10 flex items-center gap-1 px-4 py-3 text-sm font-medium transition-all duration-200 cursor-pointer',\n overflowTabs.some((tab) => tab.value === activeTab)\n ? 'text-primary'\n : 'text-muted-foreground hover:text-foreground',\n )}\n data-active={overflowTabs.some(\n (tab) => tab.value === activeTab,\n )}\n >\n More\n <IconChevronDown className=\"h-4 w-4\" />\n {overflowTabs.some((tab) => tab.value === activeTab) && (\n <div className=\"cn-entity-detail-header-underline absolute bottom-0 left-0 right-0 z-20 h-0.5 bg-primary\" />\n )}\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"start\">\n <DropdownMenuContent className=\"min-w-40\">\n {overflowTabs.map(renderDropdownItem)}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n )}\n </div>\n </div>\n </Card>\n\n {activeTabData?.content && (\n <div className=\"flex-1\">{activeTabData.content}</div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconArrowLeft } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../../ui/tooltip';\n\ntype PageGoBackProps = {\n onBack: () => void;\n label?: string;\n children?: ReactNode;\n};\n\nexport function PageGoBack({\n onBack,\n label = 'Go back',\n children,\n}: PageGoBackProps) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger\n render={\n <Button variant=\"ghost\" onClick={onBack} aria-label={label} />\n }\n >\n {children ?? <IconArrowLeft className=\"size-5\" stroke={1.5} />}\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{label}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n","'use client';\n\nimport { Select as SelectPrimitive } from '@base-ui/react/select';\nimport { IconCheck, IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SELECT_TRIGGER_BASE_CN =\n 'flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nconst SELECT_CONTENT_BASE_CN =\n 'cn-menu-target relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none';\n\nconst SELECT_ITEM_BASE_CN =\n 'relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn('cn-select-group', className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn('cn-select-value', className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = 'default',\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: 'sm' | 'default';\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(SELECT_TRIGGER_BASE_CN, 'cn-select-trigger', className)}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon data-slot=\"select-trigger-icon\">\n <IconChevronDown className=\"cn-select-trigger-icon\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = 'bottom',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset' | 'alignItemWithTrigger'\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n SELECT_CONTENT_BASE_CN,\n 'cn-select-content',\n 'cn-select-content-logical',\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn('cn-select-label', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(SELECT_ITEM_BASE_CN, 'cn-select-item', className)}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"cn-select-item-text\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={<span className=\"cn-select-item-indicator\" />}\n >\n <IconCheck className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('cn-select-separator', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn('cn-select-scroll-up-button top-0 w-full', className)}\n {...props}\n >\n <IconChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn('cn-select-scroll-down-button bottom-0 w-full', className)}\n {...props}\n >\n <IconChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n} from '../ui/alert-dialog';\nimport { Sheet, SheetContent, SheetHeader, SheetTitle } from '../ui/sheet';\n\ntype EntityDrawerProps = {\n title: ReactNode;\n form: ReactNode;\n actions: ReactNode;\n open: boolean;\n onClose: () => void;\n isDirty?: boolean;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n};\n\nconst sizeClasses = {\n sm: 'w-full min-w-0 sm:!max-w-[26rem]',\n md: 'w-full min-w-0 sm:!max-w-[32rem]',\n lg: 'w-full min-w-0 sm:!max-w-[36rem]',\n xl: 'w-full min-w-0 sm:!max-w-[40rem]',\n};\n\nexport function EntityDrawer({\n title,\n form,\n actions,\n open,\n onClose,\n isDirty = false,\n size = 'xl',\n}: EntityDrawerProps) {\n const [showConfirm, setShowConfirm] = useState(false);\n\n const handleClose = () => {\n if (isDirty) {\n setShowConfirm(true);\n } else {\n onClose();\n }\n };\n\n const handleConfirmDiscard = () => {\n setShowConfirm(false);\n onClose();\n };\n\n return (\n <>\n <Sheet\n open={open}\n onOpenChange={(\n isOpen: boolean,\n details?: { reason?: string; cancel?: () => void },\n ) => {\n if (!isOpen) {\n if (\n isDirty &&\n (details?.reason === 'escape-key' ||\n details?.reason === 'interact-outside')\n ) {\n details?.cancel?.();\n setShowConfirm(true);\n } else {\n handleClose();\n }\n }\n }}\n >\n <SheetContent\n className={`${sizeClasses[size]} flex min-h-0 flex-col overflow-hidden p-0`}\n >\n <SheetHeader className=\"cn-entity-drawer-header p-4\">\n <SheetTitle className=\"text-lg font-semibold\">{title}</SheetTitle>\n </SheetHeader>\n <div className=\"cn-entity-drawer-body p-4\">{form}</div>\n <div className=\"cn-entity-drawer-footer p-4\">{actions}</div>\n </SheetContent>\n </Sheet>\n\n <AlertDialog open={showConfirm} onOpenChange={setShowConfirm}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Discard changes?</AlertDialogTitle>\n <AlertDialogDescription>\n You have unsaved changes. Are you sure you want to discard them?\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={handleConfirmDiscard}\n variant=\"destructive\"\n >\n Discard\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n}\n","'use client';\n\nimport { IconChevronRight, IconPencil, IconPlus } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\n\ntype EntityDrawerTriggerProps = {\n mode: 'new' | 'edit';\n entity?: string;\n label?: string;\n children: (open: boolean, onClose: () => void) => ReactNode;\n variant?: 'default' | 'icon' | 'outline';\n disabled?: boolean;\n className?: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport function EntityDrawerTrigger({\n mode,\n entity,\n label,\n children,\n variant = 'default',\n disabled = false,\n className,\n open: controlledOpen,\n onOpenChange,\n}: EntityDrawerTriggerProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const handleOpen = () => {\n if (isControlled) {\n onOpenChange?.(true);\n } else {\n setUncontrolledOpen(true);\n }\n };\n\n const handleClose = () => {\n if (isControlled) {\n onOpenChange?.(false);\n } else {\n setUncontrolledOpen(false);\n }\n };\n\n const buttonLabel =\n label || (mode === 'new' ? `New ${entity}` : `Edit ${entity}`);\n\n return (\n <>\n {mode === 'edit' && variant === 'icon' && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={`size-8 opacity-0 group-hover:opacity-100 transition-opacity ${className}`}\n onClick={handleOpen}\n disabled={disabled}\n >\n <IconChevronRight className=\"size-4\" />\n </Button>\n )}\n {mode === 'edit' && variant !== 'icon' && (\n <Button\n variant={variant === 'outline' ? 'outline' : 'default'}\n size=\"sm\"\n onClick={handleOpen}\n disabled={disabled}\n className={className}\n leftIcon={<IconPencil className=\"size-4\" />}\n >\n {buttonLabel}\n </Button>\n )}\n {mode === 'new' && (\n <Button\n variant={variant === 'outline' ? 'outline' : 'default'}\n size=\"sm\"\n onClick={handleOpen}\n disabled={disabled}\n className={cn(\n 'max-sm:h-8 max-sm:w-8 max-sm:shrink-0 max-sm:justify-center max-sm:p-0',\n className,\n )}\n leftIcon={<IconPlus className=\"size-4\" />}\n >\n <span className=\"hidden sm:inline\">{buttonLabel}</span>\n </Button>\n )}\n {open && children(open, handleClose)}\n </>\n );\n}\n","'use client';\n\nimport { IconPackage, IconPlus } from '@tabler/icons-react';\nimport type { ComponentType, ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport {\n Empty,\n EmptyContent,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n} from '../ui/empty';\n\ntype EntityEmptyStateProps = {\n icon?: ComponentType<Record<string, unknown>>;\n title?: string;\n description?: string;\n entityName?: string;\n actionLabel?: string;\n onAction?: () => void;\n children?: ReactNode;\n className?: string;\n};\n\nexport function EntityEmptyState({\n icon: Icon = IconPackage,\n title,\n description,\n entityName = 'item',\n actionLabel,\n onAction,\n children,\n className,\n}: EntityEmptyStateProps) {\n const defaultTitle = `No ${entityName}s yet`;\n const defaultDescription = `Get started by creating your first ${entityName}.`;\n const defaultActionLabel = `Create ${entityName}`;\n\n return (\n <Empty className={cn('cn-entity-empty-state w-full', className)}>\n <EmptyHeader className=\"flex w-full max-w-lg flex-col items-center text-center\">\n <EmptyMedia variant=\"icon\">\n <Icon className=\"size-5\" />\n </EmptyMedia>\n <EmptyTitle>{title ?? defaultTitle}</EmptyTitle>\n <EmptyDescription>{description ?? defaultDescription}</EmptyDescription>\n </EmptyHeader>\n <EmptyContent className=\"flex w-full items-center justify-center\">\n {children ??\n (onAction && (\n <Button\n onClick={onAction}\n leftIcon={<IconPlus className=\"size-4\" />}\n >\n {actionLabel ?? defaultActionLabel}\n </Button>\n ))}\n </EmptyContent>\n </Empty>\n );\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nfunction Empty({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"empty\" className={cn('cn-empty', className)} {...props} />\n );\n}\n\nfunction EmptyHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-header\"\n className={cn('cn-empty-header', className)}\n {...props}\n />\n );\n}\n\nconst emptyMediaVariants = cva(\n 'cn-empty-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'cn-empty-media-default',\n icon: 'cn-empty-media-icon',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction EmptyMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof emptyMediaVariants>) {\n return (\n <div\n data-slot=\"empty-icon\"\n data-variant={variant}\n className={cn(emptyMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction EmptyTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-title\"\n className={cn('cn-empty-title', className)}\n {...props}\n />\n );\n}\n\nfunction EmptyDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <div\n data-slot=\"empty-description\"\n className={cn('cn-empty-description', className)}\n {...props}\n />\n );\n}\n\nfunction EmptyContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"empty-content\"\n className={cn('cn-empty-content', className)}\n {...props}\n />\n );\n}\n\nexport {\n Empty,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyContent,\n EmptyMedia,\n};\n","'use client';\n\nimport { IconFilter } from '@tabler/icons-react';\nimport { parseAsInteger, parseAsString, useQueryState } from 'nuqs';\nimport { cn } from '../../lib/utils';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype FilterOption = {\n label: string;\n value: string;\n};\n\ntype EntityFilterProps = {\n options: FilterOption[];\n placeholder?: string;\n className?: string;\n label?: string;\n};\n\nexport function EntityFilter({\n options,\n placeholder = 'Filter',\n className,\n label,\n}: EntityFilterProps) {\n const [value, setValue] = useQueryState('filter', parseAsString);\n const [, setPage] = useQueryState('page', parseAsInteger.withDefault(1));\n\n const hasAllOption = options.some((opt) => opt.value === '');\n const allLabel = options.find((opt) => opt.value === '')?.label || 'All';\n const isAll = !value || value === '__all__';\n let displayValue: string | undefined;\n if (isAll) {\n displayValue = hasAllOption ? '' : undefined;\n } else {\n displayValue = value ?? undefined;\n }\n\n const handleChange = (newValue: string) => {\n setValue(newValue === '' ? null : newValue || null);\n setPage(1);\n };\n\n const validOptions = options.filter((opt) => opt.value !== '');\n const filterLabel =\n displayValue === ''\n ? allLabel\n : (options.find((o) => o.value === displayValue)?.label ?? placeholder);\n const showPlaceholder = displayValue === undefined;\n\n return (\n <div className={cn('flex w-full items-center gap-2', className)}>\n {label && (\n <span className=\"shrink-0 text-sm text-muted-foreground\">{label}</span>\n )}\n <div className=\"min-w-0 flex-1\">\n <Select\n value={displayValue}\n onValueChange={(v) => handleChange(v as string)}\n >\n <SelectTrigger className=\"h-9 w-full min-w-[150px]\">\n <IconFilter className=\"size-4\" />\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n showPlaceholder && 'text-muted-foreground',\n )}\n >\n {filterLabel}\n </span>\n </SelectTrigger>\n <SelectContent>\n {hasAllOption && (\n <SelectItem key=\"\" value=\"\">\n {allLabel}\n </SelectItem>\n )}\n {validOptions.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { IconFilter } from '@tabler/icons-react';\nimport { cn } from '../../lib/utils';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype FilterOption = { label: string; value: string };\n\ntype EntityFilterStateProps = {\n value: string;\n onValueChange: (v: string) => void;\n options: FilterOption[];\n placeholder?: string;\n className?: string;\n};\n\nexport function EntityFilterState({\n value,\n onValueChange,\n options,\n placeholder = 'Filter',\n className,\n}: EntityFilterStateProps) {\n const hasAll = options.some((o) => o.value === '');\n const allLabel = options.find((o) => o.value === '')?.label ?? 'All';\n const displayValue = value === '' || value === '__all__' ? '' : value;\n const label =\n displayValue === ''\n ? allLabel\n : (options.find((o) => o.value === displayValue)?.label ?? placeholder);\n\n return (\n <div className={cn('flex w-full items-center gap-2', className)}>\n <div className=\"min-w-0 flex-1\">\n <Select\n value={displayValue}\n onValueChange={(v) => onValueChange(v === '' ? '' : (v as string))}\n >\n <SelectTrigger className=\"h-9 w-full min-w-[150px]\">\n <IconFilter className=\"size-4\" />\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n !displayValue && 'text-muted-foreground',\n )}\n >\n {label}\n </span>\n </SelectTrigger>\n <SelectContent>\n {hasAll && <SelectItem value=\"\">{allLabel}</SelectItem>}\n {options\n .filter((o) => o.value !== '')\n .map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport {\n IconDeviceFloppy,\n IconRotateClockwise,\n IconTrash,\n} from '@tabler/icons-react';\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from '../ui/alert-dialog';\nimport { Button } from '../ui/button';\nimport { Spinner } from '../ui/spinner';\n\ntype EntityFormActionsProps = {\n mode: 'new' | 'edit';\n onSubmit?: () => void;\n onReset?: () => void;\n onDelete?: () => void;\n onCancel?: () => void;\n isSubmitting?: boolean;\n isDeleting?: boolean;\n disabled?: boolean;\n submitLabel?: string;\n deleteLabel?: string;\n itemName?: string;\n};\n\nexport function EntityFormActions({\n mode,\n onSubmit,\n onReset,\n onDelete,\n onCancel,\n isSubmitting = false,\n isDeleting = false,\n disabled = false,\n submitLabel,\n deleteLabel = 'Delete',\n itemName = 'item',\n}: EntityFormActionsProps) {\n const defaultSubmitLabel = mode === 'new' ? 'Create' : 'Update';\n const label = submitLabel || defaultSubmitLabel;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onSubmit && (\n <Button\n onClick={onSubmit}\n disabled={disabled || isSubmitting}\n className=\"cursor-pointer\"\n leftIcon={\n isSubmitting ? (\n <Spinner className=\"size-4\" />\n ) : (\n <IconDeviceFloppy className=\"size-4\" />\n )\n }\n >\n {label}\n </Button>\n )}\n\n {mode === 'new' && onReset && (\n <Button\n variant=\"outline\"\n onClick={onReset}\n disabled={disabled}\n className=\"cursor-pointer\"\n >\n <IconRotateClockwise className=\"size-4\" />\n Reset\n </Button>\n )}\n\n {mode === 'edit' && onDelete && (\n <AlertDialog>\n <AlertDialogTrigger\n render={\n <Button\n variant=\"destructive\"\n disabled={disabled || isDeleting}\n className=\"cursor-pointer\"\n leftIcon={\n isDeleting ? (\n <Spinner className=\"size-4\" />\n ) : (\n <IconTrash className=\"size-4\" />\n )\n }\n />\n }\n >\n {deleteLabel}\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Are you sure?</AlertDialogTitle>\n <AlertDialogDescription>\n This will permanently delete this {itemName}. This action cannot\n be undone.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction onClick={onDelete} variant=\"destructive\">\n Delete\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n )}\n\n {onCancel && (\n <Button\n variant=\"ghost\"\n onClick={onCancel}\n disabled={disabled}\n className=\"cursor-pointer\"\n >\n Cancel\n </Button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Card } from '../ui/card';\n\ntype EntityHeaderProps = {\n title: ReactNode;\n icon?: ReactNode;\n actions?: ReactNode;\n search?: ReactNode;\n filter?: ReactNode;\n sort?: ReactNode;\n view?: ReactNode;\n /** When false, render without Card wrapper (e.g. inside EntitySection) */\n wrapInCard?: boolean;\n};\n\nexport function EntityHeader({\n title,\n icon,\n actions,\n search,\n filter,\n sort,\n view,\n wrapInCard = true,\n}: EntityHeaderProps) {\n const [toolbarOpen, setToolbarOpen] = useState(false);\n const hasToolbar = [search, filter, sort, view].some(Boolean);\n const hasTitleRow = title || icon || actions;\n\n const content = (\n <div className=\"flex flex-col gap-4\">\n {hasTitleRow && (\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {icon}\n <span className=\"text-lg font-semibold\">{title}</span>\n </div>\n <div className=\"flex items-center gap-3\">\n {actions}\n {hasToolbar && (\n <Button\n variant=\"secondary\"\n size=\"icon-sm\"\n className=\"md:hidden\"\n onClick={() => setToolbarOpen((o) => !o)}\n aria-expanded={toolbarOpen}\n aria-label={toolbarOpen ? 'Hide filters' : 'Show filters'}\n >\n {toolbarOpen ? (\n <IconChevronUp className=\"h-4 w-4\" />\n ) : (\n <IconChevronDown className=\"h-4 w-4\" />\n )}\n </Button>\n )}\n </div>\n </div>\n )}\n {hasToolbar && (\n <div\n className={cn(\n 'flex flex-col gap-2 md:flex-row md:items-center md:gap-2 md:justify-between',\n !toolbarOpen && 'hidden',\n 'md:flex',\n )}\n >\n <div className=\"w-full min-w-0 flex-1 md:min-w-[12rem]\">{search}</div>\n <div className=\"flex w-full shrink-0 flex-col gap-2 *:w-full md:w-auto md:flex-row md:items-center md:gap-2 md:*:w-auto\">\n {filter}\n {sort}\n {view}\n </div>\n </div>\n )}\n </div>\n );\n\n return wrapInCard ? <Card className=\"p-4\">{content}</Card> : content;\n}\n","'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Skeleton } from '../ui/skeleton';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '../ui/table';\n\ntype EntityLoadingStateProps = {\n view: 'table' | 'card';\n rowCount?: number;\n columnCount?: number;\n cardCount?: number;\n className?: string;\n};\n\nexport function EntityLoadingState({\n view,\n rowCount = 5,\n columnCount = 5,\n cardCount = 8,\n className,\n}: EntityLoadingStateProps) {\n const makeKey = React.useCallback(() => {\n return (\n globalThis.crypto?.randomUUID?.() ??\n `${Date.now()}-${Math.random().toString(36).slice(2)}`\n );\n }, []);\n\n const headerKeys = React.useMemo(() => {\n return Array.from({ length: columnCount }, makeKey);\n }, [columnCount, makeKey]);\n\n const rowKeys = React.useMemo(() => {\n return Array.from({ length: rowCount }, makeKey);\n }, [rowCount, makeKey]);\n\n const cellKeys = React.useMemo(() => {\n return rowKeys.map(() => Array.from({ length: columnCount }, makeKey));\n }, [rowKeys, columnCount, makeKey]);\n\n const cardKeys = React.useMemo(() => {\n return Array.from({ length: cardCount }, makeKey);\n }, [cardCount, makeKey]);\n\n if (view === 'table') {\n return (\n <div className={cn('cn-entity-loading-table', className)}>\n <Table>\n <TableHeader>\n <TableRow>\n {Array.from({ length: columnCount }).map((_, i) => (\n <TableHead key={headerKeys[i]}>\n <Skeleton className=\"h-4 w-24\" />\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {Array.from({ length: rowCount }).map((_, rowIndex) => (\n <TableRow key={rowKeys[rowIndex]}>\n {Array.from({ length: columnCount }).map((_, colIndex) => (\n <TableCell key={cellKeys[rowIndex][colIndex]}>\n <Skeleton className=\"h-4 w-full\" />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4',\n className,\n )}\n >\n {Array.from({ length: cardCount }).map((_, i) => (\n <div key={cardKeys[i]} className=\"cn-entity-loading-card\">\n <div className=\"flex items-center gap-2\">\n <Skeleton className=\"h-4 w-4 rounded-full\" />\n <Skeleton className=\"h-5 w-32\" />\n </div>\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-5 w-16\" />\n <Skeleton className=\"h-5 w-16\" />\n </div>\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-3 w-24\" />\n </div>\n ))}\n </div>\n );\n}\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Table({ className, ...props }: React.ComponentProps<'table'>) {\n return (\n <div data-slot=\"table-container\" className=\"cn-table-container\">\n <table\n data-slot=\"table\"\n className={cn('cn-table', className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn('cn-table-header', className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn('cn-table-body', className)}\n {...props}\n />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn('cn-table-footer', className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn('cn-table-row', className)}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn('cn-table-head', className)}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn('cn-table-cell', className)}\n {...props}\n />\n );\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<'caption'>) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn('cn-table-caption', className)}\n {...props}\n />\n );\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n};\n","'use client';\n\nimport { IconSearch, IconX } from '@tabler/icons-react';\nimport { parseAsInteger, parseAsString, useQueryState } from 'nuqs';\nimport { useRef } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { cn } from '../../lib/utils';\nimport { Input } from '../ui/input';\n\ntype EntitySearchProps = {\n paramKey?: string;\n placeholder?: string;\n className?: string;\n};\n\nexport function EntitySearch({\n paramKey = 'search',\n placeholder = 'Search...',\n className,\n}: EntitySearchProps) {\n const [value, setValue] = useQueryState(\n paramKey,\n parseAsString.withDefault(''),\n );\n const [, setPage] = useQueryState('page', parseAsInteger.withDefault(1));\n const ref = useRef<HTMLInputElement>(null);\n\n const handleSearch = useDebouncedCallback((term: string) => {\n setValue(term || null);\n setPage(1);\n }, 300);\n\n const handleClear = () => {\n setValue(null);\n setPage(1);\n if (ref.current) {\n ref.current.value = '';\n }\n };\n\n return (\n <div className={cn('relative w-full min-w-0', className)}>\n <IconSearch className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n ref={ref}\n placeholder={placeholder}\n defaultValue={value}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full min-w-0 pl-9 pr-9\"\n />\n {value && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground cursor-pointer\"\n >\n <IconX className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconSearch, IconX } from '@tabler/icons-react';\nimport { useRef } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { cn } from '../../lib/utils';\nimport { Input } from '../ui/input';\n\ntype EntitySearchStateProps = {\n value: string;\n onValueChange: (v: string) => void;\n placeholder?: string;\n className?: string;\n debounceMs?: number;\n};\n\nexport function EntitySearchState({\n value,\n onValueChange,\n placeholder = 'Search...',\n className,\n debounceMs = 300,\n}: EntitySearchStateProps) {\n const ref = useRef<HTMLInputElement>(null);\n const handleSearch = useDebouncedCallback((term: string) => {\n onValueChange(term);\n }, debounceMs);\n\n const handleClear = () => {\n onValueChange('');\n if (ref.current) {\n ref.current.value = '';\n }\n };\n\n return (\n <div className={cn('relative w-full min-w-0', className)}>\n <IconSearch className=\"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n ref={ref}\n placeholder={placeholder}\n defaultValue={value}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full min-w-0 pl-9 pr-9\"\n />\n {value ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground cursor-pointer\"\n >\n <IconX className=\"h-4 w-4\" />\n </button>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { Card } from '../../ui/card';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '../../ui/collapsible';\n\ntype SectionProps = {\n title: ReactNode;\n children: ReactNode;\n /** Shown in header before expand/collapse button, only when section is open */\n actions?: ReactNode;\n defaultOpen?: boolean;\n lazy?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n headerClassName?: string;\n contentClassName?: string;\n};\n\nexport function Section({\n title,\n children,\n actions,\n defaultOpen = false,\n lazy = false,\n onOpenChange,\n className,\n headerClassName,\n contentClassName,\n}: SectionProps) {\n const [open, setOpen] = useState(defaultOpen);\n const handleOpenChange = (next: boolean) => {\n setOpen(next);\n onOpenChange?.(next);\n };\n return (\n <Collapsible open={open} onOpenChange={handleOpenChange}>\n <Card className={cn('gap-0 p-0', className)}>\n <div\n className={cn(\n 'flex items-center justify-between gap-2 p-4 has-[[data-panel-open]]:border-b',\n headerClassName,\n )}\n >\n <div className=\"text-lg font-semibold\">{title}</div>\n <div className=\"flex items-center gap-2\">\n {open && actions}\n <CollapsibleTrigger\n render={\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"group border-primary text-primary hover:bg-primary/10 hover:text-primary\"\n />\n }\n >\n <span className=\"group-data-[panel-open]:hidden\">Expand</span>\n <span className=\"hidden group-data-[panel-open]:inline\">\n Collapse\n </span>\n </CollapsibleTrigger>\n </div>\n </div>\n <CollapsibleContent className=\"overflow-hidden\">\n <div className={cn('p-4', contentClassName)}>\n {lazy ? open && children : children}\n </div>\n </CollapsibleContent>\n </Card>\n </Collapsible>\n );\n}\n","'use client';\n\nimport { Collapsible as CollapsiblePrimitive } from '@base-ui/react/collapsible';\nimport { cn } from '../../lib/utils';\n\nfunction Collapsible({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Trigger>) {\n return (\n <CollapsiblePrimitive.Trigger data-slot=\"collapsible-trigger\" {...props} />\n );\n}\n\nfunction CollapsibleContent({\n className,\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Panel>) {\n return (\n <CollapsiblePrimitive.Panel\n data-slot=\"collapsible-content\"\n className={cn(\n 'data-[ending-style]:animate-accordion-up data-[starting-style]:animate-accordion-down overflow-hidden',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","'use client';\n\nimport {\n IconSortAscendingLetters,\n IconSortDescendingLetters,\n} from '@tabler/icons-react';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype SortOption = { label: string; value: string };\n\ntype EntitySortStateProps = {\n sort: string;\n order: 'asc' | 'desc';\n onSortChange: (v: string) => void;\n onOrderChange: (v: 'asc' | 'desc') => void;\n options: SortOption[];\n className?: string;\n};\n\nexport function EntitySortState({\n sort,\n order,\n onSortChange,\n onOrderChange,\n options,\n className,\n}: EntitySortStateProps) {\n const sortLabel = options.find((o) => o.value === sort)?.label;\n\n return (\n <div className={cn('flex w-full items-center gap-0', className)}>\n <div className=\"min-w-0 flex-1\">\n <Select value={sort} onValueChange={(v) => onSortChange(v as string)}>\n <SelectTrigger className=\"h-9 w-full min-w-[150px] rounded-r-none border-r-0\">\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n !sortLabel && 'text-muted-foreground',\n )}\n >\n {sortLabel ?? 'Sort by'}\n </span>\n </SelectTrigger>\n <SelectContent>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-9 shrink-0 rounded-l-none\"\n onClick={() => onOrderChange(order === 'asc' ? 'desc' : 'asc')}\n >\n {order === 'asc' ? (\n <IconSortAscendingLetters className=\"h-4 w-4\" />\n ) : (\n <IconSortDescendingLetters className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport { IconGridDots, IconList, IconTable } from '@tabler/icons-react';\nimport type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Tabs, TabsList, TabsTrigger } from '../ui/tabs';\n\nexport type ViewOption = 'table' | 'card' | 'list';\n\ntype EntityViewToggleStateProps = {\n value: ViewOption;\n onValueChange: (v: ViewOption) => void;\n views?: ViewOption[];\n className?: string;\n};\n\nconst viewIcons: Record<ViewOption, ReactNode> = {\n table: <IconTable className=\"size-4\" />,\n card: <IconGridDots className=\"size-4\" />,\n list: <IconList className=\"size-4\" />,\n};\n\nexport function EntityViewToggleState({\n value,\n onValueChange,\n views = ['table', 'card'],\n className,\n}: EntityViewToggleStateProps) {\n return (\n <Tabs\n value={value}\n onValueChange={(v) => onValueChange(v as ViewOption)}\n className={cn('w-full! md:w-auto!', className)}\n >\n <TabsList className=\"cn-entity-view-toggle w-full! md:w-auto!\">\n {views.map((v) => (\n <TabsTrigger\n key={v}\n value={v}\n aria-label={`${v} view`}\n className=\"min-w-0 flex-1 px-3\"\n >\n {viewIcons[v]}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","'use client';\n\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Tabs({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-orientation={orientation}\n className={cn(\n 'cn-tabs group/tabs flex flex-col gap-2 data-[orientation=vertical]:flex-row',\n className,\n )}\n {...props}\n />\n );\n}\n\nconst tabsListVariants = cva(\n 'cn-tabs-list group/tabs-list text-muted-foreground inline-flex w-fit items-center justify-center group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col',\n {\n variants: {\n variant: {\n default: 'bg-muted',\n line: 'gap-1 bg-transparent',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List> &\n VariantProps<typeof tabsListVariants> & {\n variant?: 'default' | 'line' | 'outline' | 'pills';\n radius?: unknown;\n }) {\n const variant = props.variant === 'line' ? 'line' : ('default' as const);\n const { radius: _radius, ...rest } = props;\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n data-variant={variant}\n className={cn(tabsListVariants({ variant }), className)}\n {...rest}\n />\n );\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Tab>) {\n return (\n <TabsPrimitive.Tab\n data-slot=\"tabs-trigger\"\n className={cn(\n 'cn-tabs-trigger focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center whitespace-nowrap transition-all focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n 'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent',\n 'data-active:bg-background dark:data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 data-active:text-foreground',\n 'after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Panel>) {\n return (\n <TabsPrimitive.Panel\n data-slot=\"tabs-content\"\n className={cn('cn-tabs-content flex-1 outline-none', className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, tabsListVariants };\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { Section } from '../layout/section/section';\nimport { EntityFilterState } from './entity-filter-state';\nimport { EntityHeader } from './entity-header';\nimport { EntitySearchState } from './entity-search-state';\nimport { EntitySortState } from './entity-sort-state';\nimport { EntityViewToggleState } from './entity-view-toggle-state';\nimport type { EntitySectionView } from './use-entity-section-state';\n\nexport type EntitySectionState = {\n search: string;\n setSearch: (v: string) => void;\n filter: string;\n setFilter: (v: string) => void;\n sort: string;\n setSort: (v: string) => void;\n order: 'asc' | 'desc';\n setOrder: (v: 'asc' | 'desc') => void;\n view: EntitySectionView;\n setView: (v: EntitySectionView) => void;\n page: number;\n setPage: (v: number) => void;\n pageSize: number;\n setPageSize: (v: number) => void;\n setPageReset: () => void;\n filterOptions: { label: string; value: string }[];\n sortOptions: { label: string; value: string }[];\n views: EntitySectionView[];\n};\n\ntype EntitySectionConfig = {\n searchPlaceholder?: string;\n filterOptions?: { label: string; value: string }[];\n sortOptions?: { label: string; value: string }[];\n views?: EntitySectionView[];\n};\n\ntype EntitySectionProps = {\n title: ReactNode;\n icon?: ReactNode;\n actions?: ReactNode;\n config?: EntitySectionConfig;\n state: EntitySectionState;\n onOpenChange?: (open: boolean) => void;\n /** When false, the toolbar row (search, filter, sort, view) is not rendered */\n showToolbar?: boolean;\n children: (state: EntitySectionState) => ReactNode;\n};\n\nexport function EntitySection({\n title,\n icon,\n actions,\n config = {},\n state,\n onOpenChange,\n showToolbar = true,\n children,\n}: EntitySectionProps) {\n const {\n search,\n setSearch,\n filter,\n setFilter,\n sort,\n setSort,\n order,\n setOrder,\n view,\n setView,\n setPageReset,\n filterOptions,\n sortOptions,\n views,\n } = state;\n\n const searchPlaceholder = config.searchPlaceholder ?? 'Search...';\n const hasFilter = (config.filterOptions ?? filterOptions).length > 0;\n const hasSort = (config.sortOptions ?? sortOptions).length > 0;\n const hasView = (config.views ?? views).length > 0;\n\n const handleSearch = (v: string) => {\n setSearch(v);\n setPageReset();\n };\n const handleFilter = (v: string) => {\n setFilter(v);\n setPageReset();\n };\n const handleSort = (v: string) => {\n setSort(v);\n setPageReset();\n };\n\n const filterOpts = config.filterOptions ?? filterOptions;\n const sortOpts = config.sortOptions ?? sortOptions;\n const viewOpts = config.views ?? views;\n\n return (\n <Section title={title} onOpenChange={onOpenChange} actions={actions}>\n <div className=\"space-y-4\">\n {showToolbar && (\n <EntityHeader\n wrapInCard={false}\n title=\"\"\n icon={icon}\n search={\n <EntitySearchState\n value={search}\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n />\n }\n filter={\n hasFilter ? (\n <EntityFilterState\n value={filter}\n onValueChange={handleFilter}\n options={filterOpts}\n placeholder=\"Filter\"\n />\n ) : undefined\n }\n sort={\n hasSort ? (\n <EntitySortState\n sort={sort}\n order={order}\n onSortChange={handleSort}\n onOrderChange={(v) => {\n setOrder(v);\n setPageReset();\n }}\n options={sortOpts}\n />\n ) : undefined\n }\n view={\n hasView ? (\n <EntityViewToggleState\n value={view}\n onValueChange={setView}\n views={viewOpts}\n />\n ) : undefined\n }\n />\n )}\n {children(state)}\n </div>\n </Section>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { DisplayTable, Tbody, Td, Th, Thead, Tr } from '../display-table';\nimport { Button } from '../ui/button';\nimport { Checkbox } from '../ui/checkbox';\nimport { Chip } from '../ui/chip';\nimport { DataTablePagination } from '../ui/data-table/data-table-pagination';\nimport { RadioGroup, RadioGroupItem } from '../ui/radio-group';\nimport { EntityEmptyState } from './entity-empty-state';\nimport { EntityFilterState } from './entity-filter-state';\nimport { EntityHeader } from './entity-header';\nimport { EntityLoadingState } from './entity-loading-state';\nimport { EntitySearchState } from './entity-search-state';\nimport type { EntitySectionState } from './entity-section';\nimport {\n EntitySelectorModal,\n type EntitySelectorModalSize,\n} from './entity-selector-modal';\nimport { EntitySortState } from './entity-sort-state';\nimport { EntityViewToggleState } from './entity-view-toggle-state';\nimport { useEntityPagination } from './use-entity-pagination';\n\ntype BaseItem = { id: string };\n\nexport type EntitySelectorColumn<T> = {\n key: string;\n header: ReactNode;\n cell: (item: T) => ReactNode;\n className?: string;\n};\n\nexport type EntitySelectorConfig<T extends BaseItem> = {\n title: string;\n modalSize?: EntitySelectorModalSize;\n contentClassName?: string;\n multiple?: boolean;\n minSelect?: number;\n maxSelect?: number;\n entityName: string;\n entityIcon: React.ComponentType<{ className?: string }>;\n emptyTitle?: string;\n emptyDescription?: string;\n columns: EntitySelectorColumn<T>[];\n columnCount?: number;\n getItemLabel: (item: T) => string;\n searchPlaceholder?: string;\n filterOptions?: { label: string; value: string }[];\n sortOptions?: { label: string; value: string }[];\n showViewToggle?: boolean;\n wrapHeaderInCard?: boolean;\n renderCard?: (item: T, selected: boolean, onToggle: () => void) => ReactNode;\n};\n\nexport type EntitySelectorProps<T extends BaseItem> = {\n trigger: ReactNode;\n config: EntitySelectorConfig<T>;\n onSelect: (items: T[]) => void;\n items: T[];\n total?: number;\n isLoading?: boolean;\n state: EntitySectionState;\n};\n\nfunction EntitySelectorFooter({\n onCancel,\n onSelect,\n selectedCount,\n multiple,\n minSelect,\n maxSelect,\n}: {\n onCancel: () => void;\n onSelect: () => void;\n selectedCount: number;\n multiple: boolean;\n minSelect?: number;\n maxSelect?: number;\n}) {\n const min = minSelect ?? (multiple ? 1 : 1);\n const meetsMin = selectedCount >= min;\n const meetsMax = maxSelect === undefined || selectedCount <= maxSelect;\n const canSelect = multiple ? meetsMin && meetsMax : selectedCount === 1;\n let hint = '';\n if (multiple) {\n if (minSelect !== undefined && maxSelect !== undefined) {\n hint = ` (${selectedCount}/${minSelect}-${maxSelect})`;\n } else if (minSelect !== undefined) {\n hint = ` (${selectedCount}, min ${minSelect})`;\n } else if (maxSelect !== undefined) {\n hint = ` (${selectedCount}/${maxSelect})`;\n } else if (selectedCount > 0) {\n hint = ` (${selectedCount})`;\n }\n }\n return (\n <>\n <Button variant=\"outline\" size=\"md\" onClick={onCancel}>\n Cancel\n </Button>\n <Button\n variant=\"default\"\n size=\"md\"\n onClick={onSelect}\n disabled={!canSelect}\n >\n Select{hint}\n </Button>\n </>\n );\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: selector combines header, table, cards, selection, pagination\nexport function EntitySelector<T extends BaseItem>({\n trigger,\n config,\n onSelect,\n items,\n total: totalProp,\n isLoading = false,\n state,\n}: EntitySelectorProps<T>) {\n const {\n title,\n modalSize = 'xl',\n contentClassName,\n multiple = false,\n minSelect,\n maxSelect,\n entityName,\n entityIcon: EntityIcon,\n emptyTitle,\n emptyDescription,\n columns,\n columnCount,\n getItemLabel,\n searchPlaceholder,\n filterOptions = [],\n sortOptions = [],\n showViewToggle = true,\n wrapHeaderInCard = true,\n renderCard,\n } = config;\n\n const [open, setOpen] = useState(false);\n const [rowSelection, setRowSelection] = useState<Record<string, boolean>>({});\n const [selectedItems, setSelectedItems] = useState<T[]>([]);\n\n const handleOpenChange = useCallback((next: boolean) => setOpen(next), []);\n const handleSelect = useCallback(() => {\n onSelect(selectedItems);\n handleOpenChange(false);\n }, [selectedItems, onSelect, handleOpenChange]);\n\n const openSelector = useCallback(() => {\n setRowSelection({});\n setSelectedItems([]);\n setOpen(true);\n }, []);\n\n useEffect(() => {\n const ids = Object.entries(rowSelection)\n .filter(([, v]) => v)\n .map(([id]) => id);\n setSelectedItems((prev) => {\n const next = ids\n .map(\n (id) =>\n items.find((u) => u.id === id) ?? prev.find((u) => u.id === id),\n )\n .filter((u): u is T => Boolean(u));\n if (\n next.length === prev.length &&\n next.every((u, i) => u.id === prev[i]?.id)\n ) {\n return prev;\n }\n return next;\n });\n }, [rowSelection, items]);\n\n const handleRowSelectionChange = useCallback(\n (\n updater:\n | Record<string, boolean>\n | ((prev: Record<string, boolean>) => Record<string, boolean>),\n ) => {\n setRowSelection((prev) => {\n const next = typeof updater === 'function' ? updater(prev) : updater;\n if (!multiple) {\n const keys = Object.entries(next)\n .filter(([, v]) => v)\n .map(([k]) => k);\n const last = keys.at(-1);\n if (keys.length > 1 && last) {\n return { [last]: true };\n }\n }\n return next;\n });\n },\n [multiple],\n );\n\n const onToggleRowSelection = useCallback(\n (rowId: string, selected: boolean) => {\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: selection rules for single/multi + maxSelect\n handleRowSelectionChange((prev) => {\n if (multiple) {\n if (selected && maxSelect !== undefined) {\n const currentCount = Object.values(prev).filter(Boolean).length;\n if (currentCount >= maxSelect) {\n return prev;\n }\n }\n return { ...prev, [rowId]: selected };\n }\n return selected ? { [rowId]: true } : {};\n });\n },\n [multiple, maxSelect, handleRowSelectionChange],\n );\n\n const selectedId =\n Object.keys(rowSelection).find((id) => rowSelection[id]) ?? '';\n const { total, pageCount } = useEntityPagination({\n items,\n total: totalProp,\n pageSize: state.pageSize,\n });\n const colCount = columnCount ?? columns.length + 1;\n\n const handleSearch = useCallback(\n (v: string) => {\n state.setSearch(v);\n state.setPageReset();\n },\n [state],\n );\n const handleFilter = useCallback(\n (v: string) => {\n state.setFilter(v);\n state.setPageReset();\n },\n [state],\n );\n const handleSort = useCallback(\n (v: string) => {\n state.setSort(v);\n state.setPageReset();\n },\n [state],\n );\n const handleOrder = useCallback(\n (v: 'asc' | 'desc') => {\n state.setOrder(v);\n state.setPageReset();\n },\n [state],\n );\n\n let content: ReactNode;\n if (isLoading) {\n content = (\n <EntityLoadingState\n view={state.view === 'list' ? 'table' : state.view}\n rowCount={state.pageSize}\n columnCount={colCount}\n cardCount={state.pageSize}\n />\n );\n } else if (total === 0) {\n content = (\n <EntityEmptyState\n icon={EntityIcon}\n entityName={entityName}\n title={emptyTitle ?? `No ${entityName}s found`}\n description={emptyDescription ?? 'Try adjusting search or filters.'}\n />\n );\n } else {\n content = (\n <>\n <EntityHeader\n wrapInCard={wrapHeaderInCard}\n title=\"\"\n search={\n searchPlaceholder !== undefined && (\n <EntitySearchState\n value={state.search}\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n />\n )\n }\n filter={\n filterOptions.length > 0 ? (\n <EntityFilterState\n value={state.filter}\n onValueChange={handleFilter}\n options={filterOptions}\n placeholder=\"Filter\"\n />\n ) : undefined\n }\n sort={\n sortOptions.length > 0 ? (\n <EntitySortState\n sort={state.sort}\n order={state.order}\n onSortChange={handleSort}\n onOrderChange={handleOrder}\n options={sortOptions}\n />\n ) : undefined\n }\n view={\n showViewToggle && renderCard ? (\n <EntityViewToggleState\n value={state.view}\n onValueChange={state.setView}\n views={['table', 'card']}\n />\n ) : undefined\n }\n />\n {state.view === 'table' || !renderCard ? (\n <div className=\"space-y-4\">\n {multiple ? (\n <DisplayTable withTableBorder>\n <Thead>\n <Tr>\n <Th className=\"w-[50px]\" />\n {columns.map((col) => (\n <Th key={col.key} className={col.className}>\n {col.header}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {items.map((item) => (\n <Tr\n key={item.id}\n className=\"group\"\n data-state={\n rowSelection[item.id] ? 'selected' : undefined\n }\n >\n <Td>\n <Checkbox\n checked={!!rowSelection[item.id]}\n onCheckedChange={(checked) =>\n onToggleRowSelection(item.id, !!checked)\n }\n aria-label={`Select ${getItemLabel(item)}`}\n />\n </Td>\n {columns.map((col) => (\n <Td key={col.key} className={col.className}>\n {col.cell(item)}\n </Td>\n ))}\n </Tr>\n ))}\n </Tbody>\n </DisplayTable>\n ) : (\n <div className=\"mb-4\">\n <RadioGroup\n className=\"contents\"\n value={selectedId}\n onChange={(valueOrEvent: unknown) => {\n const id =\n typeof valueOrEvent === 'string'\n ? valueOrEvent\n : (valueOrEvent as { target?: { value?: string } })\n .target?.value;\n if (id) {\n handleRowSelectionChange(() => ({ [id]: true }));\n }\n }}\n >\n <DisplayTable withTableBorder>\n <Thead>\n <Tr>\n <Th className=\"w-[50px]\" />\n {columns.map((col) => (\n <Th key={col.key} className={col.className}>\n {col.header}\n </Th>\n ))}\n </Tr>\n </Thead>\n <Tbody>\n {items.map((item) => (\n <Tr\n key={item.id}\n className={cn(\n 'group cursor-pointer transition-colors hover:bg-muted/50',\n rowSelection[item.id] && 'bg-muted/50',\n )}\n data-state={\n rowSelection[item.id] ? 'selected' : undefined\n }\n onClick={() => onToggleRowSelection(item.id, true)}\n >\n <Td className=\"w-[50px] align-middle\">\n <RadioGroupItem value={item.id} />\n </Td>\n {columns.map((col) => (\n <Td key={col.key} className={col.className}>\n {col.cell(item)}\n </Td>\n ))}\n </Tr>\n ))}\n </Tbody>\n </DisplayTable>\n </RadioGroup>\n </div>\n )}\n <DataTablePagination\n pageIndex={state.page - 1}\n pageSize={state.pageSize}\n pageCount={pageCount}\n totalRows={total}\n onPageChange={(p) => state.setPage(p + 1)}\n onPageSizeChange={(size) => {\n state.setPageSize(size);\n state.setPage(1);\n }}\n />\n </div>\n ) : (\n <div className=\"space-y-4\">\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n {items.map((item) => (\n <div key={item.id}>\n {renderCard(item, Boolean(rowSelection[item.id]), () =>\n handleRowSelectionChange(\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: card selection toggle logic\n (prev) => {\n if (multiple) {\n const isSelected = prev[item.id];\n if (!isSelected && maxSelect !== undefined) {\n const currentCount =\n Object.values(prev).filter(Boolean).length;\n if (currentCount >= maxSelect) {\n return prev;\n }\n }\n return { ...prev, [item.id]: !isSelected };\n }\n return prev[item.id] ? {} : { [item.id]: true };\n },\n ),\n )}\n </div>\n ))}\n </div>\n <DataTablePagination\n pageIndex={state.page - 1}\n pageSize={state.pageSize}\n pageCount={pageCount}\n totalRows={total}\n onPageChange={(p) => state.setPage(p + 1)}\n onPageSizeChange={(size) => {\n state.setPageSize(size);\n state.setPage(1);\n }}\n />\n </div>\n )}\n </>\n );\n }\n\n return (\n <>\n {/* biome-ignore lint/a11y/useSemanticElements: div avoids nested button when trigger is Button */}\n <div\n role=\"button\"\n tabIndex={0}\n onClick={openSelector}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openSelector();\n }\n }}\n className=\"inline-block cursor-pointer\"\n >\n {trigger}\n </div>\n <EntitySelectorModal\n open={open}\n onOpenChange={handleOpenChange}\n title={title}\n size={modalSize}\n contentClassName={contentClassName}\n footer={\n <EntitySelectorFooter\n onCancel={() => handleOpenChange(false)}\n onSelect={handleSelect}\n selectedCount={selectedItems.length}\n multiple={multiple}\n minSelect={minSelect}\n maxSelect={maxSelect}\n />\n }\n >\n <div className=\"flex flex-col gap-4\">\n {selectedItems.length > 0 && (\n <div className=\"cn-selector-selected-bar\">\n <span className=\"cn-selector-selected-bar-label\">Selected:</span>\n {selectedItems.map((item) => (\n <Chip\n key={item.id}\n variant=\"secondary\"\n removable={multiple}\n onRemove={\n multiple\n ? () =>\n setRowSelection((prev) => ({\n ...prev,\n [item.id]: false,\n }))\n : undefined\n }\n >\n {getItemLabel(item)}\n </Chip>\n ))}\n </div>\n )}\n {content}\n </div>\n </EntitySelectorModal>\n </>\n );\n}\n","'use client';\n\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { IconCheck } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport type { ComponentColor, ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype CheckboxProps = React.ComponentProps<typeof CheckboxPrimitive.Root> & {\n size?: ComponentSize;\n color?: ComponentColor;\n};\n\nfunction Checkbox({\n className,\n size = 'md',\n color: _color,\n ...props\n}: CheckboxProps) {\n const sizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3.5',\n sm: 'size-4',\n md: 'size-4',\n lg: 'size-5',\n xl: 'size-6',\n };\n\n const iconSizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-3.5',\n lg: 'size-4',\n xl: 'size-5',\n };\n\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n 'cn-checkbox peer relative shrink-0 outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n sizeClasses[size],\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className={cn(\n 'cn-checkbox-indicator grid place-content-center text-current transition-none',\n )}\n >\n <IconCheck className={cn(iconSizeClasses[size])} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\nexport type { CheckboxProps };\n","'use client';\n\nimport { IconX } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst chipVariants = cva(\n 'cn-chip inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium transition-colors border',\n {\n variants: {\n variant: {\n default: 'cn-chip-variant-default',\n secondary: 'cn-chip-variant-secondary',\n outline: 'cn-chip-variant-outline',\n input: 'cn-chip-variant-input',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ntype ChipProps = React.ComponentProps<'div'> &\n VariantProps<typeof chipVariants> & {\n onRemove?: () => void;\n removable?: boolean;\n };\n\nfunction Chip({\n className,\n variant,\n onRemove,\n removable = true,\n children,\n ...props\n}: ChipProps) {\n return (\n <div\n data-slot=\"chip\"\n className={cn(chipVariants({ variant }), className)}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n {removable && onRemove && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"cn-chip-remove -mr-1 p-0.5 transition-colors cursor-pointer\"\n aria-label=\"Remove\"\n >\n <IconX className=\"size-3\" />\n </button>\n )}\n </div>\n );\n}\n\nexport { Chip, chipVariants };\n","'use client';\n\nimport {\n IconChevronLeft,\n IconChevronRight,\n IconChevronsLeft,\n IconChevronsRight,\n} from '@tabler/icons-react';\nimport { useTranslations } from 'next-intl';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../select';\n\ntype DataTablePaginationProps = {\n pageIndex: number;\n pageSize: number;\n pageCount: number;\n totalRows: number;\n selectedRows?: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n pageSizeOptions?: number[];\n};\n\nfunction addRange(pages: (number | string)[], start: number, end: number) {\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n}\n\nfunction getPageNumbers(pageIndex: number, pageCount: number) {\n const total = pageCount || 1;\n const current = pageIndex + 1;\n const pages: (number | string)[] = [];\n\n if (total <= 1) {\n return [1];\n }\n\n if (total <= 5) {\n addRange(pages, 1, total);\n return pages;\n }\n\n pages.push(1);\n\n const isNearStart = current <= 3;\n const isNearEnd = current >= total - 2;\n\n if (isNearStart) {\n addRange(pages, 2, 4);\n pages.push('ellipsis', total);\n } else if (isNearEnd) {\n pages.push('ellipsis');\n addRange(pages, total - 3, total);\n } else {\n pages.push('ellipsis');\n addRange(pages, current - 1, current + 1);\n pages.push('ellipsis', total);\n }\n\n return pages;\n}\n\nexport function DataTablePagination({\n pageIndex,\n pageSize,\n pageCount,\n totalRows,\n selectedRows = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 30, 50],\n}: DataTablePaginationProps) {\n const t = useTranslations('Pagination');\n\n if (pageCount <= 1) {\n return null;\n }\n\n const canPreviousPage = pageIndex > 0;\n const canNextPage = pageIndex < pageCount - 1;\n const pageNumbers = getPageNumbers(pageIndex, pageCount);\n\n const rowLabel = totalRows === 1 ? t('row') : t('rows');\n const hasSelection = selectedRows > 0;\n const rowText = hasSelection\n ? `${selectedRows} ${t('of')} ${totalRows} ${rowLabel} ${t('selected')}`\n : `${totalRows} ${rowLabel} ${t('total')}`;\n const pageText = `${t('page')} ${pageIndex + 1} ${t('of')} ${pageCount || 1}`;\n\n return (\n <div className=\"cn-data-table-pagination flex flex-col sm:flex-row\">\n <div className=\"cn-data-table-pagination-left flex items-center justify-center sm:justify-start\">\n <div className=\"cn-data-table-pagination-summary text-muted-foreground\">\n <span>\n {rowText}\n <span className=\"mx-2\">·</span>\n {pageText}\n </span>\n </div>\n <div className=\"cn-data-table-pagination-size flex items-center\">\n <span className=\"cn-data-table-pagination-size-label font-medium whitespace-nowrap\">\n {t('rowsPerPage')}\n </span>\n <Select\n value={`${pageSize}`}\n onValueChange={(value) => onPageSizeChange(Number(value))}\n >\n <SelectTrigger\n className={cn('cn-data-table-pagination-size-trigger w-[70px]')}\n >\n <SelectValue placeholder={pageSize} />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={`${size}`}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n <div className=\"cn-data-table-pagination-right flex justify-center sm:justify-end\">\n <nav\n aria-label=\"Pagination\"\n className=\"cn-data-table-pagination-nav flex items-center gap-1\"\n >\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn hidden h-8 w-8 lg:flex\"\n onClick={() => onPageChange(0)}\n disabled={!canPreviousPage}\n aria-label={t('firstPage')}\n >\n <IconChevronsLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('firstPage')}</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn h-8 w-8\"\n onClick={() => onPageChange(pageIndex - 1)}\n disabled={!canPreviousPage}\n aria-label={t('previousPage')}\n >\n <IconChevronLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('previousPage')}</span>\n </Button>\n {pageNumbers.map((page, idx) => {\n if (page === 'ellipsis') {\n const prevPage = idx > 0 ? pageNumbers[idx - 1] : null;\n const nextPage =\n idx < pageNumbers.length - 1 ? pageNumbers[idx + 1] : null;\n return (\n <span\n key={`ellipsis-${prevPage}-${nextPage}`}\n className=\"cn-data-table-pagination-ellipsis flex h-8 w-8 items-center justify-center text-muted-foreground\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n );\n }\n const pageNum = page as number;\n const isActive = pageNum === pageIndex + 1;\n return (\n <Button\n key={pageNum}\n variant={isActive ? 'default' : 'outline'}\n size=\"icon\"\n className=\"cn-data-table-pagination-page-btn h-8 w-8\"\n onClick={() => onPageChange(pageNum - 1)}\n aria-label={`${t('goToPage')} ${pageNum}`}\n aria-current={isActive ? 'page' : undefined}\n >\n {pageNum}\n </Button>\n );\n })}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn h-8 w-8\"\n onClick={() => onPageChange(pageIndex + 1)}\n disabled={!canNextPage}\n aria-label={t('nextPage')}\n >\n <IconChevronRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('nextPage')}</span>\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"cn-data-table-pagination-icon-btn hidden h-8 w-8 lg:flex\"\n onClick={() => onPageChange(pageCount - 1)}\n disabled={!canNextPage}\n aria-label={t('lastPage')}\n >\n <IconChevronsRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">{t('lastPage')}</span>\n </Button>\n </nav>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport { Radio as RadioPrimitive } from '@base-ui/react/radio';\nimport { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';\nimport type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive>) {\n return (\n <RadioGroupPrimitive\n data-slot=\"radio-group\"\n className={cn('cn-radio-group w-full', className)}\n {...props}\n />\n );\n}\n\ntype RadioGroupItemProps = React.ComponentProps<typeof RadioPrimitive.Root> & {\n size?: ComponentSize;\n variant?: 'outline' | 'filled';\n};\n\nfunction RadioGroupItem({\n className,\n size = 'md',\n variant = 'outline',\n ...props\n}: RadioGroupItemProps) {\n const sizeClasses: Record<ComponentSize, string> = {\n xs: 'size-3.5',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-6',\n xl: 'size-7',\n };\n\n const dotSizeClasses: Record<ComponentSize, string> = {\n xs: 'size-1.5',\n sm: 'size-1',\n md: 'size-1.5',\n lg: 'size-2.5',\n xl: 'size-3',\n };\n\n return (\n <RadioPrimitive.Root\n data-slot=\"radio-group-item\"\n data-variant={variant}\n className={cn(\n 'cn-radio-group-item group/radio-group-item peer relative aspect-square shrink-0 border outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed',\n 'aria-disabled:!bg-muted aria-disabled:!border-muted-foreground/25',\n 'aria-disabled:!shadow-none aria-disabled:!text-muted-foreground',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:cursor-not-allowed',\n sizeClasses[size],\n variant === 'outline' && [\n 'aria-checked:border-primary aria-checked:bg-background',\n 'aria-checked:text-primary',\n ],\n variant === 'filled' && [\n 'aria-checked:border-primary aria-checked:bg-primary',\n 'aria-checked:text-primary-foreground',\n ],\n className,\n )}\n {...props}\n >\n <RadioPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"cn-radio-group-indicator\"\n >\n <span\n data-slot=\"radio-group-indicator-icon\"\n className={cn(\n 'cn-radio-group-indicator-icon',\n dotSizeClasses[size],\n variant === 'outline' && 'bg-primary',\n variant === 'filled' && 'bg-primary-foreground',\n 'group-aria-disabled/radio-group-item:!bg-muted-foreground',\n )}\n />\n </RadioPrimitive.Indicator>\n </RadioPrimitive.Root>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\nexport type { RadioGroupItemProps };\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from '../ui/dialog';\n\nexport type EntitySelectorModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nconst modalSizeClasses: Record<EntitySelectorModalSize, string> = {\n sm: 'sm:max-w-[28rem]',\n md: 'sm:max-w-[36rem]',\n lg: 'sm:max-w-[42rem]',\n xl: 'sm:max-w-[56rem]',\n full: 'sm:max-w-[calc(100vw-2rem)] sm:h-[calc(100vh-2rem)]',\n};\n\ntype EntitySelectorModalProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: ReactNode;\n size?: EntitySelectorModalSize;\n contentClassName?: string;\n footer?: ReactNode;\n children: ReactNode;\n};\n\nexport function EntitySelectorModal({\n open,\n onOpenChange,\n title,\n size = 'xl',\n contentClassName,\n footer,\n children,\n}: EntitySelectorModalProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n className={cn(\n 'flex max-h-[90vh] min-w-[280px] flex-col gap-0 p-0 sm:min-w-[320px]',\n modalSizeClasses[size],\n )}\n showCloseButton\n >\n {title && (\n <DialogHeader className=\"cn-selector-modal-header\">\n <DialogTitle>{title}</DialogTitle>\n </DialogHeader>\n )}\n <div\n className={cn(\n 'cn-selector-modal-body min-h-0 flex-1 overflow-y-auto',\n contentClassName,\n )}\n >\n {children}\n </div>\n {footer && (\n <DialogFooter className=\"cn-selector-modal-footer\">\n {footer}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n );\n}\n","type PaginationData = {\n items: unknown[];\n total?: number | string | null;\n pageSize: number;\n};\n\nexport function useEntityPagination({\n items,\n total,\n pageSize,\n}: PaginationData) {\n const totalCount = Number(total ?? items.length);\n const pageCount = Math.ceil(totalCount / pageSize);\n\n return {\n total: totalCount,\n pageCount,\n hasData: items.length > 0,\n isEmpty: totalCount === 0,\n };\n}\n","'use client';\n\nimport {\n IconSortAscendingLetters,\n IconSortDescendingLetters,\n} from '@tabler/icons-react';\nimport { parseAsInteger, parseAsString, useQueryState } from 'nuqs';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger } from '../ui/select';\n\ntype SortOption = {\n label: string;\n value: string;\n};\n\ntype EntitySortProps = {\n options: SortOption[];\n defaultSort?: string;\n defaultOrder?: 'asc' | 'desc';\n className?: string;\n};\n\nexport function EntitySort({\n options,\n defaultSort = 'createdAt',\n defaultOrder = 'desc',\n className,\n}: EntitySortProps) {\n const [sort, setSort] = useQueryState(\n 'sort',\n parseAsString.withDefault(defaultSort),\n );\n const [order, setOrder] = useQueryState(\n 'order',\n parseAsString.withDefault(defaultOrder),\n );\n const [, setPage] = useQueryState('page', parseAsInteger.withDefault(1));\n\n const handleSortChange = (value: string) => {\n setSort(value);\n setPage(1);\n };\n\n const toggleOrder = () => {\n setOrder(order === 'asc' ? 'desc' : 'asc');\n setPage(1);\n };\n\n const sortLabel = options.find((o) => o.value === sort)?.label;\n\n return (\n <div className={cn('flex w-full items-center gap-0', className)}>\n <div className=\"min-w-0 flex-1\">\n <Select\n value={sort}\n onValueChange={(v) => handleSortChange(v as string)}\n >\n <SelectTrigger className=\"h-9 w-full min-w-[150px] rounded-r-none border-r-0\">\n <span\n className={cn(\n 'line-clamp-1 flex items-center gap-2',\n !sortLabel && 'text-muted-foreground',\n )}\n >\n {sortLabel ?? 'Sort by'}\n </span>\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-9 shrink-0 rounded-l-none\"\n onClick={toggleOrder}\n >\n {order === 'asc' ? (\n <IconSortAscendingLetters className=\"h-4 w-4\" />\n ) : (\n <IconSortDescendingLetters className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport { IconGridDots, IconList, IconTable } from '@tabler/icons-react';\nimport { parseAsString, useQueryState } from 'nuqs';\nimport type { ReactNode } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Tabs, TabsList, TabsTrigger } from '../ui/tabs';\n\ntype ViewOption = 'table' | 'card' | 'list';\n\ntype EntityViewToggleProps = {\n views?: ViewOption[];\n className?: string;\n};\n\nconst viewIcons: Record<ViewOption, ReactNode> = {\n table: <IconTable className=\"size-4\" />,\n card: <IconGridDots className=\"size-4\" />,\n list: <IconList className=\"size-4\" />,\n};\n\nexport function EntityViewToggle({\n views = ['table', 'card'],\n className,\n}: EntityViewToggleProps) {\n const [value, setValue] = useQueryState(\n 'view',\n parseAsString.withDefault('table'),\n );\n\n return (\n <Tabs\n value={value}\n onValueChange={(v) => setValue(v as ViewOption)}\n className={cn('w-full! md:w-auto!', className)}\n >\n <TabsList className=\"cn-entity-view-toggle w-full! md:w-auto!\">\n {views.map((v) => (\n <TabsTrigger\n key={v}\n value={v}\n aria-label={`${v} view`}\n className=\"min-w-0 flex-1 px-3\"\n >\n {viewIcons[v]}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","'use client';\n\nimport { parseAsInteger, parseAsString, useQueryStates } from 'nuqs';\nimport { useMemo } from 'react';\n\ntype EntityParamsConfig = {\n searchKey?: string;\n searchParamName?: string;\n defaultSort?: string;\n defaultOrder?: 'asc' | 'desc';\n defaultPageSize?: number;\n};\n\nexport function useEntityParams(config: EntityParamsConfig = {}) {\n const {\n searchKey = 'search',\n searchParamName,\n defaultSort = 'createdAt',\n defaultOrder = 'desc',\n defaultPageSize = 10,\n } = config;\n\n const [params, setParams] = useQueryStates({\n ...(searchKey && {\n [searchKey]: parseAsString.withDefault(''),\n }),\n view: parseAsString.withDefault('table'),\n page: parseAsInteger.withDefault(1),\n pageSize: parseAsInteger.withDefault(defaultPageSize),\n filter: parseAsString,\n sort: parseAsString.withDefault(defaultSort),\n order: parseAsString.withDefault(defaultOrder),\n });\n\n const queryConfig = useMemo(\n () => ({\n params: {\n query: {\n page: params.page,\n limit: params.pageSize,\n ...(searchKey &&\n (params as Record<string, string | number | null | undefined>)[\n searchKey\n ] && {\n [searchParamName ||\n (searchKey === 'search' ? 'search' : 'handle')]: (\n params as Record<string, string | number | null | undefined>\n )[searchKey],\n }),\n ...(params.filter && { filter: params.filter }),\n ...(params.sort && { sort: params.sort, order: params.order }),\n },\n },\n }),\n [params, searchKey, searchParamName],\n );\n\n return {\n params,\n setParams,\n queryConfig,\n };\n}\n","'use client';\n\nimport { useCallback, useMemo, useState } from 'react';\n\nexport type EntitySectionView = 'table' | 'card' | 'list';\n\ntype FilterOption = { label: string; value: string };\ntype SortOption = { label: string; value: string };\n\nexport type EntityParams = {\n search: string;\n filter: string;\n sort: string;\n order: 'asc' | 'desc';\n view: EntitySectionView;\n page: number;\n pageSize: number;\n};\n\nexport type UseEntitySectionStateConfig = {\n defaultSort?: string;\n defaultOrder?: 'asc' | 'desc';\n defaultPageSize?: number;\n defaultView?: EntitySectionView;\n searchPlaceholder?: string;\n /** API query param name for search (default 'search') */\n searchParamName?: string;\n filterOptions?: FilterOption[];\n sortOptions?: SortOption[];\n views?: EntitySectionView[];\n};\n\nexport function useEntitySectionState(\n config: UseEntitySectionStateConfig = {},\n) {\n const {\n defaultSort = 'createdAt',\n defaultOrder = 'desc',\n defaultPageSize = 10,\n defaultView = 'table',\n searchParamName = 'search',\n filterOptions = [],\n sortOptions = [\n { label: 'Created', value: 'createdAt' },\n { label: 'Updated', value: 'updatedAt' },\n { label: 'Code', value: 'code' },\n ],\n views = ['table', 'card'],\n } = config;\n\n const [search, setSearch] = useState('');\n const [filter, setFilter] = useState('');\n const [sort, setSort] = useState(defaultSort);\n const [order, setOrder] = useState<'asc' | 'desc'>(defaultOrder);\n const [view, setView] = useState<EntitySectionView>(defaultView);\n const [page, setPage] = useState(1);\n const [pageSize, setPageSize] = useState(defaultPageSize);\n\n const setPageReset = useCallback(() => setPage(1), []);\n\n const queryConfig = useMemo(\n () => ({\n params: {\n query: {\n page,\n limit: pageSize,\n ...(search && { [searchParamName]: search }),\n ...(filter && { filter }),\n ...(sort && { sort, order }),\n },\n },\n }),\n [page, pageSize, search, filter, sort, order, searchParamName],\n );\n\n const params: EntityParams = useMemo(\n () => ({\n search,\n filter,\n sort,\n order,\n view,\n page,\n pageSize,\n }),\n [search, filter, sort, order, view, page, pageSize],\n );\n\n const setParams = useCallback((update: Partial<EntityParams>) => {\n if (update.search !== undefined) {\n setSearch(update.search);\n }\n if (update.filter !== undefined) {\n setFilter(update.filter);\n }\n if (update.sort !== undefined) {\n setSort(update.sort);\n }\n if (update.order !== undefined) {\n setOrder(update.order);\n }\n if (update.view !== undefined) {\n setView(update.view);\n }\n if (update.page !== undefined) {\n setPage(update.page);\n }\n if (update.pageSize !== undefined) {\n setPageSize(update.pageSize);\n }\n }, []);\n\n return {\n search,\n setSearch,\n filter,\n setFilter,\n sort,\n setSort,\n order,\n setOrder,\n view,\n setView,\n page,\n setPage,\n pageSize,\n setPageSize,\n setPageReset,\n queryConfig,\n params,\n setParams,\n filterOptions,\n sortOptions,\n views,\n };\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageBodyProps = {\n className?: string;\n children: ReactNode;\n};\n\nexport function PageBody({ className, children }: PageBodyProps) {\n return (\n <div className={cn('flex flex-col gap-4 px-4', className)}>{children}</div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageContainerProps = {\n className?: string;\n children: ReactNode;\n};\n\nexport function PageContainer({ className, children }: PageContainerProps) {\n return (\n <div className={cn('flex flex-1 flex-col gap-4 p-4 pt-0', className)}>\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageSectionProps = {\n title?: ReactNode;\n className?: string;\n children: ReactNode;\n};\n\nexport function PageSection({ title, className, children }: PageSectionProps) {\n return (\n <div className={cn('flex flex-col gap-4', className)}>\n {title ? <h4 className=\"font-medium text-foreground\">{title}</h4> : null}\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageSubTitleProps = {\n className?: string;\n children: ReactNode;\n};\n\nexport function PageSubTitle({ className, children }: PageSubTitleProps) {\n return (\n <span className={cn('text-sm text-muted-foreground', className)}>\n {children}\n </span>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '../../../lib/utils';\n\ntype PageTitleProps = {\n icon?: ReactNode;\n back?: ReactNode;\n action?: ReactNode;\n children: ReactNode;\n className?: string;\n};\n\nexport function PageTitle({\n icon,\n back,\n action,\n children,\n className,\n}: PageTitleProps) {\n return (\n <div\n className={cn(\n 'cn-page-title flex min-h-12 items-center gap-2 text-foreground',\n className,\n )}\n >\n {back ?? null}\n {icon ?? null}\n <div className=\"flex grow items-center justify-between\">\n <h3 className=\"font-medium\">{children}</h3>\n {action ?? null}\n </div>\n </div>\n );\n}\n","'use client';\n\nimport {\n IconAlertTriangle,\n IconCircleCheck,\n IconInfoCircle,\n IconLoader2,\n IconX,\n} from '@tabler/icons-react';\nimport { useTheme } from 'next-themes';\nimport type { CSSProperties } from 'react';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n const toastOptions: ToasterProps['toastOptions'] = {\n ...props.toastOptions,\n classNames: {\n toast: [\n 'cn-toast group toast',\n 'group-[.toaster]:bg-background',\n 'group-[.toaster]:text-foreground',\n 'group-[.toaster]:border-border',\n 'group-[.toaster]:shadow-lg',\n props.toastOptions?.classNames?.toast,\n ]\n .filter(Boolean)\n .join(' '),\n description: [\n 'group-[.toast]:text-muted-foreground',\n props.toastOptions?.classNames?.description,\n ]\n .filter(Boolean)\n .join(' '),\n actionButton: [\n 'group-[.toast]:bg-primary',\n 'group-[.toast]:text-primary-foreground',\n props.toastOptions?.classNames?.actionButton,\n ]\n .filter(Boolean)\n .join(' '),\n cancelButton: [\n 'group-[.toast]:bg-muted',\n 'group-[.toast]:text-muted-foreground',\n props.toastOptions?.classNames?.cancelButton,\n ]\n .filter(Boolean)\n .join(' '),\n ...props.toastOptions?.classNames,\n },\n };\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className=\"toaster group\"\n icons={{\n success: <IconCircleCheck className=\"size-4\" />,\n info: <IconInfoCircle className=\"size-4\" />,\n warning: <IconAlertTriangle className=\"size-4\" />,\n error: <IconX className=\"size-4\" />,\n loading: <IconLoader2 className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n '--normal-bg': 'var(--popover)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n '--border-radius': 'var(--radius)',\n } as CSSProperties & Record<string, string>\n }\n toastOptions={toastOptions}\n {...props}\n />\n );\n};\n\nexport { Toaster };\nexport { toast } from 'sonner';\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { AppBreadcrumbs, BreadcrumbProvider } from '../app/app-breadcrumbs';\nimport { Separator } from '../ui/separator';\nimport { SidebarInset, SidebarProvider, SidebarTrigger } from '../ui/sidebar';\nimport { Toaster } from '../ui/sonner';\n\ntype ShellProps = {\n sidebar: React.ReactNode;\n headerActions?: React.ReactNode;\n children: React.ReactNode;\n showToaster?: boolean;\n contentClassName?: string;\n};\n\nexport function Shell({\n sidebar,\n headerActions,\n children,\n showToaster = true,\n contentClassName,\n}: ShellProps) {\n return (\n <BreadcrumbProvider>\n <SidebarProvider>\n {sidebar}\n <SidebarInset>\n <header className=\"cn-shell-header\">\n <div className=\"flex items-center gap-2\">\n <SidebarTrigger className=\"-ml-1\" />\n <div className=\"hidden md:flex md:items-center md:gap-2\">\n <Separator\n orientation=\"vertical\"\n className=\"mr-2 data-[orientation=vertical]:h-4\"\n />\n <AppBreadcrumbs />\n </div>\n </div>\n {headerActions}\n </header>\n <div\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-4 overflow-auto p-4',\n contentClassName,\n )}\n >\n <div className=\"mx-auto w-full max-w-7xl\">{children}</div>\n </div>\n </SidebarInset>\n {showToaster && <Toaster />}\n </SidebarProvider>\n </BreadcrumbProvider>\n );\n}\n","'use client';\n\nimport {\n IconArrowsMaximize,\n IconTextRecognition,\n IconX,\n} from '@tabler/icons-react';\nimport { useState } from 'react';\nimport type { Control, FieldError } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { useLocaleConfig } from '../../provider/mesob-provider';\nimport { RichTextInput } from '../rich-text/rich-text-input';\nimport { Dialog, DialogContent, DialogTitle } from '../ui/dialog';\nimport { Label } from '../ui/label';\nimport { VisuallyHidden } from '../ui/visually-hidden';\n\nexport type LocaleInputRichTextProps = {\n label?: string;\n required?: boolean;\n field: string;\n control: Control<any>;\n errors?: Record<string, unknown>;\n className?: string;\n enabledControllers?: string[];\n placeholder?: string;\n mode?: 'small' | 'large';\n};\n\nexport function LocaleInputRichText({\n label,\n required,\n field,\n control,\n errors,\n className,\n enabledControllers = [],\n placeholder,\n mode = 'large',\n}: LocaleInputRichTextProps) {\n const [expanded, setExpanded] = useState(false);\n const [fullscreen, setFullscreen] = useState(false);\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n const otherLanguages = supportedLanguages.filter(\n (lang) => lang.value !== defaultLanguage,\n );\n\n return (\n <div className={cn('cn-locale-input', className)}>\n {label && (\n <Label>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n\n {/* Default Language Editor */}\n <div className=\"relative\">\n <Controller\n control={control}\n name={`${field}.${defaultLanguage}`}\n render={({ field: inputField }) => (\n <RichTextInput\n field={inputField}\n error={\n (errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]\n }\n enabledControllers={enabledControllers}\n placeholder={placeholder}\n mode={mode}\n />\n )}\n />\n <div className=\"absolute top-3 right-2 z-10 flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() => setFullscreen(true)}\n className=\"cn-locale-input-toggle-icon\"\n >\n <IconArrowsMaximize size={18} />\n </button>\n {otherLanguages.length > 0 && (\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n className=\"cn-locale-input-toggle-icon\"\n >\n <IconTextRecognition size={18} />\n </button>\n )}\n </div>\n </div>\n\n {/* Other Languages */}\n {expanded && otherLanguages.length > 0 && (\n <div className=\"cn-locale-input-expanded-rich\">\n {otherLanguages.map((lang) => (\n <div key={lang.value} className=\"space-y-2\">\n <Label className=\"text-xs text-muted-foreground\">\n {lang.label}\n </Label>\n <Controller\n control={control}\n name={`${field}.${lang.value}`}\n render={({ field: inputField }) => (\n <RichTextInput\n field={inputField}\n error={\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[lang.value]\n }\n enabledControllers={enabledControllers}\n placeholder={placeholder}\n mode={mode}\n />\n )}\n />\n </div>\n ))}\n </div>\n )}\n\n {/* Fullscreen Dialog */}\n <Dialog open={fullscreen} onOpenChange={setFullscreen}>\n <DialogContent\n showCloseButton={false}\n className={cn(\n 'cn-locale-input-fullscreen-content flex flex-col p-6',\n '!top-0 !left-0 !right-0 !bottom-0 !h-screen !w-screen !max-w-none !translate-x-0 !translate-y-0 !rounded-none',\n )}\n >\n <VisuallyHidden>\n <DialogTitle>\n {label || 'Edit content'} - Fullscreen editor\n </DialogTitle>\n </VisuallyHidden>\n <button\n type=\"button\"\n onClick={() => setFullscreen(false)}\n className=\"cn-locale-input-fullscreen-close\"\n >\n <IconX size={20} />\n </button>\n <div className=\"flex-1 overflow-auto flex items-start justify-center\">\n <div className=\"w-full max-w-5xl\">\n <Controller\n control={control}\n name={`${field}.${defaultLanguage}`}\n render={({ field: inputField }) => (\n <RichTextInput\n field={inputField}\n error={\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[defaultLanguage]\n }\n enabledControllers={enabledControllers}\n placeholder={placeholder}\n mode=\"large\"\n />\n )}\n />\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n","'use client';\n\nimport { useLocale } from 'next-intl';\nimport { createNavigation } from 'next-intl/navigation';\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport { TooltipProvider } from '../components/ui/tooltip';\nimport {\n DEFAULT_LANGUAGE,\n SUPPORTED_LANGUAGES,\n type SupportedLanguage,\n} from '../lib/locale';\n\ntype Navigation = ReturnType<typeof createNavigation>;\n\ntype MesobContextValue = {\n navigation: Navigation;\n linkComponent: Navigation['Link'];\n goBack: () => void;\n navigate: (href: string) => void;\n pathname: string;\n locale: string;\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n t?: (key: string, params?: Record<string, string | number>) => string;\n};\n\nconst MesobContext = createContext<MesobContextValue | null>(null);\n\nconst MESOB_ERR = '[MesobProvider]';\n\nexport type MesobProviderProps = {\n children: ReactNode;\n routing: Parameters<typeof createNavigation>[0];\n linkComponent?: Navigation['Link'];\n defaultLanguage?: string;\n supportedLanguages?: SupportedLanguage[];\n};\n\nexport function MesobProvider({\n children,\n routing,\n linkComponent: linkComponentProp,\n defaultLanguage = DEFAULT_LANGUAGE,\n supportedLanguages = SUPPORTED_LANGUAGES,\n}: MesobProviderProps) {\n if (!routing) {\n throw new Error(`${MESOB_ERR} routing is required`);\n }\n\n const locale = useLocale();\n const navigation = useMemo(() => createNavigation(routing), [routing]);\n const router = navigation.useRouter();\n const pathname = navigation.usePathname();\n\n const value = useMemo(() => {\n const linkComponent = linkComponentProp ?? navigation?.Link;\n if (!linkComponent) {\n throw new Error(\n `${MESOB_ERR} linkComponent or valid createNavigation required`,\n );\n }\n return {\n navigation,\n linkComponent,\n goBack: () => router.back(),\n navigate: (href: string) => router.push(href),\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n };\n }, [\n navigation,\n linkComponentProp,\n router,\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n ]);\n\n return (\n <MesobContext.Provider value={value}>\n <TooltipProvider delay={0}>{children}</TooltipProvider>\n </MesobContext.Provider>\n );\n}\n\nexport function useMesob(): MesobContextValue | null {\n return useContext(MesobContext);\n}\n\nexport function useLocaleConfig(): {\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n} {\n const mesob = useMesob();\n return {\n defaultLanguage: mesob?.defaultLanguage ?? DEFAULT_LANGUAGE,\n supportedLanguages: mesob?.supportedLanguages ?? SUPPORTED_LANGUAGES,\n };\n}\n","import { z } from 'zod';\n\nexport type LocaleKey = 'am' | 'en' | 'om' | 'ti' | 'so' | 'sw' | 'fr' | 'ar';\n\nexport type Locale = {\n [key in LocaleKey | string]?: string;\n};\n\nexport type Translation = (key: string) => string;\n\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport type SupportedLanguage = { value: string; label: string; key: string };\n\nexport const SUPPORTED_LANGUAGES: SupportedLanguage[] = [\n { value: 'en', label: 'English', key: 'En' },\n { value: 'am', label: 'አማርኛ', key: 'አማ' },\n];\n\nexport const LOCALE_INPUT_DEFAULT = Object.fromEntries(\n SUPPORTED_LANGUAGES.map(({ value }) => [value, '']),\n);\n\ntype SchemaAccumulator = {\n [key: string]: z.ZodTypeAny;\n};\n\nexport function createLocalInputSchema(\n defaultValidation: z.ZodTypeAny,\n otherValidation: z.ZodTypeAny,\n): z.ZodObject<SchemaAccumulator> {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n SUPPORTED_LANGUAGES.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] =\n value === DEFAULT_LANGUAGE ? defaultValidation : otherValidation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition);\n}\n\nexport function createLocalRequiredInputSchema(\n validation: z.ZodTypeAny,\n): z.ZodEffects<z.ZodObject<SchemaAccumulator>> {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n SUPPORTED_LANGUAGES.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] = validation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition).superRefine((data, ctx) => {\n const hasValue = Object.values(data).some(\n (value) => typeof value === 'string' && value.trim().length > 0,\n );\n\n if (!hasValue) {\n for (const { value } of SUPPORTED_LANGUAGES) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'field is required',\n path: [value],\n });\n }\n }\n });\n}\n\nexport const LOCALE_REQUIRED_INPUT_SCHEMA = createLocalRequiredInputSchema(\n z.string().optional(),\n);\n\nexport const LOCALE_OPTIONAL_INPUT_SCHEMA = createLocalInputSchema(\n z.string().optional(),\n z.string().optional(),\n);\n","'use client';\n\nimport {\n IconAlignCenter,\n IconAlignJustified,\n IconAlignLeft,\n IconAlignRight,\n IconBlockquote,\n IconBold,\n IconClearFormatting,\n IconCode,\n IconH1,\n IconH2,\n IconH3,\n IconH4,\n IconHighlight,\n IconItalic,\n IconLink,\n IconList,\n IconListNumbers,\n IconStrikethrough,\n IconSubscript,\n IconSuperscript,\n IconUnderline,\n IconUnlink,\n} from '@tabler/icons-react';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Highlight from '@tiptap/extension-highlight';\nimport Image from '@tiptap/extension-image';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport SubScript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport { Table } from '@tiptap/extension-table';\nimport { TableCell } from '@tiptap/extension-table-cell';\nimport { TableHeader } from '@tiptap/extension-table-header';\nimport { TableRow } from '@tiptap/extension-table-row';\nimport TextAlign from '@tiptap/extension-text-align';\nimport Underline from '@tiptap/extension-underline';\nimport Youtube from '@tiptap/extension-youtube';\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport type * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport type { ControllerRenderProps, FieldError } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { Label } from '../ui/label';\nimport { HardbreakControl } from './controls/hardbreak-control';\nimport { IframeControl } from './controls/iframe-control';\nimport { ImageControl } from './controls/image-control';\nimport { TableControl } from './controls/table-control';\nimport { YoutubeControl } from './controls/youtube-control';\nimport { CustomHeading } from './extensions/custom-heading';\nimport { Iframe } from './extensions/iframe-extension';\nimport {\n RichTextEditor,\n RichTextEditorContent,\n RichTextEditorControl,\n RichTextEditorControlsGroup,\n RichTextEditorToolbar,\n} from './rich-text-editor';\n\ntype RichTextInputProps = {\n // biome-ignore lint/suspicious/noExplicitAny: react-hook-form types\n field: ControllerRenderProps<any, any>;\n label?: React.ReactNode;\n error?: FieldError;\n className?: string;\n withAsterisk?: boolean;\n enabledControllers?: string[];\n mode?: 'small' | 'large';\n withOnUpdate?: boolean;\n placeholder?: string;\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: tiptap editor + toolbar\nexport function RichTextInput({\n field,\n label,\n error,\n className,\n withAsterisk,\n enabledControllers = [],\n mode = 'large',\n withOnUpdate = false,\n placeholder = 'Start typing...',\n}: RichTextInputProps) {\n const { value, onChange } = field;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const pendingHtmlRef = useRef(value ?? '');\n\n const editorOptions = useMemo(() => {\n const syncHtml = (html: string) => onChangeRef.current?.(html ?? '<p></p>');\n return {\n immediatelyRender: false,\n extensions: [\n StarterKit.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n bulletList: { HTMLAttributes: { class: 'list-disc pl-4' } },\n // biome-ignore lint/style/useNamingConvention: tiptap API\n orderedList: { HTMLAttributes: { class: 'list-decimal pl-4' } },\n }),\n HardBreak.configure({ keepMarks: false }),\n Underline,\n Link.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: { class: 'text-primary underline' },\n openOnClick: false,\n }),\n Superscript,\n SubScript,\n Highlight,\n TextAlign.configure({ types: ['heading', 'paragraph'] }),\n Placeholder.configure({ placeholder }),\n Image.configure({\n inline: true,\n allowBase64: true,\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'w-full h-auto my-3 rounded-[var(--radius-md)]',\n },\n }),\n Youtube.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: { class: 'w-full aspect-video my-4' },\n }),\n Table.configure({\n resizable: true,\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'border-collapse table-auto w-full my-4',\n },\n }),\n TableRow.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: { class: 'border border-border' },\n }),\n TableCell.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'border border-border p-2 min-w-[100px] min-h-[40px]',\n },\n }),\n TableHeader.configure({\n // biome-ignore lint/style/useNamingConvention: tiptap API\n HTMLAttributes: {\n class: 'border border-border p-2 bg-muted font-semibold',\n },\n }),\n CustomHeading,\n Iframe,\n ],\n content: value || '',\n ...(withOnUpdate\n ? {\n onUpdate: (props: { editor?: { getHTML: () => string } }) => {\n const html = props?.editor?.getHTML() ?? '<p></p>';\n pendingHtmlRef.current = html;\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n debounceRef.current = setTimeout(() => {\n debounceRef.current = null;\n syncHtml(pendingHtmlRef.current ?? '<p></p>');\n }, 300);\n },\n onBlur: (props: { editor?: { getHTML: () => string } }) => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n syncHtml(props?.editor?.getHTML() ?? '<p></p>');\n },\n }\n : {\n onBlur: (props: { editor?: { getHTML: () => string } }) =>\n syncHtml(props?.editor?.getHTML() ?? '<p></p>'),\n }),\n };\n }, [value, withOnUpdate, placeholder]);\n\n const editor = useEditor(editorOptions);\n\n const enabledControllersLength = enabledControllers.length;\n\n const isControllerEnabled = (controller: string) =>\n enabledControllersLength === 0 || enabledControllers.includes(controller);\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n {label && (\n <Label>\n {label}\n {withAsterisk && <span className=\"text-destructive\">*</span>}\n </Label>\n )}\n <RichTextEditor editor={editor}>\n <RichTextEditorToolbar>\n <RichTextEditorControlsGroup>\n {isControllerEnabled('bold') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleBold().run()}\n active={editor?.isActive('bold')}\n disabled={!editor?.can().chain().focus().toggleBold().run()}\n aria-label=\"Bold\"\n title=\"Bold\"\n >\n <IconBold className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('italic') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleItalic().run()}\n active={editor?.isActive('italic')}\n disabled={!editor?.can().chain().focus().toggleItalic().run()}\n aria-label=\"Italic\"\n title=\"Italic\"\n >\n <IconItalic className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('code') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleCode().run()}\n active={editor?.isActive('code')}\n disabled={!editor?.can().chain().focus().toggleCode().run()}\n aria-label=\"Code\"\n title=\"Code\"\n >\n <IconCode className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('underline') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleUnderline().run()}\n active={editor?.isActive('underline')}\n disabled={\n !editor?.can().chain().focus().toggleUnderline().run()\n }\n aria-label=\"Underline\"\n title=\"Underline\"\n >\n <IconUnderline className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('strikethrough') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleStrike().run()}\n active={editor?.isActive('strike')}\n disabled={!editor?.can().chain().focus().toggleStrike().run()}\n aria-label=\"Strikethrough\"\n title=\"Strikethrough\"\n >\n <IconStrikethrough className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('clearFormatting') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().clearNodes().unsetAllMarks().run()\n }\n aria-label=\"Clear formatting\"\n title=\"Clear formatting\"\n >\n <IconClearFormatting className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('highlight') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleHighlight().run()}\n active={editor?.isActive('highlight')}\n aria-label=\"Highlight\"\n title=\"Highlight\"\n >\n <IconHighlight className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('h1') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 1 }).run()\n }\n active={editor?.isActive('heading', { level: 1 })}\n aria-label=\"Heading 1\"\n title=\"Heading 1\"\n >\n <IconH1 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('h2') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 2 }).run()\n }\n active={editor?.isActive('heading', { level: 2 })}\n aria-label=\"Heading 2\"\n title=\"Heading 2\"\n >\n <IconH2 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('h3') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 3 }).run()\n }\n active={editor?.isActive('heading', { level: 3 })}\n aria-label=\"Heading 3\"\n title=\"Heading 3\"\n >\n <IconH3 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('h4') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleHeading({ level: 4 }).run()\n }\n active={editor?.isActive('heading', { level: 4 })}\n aria-label=\"Heading 4\"\n title=\"Heading 4\"\n >\n <IconH4 className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('bulletList') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleBulletList().run()}\n active={editor?.isActive('bulletList')}\n aria-label=\"Bullet list\"\n title=\"Bullet list\"\n >\n <IconList className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('orderedList') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleOrderedList().run()\n }\n active={editor?.isActive('orderedList')}\n aria-label=\"Ordered list\"\n title=\"Ordered list\"\n >\n <IconListNumbers className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('link') && (\n <>\n <RichTextEditorControl\n onClick={() => {\n const url = window.prompt('Enter URL');\n if (url) {\n editor?.chain().focus().setLink({ href: url }).run();\n }\n }}\n active={editor?.isActive('link')}\n aria-label=\"Link\"\n title=\"Link\"\n >\n <IconLink className=\"size-4\" />\n </RichTextEditorControl>\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().unsetLink().run()}\n disabled={!editor?.isActive('link')}\n aria-label=\"Unlink\"\n title=\"Unlink\"\n >\n <IconUnlink className=\"size-4\" />\n </RichTextEditorControl>\n </>\n )}\n {isControllerEnabled('blockquote') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleBlockquote().run()}\n active={editor?.isActive('blockquote')}\n aria-label=\"Blockquote\"\n title=\"Blockquote\"\n >\n <IconBlockquote className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('alignLeft') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('left').run()\n }\n active={editor?.isActive({ textAlign: 'left' })}\n aria-label=\"Align left\"\n title=\"Align left\"\n >\n <IconAlignLeft className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('alignCenter') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('center').run()\n }\n active={editor?.isActive({ textAlign: 'center' })}\n aria-label=\"Align center\"\n title=\"Align center\"\n >\n <IconAlignCenter className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('alignRight') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('right').run()\n }\n active={editor?.isActive({ textAlign: 'right' })}\n aria-label=\"Align right\"\n title=\"Align right\"\n >\n <IconAlignRight className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('alignJustify') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().setTextAlign('justify').run()\n }\n active={editor?.isActive({ textAlign: 'justify' })}\n aria-label=\"Align justify\"\n title=\"Align justify\"\n >\n <IconAlignJustified className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n <RichTextEditorControlsGroup>\n {isControllerEnabled('subscript') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().toggleSubscript().run()}\n active={editor?.isActive('subscript')}\n aria-label=\"Subscript\"\n title=\"Subscript\"\n >\n <IconSubscript className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('superscript') && (\n <RichTextEditorControl\n onClick={() =>\n editor?.chain().focus().toggleSuperscript().run()\n }\n active={editor?.isActive('superscript')}\n aria-label=\"Superscript\"\n title=\"Superscript\"\n >\n <IconSuperscript className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup>\n\n {editor && isControllerEnabled('hardBreak') && (\n <HardbreakControl editor={editor} />\n )}\n\n {mode === 'large' && (\n <>\n {isControllerEnabled('table') && (\n <RichTextEditorControlsGroup>\n <TableControl editor={editor} />\n </RichTextEditorControlsGroup>\n )}\n <RichTextEditorControlsGroup>\n {isControllerEnabled('image') && <ImageControl />}\n {isControllerEnabled('youtube') && <YoutubeControl />}\n {isControllerEnabled('map') && <IframeControl />}\n </RichTextEditorControlsGroup>\n {/* <RichTextEditorControlsGroup>\n {isControllerEnabled('undo') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().undo().run()}\n disabled={!editor?.can().chain().focus().undo().run()}\n aria-label=\"Undo\"\n title=\"Undo\"\n >\n <IconArrowBackUp className=\"size-4\" />\n </RichTextEditorControl>\n )}\n {isControllerEnabled('redo') && (\n <RichTextEditorControl\n onClick={() => editor?.chain().focus().redo().run()}\n disabled={!editor?.can().chain().focus().redo().run()}\n aria-label=\"Redo\"\n title=\"Redo\"\n >\n <IconArrowForwardUp className=\"size-4\" />\n </RichTextEditorControl>\n )}\n </RichTextEditorControlsGroup> */}\n </>\n )}\n </RichTextEditorToolbar>\n <RichTextEditorContent>\n <EditorContent editor={editor} />\n </RichTextEditorContent>\n </RichTextEditor>\n {error?.message && (\n <p className=\"text-destructive text-sm\">{error.message}</p>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconPageBreak } from '@tabler/icons-react';\nimport type { Editor } from '@tiptap/react';\nimport {\n RichTextEditorControl,\n RichTextEditorControlsGroup,\n} from '../rich-text-editor';\n\ntype HardbreakControlProps = {\n editor: Editor;\n};\n\nexport function HardbreakControl({ editor }: HardbreakControlProps) {\n const handleHardbreak = (e: React.MouseEvent) => {\n e.preventDefault();\n if (editor) {\n editor.chain().focus().setHardBreak().run();\n }\n };\n\n return (\n <RichTextEditorControlsGroup>\n <RichTextEditorControl\n onClick={handleHardbreak}\n disabled={!editor}\n aria-label=\"Insert hard break\"\n title=\"Insert hard break\"\n >\n <IconPageBreak className=\"size-4\" />\n </RichTextEditorControl>\n </RichTextEditorControlsGroup>\n );\n}\n","'use client';\n\nimport type { Editor } from '@tiptap/react';\nimport type * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype RichTextEditorContextValue = {\n editor: Editor | null;\n};\n\nconst RichTextEditorContext = createContext<RichTextEditorContextValue>({\n editor: null,\n});\n\nexport const useRichTextEditorContext = () => useContext(RichTextEditorContext);\n\ntype RichTextEditorProps = {\n editor: Editor | null;\n children: React.ReactNode;\n className?: string;\n};\n\nexport function RichTextEditor({\n editor,\n children,\n className,\n}: RichTextEditorProps) {\n return (\n <RichTextEditorContext.Provider value={{ editor }}>\n <div className={cn('cn-rich-text-editor overflow-hidden', className)}>\n {children}\n </div>\n </RichTextEditorContext.Provider>\n );\n}\n\ntype RichTextEditorToolbarProps = React.ComponentProps<'div'> & {\n sticky?: boolean;\n stickyOffset?: number;\n};\n\nexport function RichTextEditorToolbar({\n children,\n className,\n sticky,\n stickyOffset = 0,\n ...props\n}: RichTextEditorToolbarProps) {\n return (\n <div\n className={cn(\n 'cn-rich-text-editor-toolbar flex flex-wrap items-center gap-1 p-2',\n sticky && 'sticky z-10',\n className,\n )}\n style={sticky ? { top: `${stickyOffset}px` } : undefined}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function RichTextEditorContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n className={cn(\n 'prose dark:prose-invert max-w-none p-4 min-h-[200px] focus:outline-none',\n '[&_.tiptap]:outline-none [&_.tiptap]:min-h-[180px]',\n '[&_.tiptap_p.is-editor-empty:first-child::before]:text-muted-foreground [&_.tiptap_p.is-editor-empty:first-child::before]:content-[attr(data-placeholder)] [&_.tiptap_p.is-editor-empty:first-child::before]:float-left [&_.tiptap_p.is-editor-empty:first-child::before]:h-0 [&_.tiptap_p.is-editor-empty:first-child::before]:pointer-events-none',\n className,\n )}\n {...props}\n />\n );\n}\n\ntype RichTextEditorControlsGroupProps = React.ComponentProps<'div'>;\n\nexport function RichTextEditorControlsGroup({\n children,\n className,\n ...props\n}: RichTextEditorControlsGroupProps) {\n return (\n <div className={cn('flex items-center gap-0.5', className)} {...props}>\n {children}\n </div>\n );\n}\n\ntype RichTextEditorControlProps = React.ComponentProps<'button'> & {\n active?: boolean;\n};\n\nexport function RichTextEditorControl({\n children,\n className,\n active,\n disabled,\n ...props\n}: RichTextEditorControlProps) {\n return (\n <button\n type=\"button\"\n className={cn(\n 'cn-rich-text-editor-control inline-flex items-center justify-center p-2 text-sm font-medium transition-colors cursor-pointer disabled:cursor-not-allowed',\n 'focus-visible:ring-ring/50 focus-visible:ring-[2px] focus-visible:outline-none',\n 'disabled:pointer-events-none disabled:opacity-50',\n className,\n )}\n disabled={disabled}\n data-active={active}\n {...props}\n >\n {children}\n </button>\n );\n}\n","'use client';\n\nimport { IconExternalLink } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog';\nimport { Input } from '../../ui/input';\nimport { Label } from '../../ui/label';\nimport {\n RichTextEditorControl,\n useRichTextEditorContext,\n} from '../rich-text-editor';\n\nexport function IframeControl() {\n const { editor } = useRichTextEditorContext();\n const [open, setOpen] = useState(false);\n const [iframeTag, setIframeTag] = useState('');\n\n const handleOpen = () => {\n const oldIframeTag = editor?.getAttributes('iframe').src ?? '';\n setIframeTag(oldIframeTag);\n setOpen(true);\n };\n\n const isValidIframeTag = (input: string) => {\n const iframePattern = /^<iframe.*src=\"https?:\\/\\/.*\".*><\\/iframe>$/;\n return iframePattern.test(input);\n };\n\n const makeIframeResponsive = (iframe: string) => {\n const srcMatch = iframe.match(/src=\"([^\"]+)\"/);\n if (!srcMatch) {\n return iframe;\n }\n\n const src = srcMatch[1];\n return `<iframe src=\"${src}\" style=\"top: 0; left: 0; width: 95%; height: 480px; border: 0; margin: 0 auto; display: block;\" allowfullscreen loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\"></iframe>`;\n };\n\n const handleAdd = () => {\n if (iframeTag && isValidIframeTag(iframeTag) && editor) {\n const responsiveIframeTag = makeIframeResponsive(iframeTag);\n editor.chain().focus().insertContent(responsiveIframeTag).run();\n setOpen(false);\n setIframeTag('');\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setIframeTag('');\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger\n render={\n <RichTextEditorControl\n onClick={handleOpen}\n active={editor?.isActive('iframe')}\n aria-label=\"Insert iframe\"\n title=\"Insert iframe\"\n />\n }\n >\n <IconExternalLink className=\"size-4\" />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Insert Iframe</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"iframe-tag\">Iframe Tag</Label>\n <Input\n id=\"iframe-tag\"\n placeholder='<iframe src=\"...\" ></iframe>'\n value={iframeTag}\n onChange={(e) => setIframeTag(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n }}\n />\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button onClick={handleAdd}>Add Iframe</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","'use client';\n\nimport { IconPhoto } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog';\nimport { Input } from '../../ui/input';\nimport { Label } from '../../ui/label';\nimport {\n RichTextEditorControl,\n useRichTextEditorContext,\n} from '../rich-text-editor';\n\nexport function ImageControl() {\n const { editor } = useRichTextEditorContext();\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n\n const handleOpen = () => {\n const oldUrl = editor?.getAttributes('image').src ?? '';\n setUrl(oldUrl);\n setOpen(true);\n };\n\n const handleAdd = () => {\n if (url && editor) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n setOpen(false);\n setUrl('');\n };\n\n const handleClose = () => {\n setOpen(false);\n setUrl('');\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger\n render={\n <RichTextEditorControl\n onClick={handleOpen}\n active={editor?.isActive('image')}\n aria-label=\"Insert image\"\n title=\"Insert image\"\n />\n }\n >\n <IconPhoto className=\"size-4\" />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Insert Image</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"image-url\">Image URL</Label>\n <Input\n id=\"image-url\"\n placeholder=\"https://example.com/image.jpg\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n }}\n />\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button onClick={handleAdd}>Add Image</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","'use client';\n\nimport {\n IconColumnInsertRight,\n IconFreezeRow,\n IconRowInsertBottom,\n IconTable,\n IconTableMinus,\n IconTrash,\n} from '@tabler/icons-react';\nimport type { Editor } from '@tiptap/react';\nimport { RichTextEditorControl } from '../rich-text-editor';\n\ntype TableControlProps = {\n editor: Editor | null;\n};\n\nexport function TableControl({ editor }: TableControlProps) {\n if (!editor) {\n return null;\n }\n\n const handleInsertTable = () => {\n editor\n .chain()\n .focus()\n .insertTable({ rows: 2, cols: 2, withHeaderRow: true })\n .run();\n };\n\n return (\n <>\n <RichTextEditorControl\n onClick={handleInsertTable}\n disabled={!editor.can().insertTable()}\n aria-label=\"Insert table\"\n title=\"Insert table\"\n >\n <IconTable className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().addColumnAfter().run()}\n disabled={!editor.can().addColumnAfter()}\n aria-label=\"Add column\"\n title=\"Add column\"\n >\n <IconColumnInsertRight className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().addRowAfter().run()}\n disabled={!editor.can().addRowAfter()}\n aria-label=\"Add row\"\n title=\"Add row\"\n >\n <IconRowInsertBottom className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().deleteColumn().run()}\n disabled={!editor.can().deleteColumn()}\n aria-label=\"Delete column\"\n title=\"Delete column\"\n >\n <IconTableMinus className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().deleteRow().run()}\n disabled={!editor.can().deleteRow()}\n aria-label=\"Delete row\"\n title=\"Delete row\"\n >\n <IconFreezeRow className=\"size-4\" />\n </RichTextEditorControl>\n\n <RichTextEditorControl\n onClick={() => editor.chain().focus().deleteTable().run()}\n disabled={!editor.can().deleteTable()}\n aria-label=\"Delete table\"\n title=\"Delete table\"\n >\n <IconTrash className=\"size-4\" />\n </RichTextEditorControl>\n </>\n );\n}\n","'use client';\n\nimport { IconBrandYoutube } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport { Button } from '../../ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog';\nimport { Input } from '../../ui/input';\nimport { Label } from '../../ui/label';\nimport {\n RichTextEditorControl,\n useRichTextEditorContext,\n} from '../rich-text-editor';\n\nexport function YoutubeControl() {\n const { editor } = useRichTextEditorContext();\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n\n const handleOpen = () => {\n const oldUrl = editor?.getAttributes('youtube').src ?? '';\n setUrl(oldUrl);\n setOpen(true);\n };\n\n const handleAdd = () => {\n if (url && editor) {\n editor.chain().focus().setYoutubeVideo({ src: url }).run();\n }\n setOpen(false);\n setUrl('');\n };\n\n const handleClose = () => {\n setOpen(false);\n setUrl('');\n };\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger\n render={\n <RichTextEditorControl\n onClick={handleOpen}\n active={editor?.isActive('youtube')}\n aria-label=\"Insert YouTube video\"\n title=\"Insert YouTube video\"\n />\n }\n >\n <IconBrandYoutube className=\"size-4\" />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Insert YouTube Video</DialogTitle>\n </DialogHeader>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"youtube-url\">YouTube URL</Label>\n <Input\n id=\"youtube-url\"\n placeholder=\"https://youtube.com/watch?v=video-id\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleAdd();\n }\n }}\n />\n </div>\n </div>\n <DialogFooter>\n <Button variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button onClick={handleAdd}>Add Video</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import { mergeAttributes } from '@tiptap/core';\nimport { Heading } from '@tiptap/extension-heading';\n\nexport const CustomHeading = Heading.extend({\n addAttributes() {\n return {\n class: {\n default: '',\n },\n };\n },\n renderHTML({ node }) {\n const level = node.attrs.level;\n\n const classes = {\n 1: 'text-4xl font-bold text-foreground mb-4',\n 2: 'text-3xl font-semibold text-foreground mb-3',\n 3: 'text-2xl font-medium text-foreground mb-2',\n 4: 'text-xl font-normal text-foreground mb-1',\n };\n\n return [\n `h${level}`,\n mergeAttributes(this.options.HTMLAttributes, {\n class: classes[level as 1 | 2 | 3 | 4],\n }),\n 0,\n ];\n },\n});\n","import { mergeAttributes, Node, nodePasteRule } from '@tiptap/core';\n\nexport type IframeOptions = {\n addPasteHandler: boolean;\n allowFullscreen: boolean;\n height: number;\n width: number;\n htmlAttributes: Record<string, unknown>;\n inline: boolean;\n src: string;\n style?: string;\n loading?: string;\n referrerpolicy?: string;\n};\n\ntype SetIframeOptions = {\n src: string;\n width?: number;\n height?: number;\n style?: string;\n loading?: string;\n referrerpolicy?: string;\n};\n\nconst trimSrcLink = (src: string) => src.trim();\nconst getEmbedUrlFromSrc = ({ src }: { src: string }) => trimSrcLink(src);\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n iframe: {\n setIframe: (options: SetIframeOptions) => ReturnType;\n };\n }\n}\n\nexport const Iframe = Node.create<IframeOptions>({\n name: 'iframe',\n\n addOptions() {\n return {\n addPasteHandler: true,\n allowFullscreen: true,\n height: 480,\n width: 640,\n htmlAttributes: {},\n inline: false,\n src: '',\n style: 'border:0;',\n loading: 'lazy',\n referrerpolicy: 'no-referrer-when-downgrade',\n };\n },\n\n inline() {\n return this.options.inline;\n },\n\n group() {\n return this.options.inline ? 'inline' : 'block';\n },\n\n draggable: true,\n\n addAttributes() {\n return {\n src: { default: null },\n width: { default: this.options.width },\n height: { default: this.options.height },\n style: { default: this.options.style },\n loading: { default: this.options.loading },\n referrerpolicy: { default: this.options.referrerpolicy },\n };\n },\n\n parseHTML() {\n return [{ tag: 'iframe' }, { tag: 'iframe[src]' }];\n },\n\n addCommands() {\n return {\n setIframe:\n (options: SetIframeOptions) =>\n ({ commands }) => {\n const trimmedSrc = trimSrcLink(options.src);\n if (!trimmedSrc) {\n return false;\n }\n return commands.insertContent({ type: this.name, attrs: options });\n },\n };\n },\n\n addPasteRules() {\n if (this.options.addPasteHandler) {\n return [\n nodePasteRule({\n find: /<iframe[^>]*src=[\"']([^\"']+)[\"'][^>]*>/g,\n type: this.type,\n getAttributes: (match) => {\n return { src: match[1] };\n },\n }),\n ];\n }\n return [];\n },\n\n renderHTML({ HTMLAttributes }) {\n const embedUrl = getEmbedUrlFromSrc({\n src: HTMLAttributes.src,\n });\n\n const iframeStyle = HTMLAttributes.style || this.options.style;\n\n return [\n 'iframe',\n mergeAttributes(\n this.options.htmlAttributes,\n {\n width: HTMLAttributes.width || this.options.width,\n height: HTMLAttributes.height || this.options.height,\n allowfullscreen: this.options.allowFullscreen,\n style: iframeStyle,\n loading: this.options.loading,\n referrerpolicy: this.options.referrerpolicy,\n },\n { ...HTMLAttributes, src: embedUrl },\n ),\n ];\n },\n});\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction VisuallyHidden({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"visually-hidden\"\n className={cn('sr-only', className)}\n {...props}\n />\n );\n}\n\nexport { VisuallyHidden };\n","'use client';\n\nimport { IconTextRecognition } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport type { FieldError, UseFormRegister } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { useLocaleConfig } from '../../provider/mesob-provider';\nimport { Input } from '../ui/input';\nimport { Label } from '../ui/label';\n\nexport type LocaleInputTextProps = {\n label?: string;\n required?: boolean;\n field: string;\n register: UseFormRegister<any>;\n errors?: Record<string, unknown>;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n};\n\nexport function LocaleInputText({\n label,\n required,\n field,\n register,\n errors,\n placeholder,\n className,\n disabled,\n}: LocaleInputTextProps) {\n const [expanded, setExpanded] = useState(false);\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n const otherLanguages = supportedLanguages.filter(\n (lang) => lang.value !== defaultLanguage,\n );\n\n return (\n <div className={cn('cn-locale-input', className)}>\n {label && (\n <Label>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n <div className=\"relative\">\n <Input\n {...register(`${field}.${defaultLanguage}`)}\n placeholder={placeholder}\n disabled={disabled}\n aria-invalid={\n !!(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]\n }\n className={cn(otherLanguages.length > 0 && 'pr-11')}\n />\n {otherLanguages.length > 0 && (\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n disabled={disabled}\n className=\"cn-locale-input-toggle\"\n >\n <IconTextRecognition size={18} />\n </button>\n )}\n </div>\n {(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ] && (\n <p className=\"cn-locale-input-error\">\n {\n (errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]?.message\n }\n </p>\n )}\n\n {expanded && otherLanguages.length > 0 && (\n <div className=\"cn-locale-input-expanded\">\n {otherLanguages.map((lang) => (\n <div key={lang.value} className=\"space-y-1\">\n <div className=\"flex items-center gap-2\">\n <Label className=\"min-w-[60px] text-xs text-muted-foreground\">\n {lang.label}\n </Label>\n <div className=\"flex-1 space-y-1\">\n <Input\n {...register(`${field}.${lang.value}`)}\n placeholder={placeholder}\n disabled={disabled}\n className=\"text-sm\"\n />\n {(\n errors?.[field] as Record<string, FieldError | undefined>\n )?.[lang.value] && (\n <p className=\"text-destructive text-xs\">\n {\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[lang.value]?.message\n }\n </p>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { IconTextRecognition } from '@tabler/icons-react';\nimport { useState } from 'react';\nimport type { FieldError, UseFormRegister } from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { useLocaleConfig } from '../../provider/mesob-provider';\nimport { Label } from '../ui/label';\nimport { Textarea } from '../ui/textarea';\n\nexport type LocaleInputTextareaProps = {\n label?: string;\n required?: boolean;\n field: string;\n register: UseFormRegister<any>;\n errors?: Record<string, unknown>;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n rows?: number;\n};\n\nexport function LocaleInputTextarea({\n label,\n required,\n field,\n register,\n errors,\n placeholder,\n className,\n disabled,\n rows = 4,\n}: LocaleInputTextareaProps) {\n const [expanded, setExpanded] = useState(false);\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n const otherLanguages = supportedLanguages.filter(\n (lang) => lang.value !== defaultLanguage,\n );\n\n return (\n <div className={cn('cn-locale-input', className)}>\n {label && (\n <Label>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n <div className=\"relative\">\n <Textarea\n {...register(`${field}.${defaultLanguage}`)}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n aria-invalid={\n !!(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]\n }\n className={cn(otherLanguages.length > 0 && 'pr-11')}\n />\n {otherLanguages.length > 0 && (\n <button\n type=\"button\"\n onClick={() => setExpanded(!expanded)}\n disabled={disabled}\n className=\"cn-locale-input-toggle-textarea\"\n >\n <IconTextRecognition size={18} />\n </button>\n )}\n </div>\n {(errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ] && (\n <p className=\"cn-locale-input-error\">\n {\n (errors?.[field] as Record<string, FieldError | undefined>)?.[\n defaultLanguage\n ]?.message\n }\n </p>\n )}\n\n {expanded && otherLanguages.length > 0 && (\n <div className=\"cn-locale-input-expanded\">\n {otherLanguages.map((lang) => (\n <div key={lang.value} className=\"space-y-1\">\n <div className=\"flex items-start gap-2\">\n <Label className=\"min-w-[60px] text-xs text-muted-foreground mt-2\">\n {lang.label}\n </Label>\n <div className=\"flex-1 space-y-1\">\n <Textarea\n {...register(`${field}.${lang.value}`)}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n className=\"text-sm\"\n />\n {(\n errors?.[field] as Record<string, FieldError | undefined>\n )?.[lang.value] && (\n <p className=\"text-destructive text-xs\">\n {\n (\n errors?.[field] as Record<\n string,\n FieldError | undefined\n >\n )?.[lang.value]?.message\n }\n </p>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport parse from 'html-react-parser';\nimport { useLocale } from 'next-intl';\nimport type { Locale } from '../../lib/locale';\n\nexport type LocaleRichTextProps = {\n text?: Locale;\n defaultLocale?: string;\n className?: string;\n};\n\nexport function LocaleRichText({\n text,\n defaultLocale,\n className,\n}: LocaleRichTextProps) {\n const locale = useLocale();\n const currentLocale = defaultLocale || locale || 'en';\n\n if (!text) {\n return null;\n }\n\n return (\n <div className={className}>\n {parse(text?.[currentLocale] || text?.en || '')}\n </div>\n );\n}\n","'use client';\n\nimport { useLocale } from 'next-intl';\nimport type { Locale } from '../../lib/locale';\n\ntype LocaleTextProps = {\n text?: Locale;\n defaultLocale?: string;\n};\n\nexport function LocaleText({ text, defaultLocale }: LocaleTextProps) {\n const locale = useLocale();\n const currentLocale = defaultLocale || locale || 'en';\n\n if (!text) {\n return null;\n }\n\n return <>{text?.[currentLocale] || text?.en || ''}</>;\n}\n","type MesobLogoProps = {\n width?: number;\n height?: number;\n textColor?: string;\n iconBackgroundColor?: string;\n iconColor?: string;\n className?: string;\n};\n\nexport function MesobLogo({\n width,\n height,\n textColor = '#09f',\n iconBackgroundColor = '#19e',\n iconColor = '#fff',\n className,\n}: MesobLogoProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 315.9 98.15\"\n width={width}\n height={height}\n aria-label=\"Mesob Logo\"\n role=\"presentation\"\n className={className}\n >\n <path\n d=\"M158.89,21.29v44q0,9.15-5.3,14.23t-14.18,5.07q-9,0-14.5-5.21t-5.52-14.54H132a10,10,0,0,0,1.93,6.28,6.49,6.49,0,0,0,5.34,2.25,6.4,6.4,0,0,0,5.21-2.16,9,9,0,0,0,1.79-5.92v-44Z\"\n fill={textColor}\n />\n <path\n d=\"M174.38,26.18a7,7,0,0,1-2.2-5.25,7,7,0,0,1,2.2-5.25,8.28,8.28,0,0,1,11,0,7,7,0,0,1,2.2,5.25,7,7,0,0,1-2.2,5.25,8.28,8.28,0,0,1-11,0Zm11.71,8V84H173.52V34.22Z\"\n fill={textColor}\n />\n <path\n d=\"M217.38,35.74a17.65,17.65,0,0,1,8.93-2.24V46.69H223q-5.93,0-8.94,2.79t-3,9.69V84H198.48V34.22h12.57v7.72A17.57,17.57,0,0,1,217.38,35.74Z\"\n fill={textColor}\n />\n <path\n d=\"M280.62,62.85H244.26A12.38,12.38,0,0,0,248,71.29a11.62,11.62,0,0,0,8.17,3q7,0,10-6h13.55a22.59,22.59,0,0,1-8.26,11.8,24.05,24.05,0,0,1-15,4.63,25.87,25.87,0,0,1-12.88-3.19,22.44,22.44,0,0,1-8.89-9,27.7,27.7,0,0,1-3.18-13.47,28.09,28.09,0,0,1,3.14-13.55,21.92,21.92,0,0,1,8.79-9,28.27,28.27,0,0,1,25.72-.09,21.49,21.49,0,0,1,8.71,8.66A26.18,26.18,0,0,1,281,58,29.48,29.48,0,0,1,280.62,62.85ZM268,54.41a9.93,9.93,0,0,0-3.5-7.76,12.43,12.43,0,0,0-8.35-2.92,11.37,11.37,0,0,0-7.85,2.83,12.4,12.4,0,0,0-3.91,7.85Z\"\n fill={textColor}\n />\n <path\n d=\"M304.77,44.54V68.6A4.73,4.73,0,0,0,306,72.23a6,6,0,0,0,4.09,1.13h5.83V84H308q-15.88,0-15.89-15.44v-24h-5.92V34.22h5.92V21.92h12.66v12.3H315.9V44.54Z\"\n fill={textColor}\n />\n <rect\n width=\"98.15\"\n height=\"98.15\"\n rx=\"20.49\"\n fill={iconBackgroundColor}\n />\n <path\n d=\"M59.84,54.58a15.77,15.77,0,0,0,6.7,3.6,30.16,30.16,0,0,0,8.56.48l-.36,13.89a46.14,46.14,0,0,1-6,.43,33.3,33.3,0,0,1-6.42-.56,27.77,27.77,0,0,1-6.23-1.93,23.13,23.13,0,0,1-5.67-3.64,17.61,17.61,0,0,1-4.87-6.67c-1-2.53-1.89-4.88-2.57-7a51.59,51.59,0,0,0-1.79-4.94,10.55,10.55,0,0,0-2.82-4,17.36,17.36,0,0,0-6.66-3.74A28.24,28.24,0,0,0,23,39.8l1-14.38a44.34,44.34,0,0,1,5.87-.25,34.47,34.47,0,0,1,6.2.72A30.31,30.31,0,0,1,42.28,28a24.51,24.51,0,0,1,5.85,3.8,18.32,18.32,0,0,1,4.92,6.54,70.94,70.94,0,0,1,2.59,6.9c.53,1.7,1.06,3.42,1.59,5.18A8.77,8.77,0,0,0,59.84,54.58Z\"\n fill={iconColor}\n />\n </svg>\n );\n}\n","import { cn } from '../lib/utils';\nimport { MesobLogo } from './mesob-logo';\n\ntype PoweredByProps = {\n className?: string;\n};\n\nexport function PoweredBy({ className }: PoweredByProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center gap-1.5 py-3 text-center',\n className,\n )}\n >\n <a\n href=\"https://mesob.com\"\n target=\"_blank\"\n className=\"text-muted-foreground hover:text-foreground flex items-center justify-center gap-1.5 text-[13px] transition-colors\"\n rel=\"noopener noreferrer\"\n >\n <span>Powered by</span>\n <MesobLogo height={18} />\n </a>\n </div>\n );\n}\n","'use client';\n\nimport parse from 'html-react-parser';\nimport { useLocale } from 'next-intl';\nimport { cn } from '../../lib/utils';\n\ntype RichTextDisplayProps = {\n content: string | { [key: string]: string };\n className?: string;\n};\n\nexport function RichTextDisplay({ content, className }: RichTextDisplayProps) {\n const locale = useLocale();\n\n if (!content) {\n return null;\n }\n\n const contentString =\n typeof content === 'string'\n ? content\n : content[locale] || Object.values(content)[0] || '';\n\n return (\n <div\n className={cn(\n 'cn-rich-text-display prose dark:prose-invert max-w-none',\n 'prose-headings:text-foreground prose-p:text-foreground prose-li:text-foreground',\n 'prose-a:text-primary prose-a:no-underline hover:prose-a:underline',\n className,\n )}\n >\n {parse(contentString)}\n </div>\n );\n}\n","'use client';\n\nimport { IconMoon, IconSun } from '@tabler/icons-react';\nimport { useTheme } from 'next-themes';\nimport { cn } from '../lib/utils';\nimport { Button } from './ui/button';\n\ntype ThemeToggleProps = {\n className?: string;\n};\n\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { resolvedTheme, setTheme, theme } = useTheme();\n const isDark = (theme ?? resolvedTheme) === 'dark';\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={() => setTheme(isDark ? 'light' : 'dark')}\n aria-label={isDark ? 'Switch to light mode' : 'Switch to dark mode'}\n >\n <IconSun className=\"size-5 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0\" />\n <IconMoon className=\"absolute size-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n </Button>\n );\n}\n","'use client';\n\nimport { Accordion as AccordionPrimitive } from '@base-ui/react/accordion';\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root> & {\n // Legacy props (kept for compatibility; style presets own visuals).\n variant?: 'default' | 'separated' | 'contained' | 'filled';\n radius?: unknown;\n chevronPosition?: 'left' | 'right';\n chevronSize?: number | string;\n chevronIconSize?: number | string;\n chevron?: React.ReactNode | null;\n disableChevronRotation?: boolean;\n transitionDuration?: number;\n order?: 2 | 3 | 4 | 5 | 6;\n unstyled?: boolean;\n};\n\nconst ACCORDION_ROOT_BASE_CN = 'flex w-full flex-col';\nconst ACCORDION_TRIGGER_BASE_CN = cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between',\n 'border border-transparent transition-all outline-none',\n 'disabled:pointer-events-none disabled:opacity-50',\n);\n\nfunction Accordion({\n className,\n variant,\n chevronPosition = 'right',\n transitionDuration,\n unstyled = false,\n radius: _radius,\n chevronSize: _chevronSize,\n chevronIconSize: _chevronIconSize,\n chevron: _chevron,\n disableChevronRotation: _disableChevronRotation,\n order: _order,\n ...props\n}: AccordionProps) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n data-variant={variant}\n data-chevron-position={chevronPosition}\n data-unstyled={unstyled ? '' : undefined}\n className={cn(\n ACCORDION_ROOT_BASE_CN,\n unstyled ? undefined : 'cn-accordion',\n className,\n )}\n style={\n {\n '--accordion-duration':\n transitionDuration == null ? undefined : `${transitionDuration}ms`,\n } as React.CSSProperties\n }\n {...props}\n />\n );\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('cn-accordion-item', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n chevron,\n chevronPosition,\n icon,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {\n chevron?: React.ReactNode | null;\n chevronPosition?: 'left' | 'right';\n icon?: React.ReactNode;\n}) {\n const showChevron = chevron !== null;\n\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'cn-accordion-trigger',\n ACCORDION_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {showChevron && chevronPosition === 'left' && (\n <span className=\"mr-2 inline-flex items-center\">\n {\n (chevron ?? (\n <>\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 !ml-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 !ml-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n )) as React.ReactNode\n }\n </span>\n )}\n {icon && (\n <span className=\"text-muted-foreground mr-2 inline-flex shrink-0\">\n {icon}\n </span>\n )}\n {children}\n {showChevron &&\n chevronPosition !== 'left' &&\n (chevron ?? (\n <>\n <IconChevronDown\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <IconChevronUp\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </>\n ))}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Panel>) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"cn-accordion-content overflow-hidden\"\n style={\n {\n animationDuration: 'var(--accordion-duration)',\n } as React.CSSProperties\n }\n {...props}\n >\n <div\n data-slot=\"accordion-content-inner\"\n className={cn(\n 'cn-accordion-content-inner',\n 'h-(--accordion-panel-height) data-ending-style:h-0 data-starting-style:h-0',\n '[&_a]:hover:text-foreground [&_a]:underline [&_a]:underline-offset-3',\n '[&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\nexport type { AccordionProps };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { Spinner } from './spinner';\n\nconst actionIconVariants = cva(\n \"cn-action-icon inline-flex items-center justify-center shrink-0 font-medium transition-colors cursor-pointer select-none leading-none relative overflow-hidden disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed data-[loading]:cursor-not-allowed [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n {\n variants: {\n variant: {\n default: 'cn-action-icon-variant-default',\n destructive: 'cn-action-icon-variant-destructive',\n outline: 'cn-action-icon-variant-outline',\n secondary: 'cn-action-icon-variant-secondary',\n ghost: 'cn-action-icon-variant-ghost',\n light: 'cn-action-icon-variant-light',\n },\n size: {\n xs: 'size-[18px] [&_svg]:size-[12px]',\n sm: 'size-[22px] [&_svg]:size-[14px]',\n md: 'size-[28px] [&_svg]:size-[16px]',\n lg: 'size-[34px] [&_svg]:size-[18px]',\n xl: 'size-[44px] [&_svg]:size-[22px]',\n },\n radius: {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n radius: 'md',\n },\n },\n);\n\ntype ActionIconProps = React.ComponentProps<'button'> &\n VariantProps<typeof actionIconVariants> & {\n render?: useRender.RenderProp;\n loading?: boolean;\n color?: ComponentColor;\n };\n\nfunction ActionIcon({\n className,\n variant,\n size,\n radius,\n color,\n render = <button type=\"button\" />,\n loading = false,\n disabled,\n children,\n ...props\n}: ActionIconProps) {\n let loaderSize: 'sm' | 'md' | 'lg' = 'md';\n if (size === 'xs' || size === 'sm') {\n loaderSize = 'sm';\n } else if (size === 'xl') {\n loaderSize = 'lg';\n }\n\n const colorStyle = color\n ? ({\n '--action-icon-color': `var(--${color})`,\n '--action-icon-color-hover': `color-mix(in srgb, var(--${color}) 90%, black)`,\n } as React.CSSProperties)\n : undefined;\n\n return useRender({\n render,\n props: {\n ...props,\n disabled: disabled || loading,\n 'data-slot': 'action-icon',\n 'data-loading': loading || undefined,\n style: { ...colorStyle, ...props.style },\n className: cn(\n actionIconVariants({ variant, size, radius }),\n color &&\n 'bg-[var(--action-icon-color)] hover:bg-[var(--action-icon-color-hover)]',\n className,\n ),\n children: (\n <>\n {loading && (\n <span className=\"cn-action-icon-loader absolute inset-0 flex items-center justify-center\">\n <Spinner\n className={cn(\n loaderSize === 'sm' && 'size-3',\n loaderSize === 'md' && 'size-4',\n loaderSize === 'lg' && 'size-5',\n )}\n />\n </span>\n )}\n <span\n className={cn(\n 'inline-flex items-center justify-center transition-transform',\n loading && 'opacity-0 translate-y-1',\n )}\n >\n {children}\n </span>\n </>\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nexport { ActionIcon, actionIconVariants };\nexport type { ActionIconProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../lib/utils';\n\ntype Position = {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n};\n\ntype AffixProps = React.ComponentProps<'div'> & {\n position: Position;\n zIndex?: number;\n withinPortal?: boolean;\n};\n\nfunction Affix({\n className,\n position,\n zIndex = 1000,\n withinPortal = true,\n children,\n style,\n ...props\n}: AffixProps) {\n const content = (\n <div\n data-slot=\"affix\"\n className={cn('fixed', className)}\n style={{\n zIndex,\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n if (!withinPortal || typeof document === 'undefined') {\n return content;\n }\n\n return createPortal(content, document.body);\n}\n\nexport { Affix };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AlertProps = React.ComponentProps<'div'> & {\n variant?: 'default' | 'destructive' | 'filled' | 'light' | 'outline';\n radius?: unknown;\n color?: unknown;\n};\n\nfunction Alert({\n className,\n variant = 'default',\n radius: _radius,\n color: _color,\n ...props\n}: AlertProps) {\n const mappedVariant = variant === 'destructive' ? 'destructive' : 'default';\n\n return (\n <div\n data-slot=\"alert\"\n data-variant={mappedVariant}\n role=\"alert\"\n className={cn(\n 'cn-alert group/alert',\n mappedVariant === 'destructive'\n ? 'cn-alert-variant-destructive'\n : 'cn-alert-variant-default',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn('cn-alert-title', className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn('cn-alert-description', className)}\n {...props}\n />\n );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn('cn-alert-action', className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\nexport type { AlertProps };\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst isExternal = (href?: string) =>\n !href ||\n href.startsWith('http') ||\n href.startsWith('//') ||\n href.startsWith('mailto:') ||\n href.startsWith('tel:');\n\nconst anchorVariants = cva(\n 'cn-anchor inline-flex items-center gap-1 transition-colors cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n default: 'cn-anchor-variant-default',\n subtle: 'cn-anchor-variant-subtle',\n gradient: 'cn-anchor-variant-gradient',\n muted: 'cn-anchor-variant-muted',\n },\n underline: {\n always: 'underline',\n hover: 'hover:underline',\n never: 'no-underline',\n },\n size: {\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'default',\n underline: 'hover',\n size: 'md',\n weight: 'normal',\n },\n },\n);\n\ntype AnchorProps = React.ComponentProps<'a'> &\n VariantProps<typeof anchorVariants>;\n\nfunction Anchor({\n className,\n variant,\n underline,\n size,\n weight,\n children,\n href,\n ...props\n}: AnchorProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const useLink = href && !isExternal(href) && Link;\n const Comp = useLink ? Link : 'a';\n const linkProps = useLink\n ? { ...props, href, ...(locale && { locale }) }\n : { ...props, href };\n\n return (\n <Comp\n data-slot=\"anchor\"\n className={cn(\n anchorVariants({ variant, underline, size, weight }),\n className,\n )}\n {...linkProps}\n >\n {children}\n </Comp>\n );\n}\n\nexport { Anchor, anchorVariants };\nexport type { AnchorProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { useCallback, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AngleSliderProps = React.ComponentProps<'div'> & {\n value?: number;\n defaultValue?: number;\n onChange?: (value: number) => void;\n onChangeEnd?: (value: number) => void;\n size?: number;\n step?: number;\n withLabel?: boolean;\n formatLabel?: (value: number) => React.ReactNode;\n disabled?: boolean;\n};\n\nconst TAU = 2 * Math.PI;\n\nfunction AngleSlider({\n className,\n value: valueProp,\n defaultValue = 0,\n onChange,\n onChangeEnd,\n size = 120,\n step = 1,\n withLabel = true,\n formatLabel,\n disabled = false,\n ...props\n}: AngleSliderProps) {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const value = valueProp ?? internalValue;\n const isControlled = valueProp !== undefined;\n const setValue = useCallback(\n (v: number) => {\n const clamped = ((v % 360) + 360) % 360;\n if (!isControlled) {\n setInternalValue(clamped);\n }\n onChange?.(clamped);\n },\n [isControlled, onChange],\n );\n\n const ref = useRef<HTMLDivElement>(null);\n const angleRef = useRef(value);\n\n const getAngle = useCallback(\n (clientX: number, clientY: number) => {\n const el = ref.current;\n if (!el) {\n return value;\n }\n const rect = el.getBoundingClientRect();\n const cx = rect.left + rect.width / 2;\n const cy = rect.top + rect.height / 2;\n const dx = clientX - cx;\n const dy = clientY - cy;\n let a = (Math.atan2(dy, dx) * 180) / Math.PI + 90;\n if (a < 0) {\n a += 360;\n }\n const stepped = Math.round(a / step) * step;\n return stepped % 360;\n },\n [value, step],\n );\n\n const handleMove = useCallback(\n (clientX: number, clientY: number) => {\n const a = getAngle(clientX, clientY);\n angleRef.current = a;\n setValue(a);\n },\n [getAngle, setValue],\n );\n\n const handlePointerDown = (e: React.PointerEvent) => {\n if (disabled) {\n return;\n }\n e.currentTarget.setPointerCapture(e.pointerId);\n handleMove(e.clientX, e.clientY);\n const onMove = (ev: PointerEvent) => handleMove(ev.clientX, ev.clientY);\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n onChangeEnd?.(angleRef.current);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n };\n\n const angleRad = ((360 - value) * Math.PI) / 180;\n const r = size / 2 - 10;\n const thumbSize = Math.max(10, Math.round(size * 0.09));\n const thumbOffset = thumbSize / 2;\n const innerInset = Math.max(12, Math.round(size * 0.18));\n const thumbX = size / 2 + r * Math.cos(angleRad) - thumbOffset;\n const thumbY = size / 2 + r * Math.sin(angleRad) - thumbOffset;\n\n return (\n <div\n ref={ref}\n data-slot=\"angle-slider\"\n role=\"slider\"\n aria-valuemin={0}\n aria-valuemax={360}\n aria-valuenow={value}\n aria-disabled={disabled}\n tabIndex={disabled ? undefined : 0}\n data-disabled={disabled || undefined}\n className={cn(\n 'relative select-none touch-none rounded-full',\n disabled && 'pointer-events-none cursor-not-allowed opacity-50',\n className,\n )}\n style={{ width: size, height: size }}\n onPointerDown={handlePointerDown}\n {...props}\n >\n {/* biome-ignore lint/a11y/noSvgWithoutTitle: decorative track, parent has aria */}\n <svg\n className=\"absolute inset-0 size-full\"\n viewBox={`0 0 ${size} ${size}`}\n aria-hidden\n >\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n className=\"text-border/70\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"6\"\n strokeDasharray={`${(value / 360) * TAU * r} ${TAU * r}`}\n className=\"text-primary\"\n strokeLinecap=\"round\"\n style={{ transform: 'rotate(-90deg)', transformOrigin: 'center' }}\n />\n </svg>\n <div\n className=\"cn-angle-slider-inner absolute\"\n style={{\n inset: innerInset,\n }}\n />\n <div\n data-slot=\"angle-slider-thumb\"\n className=\"cn-angle-slider-thumb absolute\"\n style={{\n width: thumbSize,\n height: thumbSize,\n left: thumbX,\n top: thumbY,\n }}\n />\n {withLabel && (\n <div className=\"absolute inset-0 flex items-center justify-center text-sm font-semibold text-foreground\">\n {formatLabel ? formatLabel(value) : `${Math.round(value)}°`}\n </div>\n )}\n </div>\n );\n}\n\nexport { AngleSlider };\nexport type { AngleSliderProps };\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { IconChevronDown } from '@tabler/icons-react';\nimport { motion } from 'motion/react';\nimport type { ComponentType, ReactNode } from 'react';\nimport { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from './dropdown-menu';\n\nexport type AnimatedTabItem = {\n name: string;\n value: string;\n href?: string;\n content?: ReactNode;\n};\n\ntype LinkComponentProps = {\n href: string;\n className?: string;\n children: ReactNode;\n ref?: React.Ref<HTMLAnchorElement>;\n};\n\ntype AnimatedTabsProps = {\n tabs: AnimatedTabItem[];\n activeTab?: string;\n defaultTab?: string;\n onTabChange?: (value: string) => void;\n className?: string;\n linkComponent?: ComponentType<LinkComponentProps>;\n};\n\nexport function AnimatedTabs({\n tabs,\n activeTab: controlledActiveTab,\n defaultTab,\n onTabChange,\n className,\n linkComponent: linkProp,\n}: AnimatedTabsProps) {\n const mesob = useMesob();\n const LinkComponent =\n linkProp ?? mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const [internalActiveTab, setInternalActiveTab] = useState(\n defaultTab ?? tabs[0]?.value ?? '',\n );\n const activeTab = controlledActiveTab ?? internalActiveTab;\n\n const [visibleTabs, setVisibleTabs] = useState<AnimatedTabItem[]>(tabs);\n const [overflowTabs, setOverflowTabs] = useState<AnimatedTabItem[]>([]);\n const containerRef = useRef<HTMLDivElement>(null);\n const tabsListRef = useRef<HTMLDivElement>(null);\n const dropdownTriggerRef = useRef<HTMLButtonElement>(null);\n const tabRefs = useRef<(HTMLElement | null)[]>([]);\n const [underlineStyle, setUnderlineStyle] = useState({ left: 0, width: 0 });\n\n const handleTabChange = (newValue: string) => {\n if (!controlledActiveTab) {\n setInternalActiveTab(newValue);\n }\n onTabChange?.(newValue);\n };\n\n useLayoutEffect(() => {\n const updateTabs = () => {\n if (!containerRef.current) {\n return;\n }\n if (!tabsListRef.current) {\n return;\n }\n\n const containerWidth = containerRef.current.offsetWidth;\n const dropdownWidth = 80;\n const padding = 16;\n const availableWidth = containerWidth - padding;\n\n let totalWidth = 0;\n const visible: AnimatedTabItem[] = [];\n const overflow: AnimatedTabItem[] = [];\n let hasOverflow = false;\n\n for (const [i, tab] of tabs.entries()) {\n const tabEl = tabRefs.current[i];\n\n if (!tabEl || tabEl.offsetWidth === 0) {\n if (hasOverflow) {\n overflow.push(tab);\n } else {\n visible.push(tab);\n }\n continue;\n }\n\n const tabWidth = tabEl.scrollWidth || tabEl.offsetWidth;\n const wouldFitWithoutDropdown = totalWidth + tabWidth <= availableWidth;\n const wouldFitWithDropdown =\n totalWidth + tabWidth + dropdownWidth <= availableWidth;\n\n if (!hasOverflow && wouldFitWithoutDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n } else if (!hasOverflow && wouldFitWithDropdown) {\n visible.push(tab);\n totalWidth += tabWidth;\n hasOverflow = true;\n } else {\n hasOverflow = true;\n overflow.push(tab);\n }\n }\n\n setVisibleTabs(visible);\n setOverflowTabs(overflow);\n };\n\n const timeoutId = setTimeout(updateTabs, 100);\n\n const resizeObserver = new ResizeObserver(() => {\n setTimeout(updateTabs, 0);\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n\n if (tabsListRef.current) {\n resizeObserver.observe(tabsListRef.current);\n }\n\n window.addEventListener('resize', updateTabs);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateTabs);\n };\n }, [tabs]);\n\n useLayoutEffect(() => {\n const updateUnderline = () => {\n const isInOverflow = overflowTabs.some((tab) => tab.value === activeTab);\n\n if (isInOverflow && dropdownTriggerRef.current) {\n const { offsetLeft, offsetWidth } = dropdownTriggerRef.current;\n setUnderlineStyle({\n left: offsetLeft,\n width: offsetWidth,\n });\n return;\n }\n\n const activeTabIndex = tabs.findIndex((tab) => tab.value === activeTab);\n const activeTabElement = tabRefs.current[activeTabIndex];\n\n if (\n activeTabElement &&\n visibleTabs.some((tab) => tab.value === activeTab)\n ) {\n const { offsetLeft, offsetWidth } = activeTabElement;\n setUnderlineStyle({\n left: offsetLeft,\n width: offsetWidth,\n });\n }\n };\n\n updateUnderline();\n }, [activeTab, visibleTabs, overflowTabs, tabs]);\n\n const activeTabData = useMemo(\n () => tabs.find((tab) => tab.value === activeTab),\n [tabs, activeTab],\n );\n\n const renderTab = (tab: AnimatedTabItem, originalIndex: number) => {\n const isActive = activeTab === tab.value;\n\n const tabClassName = cn(\n 'cn-animated-tabs-tab',\n isActive\n ? 'cn-animated-tabs-tab-active'\n : 'cn-animated-tabs-tab-inactive',\n );\n\n const setRef = (el: HTMLElement | null) => {\n if (originalIndex >= 0) {\n tabRefs.current[originalIndex] = el;\n }\n };\n\n if (tab.href && LinkComponent) {\n return (\n <LinkComponent\n key={tab.value}\n href={tab.href}\n className={tabClassName}\n ref={setRef as React.Ref<HTMLAnchorElement>}\n {...(locale && { locale })}\n >\n {tab.name}\n </LinkComponent>\n );\n }\n\n return (\n <button\n key={tab.value}\n type=\"button\"\n ref={setRef}\n onClick={() => handleTabChange(tab.value)}\n className={tabClassName}\n >\n {tab.name}\n </button>\n );\n };\n\n const renderDropdownItem = (tab: AnimatedTabItem) => {\n const isActive = activeTab === tab.value;\n const itemClassName = cn(\n 'cn-animated-tabs-dropdown-item',\n isActive && 'cn-animated-tabs-dropdown-item-active',\n );\n\n if (tab.href && LinkComponent) {\n return (\n <DropdownMenuItem\n key={tab.value}\n render={\n <LinkComponent href={tab.href} {...(locale && { locale })}>\n {tab.name}\n </LinkComponent>\n }\n className={itemClassName}\n >\n {tab.name}\n </DropdownMenuItem>\n );\n }\n\n return (\n <DropdownMenuItem\n key={tab.value}\n onClick={() => handleTabChange(tab.value)}\n className={itemClassName}\n >\n {tab.name}\n </DropdownMenuItem>\n );\n };\n\n return (\n <div\n data-slot=\"animated-tabs\"\n className={cn('cn-animated-tabs flex flex-col', className)}\n >\n <div ref={containerRef} className=\"w-full\">\n <div\n ref={tabsListRef}\n data-slot=\"animated-tabs-list\"\n className=\"cn-animated-tabs-list relative flex items-center\"\n >\n {visibleTabs.map((tab) => {\n const originalIndex = tabs.findIndex((t) => t.value === tab.value);\n return renderTab(tab, originalIndex);\n })}\n\n {overflowTabs.length > 0 && (\n <DropdownMenu>\n <DropdownMenuTrigger\n ref={dropdownTriggerRef}\n className={cn(\n 'cn-animated-tabs-tab cn-animated-tabs-more relative z-10 flex items-center',\n overflowTabs.some((tab) => tab.value === activeTab)\n ? 'cn-animated-tabs-tab-active'\n : 'cn-animated-tabs-tab-inactive',\n )}\n >\n More\n <IconChevronDown className=\"h-4 w-4\" />\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"start\">\n <DropdownMenuContent className=\"min-w-40\">\n {overflowTabs.map(renderDropdownItem)}\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n )}\n\n <motion.div\n data-slot=\"animated-tabs-underline\"\n className=\"cn-animated-tabs-underline absolute\"\n animate={{\n left: underlineStyle.left,\n width: underlineStyle.width,\n }}\n transition={{\n type: 'spring',\n stiffness: 400,\n damping: 40,\n }}\n />\n </div>\n </div>\n\n {activeTabData?.content && (\n <div className=\"flex-1\">{activeTabData.content}</div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype AspectRatioProps = React.ComponentProps<'div'> & {\n ratio?: number;\n};\n\nfunction AspectRatio({\n className,\n ratio = 1,\n style,\n children,\n ...props\n}: AspectRatioProps) {\n return (\n <div\n data-slot=\"aspect-ratio\"\n className={cn('cn-aspect-ratio relative w-full', className)}\n style={{ paddingBottom: `${100 / ratio}%`, ...style }}\n {...props}\n >\n <div className=\"absolute inset-0\">{children}</div>\n </div>\n );\n}\n\nexport { AspectRatio };\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype BackgroundImageProps = React.ComponentProps<'div'> & {\n src: string;\n radius?: ComponentRadius;\n};\n\nfunction BackgroundImage({\n className,\n src,\n radius = 'md',\n style,\n ...props\n}: BackgroundImageProps) {\n return (\n <div\n data-slot=\"background-image\"\n data-radius={radius}\n className={cn(\n 'cn-background-image bg-cover bg-center bg-no-repeat',\n className,\n )}\n style={{\n backgroundImage: `url(${src})`,\n ...style,\n }}\n {...props}\n />\n );\n}\n\nexport { BackgroundImage };\nexport type { BackgroundImageProps };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\nconst BADGE_VARIANT_CN: Record<\n NonNullable<VariantProps<typeof badgeVariants>['variant']>,\n string\n> = {\n default: 'cn-badge-variant-default',\n secondary: 'cn-badge-variant-secondary',\n destructive: 'cn-badge-variant-destructive-filled',\n outline: 'cn-badge-variant-outline',\n light: 'cn-badge-variant-light',\n dot: 'cn-badge-variant-dot',\n success: 'cn-badge-variant-success',\n warning: 'cn-badge-variant-warning',\n ghost: 'cn-badge-variant-ghost',\n link: 'cn-badge-variant-link',\n};\n\nconst badgeVariants = cva(\n 'cn-badge inline-flex items-center justify-center border font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none overflow-hidden',\n {\n variants: {\n variant: {\n default: '',\n secondary: '',\n destructive: '',\n outline: '',\n light: '',\n dot: '',\n success: '',\n warning: '',\n ghost: '',\n link: '',\n },\n size: {\n xs: 'text-[10px] px-1.5 py-0 gap-0.5 [&>svg]:size-2.5 h-4',\n sm: 'text-xs px-2 py-0.5 gap-1 [&>svg]:size-3 h-5',\n md: 'text-xs px-2.5 py-1 gap-1 [&>svg]:size-3 h-6',\n lg: 'text-sm px-3 py-1 gap-1.5 [&>svg]:size-3.5 h-7',\n xl: 'text-base px-4 py-1.5 gap-2 [&>svg]:size-4 h-8',\n },\n radius: {\n none: 'rounded-none',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n full: 'rounded-full',\n },\n circle: { true: 'rounded-full aspect-square p-0', false: '' },\n },\n defaultVariants: {\n variant: 'default',\n size: 'sm',\n radius: 'full',\n circle: false,\n },\n },\n);\n\ntype BadgeProps = React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n render?: useRender.RenderProp;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n color?: ComponentColor;\n };\n\nfunction Badge({\n className,\n variant = 'default',\n size,\n radius,\n circle,\n color,\n render = <span />,\n leftSection,\n rightSection,\n children,\n ...props\n}: BadgeProps) {\n const colorStyle = color\n ? ({\n '--badge-color': `var(--${color})`,\n '--badge-color-fg': `var(--${color}-foreground, white)`,\n } as React.CSSProperties)\n : undefined;\n\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'badge',\n style: { ...colorStyle, ...props.style },\n className: cn(\n BADGE_VARIANT_CN[variant ?? 'default'],\n badgeVariants({ size, radius, circle }),\n color && 'bg-[var(--badge-color)] text-[var(--badge-color-fg)]',\n className,\n ),\n children: (\n <>\n {leftSection}\n {children}\n {rightSection}\n </>\n ),\n },\n defaultTagName: 'span',\n });\n}\n\nexport { Badge, badgeVariants };\nexport type { BadgeProps };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst blockquoteVariants = cva(\n 'cn-blockquote border-l-4 pl-4 text-sm leading-relaxed text-foreground',\n {\n variants: {\n variant: {\n default: 'cn-blockquote-variant-default',\n primary: 'cn-blockquote-variant-primary',\n secondary: 'cn-blockquote-variant-secondary',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Blockquote({\n className,\n variant,\n ...props\n}: React.ComponentProps<'blockquote'> &\n VariantProps<typeof blockquoteVariants>) {\n return (\n <blockquote\n data-slot=\"blockquote\"\n className={cn(blockquoteVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Blockquote, blockquoteVariants };\n","'use client';\n\nimport { IconMenu2, IconX } from '@tabler/icons-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst burgerVariants = cva(\n 'cn-burger inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring cursor-pointer disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n size: {\n sm: 'size-8 [&>svg]:size-4',\n md: 'size-9 [&>svg]:size-5',\n lg: 'size-10 [&>svg]:size-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\ntype BurgerProps = Omit<React.ComponentProps<'button'>, 'children'> &\n VariantProps<typeof burgerVariants> & {\n opened: boolean;\n ariaLabel?: string;\n };\n\nfunction Burger({\n className,\n size,\n opened,\n ariaLabel = 'Toggle menu',\n ...props\n}: BurgerProps) {\n return (\n <button\n type=\"button\"\n data-slot=\"burger\"\n data-opened={opened}\n className={cn(burgerVariants({ size }), className)}\n aria-label={ariaLabel}\n aria-expanded={opened}\n {...props}\n >\n {opened ? <IconX /> : <IconMenu2 />}\n </button>\n );\n}\n\nexport { Burger, burgerVariants };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cn } from '../../lib/utils';\nimport { Separator } from './separator';\n\nconst BUTTON_GROUP_BASE_CN = cn(\n 'flex w-fit items-stretch',\n '[&>*]:focus-visible:relative [&>*]:focus-visible:z-10',\n \"[&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit\",\n '[&>input]:flex-1',\n);\n\nfunction ButtonGroup({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<'fieldset'> & {\n orientation?: 'horizontal' | 'vertical';\n}) {\n return (\n <fieldset\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(\n BUTTON_GROUP_BASE_CN,\n 'cn-button-group',\n orientation === 'vertical'\n ? 'cn-button-group-orientation-vertical flex-col'\n : 'cn-button-group-orientation-horizontal',\n orientation === 'vertical'\n ? '[&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none'\n : '[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ButtonGroupText({\n className,\n render = <div />,\n ...props\n}: React.ComponentProps<'div'> & {\n render?: useRender.RenderProp;\n}) {\n return useRender({\n render,\n props: {\n ...props,\n className: cn(\n 'cn-button-group-text flex h-9 items-center leading-5',\n className,\n ),\n },\n defaultTagName: 'div',\n });\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = 'vertical',\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n 'cn-button-group-separator relative !m-0 self-stretch data-[orientation=vertical]:h-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText };\n","'use client';\n\nimport {\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n} from '@tabler/icons-react';\nimport * as React from 'react';\nimport {\n type DayButton,\n DayPicker,\n getDefaultClassNames,\n} from 'react-day-picker';\n\nexport type { DateRange } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\nimport { Button, buttonVariants } from './button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = 'label',\n buttonVariant = 'ghost',\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>['variant'];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n 'cn-calendar bg-background group/calendar [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent',\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString('default', { month: 'short' }),\n ...formatters,\n }}\n classNames={{\n root: cn('w-fit', defaultClassNames.root),\n months: cn(\n 'flex gap-4 flex-col md:flex-row relative',\n defaultClassNames.months,\n ),\n month: cn('flex flex-col w-full gap-4', defaultClassNames.month),\n nav: cn(\n 'flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between',\n defaultClassNames.nav,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_previous,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none',\n defaultClassNames.button_next,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n month_caption: cn(\n 'flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)',\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n 'w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5',\n defaultClassNames.dropdowns,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n dropdown_root: cn(\n 'cn-calendar-dropdown-root relative',\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\n 'absolute bg-popover inset-0 opacity-0',\n defaultClassNames.dropdown,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n caption_label: cn(\n 'select-none font-medium',\n captionLayout === 'label'\n ? 'text-sm'\n : cn(\n 'cn-calendar-caption-label flex items-center gap-1 text-sm [&>svg]:text-muted-foreground [&>svg]:size-3.5',\n ),\n defaultClassNames.caption_label,\n ),\n table: 'w-full border-collapse',\n weekdays: cn('flex', defaultClassNames.weekdays),\n weekday: cn(\n 'text-muted-foreground rounded-[var(--cell-radius)] flex-1 font-normal text-[0.8rem] select-none',\n defaultClassNames.weekday,\n ),\n week: cn('flex w-full mt-2', defaultClassNames.week),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n week_number_header: cn(\n 'select-none w-(--cell-size)',\n defaultClassNames.week_number_header,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n week_number: cn(\n 'text-[0.8rem] select-none text-muted-foreground',\n defaultClassNames.week_number,\n ),\n day: cn(\n 'relative w-full h-full p-0 text-center group/day aspect-square select-none',\n '[&:last-child[data-selected=true]_button]:rounded-r-[var(--cell-radius)]',\n props.showWeekNumber\n ? '[&:nth-child(2)[data-selected=true]_button]:rounded-l-[var(--cell-radius)]'\n : '[&:first-child[data-selected=true]_button]:rounded-l-[var(--cell-radius)]',\n defaultClassNames.day,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n range_start: cn(\n 'rounded-l-[var(--cell-radius)] bg-accent',\n defaultClassNames.range_start,\n ),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n range_middle: cn('rounded-none', defaultClassNames.range_middle),\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects snake_case keys\n range_end: cn(\n 'rounded-r-[var(--cell-radius)] bg-accent',\n defaultClassNames.range_end,\n ),\n today: cn(\n 'bg-accent/60 text-accent-foreground rounded-[var(--cell-radius)] data-[selected=true]:rounded-none',\n defaultClassNames.today,\n ),\n outside: cn(\n 'text-muted-foreground aria-selected:text-muted-foreground',\n defaultClassNames.outside,\n ),\n disabled: cn(\n 'text-muted-foreground opacity-50',\n defaultClassNames.disabled,\n ),\n hidden: cn('invisible', defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === 'left') {\n return (\n <IconChevronLeft className={cn('size-4', className)} {...props} />\n );\n }\n\n if (orientation === 'right') {\n return (\n <IconChevronRight\n className={cn('size-4', className)}\n {...props}\n />\n );\n }\n\n return (\n <IconChevronDown className={cn('size-4', className)} {...props} />\n );\n },\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n DayButton: CalendarDayButton,\n // biome-ignore lint/style/useNamingConvention: react-day-picker expects PascalCase keys\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) {\n ref.current?.focus();\n }\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n 'data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 rounded-[var(--cell-radius)] leading-none font-normal transition-colors hover:bg-muted/60 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-[var(--cell-radius)] data-[range-end=true]:rounded-r-[var(--cell-radius)] data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-[var(--cell-radius)] data-[range-start=true]:rounded-l-[var(--cell-radius)] [&>span]:text-xs [&>span]:opacity-70',\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n","'use client';\n\nimport { IconChevronLeft, IconChevronRight } from '@tabler/icons-react';\nimport useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\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 ...props\n}: React.ComponentProps<'div'> & CarouselProps) {\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 scrollPrev = () => {\n api?.scrollPrev();\n };\n\n const scrollNext = () => {\n api?.scrollNext();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n scrollNext();\n }\n };\n\n React.useEffect(() => {\n if (!(api && setApi)) {\n return;\n }\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n\n const handleSelect = (carouselApi: CarouselApi) => {\n if (!carouselApi) {\n return;\n }\n setCanScrollPrev(carouselApi.canScrollPrev());\n setCanScrollNext(carouselApi.canScrollNext());\n };\n\n handleSelect(api);\n api.on('reInit', handleSelect);\n api.on('select', handleSelect);\n\n return () => {\n api.off('select', handleSelect);\n api.off('reInit', handleSelect);\n };\n }, [api]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <section\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </section>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<'div'>) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className=\"overflow-hidden\"\n data-slot=\"carousel-content\"\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 ...props\n}: React.ComponentProps<'fieldset'>) {\n const { orientation } = useCarousel();\n\n return (\n <fieldset\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full border-0 p-0 m-0',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n 'cn-carousel-previous absolute size-8',\n orientation === 'horizontal'\n ? 'top-1/2 -left-8 -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 >\n <IconChevronLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n 'cn-carousel-next absolute size-8',\n orientation === 'horizontal'\n ? 'top-1/2 -right-8 -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 >\n <IconChevronRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype CenterProps = React.ComponentProps<'div'> & {\n inline?: boolean;\n};\n\nfunction Center({ className, inline, children, ...props }: CenterProps) {\n return (\n <div\n data-slot=\"center\"\n className={cn(\n 'flex items-center justify-center',\n inline && 'inline-flex',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { Center };\n","'use client';\n\nimport * as React from 'react';\nimport * as RechartsPrimitive from 'recharts';\nimport { cn } from '../../lib/utils';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nconst sanitizeToken = (value: string) => value.replace(/[^a-zA-Z0-9-_]/g, '');\n\nexport type ChartConfig = {\n [k in string]: {\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 ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n}) {\n const uniqueId = React.useId();\n const sanitizedUniqueId = sanitizeToken(uniqueId);\n const chartToken = id ? sanitizeToken(id) : sanitizedUniqueId;\n const chartId = `chart-${chartToken || sanitizedUniqueId}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\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 // biome-ignore lint/security/noDangerouslySetInnerHtml: CSS injection for chart themes\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 const token = sanitizeToken(key);\n\n if (!color) {\n return null;\n }\n\n if (!token) {\n return null;\n }\n\n return ` --color-${token}: ${color};`;\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 }) {\n const { config } = useChart();\n\n const tooltipLabel = getTooltipLabel({\n hideLabel,\n payload,\n labelKey,\n label,\n labelFormatter,\n labelClassName,\n config,\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 'cn-chart-tooltip grid min-w-[8rem] items-start',\n className,\n )}\n >\n {nestLabel ? null : tooltipLabel}\n <div className=\"grid gap-1.5\">\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(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\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': indicator === 'dot',\n 'w-1': indicator === 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator === 'dashed',\n 'my-0.5': nestLabel && indicator === 'dashed',\n },\n )}\n style={\n {\n '--color-bg': indicatorColor,\n '--color-border': indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel ? 'items-end' : 'items-center',\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {item.value.toLocaleString()}\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 Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {\n hideIcon?: boolean;\n nameKey?: string;\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center gap-4',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== 'none')\n .map((item) => {\n const key = `${nameKey || item.dataKey || 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n '[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3',\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 let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nfunction getTooltipLabel({\n hideLabel,\n payload,\n labelKey,\n label,\n labelFormatter,\n labelClassName,\n config,\n}: {\n hideLabel: boolean;\n payload?: React.ComponentProps<typeof RechartsPrimitive.Tooltip>['payload'];\n labelKey?: string;\n label: React.ReactNode;\n labelFormatter?: React.ComponentProps<\n typeof RechartsPrimitive.Tooltip\n >['labelFormatter'];\n labelClassName?: string;\n config: ChartConfig;\n}) {\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 as keyof typeof config]?.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\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n","'use client';\n\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype CloseButtonProps = Omit<\n React.ComponentProps<typeof Button>,\n 'children'\n> & {\n iconSize?: number;\n};\n\nfunction CloseButton({\n className,\n size = 'icon-sm',\n variant = 'ghost',\n iconSize = 16,\n ...props\n}: CloseButtonProps) {\n return (\n <Button\n data-slot=\"close-button\"\n size={size}\n variant={variant}\n className={cn('cn-close-button shrink-0', className)}\n {...props}\n >\n <IconX size={iconSize} />\n </Button>\n );\n}\n\nexport { CloseButton };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst codeVariants = cva('font-mono', {\n variants: {\n variant: {\n inline: 'cn-code-inline relative px-1.5 py-0.5 text-sm',\n block: 'cn-code-block block w-full p-4 text-sm overflow-x-auto',\n },\n },\n defaultVariants: {\n variant: 'inline',\n },\n});\n\nfunction Code({\n className,\n variant = 'inline',\n ...props\n}: React.ComponentProps<'code'> & VariantProps<typeof codeVariants>) {\n if (variant === 'block') {\n return (\n <pre className=\"my-4\">\n <code\n data-slot=\"code\"\n className={cn(codeVariants({ variant }), className)}\n {...props}\n />\n </pre>\n );\n }\n\n return (\n <code\n data-slot=\"code\"\n className={cn(codeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Code, codeVariants };\n","'use client';\n\nimport { IconColorPicker } from '@tabler/icons-react';\nimport * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n type ColorFormat,\n formatColor,\n isColorValid,\n parseColor,\n} from '../../lib/color-utils';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { ActionIcon } from './action-icon';\nimport { ColorPicker } from './color-picker';\nimport { ColorSwatch } from './color-swatch';\nimport { Input } from './input';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\nimport { Popover, PopoverContent } from './popover';\n\nconst sizeClasses: Record<ComponentSize, string> = {\n xs: 'h-7 text-xs px-2',\n sm: 'h-8 text-sm px-2.5',\n md: 'h-9 text-sm px-3',\n lg: 'h-10 text-base px-4',\n xl: 'h-12 text-lg px-5',\n};\n\nconst previewSizes: Record<ComponentSize, number> = {\n xs: 16,\n sm: 18,\n md: 22,\n lg: 28,\n xl: 36,\n};\n\ntype ColorInputProps = Omit<\n React.ComponentProps<typeof Input>,\n 'type' | 'value' | 'defaultValue' | 'onChange'\n> &\n Omit<InputWrapperProps, 'children'> & {\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onValueChange?: (value: string) => void;\n onChangeEnd?: (value: string) => void;\n format?: ColorFormat;\n size?: ComponentSize;\n /** If true, input value resets to last valid on blur. @default true */\n fixOnBlur?: boolean;\n /** If true, user can only pick via picker/swatches, not type. */\n disallowInput?: boolean;\n /** Show color preview swatch on the left. @default true */\n withPreview?: boolean;\n /** Show eye dropper button. @default true when supported */\n withEyeDropper?: boolean;\n eyeDropperIcon?: React.ReactNode;\n /** Close dropdown when a swatch is clicked. @default false */\n closeOnColorSwatchClick?: boolean;\n /** Preset swatches in dropdown */\n swatches?: string[];\n swatchesPerRow?: number;\n /** Show saturation/hue/alpha picker in dropdown. @default true */\n withPicker?: boolean;\n /** When false, no dropdown popover (e.g. when used inside ColorPicker). @default true */\n withPopover?: boolean;\n };\n\nfunction useEyeDropper(): {\n supported: boolean;\n open: () => Promise<{ sRGBHex: string } | undefined>;\n} {\n const supported = typeof window !== 'undefined' && 'EyeDropper' in window;\n const open = useCallback(async () => {\n if (!(supported && 'EyeDropper' in window)) {\n return undefined;\n }\n const w = window as unknown as Window & { [key: string]: unknown };\n const Klass = w.EyeDropper;\n if (typeof Klass !== 'function') {\n return undefined;\n }\n const dropper = new (\n Klass as new () => { open: () => Promise<{ sRGBHex: string }> }\n )();\n return await dropper.open();\n }, [supported]);\n return { supported: !!supported, open };\n}\n\nexport const ColorInput = React.forwardRef<HTMLInputElement, ColorInputProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size = 'sm',\n value: valueProp,\n defaultValue,\n onChange,\n onValueChange,\n onChangeEnd,\n format = 'hex',\n fixOnBlur = true,\n disallowInput = false,\n withPreview = true,\n withEyeDropper: withEyeDropperProp = true,\n eyeDropperIcon,\n closeOnColorSwatchClick = false,\n swatches = [],\n swatchesPerRow = 7,\n withPicker = true,\n withPopover = true,\n onFocus,\n onBlur,\n onClick,\n readOnly,\n placeholder,\n ...inputProps\n },\n ref,\n ) => {\n const [dropdownOpened, setDropdownOpened] = useState(false);\n const [lastValidValue, setLastValidValue] = useState('');\n const [internalValue, setInternalValue] = useState(\n defaultValue ?? valueProp ?? '',\n );\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueProp : internalValue;\n const setValue = useCallback(\n (v: string) => {\n if (!isControlled) {\n setInternalValue(v);\n }\n onChange?.(v);\n onValueChange?.(v);\n },\n [isControlled, onChange, onValueChange],\n );\n const { supported: eyeDropperSupported, open: openEyeDropper } =\n useEyeDropper();\n const _withEyeDropper = withEyeDropperProp && eyeDropperSupported;\n const inputRef = useRef<HTMLInputElement | null>(null);\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const popoverContentRef = useRef<HTMLDivElement | null>(null);\n const openTimestampRef = useRef(0);\n const pointerDownInPopoverRef = useRef(false);\n\n useEffect(() => {\n if (isColorValid(value) || value.trim() === '') {\n setLastValidValue(value);\n }\n }, [value]);\n\n const prevFormatRef = useRef(format);\n useEffect(() => {\n if (prevFormatRef.current !== format && isColorValid(value)) {\n setValue(formatColor(parseColor(value), format));\n prevFormatRef.current = format;\n }\n }, [format, value, setValue]);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n openTimestampRef.current = Date.now();\n setDropdownOpened(true);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (fixOnBlur) {\n setValue(lastValidValue);\n if (!isControlled) {\n setInternalValue(lastValidValue);\n }\n }\n onBlur?.(e);\n const next = e.relatedTarget as Node | null;\n const inputContainer = inputRef.current?.parentElement;\n const stayedInInputArea = next && inputContainer?.contains(next);\n const checkClose = () => {\n if (Date.now() - openTimestampRef.current < 150) {\n return;\n }\n if (pointerDownInPopoverRef.current) {\n return;\n }\n const active = document.activeElement;\n const inPopover =\n popoverContentRef.current?.contains(active) ||\n (next && popoverContentRef.current?.contains(next));\n if (!(inPopover || stayedInInputArea) && active !== inputRef.current) {\n setDropdownOpened(false);\n }\n };\n setTimeout(checkClose, 0);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n onClick?.(e);\n openTimestampRef.current = Date.now();\n setDropdownOpened(true);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = e.currentTarget.value;\n setValue(v);\n if (!isControlled) {\n setInternalValue(v);\n }\n if (isColorValid(v)) {\n onChangeEnd?.(formatColor(parseColor(v), format));\n }\n };\n\n const handleEyeDropper = async () => {\n try {\n const payload = await openEyeDropper();\n if (payload?.sRGBHex) {\n const color = formatColor(parseColor(payload.sRGBHex), format);\n setValue(color);\n if (!isControlled) {\n setInternalValue(color);\n }\n onChangeEnd?.(color);\n }\n } catch {\n // User cancelled or error\n }\n };\n\n const hasWrapper =\n label || description || error || required || withAsterisk;\n const popoverDisabled =\n readOnly ||\n disabled ||\n (withPicker === false && (!swatches.length || swatches.length === 0));\n\n const leftSection = withPreview && (\n <ColorSwatch\n color={isColorValid(value) ? value : '#fff'}\n size={previewSizes[size as ComponentSize]}\n radius=\"sm\"\n withShadow\n className=\"shrink-0\"\n />\n );\n\n const eyeDropperSizes: Record<ComponentSize, string> = {\n xs: 'w-[22px] h-[22px]',\n sm: 'w-[26px] h-[26px]',\n md: 'w-7 h-7',\n lg: 'w-8 h-8',\n xl: 'w-10 h-10',\n };\n\n const eyeDropperIconSizes: Record<ComponentSize, string> = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-4 h-4',\n md: 'w-[18px] h-[18px]',\n lg: 'w-5 h-5',\n xl: 'w-[22px] h-[22px]',\n };\n\n const rightSection =\n withEyeDropperProp && !disabled && !readOnly && eyeDropperSupported ? (\n <ActionIcon\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Pick color from screen\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n handleEyeDropper();\n }}\n className={cn(\n 'cn-color-input-eye-dropper',\n eyeDropperSizes[size as ComponentSize],\n )}\n >\n {eyeDropperIcon ?? (\n <IconColorPicker\n className={eyeDropperIconSizes[size as ComponentSize]}\n stroke={1.5}\n />\n )}\n </ActionIcon>\n ) : null;\n\n const inputEl = (\n <div ref={anchorRef} className=\"relative w-full\">\n {leftSection && (\n <div className=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 flex items-center\">\n {leftSection}\n </div>\n )}\n <Input\n ref={(el) => {\n (\n inputRef as React.MutableRefObject<HTMLInputElement | null>\n ).current = el;\n if (typeof ref === 'function') {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n type=\"text\"\n autoComplete=\"off\"\n spellCheck={false}\n value={value}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={handleClick}\n readOnly={disallowInput || readOnly}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n required={required}\n placeholder={\n placeholder ?? (format === 'hex' ? '#000000' : 'rgb(0, 0, 0)')\n }\n className={cn(\n sizeClasses[size as ComponentSize],\n leftSection && 'pl-10',\n rightSection && 'pr-10',\n (disallowInput || readOnly) && 'cursor-pointer',\n 'transition-colors',\n className,\n )}\n {...inputProps}\n />\n {rightSection && (\n <div className=\"absolute right-0.5 top-1/2 -translate-y-1/2 flex items-center pointer-events-auto\">\n {rightSection}\n </div>\n )}\n </div>\n );\n\n const content =\n !withPopover || popoverDisabled ? (\n inputEl\n ) : (\n <Popover open={dropdownOpened} onOpenChange={setDropdownOpened}>\n {inputEl}\n <PopoverContent\n anchor={anchorRef}\n align=\"start\"\n side=\"bottom\"\n sideOffset={5}\n className=\"cn-color-input-popover\"\n initialFocus={false}\n onPointerDownCapture={() => {\n pointerDownInPopoverRef.current = true;\n }}\n onPointerUpCapture={() => {\n setTimeout(() => {\n pointerDownInPopoverRef.current = false;\n }, 50);\n }}\n onMouseDown={(e: React.MouseEvent) => {\n const t = e.target as HTMLElement;\n if (\n !(\n t.closest('[data-slot=\"slider\"]') ||\n t.closest('[role=\"slider\"]') ||\n t.closest('button')\n )\n ) {\n e.preventDefault();\n }\n }}\n >\n <div ref={popoverContentRef}>\n <ColorPicker\n value={value}\n onChange={(v) => {\n setValue(v);\n if (!isControlled) {\n setInternalValue(v);\n }\n }}\n onChangeEnd={onChangeEnd}\n format={format}\n swatches={swatches}\n swatchesPerRow={swatchesPerRow}\n withPicker={withPicker}\n size={size as ComponentSize}\n onColorSwatchClick={\n closeOnColorSwatchClick\n ? () => setDropdownOpened(false)\n : undefined\n }\n />\n </div>\n </PopoverContent>\n </Popover>\n );\n\n if (!hasWrapper) {\n return content;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {content}\n </InputWrapper>\n );\n },\n);\n\nColorInput.displayName = 'ColorInput';\n","/** Hsva: h 0-360, s/v/a 0-1 */\nexport type Hsva = { h: number; s: number; v: number; a: number };\n\nexport type ColorFormat = 'hex' | 'hexa' | 'rgb' | 'rgba' | 'hsl' | 'hsla';\n\nfunction hex2rgb(hex: string): [number, number, number] {\n const n = hex.replace(/^#/, '');\n if (n.length === 3) {\n const r = Number.parseInt(n[0] + n[0], 16);\n const g = Number.parseInt(n[1] + n[1], 16);\n const b = Number.parseInt(n[2] + n[2], 16);\n return [r, g, b];\n }\n return [\n Number.parseInt(n.slice(0, 2), 16),\n Number.parseInt(n.slice(2, 4), 16),\n Number.parseInt(n.slice(4, 6), 16),\n ];\n}\n\nfunction rgb2hsv(r: number, g: number, b: number): [number, number, number] {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n const v = max;\n const s = max === 0 ? 0 : d / max;\n let h = 0;\n if (max !== min) {\n switch (max) {\n case rn:\n h = (gn - bn) / d + (gn < bn ? 6 : 0);\n break;\n case gn:\n h = (bn - rn) / d + 2;\n break;\n default:\n h = (rn - gn) / d + 4;\n }\n h /= 6;\n }\n return [h * 360, s, v];\n}\n\nfunction hsv2rgb(h: number, s: number, v: number): [number, number, number] {\n const hn = (h % 360) / 360;\n const i = Math.floor(hn * 6);\n const f = hn * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n return [v * 255, t * 255, p * 255];\n case 1:\n return [q * 255, v * 255, p * 255];\n case 2:\n return [p * 255, v * 255, t * 255];\n case 3:\n return [p * 255, q * 255, v * 255];\n case 4:\n return [t * 255, p * 255, v * 255];\n default: {\n return [v * 255, p * 255, q * 255];\n }\n }\n}\n\nconst RGB_RE =\n /rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/;\nconst HEX_RE = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\nconst HSL_RE =\n /hsla?\\s*\\(\\s*(\\d+)\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/;\n\n/** Returns true if the string is empty or a parseable color (hex, rgb, rgba, hsl, hsla). */\nexport function isColorValid(value: string | null | undefined): boolean {\n const t = value?.trim();\n if (t === '' || t == null) {\n return true;\n }\n return HEX_RE.test(t) || RGB_RE.test(t) || HSL_RE.test(t);\n}\n\nfunction hsl2rgb(h: number, s: number, l: number): [number, number, number] {\n const sn = s / 100;\n const ln = l / 100;\n const c = (1 - Math.abs(2 * ln - 1)) * sn;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = ln - c / 2;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n return [(r + m) * 255, (g + m) * 255, (b + m) * 255];\n}\n\nfunction rgb2hsl(r: number, g: number, b: number): [number, number, number] {\n const rn = r / 255;\n const gn = g / 255;\n const bn = b / 255;\n const max = Math.max(rn, gn, bn);\n const min = Math.min(rn, gn, bn);\n const d = max - min;\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n if (max !== min) {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn:\n h = (gn - bn) / d + (gn < bn ? 6 : 0);\n break;\n case gn:\n h = (bn - rn) / d + 2;\n break;\n default:\n h = (rn - gn) / d + 4;\n }\n h /= 6;\n }\n return [h * 360, s * 100, l * 100];\n}\n\n/** Parse color string to Hsva. Falls back to black opaque on parse failure. */\nexport function parseColor(value: string): Hsva {\n const fallback: Hsva = { h: 0, s: 0, v: 0, a: 1 };\n const trimmed = value?.trim();\n if (!trimmed) {\n return fallback;\n }\n\n const hex = HEX_RE.exec(trimmed);\n if (hex) {\n const part = hex[1];\n const [r, g, b] =\n part.length <= 4\n ? hex2rgb(part)\n : [\n Number.parseInt(part.slice(0, 2), 16),\n Number.parseInt(part.slice(2, 4), 16),\n Number.parseInt(part.slice(4, 6), 16),\n ];\n const a =\n part.length === 8 ? Number.parseInt(part.slice(6, 8), 16) / 255 : 1;\n const [h, s, vv] = rgb2hsv(r, g, b);\n return { h, s, v: vv, a };\n }\n\n const rgb = RGB_RE.exec(trimmed);\n if (rgb) {\n const r = Number(rgb[1]);\n const g = Number(rgb[2]);\n const b = Number(rgb[3]);\n const a = rgb[4] != null ? Number(rgb[4]) : 1;\n const [h, s, vv] = rgb2hsv(r, g, b);\n return { h, s, v: vv, a };\n }\n\n const hsl = HSL_RE.exec(trimmed);\n if (hsl) {\n const h = Number(hsl[1]);\n const s = Number(hsl[2]);\n const l = Number(hsl[3]);\n const a = hsl[4] != null ? Number(hsl[4]) : 1;\n const [r, g, b] = hsl2rgb(h, s, l);\n const [hh, ss, vv] = rgb2hsv(r, g, b);\n return { h: hh, s: ss, v: vv, a };\n }\n\n return fallback;\n}\n\n/** Format Hsva to string by format. */\nexport function formatColor(hsva: Hsva, format: ColorFormat): string {\n const [r, g, b] = hsv2rgb(hsva.h, hsva.s, hsva.v);\n const rr = Math.round(r);\n const gg = Math.round(g);\n const bb = Math.round(b);\n const a = hsva.a;\n\n switch (format) {\n case 'hex':\n return `#${[rr, gg, bb].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n case 'hexa':\n return `#${[rr, gg, bb, Math.round(a * 255)].map((x) => x.toString(16).padStart(2, '0')).join('')}`;\n case 'rgb':\n return `rgb(${rr}, ${gg}, ${bb})`;\n case 'rgba':\n return `rgba(${rr}, ${gg}, ${bb}, ${a})`;\n case 'hsl': {\n const [h, s, l] = rgb2hsl(rr, gg, bb);\n return `hsl(${Math.round(h)}, ${Math.round(s)}%, ${Math.round(l)}%)`;\n }\n case 'hsla': {\n const [h, s, l] = rgb2hsl(rr, gg, bb);\n return `hsla(${Math.round(h)}, ${Math.round(s)}%, ${Math.round(l)}%, ${a})`;\n }\n default:\n return formatColor(hsva, 'hex');\n }\n}\n\nexport function hasAlpha(format: ColorFormat): boolean {\n return format === 'hexa' || format === 'rgba' || format === 'hsla';\n}\n","'use client';\n\nimport type * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport {\n type ColorFormat,\n formatColor,\n type Hsva,\n hasAlpha,\n parseColor,\n} from '../../lib/color-utils';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { ColorInput } from './color-input';\nimport { ColorSwatch } from './color-swatch';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\ntype ColorPickerProps = Omit<\n React.ComponentProps<typeof ColorInput>,\n 'label' | 'description' | 'error' | 'onChange' | 'onValueChange' | 'size'\n> &\n Omit<InputWrapperProps, 'children'> & {\n size?: ComponentSize;\n value?: string;\n onChange?: (value: string) => void;\n onChangeEnd?: (value: string) => void;\n /** hex | hexa | rgb | rgba | hsl | hsla */\n format?: ColorFormat;\n /** Show saturation + hue (+ alpha) picker. false = swatches only */\n withPicker?: boolean;\n fullWidth?: boolean;\n /** Preset colors */\n swatches?: string[];\n swatchesPerRow?: number;\n /** Called when a swatch is clicked (e.g. to close parent dropdown) */\n onColorSwatchClick?: () => void;\n saturationLabel?: string;\n hueLabel?: string;\n alphaLabel?: string;\n };\n\nconst SATURATION_HEIGHT: Record<ComponentSize, number> = {\n xs: 80,\n sm: 100,\n md: 120,\n lg: 140,\n xl: 160,\n};\n\nconst THUMB_SIZE: Record<ComponentSize, number> = {\n xs: 12,\n sm: 14,\n md: 16,\n lg: 18,\n xl: 20,\n};\n\nconst SLIDER_TRACK_H: Record<ComponentSize, string> = {\n xs: 'h-1',\n sm: 'h-1.5',\n md: 'h-1.5',\n lg: 'h-1.5',\n xl: 'h-1.5',\n};\nconst SLIDER_THUMB_SZ: Record<ComponentSize, string> = {\n xs: 'size-3',\n sm: 'size-3.5',\n md: 'size-4',\n lg: 'size-4',\n xl: 'size-4',\n};\n\n/** Pointer-based slider (no position:fixed input) - works inside popovers */\nfunction HueAlphaSlider({\n value,\n min,\n max,\n onChange,\n onEnd,\n disabled,\n size,\n trackBg,\n ariaLabel,\n className,\n}: {\n value: number;\n min: number;\n max: number;\n onChange: (v: number) => void;\n onEnd: (value: number) => void;\n disabled?: boolean;\n size: ComponentSize;\n trackBg?: string;\n ariaLabel?: string;\n className?: string;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const lastRef = useRef(value);\n const handleMove = useCallback(\n (clientX: number) => {\n const el = ref.current;\n if (!el) {\n return;\n }\n const rect = el.getBoundingClientRect();\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const v = min + pct * (max - min);\n lastRef.current = v;\n onChange(v);\n },\n [min, max, onChange],\n );\n const handlePointerDown = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) {\n return;\n }\n e.currentTarget.setPointerCapture(e.pointerId);\n handleMove(e.clientX);\n const onMove = (ev: PointerEvent) => handleMove(ev.clientX);\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n onEnd(lastRef.current);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n },\n [disabled, handleMove, onEnd],\n );\n const pct = ((value - min) / (max - min)) * 100;\n const trackH = SLIDER_TRACK_H[size];\n const thumbSz = SLIDER_THUMB_SZ[size];\n return (\n <div\n ref={ref}\n role=\"slider\"\n aria-label={ariaLabel}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'relative flex w-full touch-none select-none items-center overflow-hidden rounded-full',\n trackH,\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n style={\n trackBg ? ({ background: trackBg } as React.CSSProperties) : undefined\n }\n onPointerDown={handlePointerDown}\n >\n <div\n className={cn('cn-color-picker-slider-thumb absolute', thumbSz)}\n style={{\n left: `${pct}%`,\n top: '50%',\n transform: 'translate(-50%, -50%)',\n }}\n />\n </div>\n );\n}\n\n// biome-ignore lint: color picker has many format/size branches\nfunction ColorPicker({\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n disabled,\n className,\n size = 'md',\n format = 'hex',\n withPicker = true,\n fullWidth = false,\n swatches = [],\n swatchesPerRow = 7,\n onColorSwatchClick,\n value,\n onChange,\n onChangeEnd,\n saturationLabel,\n hueLabel,\n alphaLabel,\n ...inputProps\n}: ColorPickerProps) {\n const [hsva, setHsva] = useState<Hsva>(() =>\n parseColor(String(value ?? inputProps.defaultValue ?? '#000000')),\n );\n const isControlled = value !== undefined;\n const valueRef = useRef(value);\n const saturationRef = useRef<HTMLDivElement>(null);\n const lastHsvaRef = useRef<Hsva>(hsva);\n lastHsvaRef.current = hsva;\n\n useEffect(() => {\n if (value === valueRef.current) {\n return;\n }\n valueRef.current = value;\n if (value != null) {\n const next = parseColor(\n typeof value === 'string' ? value : String(value),\n );\n setHsva(next);\n lastHsvaRef.current = next;\n }\n }, [value]);\n\n const emit = useCallback(\n (next: Hsva) => {\n const str = formatColor(next, format);\n if (!isControlled) {\n setHsva(next);\n }\n onChange?.(str);\n },\n [format, isControlled, onChange],\n );\n\n const emitEnd = useCallback(\n (next: Hsva) => {\n const str = formatColor(next, format);\n onChangeEnd?.(str);\n },\n [format, onChangeEnd],\n );\n\n const handleSaturationMove = useCallback(\n (clientX: number, clientY: number) => {\n const el = saturationRef.current;\n if (!el) {\n return;\n }\n const rect = el.getBoundingClientRect();\n const x = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const y = Math.max(\n 0,\n Math.min(1, 1 - (clientY - rect.top) / rect.height),\n );\n const next = { ...hsva, s: x, v: y };\n lastHsvaRef.current = next;\n setHsva(next);\n onChange?.(formatColor(next, format));\n },\n [format, hsva, onChange],\n );\n\n const handleSaturationPointerDown = useCallback(\n (e: React.PointerEvent) => {\n if (disabled) {\n return;\n }\n e.currentTarget.setPointerCapture(e.pointerId);\n handleSaturationMove(e.clientX, e.clientY);\n const onMove = (ev: PointerEvent) =>\n handleSaturationMove(ev.clientX, ev.clientY);\n const onUp = () => {\n document.removeEventListener('pointermove', onMove);\n document.removeEventListener('pointerup', onUp);\n emitEnd(lastHsvaRef.current);\n };\n document.addEventListener('pointermove', onMove);\n document.addEventListener('pointerup', onUp);\n },\n [disabled, emitEnd, handleSaturationMove],\n );\n\n const hueHex = formatColor({ ...hsva, s: 1, v: 1, a: 1 }, 'hex');\n const showAlpha = hasAlpha(format);\n const satHeight = SATURATION_HEIGHT[size];\n const thumbSize = THUMB_SIZE[size];\n\n const pickerEl = (\n <div\n className={cn(\n 'cn-color-picker flex flex-col gap-3',\n fullWidth && 'w-full',\n !fullWidth && 'w-[var(--cp-width,220px)]',\n className,\n )}\n style={\n {\n '--cp-saturation-height': `${satHeight}px`,\n '--cp-thumb-size': `${thumbSize}px`,\n } as React.CSSProperties\n }\n >\n {withPicker && (\n <>\n {/* Saturation / value 2D picker */}\n <div\n ref={saturationRef}\n role=\"slider\"\n aria-label={saturationLabel ?? 'Saturation and brightness'}\n aria-valuenow={hsva.s * 100}\n tabIndex={disabled ? undefined : 0}\n className={cn(\n 'cn-color-picker-saturation relative touch-none select-none',\n disabled && 'pointer-events-none opacity-50',\n )}\n style={{\n height: satHeight,\n background: `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, ${hueHex})`,\n }}\n onPointerDown={handleSaturationPointerDown}\n >\n <div\n className=\"cn-color-picker-thumb absolute\"\n style={{\n left: `${hsva.s * 100}%`,\n top: `${(1 - hsva.v) * 100}%`,\n width: thumbSize,\n height: thumbSize,\n marginLeft: -thumbSize / 2,\n marginTop: -thumbSize / 2,\n backgroundColor: formatColor(hsva, 'hex'),\n }}\n />\n </div>\n\n {/* Hue slider */}\n <div className=\"flex flex-col gap-1\">\n {hueLabel && (\n <span className=\"text-muted-foreground text-xs\">{hueLabel}</span>\n )}\n <HueAlphaSlider\n value={Math.round(hsva.h)}\n min={0}\n max={360}\n onChange={(h) => emit({ ...hsva, h })}\n onEnd={(h) => emitEnd({ ...hsva, h })}\n disabled={disabled}\n size={size}\n trackBg=\"linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)\"\n ariaLabel={hueLabel ?? 'Hue'}\n className=\"cn-color-picker-slider\"\n />\n </div>\n\n {/* Alpha slider */}\n {showAlpha && (\n <div className=\"flex flex-col gap-1\">\n {alphaLabel && (\n <span className=\"text-muted-foreground text-xs\">\n {alphaLabel}\n </span>\n )}\n <div className=\"relative\">\n <div\n className=\"cn-color-picker-alpha-bg absolute inset-0 pointer-events-none\"\n style={{\n background: `linear-gradient(to right, transparent, ${hueHex})`,\n }}\n aria-hidden\n />\n <HueAlphaSlider\n value={Math.round(hsva.a * 100)}\n min={0}\n max={100}\n onChange={(a) => emit({ ...hsva, a: a / 100 })}\n onEnd={(a) => emitEnd({ ...hsva, a: a / 100 })}\n disabled={disabled}\n size={size}\n ariaLabel={alphaLabel ?? 'Alpha'}\n className=\"cn-color-picker-slider relative\"\n />\n </div>\n </div>\n )}\n\n {/* Color preview when alpha */}\n {showAlpha && (\n <div className=\"flex items-center gap-2\">\n <ColorSwatch\n color={formatColor(hsva, format)}\n size={28}\n withShadow\n />\n <ColorInput\n value={formatColor(hsva, format)}\n onValueChange={(v) => {\n const parsed = parseColor(v);\n setHsva(parsed);\n onChange?.(v);\n }}\n disabled={disabled}\n format={\n (format as ColorFormat) === 'hexa'\n ? 'hex'\n : (format as 'hex' | 'rgb' | 'rgba')\n }\n className=\"flex-1 min-w-0\"\n withPopover={false}\n />\n </div>\n )}\n\n {/* Hex/rgb input when no alpha */}\n {!showAlpha && (\n <ColorInput\n value={formatColor(hsva, format)}\n onValueChange={(v) => {\n const parsed = parseColor(v);\n setHsva(parsed);\n onChange?.(v);\n }}\n disabled={disabled}\n format={format}\n withPopover={false}\n {...inputProps}\n />\n )}\n </>\n )}\n\n {swatches.length > 0 && (\n <div\n className=\"grid gap-2\"\n style={{\n gridTemplateColumns: `repeat(${Math.max(1, swatchesPerRow)}, minmax(0, 1fr))`,\n }}\n >\n {swatches.map((color) => (\n <ColorSwatch\n key={color}\n color={color}\n size={26}\n withShadow\n className=\"cn-color-picker-swatch\"\n tabIndex={disabled ? undefined : 0}\n role=\"button\"\n aria-label={`Color ${color}`}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n const parsed = parseColor(color);\n setHsva(parsed);\n onChange?.(color);\n }\n }}\n onClick={() => {\n const parsed = parseColor(color);\n setHsva(parsed);\n onChange?.(color);\n onColorSwatchClick?.();\n }}\n />\n ))}\n </div>\n )}\n </div>\n );\n\n const hasWrapper = label || description || error || required || withAsterisk;\n\n if (!hasWrapper) {\n return pickerEl;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n disabled={disabled}\n >\n {pickerEl}\n </InputWrapper>\n );\n}\n\nexport { ColorPicker };\nexport type { ColorPickerProps };\nexport type { ColorFormat } from '../../lib/color-utils';\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype ColorSwatchProps = React.ComponentProps<'div'> & {\n color: string;\n size?: number | string;\n radius?: ComponentRadius;\n withShadow?: boolean;\n};\n\nconst radiusClasses: Record<ComponentRadius, string> = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n};\n\nfunction ColorSwatch({\n className,\n color,\n size = 28,\n radius = 'full',\n withShadow = true,\n children,\n style,\n ...props\n}: ColorSwatchProps) {\n const sizeStyle =\n typeof size === 'number'\n ? { width: size, height: size, minWidth: size, minHeight: size }\n : { width: size, height: size, minWidth: size, minHeight: size };\n\n return (\n <div\n data-slot=\"color-swatch\"\n className={cn(\n 'cn-color-swatch relative inline-block overflow-hidden transition-colors',\n radiusClasses[radius],\n className,\n )}\n style={{ ...sizeStyle, ...style }}\n {...props}\n >\n <span\n className=\"absolute inset-0 block\"\n style={{ backgroundColor: color }}\n />\n {withShadow && <span className=\"cn-color-swatch-shadow\" aria-hidden />}\n {children && (\n <span className=\"relative z-10 flex size-full items-center justify-center\">\n {children}\n </span>\n )}\n </div>\n );\n}\n\nexport { ColorSwatch };\nexport type { ColorSwatchProps };\n","'use client';\n\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst POPOVER_POSITIONER_CN = 'isolate z-50';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n alignOffset = 0,\n side = 'bottom',\n sideOffset = 4,\n anchor,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Popup> & {\n align?: React.ComponentProps<typeof PopoverPrimitive.Positioner>['align'];\n alignOffset?: React.ComponentProps<\n typeof PopoverPrimitive.Positioner\n >['alignOffset'];\n side?: React.ComponentProps<typeof PopoverPrimitive.Positioner>['side'];\n sideOffset?: React.ComponentProps<\n typeof PopoverPrimitive.Positioner\n >['sideOffset'];\n anchor?: React.ComponentProps<typeof PopoverPrimitive.Positioner>['anchor'];\n}) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n anchor={anchor}\n className={POPOVER_POSITIONER_CN}\n >\n <PopoverPrimitive.Popup\n data-slot=\"popover-content\"\n className={cn(\n 'cn-popover-content cn-popover-content-logical z-50 w-72 origin-(--transform-origin) outline-hidden',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn('cn-popover-header', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverTitle({\n className,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Title>) {\n return (\n <PopoverPrimitive.Title\n data-slot=\"popover-title\"\n className={cn('cn-popover-title', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Description>) {\n return (\n <PopoverPrimitive.Description\n data-slot=\"popover-description\"\n className={cn('cn-popover-description', className)}\n {...props}\n />\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<'span'>) {\n return <span data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n PopoverHeader,\n PopoverTitle,\n PopoverDescription,\n PopoverAnchor,\n};\n","'use client';\n\nimport { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';\nimport { IconCheck, IconChevronDown } from '@tabler/icons-react';\nimport { useMemo, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from './input-group';\n\ntype ComboboxOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype ComboboxProps = Omit<\n ComboboxPrimitive.Root.Props<string>,\n 'children' | 'onValueChange' | 'value' | 'inputValue' | 'onInputValueChange'\n> & {\n options: ComboboxOption[];\n value?: string | null;\n onValueChange?: (value: string | null) => void;\n placeholder?: string;\n emptyText?: string;\n disabled?: boolean;\n showClear?: boolean;\n className?: string;\n};\n\nconst COMBOBOX_CONTENT_BASE_CN =\n 'cn-menu-target group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) data-[chips=true]:min-w-(--anchor-width)';\n\nconst COMBOBOX_ITEM_BASE_CN =\n 'relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0';\n\nfunction Combobox({\n options,\n value,\n onValueChange,\n placeholder = 'Select an option...',\n emptyText = 'No results found.',\n disabled = false,\n showClear = false,\n className,\n ...props\n}: ComboboxProps) {\n const [inputValue, setInputValue] = useState('');\n\n const selectedOption = useMemo(\n () => options.find((opt) => opt.value === value) ?? null,\n [options, value],\n );\n\n const filteredOptions = useMemo(() => {\n if (!inputValue) {\n return options;\n }\n const q = inputValue.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(q));\n }, [inputValue, options]);\n\n return (\n <ComboboxPrimitive.Root\n data-slot=\"combobox\"\n disabled={disabled}\n value={value ?? undefined}\n inputValue={inputValue}\n onInputValueChange={(next) => setInputValue(next)}\n onValueChange={(next) => onValueChange?.((next as string | null) ?? null)}\n {...props}\n >\n <InputGroup className={cn('w-auto', className)}>\n <ComboboxPrimitive.Input\n render={\n <InputGroupInput\n disabled={disabled}\n placeholder={selectedOption?.label ?? placeholder}\n />\n }\n />\n\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n size=\"icon-xs\"\n variant=\"ghost\"\n render={\n <ComboboxPrimitive.Trigger data-slot=\"combobox-trigger\">\n <IconChevronDown\n data-slot=\"combobox-trigger-icon\"\n className=\"cn-combobox-trigger-icon\"\n />\n </ComboboxPrimitive.Trigger>\n }\n disabled={disabled}\n className={cn(\n showClear &&\n 'group-has-data-[slot=combobox-clear]/input-group:hidden',\n 'data-pressed:bg-transparent',\n )}\n />\n\n {showClear && (\n <ComboboxPrimitive.Clear\n data-slot=\"combobox-clear\"\n render={<InputGroupButton variant=\"ghost\" size=\"icon-xs\" />}\n disabled={disabled}\n >\n <span className=\"sr-only\">Clear</span>\n </ComboboxPrimitive.Clear>\n )}\n </InputGroupAddon>\n </InputGroup>\n\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner\n side=\"bottom\"\n sideOffset={6}\n align=\"start\"\n alignOffset={0}\n className=\"isolate z-50\"\n >\n <ComboboxPrimitive.Popup\n data-slot=\"combobox-content\"\n className={cn(COMBOBOX_CONTENT_BASE_CN, 'cn-combobox-content')}\n >\n <ComboboxPrimitive.List\n data-slot=\"combobox-list\"\n className=\"cn-combobox-list\"\n >\n {filteredOptions.length === 0 ? (\n <ComboboxPrimitive.Empty\n data-slot=\"combobox-empty\"\n className=\"cn-combobox-empty\"\n >\n {emptyText}\n </ComboboxPrimitive.Empty>\n ) : (\n filteredOptions.map((option) => (\n <ComboboxPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n data-slot=\"combobox-item\"\n className={cn(COMBOBOX_ITEM_BASE_CN, 'cn-combobox-item')}\n >\n <span className=\"cn-combobox-item-text\">\n {option.label}\n </span>\n\n <ComboboxPrimitive.ItemIndicator\n render={<span className=\"cn-combobox-item-indicator\" />}\n >\n <IconCheck className=\"size-4\" />\n </ComboboxPrimitive.ItemIndicator>\n </ComboboxPrimitive.Item>\n ))\n )}\n </ComboboxPrimitive.List>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n}\n\nexport { Combobox };\nexport type { ComboboxOption };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst containerVariants = cva('mx-auto w-full', {\n variants: {\n size: {\n xs: 'max-w-screen-xs',\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n '2xl': 'max-w-screen-2xl',\n fluid: 'max-w-full',\n },\n px: {\n none: 'px-0',\n sm: 'px-4',\n md: 'px-6',\n lg: 'px-8',\n xl: 'px-12',\n },\n },\n defaultVariants: {\n size: 'lg',\n px: 'md',\n },\n});\n\ntype ContainerProps = React.ComponentProps<'div'> &\n VariantProps<typeof containerVariants> & {\n fluid?: boolean;\n };\n\nfunction Container({\n className,\n size,\n px,\n fluid,\n children,\n ...props\n}: ContainerProps) {\n return (\n <div\n data-slot=\"container\"\n className={cn(\n 'cn-container min-w-0 transition-[max-width,padding]',\n containerVariants({ size: fluid ? 'fluid' : size, px }),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { Container, containerVariants };\nexport type { ContainerProps };\n","'use client';\n\nimport { ContextMenu as ContextMenuPrimitive } from '@base-ui/react/context-menu';\nimport { IconCheck, IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst CONTEXT_MENU_POSITIONER_CN = 'isolate z-50 outline-none';\n\nconst CONTEXT_MENU_CONTENT_CN = cn(\n 'cn-context-menu-content cn-context-menu-content-logical cn-menu-target',\n 'z-50 max-h-(--available-height)',\n 'origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none',\n 'data-closed:overflow-hidden',\n);\n\nconst CONTEXT_MENU_ITEM_BASE_CN = cn(\n 'group/context-menu-item relative flex cursor-default items-center',\n 'outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nconst CONTEXT_MENU_SUB_TRIGGER_BASE_CN = cn(\n 'flex cursor-default items-center outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={cn('select-none', className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubmenuRoot>) {\n return (\n <ContextMenuPrimitive.SubmenuRoot data-slot=\"context-menu-sub\" {...props} />\n );\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubmenuTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'cn-context-menu-sub-trigger',\n CONTEXT_MENU_SUB_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto\" />\n </ContextMenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Popup> &\n Pick<\n React.ComponentProps<typeof ContextMenuPrimitive.Positioner>,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Positioner\n className={CONTEXT_MENU_POSITIONER_CN}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <ContextMenuPrimitive.Popup\n data-slot=\"context-menu-sub-content\"\n className={cn(\n 'cn-context-menu-sub-content cn-context-menu-content-logical cn-context-menu-subcontent',\n 'z-50 max-h-(--available-height) w-auto origin-(--transform-origin)',\n 'overflow-x-hidden overflow-y-auto outline-none',\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Positioner>\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Popup>) {\n return (\n <ContextMenuPrimitive.Popup\n data-slot=\"context-menu-content\"\n className={cn(CONTEXT_MENU_CONTENT_CN, className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuPositioner({\n align = 'start',\n alignOffset = 0,\n side = 'right',\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Positioner>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Positioner\n data-slot=\"context-menu-positioner\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n className={cn(CONTEXT_MENU_POSITIONER_CN, className)}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'cn-context-menu-item',\n CONTEXT_MENU_ITEM_BASE_CN,\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n 'cn-context-menu-checkbox-item',\n CONTEXT_MENU_ITEM_BASE_CN,\n className,\n )}\n checked={checked}\n {...props}\n >\n {children}\n <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n <ContextMenuPrimitive.CheckboxItemIndicator>\n <IconCheck className=\"size-4\" />\n </ContextMenuPrimitive.CheckboxItemIndicator>\n </span>\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n 'cn-context-menu-radio-item',\n CONTEXT_MENU_ITEM_BASE_CN,\n className,\n )}\n data-inset={inset}\n {...props}\n >\n {children}\n <span className=\"cn-context-menu-item-indicator pointer-events-none\">\n <ContextMenuPrimitive.RadioItemIndicator>\n <IconCheck className=\"size-4\" />\n </ContextMenuPrimitive.RadioItemIndicator>\n </span>\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.GroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.GroupLabel\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn('cn-context-menu-label', className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn('cn-context-menu-separator', className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn('cn-context-menu-shortcut', className)}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuPositioner,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n","'use client';\n\nimport { IconCheck, IconCopy } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype CopyButtonProps = Omit<\n React.ComponentProps<typeof Button>,\n 'onClick' | 'children'\n> & {\n value: string;\n timeout?: number;\n children?: React.ReactNode;\n};\n\nfunction CopyButton({\n value,\n timeout = 2000,\n children,\n size = 'icon-sm',\n variant = 'ghost',\n className,\n ...props\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n setTimeout(() => setCopied(false), timeout);\n } catch {\n // Failed to copy - silently fail\n }\n };\n\n return (\n <Button\n data-slot=\"copy-button\"\n data-variant={variant}\n size={size}\n variant={variant}\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy to clipboard'}\n className={cn(\n 'cn-copy-button transition-colors disabled:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children ||\n (copied ? (\n <IconCheck className=\"size-4\" />\n ) : (\n <IconCopy className=\"size-4\" />\n ))}\n </Button>\n );\n}\n\nexport { CopyButton };\n","'use client';\n\nimport {\n type ColumnDef,\n type ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport * as React from 'react';\nimport { cn } from '../../../lib/utils';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '../table';\n\ntype DataTableProps<TData, TValue> = {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n sorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: (filters: ColumnFiltersState) => void;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: (visibility: VisibilityState) => void;\n rowSelection?: Record<string, boolean>;\n onRowSelectionChange?: (selection: Record<string, boolean>) => void;\n pageSize?: number;\n pageIndex?: number;\n onPaginationChange?: (pageIndex: number, pageSize: number) => void;\n getRowId?: (row: TData) => string;\n};\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n sorting = [],\n onSortingChange,\n columnFilters = [],\n onColumnFiltersChange,\n columnVisibility = {},\n onColumnVisibilityChange,\n rowSelection = {},\n onRowSelectionChange,\n pageSize = 10,\n pageIndex = 0,\n getRowId,\n}: DataTableProps<TData, TValue>) {\n const [internalSorting, setInternalSorting] =\n React.useState<SortingState>(sorting);\n const [internalColumnFilters, setInternalColumnFilters] =\n React.useState<ColumnFiltersState>(columnFilters);\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>(columnVisibility);\n const [internalRowSelection, setInternalRowSelection] =\n React.useState<Record<string, boolean>>(rowSelection);\n\n const processedColumns = React.useMemo(() => {\n return columns.map((col) => {\n if (\n (col.id === 'actions' || col.id === 'select') &&\n col.size === undefined\n ) {\n return {\n ...col,\n size: 50,\n minSize: col.minSize,\n maxSize: col.maxSize,\n };\n }\n return col;\n });\n }, [columns]);\n\n const table = useReactTable({\n data,\n columns: processedColumns,\n getRowId: getRowId || ((_, index) => String(index)),\n state: {\n sorting: onSortingChange ? sorting : internalSorting,\n columnFilters: onColumnFiltersChange\n ? columnFilters\n : internalColumnFilters,\n columnVisibility: onColumnVisibilityChange\n ? columnVisibility\n : internalColumnVisibility,\n rowSelection: onRowSelectionChange ? rowSelection : internalRowSelection,\n pagination: { pageIndex, pageSize },\n },\n enableRowSelection: true,\n onSortingChange: (updater) => {\n const newSorting =\n typeof updater === 'function'\n ? updater(onSortingChange ? sorting : internalSorting)\n : updater;\n if (onSortingChange) {\n onSortingChange(newSorting);\n } else {\n setInternalSorting(newSorting);\n }\n },\n onColumnFiltersChange: (updater) => {\n const newFilters =\n typeof updater === 'function'\n ? updater(\n onColumnFiltersChange ? columnFilters : internalColumnFilters,\n )\n : updater;\n if (onColumnFiltersChange) {\n onColumnFiltersChange(newFilters);\n } else {\n setInternalColumnFilters(newFilters);\n }\n },\n onColumnVisibilityChange: (updater) => {\n const newVisibility =\n typeof updater === 'function'\n ? updater(\n onColumnVisibilityChange\n ? columnVisibility\n : internalColumnVisibility,\n )\n : updater;\n if (onColumnVisibilityChange) {\n onColumnVisibilityChange(newVisibility);\n } else {\n setInternalColumnVisibility(newVisibility);\n }\n },\n onRowSelectionChange: (updater) => {\n const newSelection =\n typeof updater === 'function'\n ? updater(onRowSelectionChange ? rowSelection : internalRowSelection)\n : updater;\n if (onRowSelectionChange) {\n onRowSelectionChange(newSelection);\n } else {\n setInternalRowSelection(newSelection);\n }\n },\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n });\n\n return (\n <div data-slot=\"data-table\" className=\"cn-data-table\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header, index) => {\n const isFirst = index === 0;\n const isLast = index === headerGroup.headers.length - 1;\n let className: string | undefined;\n if (isFirst) {\n className = 'pl-4';\n } else if (isLast) {\n className = 'pr-4';\n }\n return (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{ width: header.getSize() }}\n className={className}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && 'selected'}\n className={cn('cn-data-table-row group')}\n >\n {row.getVisibleCells().map((cell, index) => {\n const visibleCells = row.getVisibleCells();\n const isFirst = index === 0;\n const isLast = index === visibleCells.length - 1;\n let className: string | undefined;\n if (isFirst) {\n className = 'pl-4';\n } else if (isLast) {\n className = 'pr-4';\n }\n return (\n <TableCell\n key={cell.id}\n style={{ width: cell.column.getSize() }}\n className={className}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n );\n })}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n );\n}\n","'use client';\n\nimport { IconChevronRight } from '@tabler/icons-react';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\n\ntype DataTableActionProps = {\n onClick: () => void;\n disabled?: boolean;\n 'aria-label'?: string;\n};\n\nexport function DataTableAction({\n onClick,\n disabled,\n 'aria-label': ariaLabel = 'Open menu',\n}: DataTableActionProps) {\n return (\n <div className=\"cn-data-table-action flex justify-end\">\n <Button\n variant=\"ghost\"\n className={cn('cn-data-table-action-button group-hover:opacity-100')}\n onClick={onClick}\n disabled={disabled}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n <IconChevronRight className=\"cn-data-table-action-icon h-4 w-4\" />\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport type { Column } from '@tanstack/react-table';\nimport { cn } from '../../../lib/utils';\n\ntype DataTableColumnHeaderProps<TData, TValue> = {\n column: Column<TData, TValue>;\n title: string;\n className?: string;\n};\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <div\n className={cn('cn-data-table-column-header flex items-center', className)}\n >\n <span>{title}</span>\n </div>\n );\n}\n","'use client';\n\nimport { IconSettings } from '@tabler/icons-react';\nimport type { Table } from '@tanstack/react-table';\nimport { cn } from '../../../lib/utils';\nimport { Button } from '../button';\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuPositioner,\n DropdownMenuTrigger,\n} from '../dropdown-menu';\n\ntype DataTableViewOptionsProps<TData> = {\n table: Table<TData>;\n};\n\nexport function DataTableViewOptions<TData>({\n table,\n}: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"outline\"\n size=\"sm\"\n className={cn(\n 'cn-data-table-view-options-trigger ml-auto hidden lg:flex',\n )}\n />\n }\n >\n <IconSettings className=\"cn-data-table-view-options-icon mr-2 h-4 w-4\" />\n View\n </DropdownMenuTrigger>\n <DropdownMenuPositioner align=\"end\">\n <DropdownMenuContent\n className={cn('cn-data-table-view-options-content w-[150px]')}\n >\n <DropdownMenuGroup>\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n {table\n .getAllColumns()\n .filter(\n (column) =>\n typeof column.accessorFn !== 'undefined' &&\n column.getCanHide(),\n )\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className={cn('cn-data-table-view-options-item capitalize')}\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPositioner>\n </DropdownMenu>\n );\n}\n","'use client';\n\nexport {\n DirectionProvider,\n useDirection,\n} from '@base-ui/react/direction-provider';\n","'use client';\n\nimport { Dialog as DrawerPrimitive } from '@base-ui/react/dialog';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Backdrop>) {\n return (\n <DrawerPrimitive.Backdrop\n data-slot=\"drawer-overlay\"\n className={cn('cn-drawer-overlay fixed inset-0 z-50', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n side = 'bottom',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Popup> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\" keepMounted>\n <DrawerOverlay />\n <DrawerPrimitive.Popup\n data-slot=\"drawer-content\"\n data-vaul-drawer-direction={side}\n className={cn(\n 'cn-drawer-content group/drawer-content fixed z-50',\n className,\n )}\n {...props}\n >\n <div className=\"cn-drawer-handle\" />\n {children}\n </DrawerPrimitive.Popup>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn('cn-drawer-header flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn('cn-drawer-footer mt-auto flex flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn('cn-drawer-title', className)}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn('cn-drawer-description', className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { useRef } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype FileButtonProps = Omit<\n React.ComponentProps<typeof Button>,\n 'onChange' | 'onClick'\n> & {\n onChange: (files: FileList | null) => void;\n accept?: string;\n multiple?: boolean;\n capture?: boolean | 'user' | 'environment';\n};\n\nfunction FileButton({\n onChange,\n accept,\n multiple,\n capture,\n children,\n disabled,\n className,\n ...props\n}: FileButtonProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.files);\n };\n\n return (\n <>\n <input\n ref={inputRef}\n type=\"file\"\n onChange={handleChange}\n accept={accept}\n multiple={multiple}\n capture={capture}\n style={{ display: 'none' }}\n disabled={disabled}\n />\n <Button\n data-slot=\"file-button\"\n onClick={handleClick}\n disabled={disabled}\n className={cn('cn-file-button', className)}\n {...props}\n >\n {children}\n </Button>\n </>\n );\n}\n\nexport { FileButton };\n","'use client';\n\nimport { IconFile, IconUpload, IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype FileInputProps = Omit<React.ComponentProps<'input'>, 'type'> & {\n onFilesChange?: (files: File[]) => void;\n clearable?: boolean;\n};\n\nfunction FileInput({\n className,\n onFilesChange,\n clearable = true,\n multiple,\n ...props\n}: FileInputProps) {\n const [files, setFiles] = useState<File[]>([]);\n const [isDragging, setIsDragging] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []);\n setFiles(selectedFiles);\n onFilesChange?.(selectedFiles);\n props.onChange?.(e);\n };\n\n const handleClear = () => {\n setFiles([]);\n onFilesChange?.([]);\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (props.disabled) {\n return;\n }\n setIsDragging(true);\n };\n\n const handleDragLeave = () => {\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n if (props.disabled) {\n return;\n }\n setIsDragging(false);\n const droppedFiles = Array.from(e.dataTransfer.files);\n setFiles(droppedFiles);\n onFilesChange?.(droppedFiles);\n };\n\n const inputId = useId();\n\n return (\n <div\n data-slot=\"file-input-wrapper\"\n data-disabled={props.disabled || undefined}\n className={cn('cn-file-input-wrapper', className)}\n >\n <label\n htmlFor={inputId}\n className=\"cn-file-input-dropzone\"\n data-dragging={isDragging || undefined}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <input\n ref={inputRef}\n id={inputId}\n type=\"file\"\n data-slot=\"file-input\"\n className=\"cn-file-input-hidden-input\"\n onChange={handleChange}\n multiple={multiple}\n {...props}\n />\n <div data-slot=\"file-input-prompt\" className=\"cn-file-input-prompt\">\n <IconUpload\n data-slot=\"file-input-icon\"\n className=\"cn-file-input-icon\"\n />\n <div data-slot=\"file-input-title\" className=\"cn-file-input-title\">\n <span className=\"font-medium\">Click to upload</span> or drag and\n drop\n </div>\n {props.accept && (\n <div data-slot=\"file-input-accept\" className=\"cn-file-input-accept\">\n {props.accept}\n </div>\n )}\n </div>\n </label>\n {files.length > 0 && (\n <div data-slot=\"file-input-list\" className=\"cn-file-input-list\">\n {files.map((file, index) => (\n <div\n key={`${file.name}-${index}`}\n data-slot=\"file-input-item\"\n className=\"cn-file-input-item\"\n >\n <div className=\"cn-file-input-item-left\">\n <IconFile className=\"cn-file-input-item-icon\" />\n <span className=\"cn-file-input-item-name\">{file.name}</span>\n <span className=\"cn-file-input-item-size\">\n ({(file.size / 1024).toFixed(1)} KB)\n </span>\n </div>\n {clearable && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleClear}\n aria-label=\"Remove file\"\n className=\"cn-file-input-item-remove\"\n >\n <IconX className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport { FileInput };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype FlexProps = React.ComponentProps<'div'> & {\n gap?: ComponentSize | number;\n rowGap?: ComponentSize | number;\n columnGap?: ComponentSize | number;\n align?: 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n wrap?: 'wrap' | 'nowrap' | 'wrap-reverse';\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\n};\n\nconst gapClasses: Record<ComponentSize, string> = {\n xs: 'gap-1.5',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n};\n\nconst rowGapClasses: Record<ComponentSize, string> = {\n xs: '[row-gap:0.375rem]',\n sm: '[row-gap:0.5rem]',\n md: '[row-gap:0.75rem]',\n lg: '[row-gap:1rem]',\n xl: '[row-gap:1.5rem]',\n};\n\nconst colGapClasses: Record<ComponentSize, string> = {\n xs: '[column-gap:0.375rem]',\n sm: '[column-gap:0.5rem]',\n md: '[column-gap:0.75rem]',\n lg: '[column-gap:1rem]',\n xl: '[column-gap:1.5rem]',\n};\n\nfunction Flex({\n className,\n gap,\n rowGap,\n columnGap,\n align = 'stretch',\n justify = 'start',\n wrap = 'nowrap',\n direction = 'row',\n style,\n ...props\n}: FlexProps) {\n const alignMap = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n };\n const justifyMap = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n };\n const wrapMap = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n };\n const dirMap = {\n row: 'flex-row',\n column: 'flex-col',\n 'row-reverse': 'flex-row-reverse',\n 'column-reverse': 'flex-col-reverse',\n };\n\n const gapStyle: React.CSSProperties = {};\n if (typeof gap === 'number') {\n gapStyle.gap = gap;\n }\n if (typeof rowGap === 'number') {\n gapStyle.rowGap = rowGap;\n }\n if (typeof columnGap === 'number') {\n gapStyle.columnGap = columnGap;\n }\n\n let gapClass = '';\n let rowGapClass = '';\n let colGapClass = '';\n if (gap != null && typeof gap !== 'number') {\n gapClass = gapClasses[gap];\n }\n if (rowGap != null && typeof rowGap !== 'number') {\n rowGapClass = rowGapClasses[rowGap];\n }\n if (columnGap != null && typeof columnGap !== 'number') {\n colGapClass = colGapClasses[columnGap];\n }\n\n return (\n <div\n data-slot=\"flex\"\n className={cn(\n 'flex min-w-0',\n dirMap[direction],\n alignMap[align],\n justifyMap[justify],\n wrapMap[wrap],\n gapClass,\n rowGapClass,\n colGapClass,\n className,\n )}\n style={{ ...gapStyle, ...style }}\n {...props}\n />\n );\n}\n\nexport { Flex };\nexport type { FlexProps };\n","'use client';\n\nimport type * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype FloatingIndicatorProps = Omit<React.ComponentProps<'div'>, 'target'> & {\n target: HTMLElement | null;\n parent: HTMLElement | null;\n transitionDuration?: number;\n displayAfterTransitionEnd?: boolean;\n};\n\nfunction FloatingIndicator({\n className,\n target,\n parent,\n transitionDuration = 200,\n displayAfterTransitionEnd = false,\n style,\n ...props\n}: FloatingIndicatorProps) {\n const [position, setPosition] = useState({ x: 0, y: 0, width: 0, height: 0 });\n const [isVisible, setIsVisible] = useState(!displayAfterTransitionEnd);\n\n useEffect(() => {\n const hasTargetAndParent = target && parent;\n if (!hasTargetAndParent) {\n return;\n }\n\n const updatePosition = () => {\n const targetRect = target.getBoundingClientRect();\n const parentRect = parent.getBoundingClientRect();\n\n setPosition({\n x: targetRect.left - parentRect.left,\n y: targetRect.top - parentRect.top,\n width: targetRect.width,\n height: targetRect.height,\n });\n\n if (displayAfterTransitionEnd) {\n setIsVisible(false);\n const timeout = setTimeout(\n () => setIsVisible(true),\n transitionDuration,\n );\n return () => clearTimeout(timeout);\n }\n };\n\n updatePosition();\n\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(parent);\n resizeObserver.observe(target);\n\n return () => resizeObserver.disconnect();\n }, [target, parent, transitionDuration, displayAfterTransitionEnd]);\n\n const hasTargetAndParent = target && parent;\n const shouldHideAfterTransition = displayAfterTransitionEnd && !isVisible;\n if (!hasTargetAndParent || shouldHideAfterTransition) {\n return null;\n }\n\n return (\n <div\n data-slot=\"floating-indicator\"\n className={cn(\n 'cn-floating-indicator pointer-events-none absolute left-0 top-0',\n className,\n )}\n style={{\n transform: `translate(${position.x}px, ${position.y}px)`,\n width: position.width,\n height: position.height,\n transition: `transform ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1), width ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1), height ${transitionDuration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n ...style,\n }}\n {...props}\n />\n );\n}\n\nexport { FloatingIndicator, type FloatingIndicatorProps };\n","'use client';\n\nimport { cloneElement, type ReactElement, useEffect, useRef } from 'react';\n\nconst FOCUSABLE =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n\nfunction getFocusableElements(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) =>\n !el.hasAttribute('disabled') && el.getAttribute('tabindex') !== '-1',\n );\n}\n\nfunction useFocusTrap(active: boolean) {\n const ref = useRef<HTMLElement>(null);\n\n useEffect(() => {\n if (!active) {\n return;\n }\n if (!ref.current) {\n return;\n }\n const el = ref.current;\n const focusable = getFocusableElements(el);\n if (focusable.length === 0) {\n return;\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Tab') {\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n };\n\n const firstFocus = el.querySelector<HTMLElement>('[data-autofocus]');\n (firstFocus ?? focusable[0])?.focus();\n\n el.addEventListener('keydown', handleKeyDown);\n return () => el.removeEventListener('keydown', handleKeyDown);\n }, [active]);\n\n return ref;\n}\n\ntype FocusTrapProps = {\n children: ReactElement;\n active?: boolean;\n refProp?: string;\n};\n\nfunction FocusTrap({\n children,\n active = true,\n refProp = 'ref',\n}: FocusTrapProps) {\n const trapRef = useFocusTrap(active);\n const childRef = (children as ReactElement & { ref?: React.Ref<unknown> })\n .ref;\n\n const ref = (node: HTMLElement | null) => {\n (trapRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof childRef === 'function') {\n childRef(node);\n } else if (childRef) {\n (childRef as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n };\n\n const child = cloneElement(children, { [refProp]: ref });\n return child;\n}\n\nfunction FocusTrapInitialFocus(props: React.ComponentProps<'span'>) {\n return (\n <span\n tabIndex={-1}\n data-autofocus\n data-slot=\"focus-trap-initial-focus\"\n {...props}\n />\n );\n}\n\nFocusTrap.InitialFocus = FocusTrapInitialFocus;\n\nexport { FocusTrap, FocusTrapInitialFocus };\n","'use client';\n\nimport { useRender } from '@base-ui/react/use-render';\nimport * as React from 'react';\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n useFormState,\n} from 'react-hook-form';\nimport { cn } from '../../lib/utils';\nimport { Label } from './label';\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 } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\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\nfunction FormItem({ className, ...props }: React.ComponentProps<'div'>) {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n </FormItemContext.Provider>\n );\n}\n\nfunction FormLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\n 'data-[error=true]:text-destructive text-sm font-semibold',\n className,\n )}\n htmlFor={formItemId}\n {...props}\n />\n );\n}\n\nfunction FormControl({\n render = <input />,\n children,\n ...props\n}: React.ComponentProps<'input'> & { render?: useRender.RenderProp }) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n const mergedProps = {\n ...props,\n 'data-slot': 'form-control',\n id: formItemId,\n 'aria-describedby': error\n ? `${formDescriptionId} ${formMessageId}`\n : `${formDescriptionId}`,\n 'aria-invalid': !!error,\n };\n return useRender({\n render: React.isValidElement(children) ? children : render,\n props: mergedProps,\n defaultTagName: 'input',\n });\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<'p'>) {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n );\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<'p'>) {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : props.children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn('text-destructive text-sm', className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n};\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst gridVariants = cva('grid w-full grid-cols-12', {\n variants: {\n gutter: {\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n },\n defaultVariants: {\n gutter: 'md',\n },\n});\n\nconst gridColVariants = cva('', {\n variants: {\n span: {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n auto: 'col-auto',\n },\n sm: {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n },\n md: {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n },\n lg: {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n },\n },\n defaultVariants: {\n span: 12,\n },\n});\n\ntype GridProps = React.ComponentProps<'div'> &\n VariantProps<typeof gridVariants>;\n\ntype GridColProps = React.ComponentProps<'div'> &\n VariantProps<typeof gridColVariants> & {\n offset?: number;\n };\n\nfunction Grid({ className, gutter, children, ...props }: GridProps) {\n return (\n <div\n data-slot=\"grid\"\n className={cn('min-w-0', gridVariants({ gutter }), className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction GridCol({\n className,\n span,\n sm,\n md,\n lg,\n offset,\n style,\n children,\n ...props\n}: GridColProps) {\n return (\n <div\n data-slot=\"grid-col\"\n className={cn(gridColVariants({ span, sm, md, lg }), className)}\n style={{\n ...(offset && { marginLeft: `${(offset / 12) * 100}%` }),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nGrid.Col = GridCol;\n\nexport { Grid, GridCol, gridVariants, gridColVariants };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype GroupProps = React.ComponentProps<'div'> & {\n gap?: ComponentSize | number;\n wrap?: 'wrap' | 'nowrap';\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n grow?: boolean;\n};\n\nfunction Group({\n className,\n gap = 'md',\n wrap = 'wrap',\n align = 'center',\n justify = 'start',\n grow = false,\n style,\n ...props\n}: GroupProps) {\n const gapClasses = {\n xs: 'gap-1.5',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n };\n\n const alignClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n };\n\n const justifyClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n };\n\n return (\n <div\n data-slot=\"group\"\n className={cn(\n 'cn-group flex min-w-0 flex-row',\n typeof gap === 'number' ? undefined : gapClasses[gap],\n wrap === 'wrap' ? 'flex-wrap' : 'flex-nowrap',\n alignClasses[align],\n justifyClasses[justify],\n grow && '[&>*]:flex-1',\n className,\n )}\n style={typeof gap === 'number' ? { gap: `${gap}px`, ...style } : style}\n {...props}\n />\n );\n}\n\nexport { Group };\nexport type { GroupProps };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype HighlightProps = React.ComponentProps<'span'> & {\n children: string;\n highlight: string | string[];\n className?: string;\n highlightClassName?: string;\n};\n\nfunction Highlight({\n children,\n highlight,\n className,\n highlightClassName,\n ...props\n}: HighlightProps) {\n if (!(children && highlight)) {\n return (\n <span className={className} {...props}>\n {children}\n </span>\n );\n }\n\n const highlights = Array.isArray(highlight) ? highlight : [highlight];\n const pattern = highlights\n .filter(Boolean)\n .map((term) => term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'))\n .join('|');\n\n if (!pattern) {\n return (\n <span className={className} {...props}>\n {children}\n </span>\n );\n }\n\n const regex = new RegExp(`(${pattern})`, 'gi');\n const parts = children.split(regex);\n\n return (\n <span data-slot=\"highlight\" className={className} {...props}>\n {parts.map((part, i) => {\n const isMatch = highlights.some(\n (term) => term.toLowerCase() === part.toLowerCase(),\n );\n const key = `${part}-${i}`;\n return isMatch ? (\n <mark\n key={key}\n className={cn('cn-highlight-mark', highlightClassName)}\n >\n {part}\n </mark>\n ) : (\n <span key={key}>{part}</span>\n );\n })}\n </span>\n );\n}\n\nexport { Highlight };\n","'use client';\n\nimport { PreviewCard as PreviewCardPrimitive } from '@base-ui/react/preview-card';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst HOVER_CARD_POSITIONER_CN = 'isolate z-50';\n\nfunction HoverCard({\n ...props\n}: React.ComponentProps<typeof PreviewCardPrimitive.Root>) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({\n ...props\n}: React.ComponentProps<typeof PreviewCardPrimitive.Trigger>) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n );\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n alignOffset = 4,\n side = 'bottom',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PreviewCardPrimitive.Popup> & {\n align?: React.ComponentProps<typeof PreviewCardPrimitive.Positioner>['align'];\n alignOffset?: React.ComponentProps<\n typeof PreviewCardPrimitive.Positioner\n >['alignOffset'];\n side?: React.ComponentProps<typeof PreviewCardPrimitive.Positioner>['side'];\n sideOffset?: React.ComponentProps<\n typeof PreviewCardPrimitive.Positioner\n >['sideOffset'];\n}) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className={HOVER_CARD_POSITIONER_CN}\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n 'cn-hover-card-content cn-hover-card-content-logical z-50 origin-(--transform-origin) outline-hidden',\n className,\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","'use client';\n\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype ImageProps = React.ComponentProps<'img'> & {\n fallback?: React.ReactNode;\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n fit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';\n};\n\nfunction Image({\n className,\n src,\n alt = '',\n fallback,\n radius = 'md',\n fit = 'cover',\n onError,\n ...props\n}: ImageProps) {\n const [error, setError] = useState(false);\n\n const fitClasses = {\n contain: 'object-contain',\n cover: 'object-cover',\n fill: 'object-fill',\n none: 'object-none',\n 'scale-down': 'object-scale-down',\n };\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n setError(true);\n onError?.(e);\n };\n\n if (error && fallback) {\n return (\n <div\n data-slot=\"image-fallback\"\n data-radius={radius}\n className={cn(\n 'cn-image-fallback flex items-center justify-center',\n className,\n )}\n >\n {fallback}\n </div>\n );\n }\n\n return (\n <img\n data-slot=\"image\"\n data-radius={radius}\n src={src}\n alt={alt}\n className={cn('cn-image overflow-hidden', fitClasses[fit], className)}\n onError={handleError}\n {...props}\n />\n );\n}\n\nexport { Image };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst indicatorVariants = cva(\n 'cn-indicator absolute flex items-center justify-center rounded-full text-xs font-medium transition-colors',\n {\n variants: {\n position: {\n 'top-start': 'top-0 left-0 -translate-x-1/2 -translate-y-1/2',\n 'top-end': 'top-0 right-0 translate-x-1/2 -translate-y-1/2',\n 'bottom-start': 'bottom-0 left-0 -translate-x-1/2 translate-y-1/2',\n 'bottom-end': 'bottom-0 right-0 translate-x-1/2 translate-y-1/2',\n 'top-center': 'top-0 left-1/2 -translate-x-1/2 -translate-y-1/2',\n 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2',\n 'middle-start': 'top-1/2 left-0 -translate-x-1/2 -translate-y-1/2',\n 'middle-end': 'top-1/2 right-0 translate-x-1/2 -translate-y-1/2',\n },\n size: {\n xs: 'size-4',\n sm: 'size-5',\n md: 'size-6',\n lg: 'size-7',\n },\n color: {\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n accent: 'bg-accent text-accent-foreground',\n },\n withBorder: {\n true: 'cn-indicator-with-border',\n false: '',\n },\n processing: {\n true: 'animate-pulse',\n false: '',\n },\n },\n defaultVariants: {\n position: 'top-end',\n size: 'md',\n color: 'primary',\n withBorder: false,\n processing: false,\n },\n },\n);\n\ntype IndicatorProps = React.ComponentProps<'div'> &\n VariantProps<typeof indicatorVariants> & {\n label?: string | number;\n offset?: number;\n disabled?: boolean;\n inline?: boolean;\n };\n\nfunction Indicator({\n className,\n position,\n size,\n color,\n withBorder,\n processing,\n label,\n offset = 0,\n disabled,\n inline,\n children,\n style,\n ...props\n}: IndicatorProps) {\n if (disabled) {\n return <div className={cn(inline && 'inline-block')}>{children}</div>;\n }\n\n return (\n <div\n data-slot=\"indicator-wrapper\"\n className={cn('relative', inline && 'inline-block')}\n >\n {children}\n <span\n data-slot=\"indicator\"\n className={cn(\n indicatorVariants({ position, size, color, withBorder, processing }),\n className,\n )}\n style={{\n transform: offset\n ? `translate(${offset}px, -${offset}px)`\n : undefined,\n ...style,\n }}\n {...props}\n >\n {label}\n </span>\n </div>\n );\n}\n\nexport { Indicator, indicatorVariants };\n","'use client';\n\nimport { IconMinus } from '@tabler/icons-react';\nimport { OTPInput, OTPInputContext } from 'input-otp';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction InputOTP({\n className,\n containerClassName,\n ...props\n}: React.ComponentProps<typeof OTPInput> & {\n containerClassName?: string;\n}) {\n return (\n <OTPInput\n data-slot=\"input-otp\"\n containerClassName={cn(\n 'cn-input-otp flex items-center has-disabled:opacity-50',\n containerClassName,\n )}\n spellCheck={false}\n className={cn('disabled:cursor-not-allowed', className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-otp-group\"\n className={cn('cn-input-otp-group flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction InputOTPSlot({\n index,\n className,\n ...props\n}: React.ComponentProps<'div'> & {\n index: number;\n}) {\n const inputOTPContext = React.useContext(OTPInputContext);\n const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};\n\n return (\n <div\n data-slot=\"input-otp-slot\"\n data-active={isActive}\n className={cn(\n 'cn-input-otp-slot relative flex items-center justify-center data-[active=true]:z-10',\n className,\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"cn-input-otp-caret-line\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"input-otp-separator\"\n className=\"cn-input-otp-separator flex items-center\"\n aria-hidden=\"true\"\n {...props}\n >\n <IconMinus />\n </div>\n );\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { Separator } from './separator';\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"item-group\"\n className={cn(\n 'cn-item-group group/item-group flex flex-col list-none p-0 m-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"item-separator\"\n orientation=\"horizontal\"\n className={cn('cn-item-separator', className)}\n {...props}\n />\n );\n}\n\nconst itemVariants = cva(\n 'cn-item group/item flex items-center flex-wrap outline-none transition-colors duration-100 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n {\n variants: {\n variant: {\n default: 'cn-item-variant-default',\n outline: 'cn-item-variant-outline',\n muted: 'cn-item-variant-muted',\n },\n size: {\n default: 'cn-item-size-default',\n sm: 'cn-item-size-sm',\n xs: 'cn-item-size-xs',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction Item({\n className,\n variant = 'default',\n size = 'default',\n render = <div />,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps<typeof itemVariants> & { render?: useRender.RenderProp }) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'item',\n 'data-variant': variant,\n 'data-size': size,\n className: cn(itemVariants({ variant, size, className })),\n },\n defaultTagName: 'div',\n });\n}\n\nconst itemMediaVariants = cva(\n 'cn-item-media flex shrink-0 items-center justify-center [&_svg]:pointer-events-none',\n {\n variants: {\n variant: {\n default: 'cn-item-media-variant-default',\n icon: 'cn-item-media-variant-icon',\n image: 'cn-item-media-variant-image',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction ItemMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>) {\n return (\n <div\n data-slot=\"item-media\"\n data-variant={variant}\n className={cn(itemMediaVariants({ variant, className }))}\n {...props}\n />\n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn(\n 'cn-item-content flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-title\"\n className={cn(\n 'cn-item-title flex w-fit items-center leading-snug',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n 'cn-item-description line-clamp-2 text-balance',\n '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn('cn-item-actions flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn(\n 'cn-item-header flex basis-full items-center justify-between',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn(\n 'cn-item-footer flex basis-full items-center justify-between',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Item,\n ItemMedia,\n ItemContent,\n ItemActions,\n ItemGroup,\n ItemSeparator,\n ItemTitle,\n ItemDescription,\n ItemHeader,\n ItemFooter,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Textarea } from './textarea';\n\ntype JsonInputProps = Omit<\n React.ComponentProps<typeof Textarea>,\n 'value' | 'onChange'\n> & {\n value?: string | object;\n defaultValue?: string | object;\n onChange?: (value: string) => void;\n onValueChange?: (value: object | null) => void;\n formatOnBlur?: boolean;\n validationError?: string;\n};\n\nfunction JsonInput({\n className,\n value,\n defaultValue,\n onChange,\n onValueChange,\n formatOnBlur = true,\n validationError,\n onBlur,\n ...props\n}: JsonInputProps) {\n const stringifyValue = (val: string | object | undefined) => {\n if (typeof val === 'string') {\n return val;\n }\n if (val) {\n return JSON.stringify(val, null, 2);\n }\n return '';\n };\n\n const [internalValue, setInternalValue] = useState(\n stringifyValue(defaultValue) || '{}',\n );\n const [error, setError] = useState<string | null>(null);\n\n const currentValue =\n value !== undefined ? stringifyValue(value) : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n setError(null);\n onChange?.(newValue);\n\n try {\n const parsed = JSON.parse(newValue);\n onValueChange?.(parsed);\n } catch {\n onValueChange?.(null);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n if (formatOnBlur) {\n try {\n const parsed = JSON.parse(currentValue);\n const formatted = JSON.stringify(parsed, null, 2);\n setInternalValue(formatted);\n setError(null);\n onChange?.(formatted);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Invalid JSON');\n }\n }\n onBlur?.(e);\n };\n\n const errorMessage = validationError || error;\n\n return (\n <div data-slot=\"json-input\" className=\"cn-json-input relative w-full\">\n <Textarea\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n aria-invalid={errorMessage ? true : undefined}\n className={cn('cn-json-input-textarea', className)}\n rows={10}\n {...props}\n />\n {errorMessage && (\n <p data-slot=\"json-input-error\" className=\"cn-json-input-error\">\n {errorMessage}\n </p>\n )}\n </div>\n );\n}\n\nexport { JsonInput };\n","import { cn } from '../../lib/utils';\n\nfunction Kbd({ className, ...props }: React.ComponentProps<'kbd'>) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n 'cn-kbd pointer-events-none inline-flex items-center justify-center select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction KbdGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <kbd\n data-slot=\"kbd-group\"\n className={cn('cn-kbd-group inline-flex items-center', className)}\n {...props}\n />\n );\n}\n\nexport { Kbd, KbdGroup };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst listVariants = cva('space-y-2', {\n variants: {\n listStyle: {\n disc: '[&>li]:list-disc [&>li]:ml-6',\n decimal: '[&>li]:list-decimal [&>li]:ml-6',\n none: '[&>li]:list-none',\n },\n spacing: {\n none: 'space-y-0',\n sm: 'space-y-1',\n md: 'space-y-2',\n lg: 'space-y-4',\n },\n },\n defaultVariants: {\n listStyle: 'disc',\n spacing: 'md',\n },\n});\n\ntype BaseListProps = VariantProps<typeof listVariants> & {\n ordered?: boolean;\n};\n\ntype ListProps = BaseListProps &\n (\n | ({ ordered?: false } & React.ComponentProps<'ul'>)\n | ({ ordered: true } & React.ComponentProps<'ol'>)\n );\n\nfunction List({\n className,\n listStyle,\n spacing,\n ordered = false,\n ...props\n}: ListProps) {\n const classes = cn(\n listVariants({\n listStyle: ordered && !listStyle ? 'decimal' : listStyle,\n spacing,\n }),\n className,\n );\n\n if (ordered) {\n return (\n <ol\n data-slot=\"list\"\n className={classes}\n {...(props as React.ComponentProps<'ol'>)}\n />\n );\n }\n\n return (\n <ul\n data-slot=\"list\"\n className={classes}\n {...(props as React.ComponentProps<'ul'>)}\n />\n );\n}\n\nfunction ListItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"list-item\"\n className={cn('cn-list-item', className)}\n {...props}\n />\n );\n}\n\nexport { List, ListItem, listVariants };\n","import type * as React from 'react';\nimport type { ComponentColor } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype MarkProps = React.ComponentProps<'mark'> & {\n color?: ComponentColor;\n};\n\nfunction Mark({ className, color, ...props }: MarkProps) {\n const colorStyle = color\n ? ({\n '--mark-color': `var(--${color})`,\n } as React.CSSProperties)\n : undefined;\n\n return (\n <mark\n data-slot=\"mark\"\n style={colorStyle}\n className={cn(\n 'cn-mark px-1 py-0.5',\n color\n ? 'bg-[var(--mark-color)]/20 text-[var(--mark-color)]'\n : undefined,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Mark };\nexport type { MarkProps };\n","'use client';\n\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { Menubar as MenubarPrimitive } from '@base-ui/react/menubar';\nimport { IconCheck, IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst MENUBAR_POSITIONER_CN = 'isolate z-50 outline-none';\n\nconst MENUBAR_CONTENT_CN = cn(\n 'cn-menubar-content cn-menubar-content-logical cn-menu-target',\n 'z-50 max-h-(--available-height)',\n 'origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none',\n 'data-closed:overflow-hidden',\n);\n\nconst MENUBAR_ITEM_BASE_CN = cn(\n 'group/menubar-item relative flex cursor-default items-center',\n 'outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n);\n\nconst MENUBAR_SUB_TRIGGER_BASE_CN = cn(\n 'flex cursor-default items-center outline-hidden select-none',\n 'data-disabled:pointer-events-none data-disabled:opacity-50',\n);\n\nfunction Menubar({\n className,\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive>) {\n return (\n <MenubarPrimitive\n data-slot=\"menubar\"\n className={cn('cn-menubar flex items-center gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarMenu({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Root>) {\n return <MenuPrimitive.Root data-slot=\"menubar-menu\" {...props} />;\n}\n\nfunction MenubarGroup({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Group>) {\n return <MenuPrimitive.Group data-slot=\"menubar-group\" {...props} />;\n}\n\nfunction MenubarPortal({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Portal>) {\n return <MenuPrimitive.Portal data-slot=\"menubar-portal\" {...props} />;\n}\n\nfunction MenubarRadioGroup({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.RadioGroup>) {\n return (\n <MenuPrimitive.RadioGroup data-slot=\"menubar-radio-group\" {...props} />\n );\n}\n\nfunction MenubarTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Trigger>) {\n return (\n <MenuPrimitive.Trigger\n data-slot=\"menubar-trigger\"\n className={cn(\n 'cn-menubar-trigger flex items-center outline-hidden select-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Popup>) {\n return (\n <MenuPrimitive.Popup\n data-slot=\"menubar-content\"\n className={cn(MENUBAR_CONTENT_CN, className)}\n {...props}\n />\n );\n}\n\nfunction MenubarPositioner({\n align = 'start',\n alignOffset = -4,\n side = 'bottom',\n sideOffset = 8,\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Positioner>) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n data-slot=\"menubar-positioner\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className={cn(MENUBAR_POSITIONER_CN, className)}\n {...props}\n />\n </MenuPrimitive.Portal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"menubar-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn('cn-menubar-item', MENUBAR_ITEM_BASE_CN, className)}\n {...props}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"menubar-checkbox-item\"\n data-inset={inset}\n className={cn(\n 'cn-menubar-checkbox-item',\n MENUBAR_ITEM_BASE_CN,\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"cn-menubar-checkbox-item-indicator pointer-events-none absolute flex items-center justify-center\">\n <MenuPrimitive.CheckboxItemIndicator>\n <IconCheck className=\"size-4\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"menubar-radio-item\"\n className={cn('cn-menubar-radio-item', MENUBAR_ITEM_BASE_CN, className)}\n data-inset={inset}\n {...props}\n >\n <span className=\"cn-menubar-radio-item-indicator pointer-events-none absolute flex items-center justify-center\">\n <MenuPrimitive.RadioItemIndicator>\n <IconCheck className=\"size-4\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.GroupLabel> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"menubar-label\"\n data-inset={inset}\n className={cn('cn-menubar-label', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Separator>) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"menubar-separator\"\n className={cn('cn-menubar-separator', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"menubar-shortcut\"\n className={cn('cn-menubar-shortcut ml-auto', className)}\n {...props}\n />\n );\n}\n\nfunction MenubarSub({\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.SubmenuRoot>) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"menubar-sub\" {...props} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"menubar-sub-trigger\"\n data-inset={inset}\n className={cn(\n 'cn-menubar-sub-trigger',\n MENUBAR_SUB_TRIGGER_BASE_CN,\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto h-4 w-4\" />\n </MenuPrimitive.SubmenuTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n align = 'start',\n alignOffset = -3,\n side = 'right',\n sideOffset = 0,\n ...props\n}: React.ComponentProps<typeof MenuPrimitive.Popup> &\n Pick<\n React.ComponentProps<typeof MenuPrimitive.Positioner>,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className={MENUBAR_POSITIONER_CN}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"menubar-sub-content\"\n className={cn(\n 'cn-menubar-sub-content cn-menubar-content-logical',\n 'z-50 max-h-(--available-height) w-auto origin-(--transform-origin)',\n 'overflow-x-hidden overflow-y-auto outline-none',\n className,\n )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n );\n}\n\nexport {\n Menubar,\n MenubarPortal,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarPositioner,\n MenubarGroup,\n MenubarSeparator,\n MenubarLabel,\n MenubarItem,\n MenubarShortcut,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSub,\n MenubarSubTrigger,\n MenubarSubContent,\n};\n","'use client';\n\nimport { type ChangeEvent, forwardRef, useCallback, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from './input-group';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from './select';\n\ntype CurrencyOption = {\n label: string;\n value: string;\n symbol?: string;\n};\n\ntype MoneyInputProps = {\n value?: number;\n currency?: string;\n onValueChange?: (value: number, currency: string) => void;\n currencies?: CurrencyOption[];\n fractionDigits?: number;\n disabled?: boolean;\n placeholder?: string;\n className?: string;\n size?: 'sm' | 'md' | 'lg';\n id?: string;\n};\n\nconst defaultCurrencies: CurrencyOption[] = [\n { label: 'ETB', value: 'etb', symbol: 'Br' },\n { label: 'USD', value: 'usd', symbol: '$' },\n { label: 'EUR', value: 'eur', symbol: '€' },\n { label: 'GBP', value: 'gbp', symbol: '£' },\n];\n\nconst formatNumber = (num: number, fractionDigits: number): string => {\n return num.toLocaleString('en-US', {\n minimumFractionDigits: fractionDigits,\n maximumFractionDigits: fractionDigits,\n });\n};\n\nconst parseFormattedNumber = (str: string): number => {\n const cleaned = str.replace(/,/g, '');\n const parsed = Number.parseFloat(cleaned);\n return Number.isNaN(parsed) ? 0 : parsed;\n};\n\nconst sizeClasses = {\n sm: {\n group: 'h-8',\n symbol: 'text-xs',\n select: 'w-[70px] text-xs',\n },\n md: {\n group: 'h-9',\n symbol: 'text-sm',\n select: 'w-[80px] text-sm',\n },\n lg: {\n group: 'h-10',\n symbol: 'text-base',\n select: 'w-[90px] text-base',\n },\n};\n\nconst MoneyInput = forwardRef<HTMLDivElement, MoneyInputProps>(\n (\n {\n value = 0,\n currency = 'etb',\n onValueChange,\n currencies = defaultCurrencies,\n fractionDigits = 2,\n disabled = false,\n placeholder: placeholderProp,\n className = '',\n size = 'md',\n id,\n },\n ref,\n ) => {\n const placeholder =\n placeholderProp ??\n (fractionDigits > 0 ? `0.${'0'.repeat(fractionDigits)}` : '0');\n const [internalValue, setInternalValue] = useState(value);\n const [internalCurrency, setInternalCurrency] = useState(currency);\n const [displayValue, setDisplayValue] = useState(\n formatNumber(value, fractionDigits),\n );\n\n const currentCurrency = currencies.find(\n (c) => c.value === internalCurrency,\n );\n const currencySymbol =\n currentCurrency?.symbol || currentCurrency?.label || '';\n const sizes = sizeClasses[size];\n\n const handleInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const rawValue = e.target.value;\n setDisplayValue(rawValue);\n\n const numValue = parseFormattedNumber(rawValue);\n setInternalValue(numValue);\n },\n [],\n );\n\n const handleBlur = useCallback(() => {\n const formatted = formatNumber(internalValue, fractionDigits);\n setDisplayValue(formatted);\n onValueChange?.(internalValue, internalCurrency);\n }, [internalValue, internalCurrency, onValueChange, fractionDigits]);\n\n const handleFocus = useCallback(() => {\n setDisplayValue(\n internalValue % 1 === 0\n ? internalValue.toString()\n : internalValue.toFixed(fractionDigits),\n );\n }, [internalValue, fractionDigits]);\n\n const handleCurrencyChange = useCallback(\n (newCurrency: string) => {\n setInternalCurrency(newCurrency);\n onValueChange?.(internalValue, newCurrency);\n },\n [internalValue, onValueChange],\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"money-input\"\n className={cn('w-full', className)}\n >\n <InputGroup disabled={disabled} className={cn(sizes.group)}>\n <InputGroupAddon\n align=\"inline-start\"\n className={cn('pointer-events-none pl-2.5 pr-1.5', sizes.symbol)}\n >\n {currencySymbol}\n </InputGroupAddon>\n\n <InputGroupInput\n id={id}\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n disabled={disabled}\n placeholder={placeholder}\n className=\"tabular-nums !pl-2\"\n />\n\n <InputGroupAddon align=\"inline-end\" className=\"py-0 pr-0\">\n <div className=\"cn-money-input-currency-divider flex h-full items-center\">\n <Select\n value={internalCurrency}\n onValueChange={(v: unknown) =>\n handleCurrencyChange(v as string)\n }\n disabled={disabled}\n >\n <SelectTrigger\n className={cn(\n 'cn-money-input-currency-trigger h-full min-h-0 w-auto uppercase',\n sizes.select,\n )}\n >\n <SelectValue className=\"uppercase\" />\n </SelectTrigger>\n <SelectContent>\n {currencies.map((curr) => (\n <SelectItem key={curr.value} value={curr.value}>\n {curr.label.toUpperCase()}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </InputGroupAddon>\n </InputGroup>\n </div>\n );\n },\n);\n\nMoneyInput.displayName = 'MoneyInput';\n\nexport { MoneyInput, type CurrencyOption, type MoneyInputProps };\n","'use client';\n\nimport { Autocomplete as AutocompletePrimitive } from '@base-ui/react/autocomplete';\nimport { IconCheck, IconChevronDown, IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype MultiSelectOption = {\n value: string;\n label: string;\n disabled?: boolean;\n};\n\ntype MultiSelectProps = Omit<\n React.ComponentProps<typeof AutocompletePrimitive.Root>,\n 'children' | 'onValueChange' | 'inline'\n> & {\n options: MultiSelectOption[];\n value?: string[];\n onValueChange?: (value: string[]) => void;\n placeholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n};\n\nfunction MultiSelect({\n options,\n value = [],\n onValueChange,\n placeholder = 'Select options...',\n emptyText = 'No results found.',\n className,\n disabled,\n ...props\n}: MultiSelectProps) {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n const selectedOptions = options.filter((opt) => value.includes(opt.value));\n\n const filteredOptions =\n inputValue === ''\n ? options\n : options.filter((option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase()),\n );\n\n const handleToggle = (optionValue: string) => {\n const newValue = value.includes(optionValue)\n ? value.filter((v) => v !== optionValue)\n : [...value, optionValue];\n onValueChange?.(newValue);\n };\n\n const handleRemove = (optionValue: string) => {\n onValueChange?.(value.filter((v) => v !== optionValue));\n };\n\n return (\n <div\n data-slot=\"multi-select\"\n data-disabled={disabled || undefined}\n className={cn(\n 'relative w-full data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n >\n <AutocompletePrimitive.Root\n open={disabled ? false : open}\n onOpenChange={(nextOpen) => {\n if (disabled) {\n return;\n }\n setOpen(nextOpen);\n if (!nextOpen) {\n setInputValue('');\n }\n }}\n filteredItems={filteredOptions}\n inline\n {...props}\n >\n <div className=\"relative\">\n <div className=\"cn-combobox-chips\">\n <div className=\"flex flex-wrap gap-1\">\n {selectedOptions.map((option) => (\n <span\n key={option.value}\n data-slot=\"multi-select-chip\"\n className=\"cn-combobox-chip\"\n >\n <span className=\"flex-1\">{option.label}</span>\n <button\n type=\"button\"\n data-slot=\"multi-select-chip-remove\"\n onClick={(e) => {\n e.stopPropagation();\n handleRemove(option.value);\n }}\n className=\"cn-combobox-chip-remove\"\n >\n <span className=\"sr-only\">Remove</span>\n <IconX className=\"size-3\" />\n </button>\n </span>\n ))}\n <AutocompletePrimitive.Input\n data-slot=\"multi-select-input\"\n placeholder={selectedOptions.length === 0 ? placeholder : ''}\n value={inputValue}\n onChange={(e) => setInputValue(e.currentTarget.value)}\n onFocus={() => !disabled && setOpen(true)}\n disabled={disabled}\n className=\"cn-multi-select-input\"\n />\n </div>\n </div>\n <IconChevronDown className=\"cn-multi-select-trigger-icon\" />\n </div>\n {open && (\n <AutocompletePrimitive.List\n data-slot=\"multi-select-content\"\n className={cn('cn-multi-select-content cn-combobox-content')}\n >\n {filteredOptions.length === 0 ? (\n <div className=\"cn-multi-select-empty\">{emptyText}</div>\n ) : (\n filteredOptions.map((option) => (\n <AutocompletePrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n onClick={() => {\n handleToggle(option.value);\n setInputValue('');\n }}\n className={cn(\n 'cn-combobox-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50',\n )}\n >\n <span className=\"flex-1\">{option.label}</span>\n {value.includes(option.value) && (\n <span className=\"cn-combobox-item-indicator\">\n <IconCheck className=\"size-4\" />\n </span>\n )}\n </AutocompletePrimitive.Item>\n ))\n )}\n </AutocompletePrimitive.List>\n )}\n </AutocompletePrimitive.Root>\n </div>\n );\n}\n\nexport { MultiSelect };\nexport type { MultiSelectOption };\n","'use client';\n\nimport { IconChevronDown } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\nexport type NativeSelectOption = { value: string; label: string } | string;\n\nexport type NativeSelectBaseProps = Omit<\n React.ComponentProps<'select'>,\n 'size'\n> & {\n size?: ComponentSize;\n data?: NativeSelectOption[];\n rightSection?: React.ReactNode;\n};\n\nfunction mapNativeSelectSize(size: ComponentSize): 'sm' | 'default' {\n return size === 'xs' || size === 'sm' ? 'sm' : 'default';\n}\n\nfunction parseOptions(\n data: NativeSelectOption[],\n): Array<{ value: string; label: string }> {\n return data.map((item) =>\n typeof item === 'string' ? { value: item, label: item } : item,\n );\n}\n\nconst NativeSelectBase = forwardRef<HTMLSelectElement, NativeSelectBaseProps>(\n ({ className, size = 'md', data, children, rightSection, ...props }, ref) => {\n const options = data ? parseOptions(data) : null;\n const mappedSize = mapNativeSelectSize(size);\n\n return (\n <div\n data-slot=\"native-select-wrapper\"\n data-size={mappedSize}\n className={cn(\n 'group/native-select relative w-full min-w-0 has-[select:disabled]:opacity-50',\n className,\n )}\n >\n <select\n ref={ref}\n data-slot=\"native-select\"\n data-size={mappedSize}\n className={cn(\n 'cn-native-select outline-none disabled:pointer-events-none disabled:cursor-not-allowed',\n )}\n {...props}\n >\n {options\n ? options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))\n : children}\n </select>\n <span\n data-slot=\"native-select-icon\"\n aria-hidden=\"true\"\n className=\"cn-native-select-icon pointer-events-none absolute select-none\"\n >\n {rightSection ?? <IconChevronDown className=\"size-4\" />}\n </span>\n </div>\n );\n },\n);\n\nNativeSelectBase.displayName = 'NativeSelectBase';\n\nexport type NativeSelectProps = NativeSelectBaseProps &\n Omit<InputWrapperProps, 'children'>;\n\nconst NativeSelect = forwardRef<HTMLSelectElement, NativeSelectProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n ...selectProps\n },\n ref,\n ) => {\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const select = (\n <NativeSelectBase ref={ref} disabled={disabled} {...selectProps} />\n );\n\n if (!hasWrapper) {\n return select;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {select}\n </InputWrapper>\n );\n },\n);\n\nNativeSelect.displayName = 'NativeSelect';\n\nexport { NativeSelectBase, NativeSelect };\n","'use client';\n\nimport { useMesob } from '@mesob/ui/providers';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst isExternal = (href?: string) =>\n !href ||\n href.startsWith('http') ||\n href.startsWith('//') ||\n href.startsWith('mailto:') ||\n href.startsWith('tel:');\n\nconst navLinkVariants = cva(\n 'cn-nav-link flex items-center gap-3 px-3 py-2 text-sm font-medium transition-colors cursor-pointer',\n {\n variants: {\n active: {\n true: '',\n false: '',\n },\n variant: {\n default: '',\n subtle: '',\n },\n },\n defaultVariants: {\n active: false,\n variant: 'default',\n },\n },\n);\n\ntype NavLinkProps = React.ComponentProps<'a'> &\n VariantProps<typeof navLinkVariants> & {\n label: string;\n icon?: React.ReactNode;\n rightSection?: React.ReactNode;\n disabled?: boolean;\n };\n\nfunction NavLink({\n className,\n active,\n variant,\n label,\n icon,\n rightSection,\n disabled,\n children,\n href,\n ...props\n}: NavLinkProps) {\n const mesob = useMesob();\n const Link = mesob?.linkComponent ?? mesob?.navigation?.Link;\n const locale = mesob?.locale;\n const useLink = href && !isExternal(href) && Link;\n const Comp = useLink ? Link : 'a';\n const linkProps = useLink\n ? { ...props, href, ...(locale && { locale }) }\n : { ...props, href };\n\n return (\n <Comp\n data-slot=\"nav-link\"\n data-active={active}\n data-variant={variant}\n className={cn(\n navLinkVariants({ active, variant }),\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n aria-current={active ? 'page' : undefined}\n {...linkProps}\n >\n {icon && (\n <span className=\"shrink-0 [&>svg]:size-5\" data-slot=\"nav-link-icon\">\n {icon}\n </span>\n )}\n <span className=\"flex-1\" data-slot=\"nav-link-label\">\n {label}\n </span>\n {rightSection && (\n <span\n className=\"shrink-0 text-muted-foreground\"\n data-slot=\"nav-link-right\"\n >\n {rightSection}\n </span>\n )}\n {children}\n </Comp>\n );\n}\n\nexport { NavLink, navLinkVariants };\n","import { NavigationMenu as NavigationMenuPrimitive } from '@base-ui/react/navigation-menu';\nimport { IconChevronDown } from '@tabler/icons-react';\nimport { cva } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n}) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-viewport={viewport}\n className={cn(\n 'cn-navigation-menu group/navigation-menu relative flex flex-1 items-center justify-center',\n className,\n )}\n {...props}\n >\n {children}\n {viewport && (\n <NavigationMenuPrimitive.Portal>\n <NavigationMenuPrimitive.Positioner\n data-slot=\"navigation-menu-positioner\"\n className=\"cn-navigation-menu-positioner isolate z-50\"\n >\n <NavigationMenuPrimitive.Popup\n data-slot=\"navigation-menu-popup\"\n className=\"cn-navigation-menu-popup outline-none\"\n >\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPrimitive.Portal>\n )}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return (\n <NavigationMenuPrimitive.List\n data-slot=\"navigation-menu-list\"\n className={cn(\n 'cn-navigation-menu-list group flex flex-1 list-none items-center justify-center',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return (\n <NavigationMenuPrimitive.Item\n data-slot=\"navigation-menu-item\"\n className={cn('relative', className)}\n {...props}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva('cn-navigation-menu-trigger');\n\nfunction NavigationMenuTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(\n navigationMenuTriggerStyle(),\n 'group/navigation-menu-trigger',\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronDown\n className=\"cn-navigation-menu-trigger-icon\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'cn-navigation-menu-content top-0 left-0 w-full md:absolute md:w-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {\n return (\n <div className=\"absolute top-full left-0 flex justify-center\">\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn(\n 'cn-navigation-menu-viewport origin-top-center relative mt-1.5 w-full overflow-hidden md:w-auto',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn('cn-navigation-menu-link flex flex-col gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"navigation-menu-indicator\"\n className={cn(\n 'cn-navigation-menu-indicator top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n >\n <div className=\"cn-navigation-menu-indicator-arrow\" />\n </div>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n navigationMenuTriggerStyle,\n};\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype NumberFormatterProps = React.ComponentProps<'span'> & {\n value: number;\n prefix?: string;\n suffix?: string;\n thousandsSeparator?: string;\n decimalSeparator?: string;\n decimalScale?: number;\n fixedDecimalScale?: boolean;\n};\n\nfunction NumberFormatter({\n className,\n value,\n prefix = '',\n suffix = '',\n thousandsSeparator = ',',\n decimalSeparator = '.',\n decimalScale,\n fixedDecimalScale = false,\n ...props\n}: NumberFormatterProps) {\n const formatNumber = () => {\n const numStr = value.toString();\n let [intPart, decPart] = numStr.split('.');\n\n // Apply decimal scale\n if (decimalScale !== undefined) {\n if (decPart) {\n decPart = fixedDecimalScale\n ? decPart.padEnd(decimalScale, '0').slice(0, decimalScale)\n : decPart.slice(0, decimalScale);\n } else if (fixedDecimalScale && decimalScale > 0) {\n decPart = '0'.repeat(decimalScale);\n }\n }\n\n // Add thousands separator\n if (thousandsSeparator) {\n intPart = intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparator);\n }\n\n // Combine parts\n let result = intPart;\n if (decPart) {\n result += decimalSeparator + decPart;\n }\n\n return `${prefix}${result}${suffix}`;\n };\n\n return (\n <span\n data-slot=\"number-formatter\"\n className={cn('font-medium tabular-nums', className)}\n {...props}\n >\n {formatNumber()}\n </span>\n );\n}\n\nexport { NumberFormatter };\n","'use client';\n\nimport { IconChevronDown, IconChevronUp } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { forwardRef, useCallback } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from './input-group';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\nimport { UnstyledButton } from './unstyled-button';\n\nexport type NumberInputProps = Omit<\n React.ComponentProps<'input'>,\n 'type' | 'value' | 'defaultValue' | 'onChange' | 'size'\n> &\n Omit<InputWrapperProps, 'children'> & {\n value?: number | string;\n defaultValue?: number | string;\n onChange?: (value: number | string) => void;\n size?: ComponentSize;\n min?: number;\n max?: number;\n step?: number;\n decimalScale?: number;\n thousandsSeparator?: string;\n decimalSeparator?: string;\n /** Show increment/decrement controls */\n controls?: boolean;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n };\n\nconst sizeClasses: Record<ComponentSize, string> = {\n xs: 'h-7',\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n xl: 'h-12',\n};\n\nfunction getNumberValue(\n value: number | string | undefined,\n): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (value === '') {\n return undefined;\n }\n return Number(value);\n}\n\nfunction getDisplayValue({\n value,\n defaultValue,\n}: {\n value: number | string | undefined;\n defaultValue: number | string | undefined;\n}): string {\n if (value !== undefined) {\n return String(value);\n }\n if (defaultValue !== undefined) {\n return String(defaultValue);\n }\n return '';\n}\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size = 'md',\n min,\n max,\n step = 1,\n controls = true,\n leftSection,\n rightSection,\n ...inputProps\n },\n ref,\n ) => {\n const numValue = getNumberValue(value);\n const displayValue = getDisplayValue({ value, defaultValue });\n\n const clamp = useCallback(\n (n: number) => {\n let v = n;\n if (min !== undefined && v < min) {\n v = min;\n }\n if (max !== undefined && v > max) {\n v = max;\n }\n return v;\n },\n [min, max],\n );\n\n const handleStep = useCallback(\n (delta: number) => {\n let current: number;\n if (numValue !== undefined) {\n current = numValue;\n } else if (defaultValue !== undefined) {\n current = Number(defaultValue);\n } else {\n current = 0;\n }\n const next = clamp(Number(current) + delta);\n onChange?.(next);\n },\n [numValue, defaultValue, onChange, clamp],\n );\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value;\n if (raw === '' || raw === '-') {\n onChange?.('');\n return;\n }\n const parsed = Number.parseFloat(raw.replace(/,/g, '.'));\n if (Number.isNaN(parsed)) {\n onChange?.(raw);\n } else {\n onChange?.(clamp(parsed));\n }\n };\n\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const showControls = controls && !disabled;\n const controlsEl = showControls ? (\n <div\n data-slot=\"number-input-controls\"\n className=\"cn-number-input-controls\"\n >\n <UnstyledButton\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n data-slot=\"number-input-control\"\n data-action=\"increment\"\n className=\"cn-number-input-control\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleStep(step ?? 1);\n }}\n >\n <IconChevronUp className=\"size-4\" />\n </UnstyledButton>\n <UnstyledButton\n type=\"button\"\n tabIndex={-1}\n aria-hidden\n data-slot=\"number-input-control\"\n data-action=\"decrement\"\n className=\"cn-number-input-control\"\n onMouseDown={(e) => {\n e.preventDefault();\n handleStep(-(step ?? 1));\n }}\n >\n <IconChevronDown className=\"size-4\" />\n </UnstyledButton>\n </div>\n ) : null;\n\n const inputEl = (\n <InputGroup disabled={disabled} className={cn(sizeClasses[size])}>\n {leftSection && (\n <InputGroupAddon align=\"inline-start\" className=\"pointer-events-none\">\n {leftSection}\n </InputGroupAddon>\n )}\n <InputGroupInput\n ref={ref}\n type=\"text\"\n inputMode=\"decimal\"\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n min={min}\n max={max}\n step={step}\n aria-invalid={error ? true : undefined}\n required={required}\n className={cn(className)}\n {...inputProps}\n />\n {rightSection && !showControls && (\n <InputGroupAddon align=\"inline-end\">{rightSection}</InputGroupAddon>\n )}\n {showControls && (\n <InputGroupAddon\n align=\"inline-end\"\n className=\"cn-number-input-controls-addon\"\n >\n {controlsEl}\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n\n if (!hasWrapper) {\n return inputEl;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {inputEl}\n </InputWrapper>\n );\n },\n);\n\nNumberInput.displayName = 'NumberInput';\n\nexport { NumberInput };\n","import { useRender } from '@base-ui/react/use-render';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype UnstyledButtonProps = React.ComponentProps<'button'> & {\n render?: React.ComponentProps<typeof useRender>['render'];\n};\n\nfunction UnstyledButton({\n className,\n render = <button type=\"button\" />,\n ...props\n}: UnstyledButtonProps) {\n return useRender({\n render,\n props: {\n ...props,\n 'data-slot': 'unstyled-button',\n className: cn(\n 'cn-unstyled-button inline-flex cursor-pointer items-center justify-center border-0 bg-transparent p-0 text-foreground outline-none transition-colors hover:text-foreground/80 disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-muted-foreground',\n className,\n ),\n },\n defaultTagName: 'button',\n });\n}\n\nexport { UnstyledButton };\nexport type { UnstyledButtonProps };\n","import {\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n} from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { type Button, buttonVariants } from './button';\n\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n aria-label=\"pagination\"\n data-slot=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n ...props\n}: React.ComponentProps<'ul'>) {\n return (\n <ul\n data-slot=\"pagination-content\"\n className={cn('cn-pagination-content flex items-center', className)}\n {...props}\n />\n );\n}\n\nfunction PaginationItem({ ...props }: React.ComponentProps<'li'>) {\n return <li data-slot=\"pagination-item\" {...props} />;\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 ...props\n}: PaginationLinkProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-slot=\"pagination-link\"\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n 'transition-colors',\n className,\n )}\n {...props}\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=\"md\"\n className={cn('cn-pagination-previous gap-1', className)}\n {...props}\n >\n <IconChevronLeft />\n <span className=\"hidden sm:block\">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=\"md\"\n className={cn('cn-pagination-next gap-1', className)}\n {...props}\n >\n <span className=\"hidden sm:block\">Next</span>\n <IconChevronRight />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n aria-hidden\n data-slot=\"pagination-ellipsis\"\n className={cn('cn-pagination-ellipsis flex', className)}\n {...props}\n >\n <IconDots className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationLink,\n PaginationItem,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n","import type * as React from 'react';\nimport type { ComponentRadius } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype PaperProps = React.ComponentProps<'div'> & {\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n radius?: ComponentRadius;\n withBorder?: boolean;\n shadow?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n};\n\nfunction Paper({\n className,\n padding = 'md',\n radius = 'md',\n withBorder = false,\n shadow = 'none',\n ...props\n}: PaperProps) {\n const paddingClasses = {\n none: 'p-0',\n xs: 'p-2',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n };\n\n const radiusClasses = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n };\n\n const shadowClasses = {\n none: '',\n xs: '',\n sm: 'shadow-sm',\n md: 'shadow-md',\n lg: 'shadow-lg',\n xl: 'shadow-xl',\n };\n\n return (\n <div\n data-slot=\"paper\"\n className={cn(\n 'cn-paper',\n paddingClasses[padding],\n radiusClasses[radius],\n shadowClasses[shadow],\n withBorder && 'border',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Paper };\nexport type { PaperProps };\n","'use client';\n\nimport { IconEye, IconEyeOff } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { forwardRef, useState } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupInput,\n} from './input-group';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\ntype PasswordInputBaseProps = Omit<\n React.ComponentProps<'input'>,\n 'type' | 'size'\n> & {\n showToggle?: boolean;\n size?: ComponentSize;\n};\n\nconst PasswordInput = forwardRef<HTMLInputElement, PasswordInputBaseProps>(\n ({ className, showToggle = true, size, ...props }, ref) => {\n const [showPassword, setShowPassword] = useState(false);\n\n const groupSizeClasses: Partial<Record<ComponentSize, string>> = {\n xs: 'h-7',\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n xl: 'h-12',\n };\n\n const iconButtonSize: React.ComponentProps<\n typeof InputGroupButton\n >['size'] = size === 'xs' || size === 'sm' ? 'icon-xs' : 'icon-sm';\n\n return (\n <InputGroup\n disabled={props.disabled}\n className={cn(size && groupSizeClasses[size])}\n >\n <InputGroupInput\n ref={ref}\n type={showPassword ? 'text' : 'password'}\n className={cn(className)}\n {...props}\n />\n\n {showToggle && (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton\n type=\"button\"\n variant=\"ghost\"\n size={iconButtonSize}\n className=\"data-pressed:bg-transparent\"\n onClick={() => setShowPassword((prev) => !prev)}\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n tabIndex={-1}\n disabled={props.disabled}\n >\n {showPassword ? (\n <IconEyeOff className=\"size-4\" />\n ) : (\n <IconEye className=\"size-4\" />\n )}\n </InputGroupButton>\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n },\n);\n\nPasswordInput.displayName = 'PasswordInput';\n\ntype PasswordInputWithWrapperProps = PasswordInputBaseProps &\n Omit<InputWrapperProps, 'children'>;\n\nconst PasswordInputWithWrapper = forwardRef<\n HTMLInputElement,\n PasswordInputWithWrapperProps\n>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n ...passwordInputProps\n },\n ref,\n ) => {\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const passwordInput = (\n <PasswordInput ref={ref} disabled={disabled} {...passwordInputProps} />\n );\n\n if (!hasWrapper) {\n return passwordInput;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {passwordInput}\n </InputWrapper>\n );\n },\n);\n\nPasswordInputWithWrapper.displayName = 'PasswordInputWithWrapper';\n\nexport { PasswordInput, PasswordInputWithWrapper };\nexport type { PasswordInputBaseProps, PasswordInputWithWrapperProps };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { CloseButton } from './close-button';\n\nconst pillVariants = cva(\n 'cn-pill inline-flex items-center gap-1 font-medium shrink-0 outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-100',\n {\n variants: {\n variant: {\n default: 'cn-pill-variant-default',\n contrast: 'cn-pill-variant-contrast',\n },\n size: {\n xs: 'text-[10px] px-1.5 py-0 h-4',\n sm: 'text-xs px-2 py-0.5 h-5',\n md: 'text-sm px-2.5 py-1 h-6',\n lg: 'text-base px-3 py-1 h-7',\n xl: 'text-lg px-4 py-1.5 h-8',\n },\n radius: {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'sm',\n radius: 'full',\n },\n },\n);\n\ntype PillProps = Omit<React.ComponentProps<'span'>, 'disabled'> &\n VariantProps<typeof pillVariants> & {\n withRemoveButton?: boolean;\n onRemove?: () => void;\n removeButtonProps?: React.ComponentProps<typeof CloseButton>;\n disabled?: boolean;\n };\n\nfunction Pill({\n className,\n variant,\n size,\n radius,\n withRemoveButton = false,\n onRemove,\n removeButtonProps,\n children,\n disabled,\n ...props\n}: PillProps) {\n return (\n <span\n data-slot=\"pill\"\n aria-disabled={disabled}\n className={cn(\n pillVariants({ variant, size, radius }),\n withRemoveButton && 'pr-1',\n disabled && 'pointer-events-none opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n {withRemoveButton && !disabled && (\n <CloseButton\n size=\"icon-xs\"\n variant=\"ghost\"\n aria-label=\"Remove\"\n tabIndex={-1}\n {...removeButtonProps}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeButtonProps?.onMouseDown?.(e);\n }}\n onClick={(e) => {\n e.stopPropagation();\n onRemove?.();\n removeButtonProps?.onClick?.(e);\n }}\n />\n )}\n </span>\n );\n}\n\nexport { Pill, pillVariants };\nexport type { PillProps };\n","'use client';\n\nimport { Progress as ProgressPrimitive } from '@base-ui/react/progress';\nimport type * as React from 'react';\nimport type {\n ComponentColor,\n ComponentRadius,\n ComponentSize,\n} from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype ProgressProps = React.ComponentProps<typeof ProgressPrimitive.Root> & {\n size?: ComponentSize;\n radius?: ComponentRadius;\n color?: ComponentColor;\n};\n\nfunction Progress({\n className,\n value,\n size = 'md',\n radius,\n color: _color,\n ...props\n}: ProgressProps) {\n const radiusClasses = {\n xs: 'rounded-[var(--radius-xs)]',\n sm: 'rounded-[var(--radius-sm)]',\n md: 'rounded-[var(--radius-md)]',\n lg: 'rounded-[var(--radius-lg)]',\n xl: 'rounded-[var(--radius-xl)]',\n full: 'rounded-full',\n };\n\n return (\n <ProgressPrimitive.Root\n data-slot=\"progress\"\n data-size={size}\n value={value}\n className={cn(\n 'cn-progress relative w-full overflow-hidden',\n radius ? radiusClasses[radius] : undefined,\n className,\n )}\n {...props}\n >\n <ProgressPrimitive.Track\n data-slot=\"progress-track\"\n data-size={size}\n className={cn(\n 'cn-progress-track h-full w-full',\n radius && radiusClasses[radius],\n )}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"cn-progress-indicator h-full w-full flex-1 transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Track>\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\nexport type { ProgressProps };\n","'use client';\n\nimport {\n IconStar,\n IconStarFilled,\n IconStarHalfFilled,\n} from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype RatingProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\n count?: number;\n value?: number;\n onChange?: (value: number) => void;\n readOnly?: boolean;\n disabled?: boolean;\n allowHalf?: boolean;\n size?: 'sm' | 'md' | 'lg';\n color?: string;\n};\n\nfunction Rating({\n count = 5,\n value = 0,\n onChange,\n readOnly = false,\n disabled = false,\n allowHalf = false,\n size = 'md',\n color = 'text-yellow-400',\n className,\n ...props\n}: RatingProps) {\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const isDisabled = readOnly || disabled;\n\n const sizeClasses = {\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n };\n\n const displayValue = hoverValue ?? value;\n\n const handleClick = (index: number, isHalf: boolean) => {\n if (isDisabled || !onChange) {\n return;\n }\n const newValue = isHalf ? index + 0.5 : index + 1;\n onChange(newValue);\n };\n\n const handleMouseMove = (\n index: number,\n e: React.MouseEvent,\n rect: DOMRect,\n ) => {\n if (isDisabled || !allowHalf) {\n return;\n }\n const isHalf = e.clientX - rect.left < rect.width / 2;\n setHoverValue(isHalf ? index + 0.5 : index + 1);\n };\n\n const renderIcon = (filled: boolean, half: boolean) => {\n if (filled) {\n return <IconStarFilled className={cn(sizeClasses[size], color)} />;\n }\n if (half) {\n return <IconStarHalfFilled className={cn(sizeClasses[size], color)} />;\n }\n return (\n <IconStar className={cn(sizeClasses[size], 'text-muted-foreground')} />\n );\n };\n\n return (\n // biome-ignore lint/a11y/useSemanticElements: fieldset would affect layout\n <div\n data-slot=\"rating\"\n data-disabled={disabled || undefined}\n role=\"group\"\n aria-label=\"Rating\"\n aria-disabled={disabled || undefined}\n className={cn(\n 'inline-flex gap-1',\n disabled &&\n 'pointer-events-none cursor-not-allowed text-muted-foreground opacity-100',\n className,\n )}\n onMouseLeave={() => setHoverValue(null)}\n {...props}\n >\n {Array.from({ length: count }, (_, index) => {\n const isFilled = displayValue >= index + 1;\n const isHalf = displayValue >= index + 0.5 && displayValue < index + 1;\n\n const StarWrapper = isDisabled ? 'div' : 'button';\n return (\n <StarWrapper\n // biome-ignore lint/suspicious/noArrayIndexKey: static star list\n key={index}\n type={isDisabled ? undefined : 'button'}\n tabIndex={isDisabled ? undefined : 0}\n className={cn(\n 'relative border-0 bg-transparent p-0',\n !isDisabled && 'cursor-pointer transition-colors',\n sizeClasses[size],\n )}\n onClick={(e) => {\n const rect = e.currentTarget.getBoundingClientRect();\n const half = allowHalf && e.clientX - rect.left < rect.width / 2;\n handleClick(index, half);\n }}\n onKeyDown={(e) => {\n if (isDisabled || !onChange) {\n return;\n }\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick(index, allowHalf && index + 0.5 === displayValue);\n }\n }}\n onMouseMove={(e) => {\n const rect = e.currentTarget.getBoundingClientRect();\n handleMouseMove(index, e, rect);\n }}\n >\n {renderIcon(isFilled, isHalf)}\n </StarWrapper>\n );\n })}\n </div>\n );\n}\n\nexport { Rating };\n","'use client';\n\nimport type * as React from 'react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cn } from '../../lib/utils';\n\nfunction ResizablePanelGroup({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n 'flex h-full w-full data-[panel-group-direction=vertical]:flex-col',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ResizablePanel({\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn('cn-resizable-handle', className)}\n {...props}\n >\n {withHandle && <div aria-hidden className=\"cn-resizable-handle-icon\" />}\n </ResizablePrimitive.PanelResizeHandle>\n );\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype RingProgressProps = React.ComponentProps<'div'> & {\n value: number;\n size?: number;\n thickness?: number;\n color?: string;\n label?: React.ReactNode;\n};\n\nfunction RingProgress({\n value,\n size = 120,\n thickness = 8,\n color = 'text-primary',\n label,\n className,\n ...props\n}: RingProgressProps) {\n const normalizedValue = Math.min(100, Math.max(0, value));\n const radius = (size - thickness) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (normalizedValue / 100) * circumference;\n\n return (\n <div\n data-slot=\"ring-progress\"\n className={cn(\n 'relative inline-flex items-center justify-center',\n className,\n )}\n style={{ width: size, height: size }}\n {...props}\n >\n <svg width={size} height={size} className=\"-rotate-90\" aria-hidden=\"true\">\n <title>Progress: {normalizedValue}%</title>\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n className=\"text-muted/40\"\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className={cn('transition-all duration-300', color)}\n />\n </svg>\n {label && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n {typeof label === 'string' ? (\n <span className=\"text-foreground text-sm font-semibold\">\n {label}\n </span>\n ) : (\n label\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport { RingProgress };\n","'use client';\n\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\ntype SemiCircleProgressProps = React.ComponentProps<'div'> & {\n value: number;\n size?: number;\n thickness?: number;\n color?: string;\n label?: React.ReactNode;\n};\n\nfunction SemiCircleProgress({\n className,\n value,\n size = 120,\n thickness = 12,\n color = 'hsl(var(--primary))',\n label,\n ...props\n}: SemiCircleProgressProps) {\n const normalizedValue = Math.max(0, Math.min(100, value));\n const radius = (size - thickness) / 2;\n const circumference = Math.PI * radius;\n const strokeDashoffset =\n circumference - (normalizedValue / 100) * circumference;\n\n return (\n <div\n data-slot=\"semi-circle-progress\"\n className={cn(\n 'cn-semi-circle-progress inline-flex flex-col items-center',\n className,\n )}\n {...props}\n >\n <svg\n width={size}\n height={size / 2 + thickness / 2}\n viewBox={`0 0 ${size} ${size / 2 + thickness / 2}`}\n style={{ overflow: 'visible' }}\n role=\"img\"\n aria-label={`Progress: ${Math.round(normalizedValue)}%`}\n >\n <title>Progress: {Math.round(normalizedValue)}%</title>\n {/* Background arc */}\n <path\n d={`M ${thickness / 2},${size / 2} A ${radius},${radius} 0 0,1 ${size - thickness / 2},${size / 2}`}\n fill=\"none\"\n stroke=\"hsl(var(--muted))\"\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n />\n {/* Progress arc */}\n <path\n d={`M ${thickness / 2},${size / 2} A ${radius},${radius} 0 0,1 ${size - thickness / 2},${size / 2}`}\n fill=\"none\"\n stroke={color}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n style={{\n transition: 'stroke-dashoffset 0.3s ease',\n }}\n />\n </svg>\n {label && (\n <div className=\"cn-semi-circle-progress-label text-center\">{label}</div>\n )}\n </div>\n );\n}\n\nexport { SemiCircleProgress };\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst simpleGridVariants = cva('grid w-full', {\n variants: {\n cols: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n 5: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5',\n 6: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6',\n auto: 'grid-cols-[repeat(auto-fit,minmax(250px,1fr))]',\n },\n spacing: {\n '0': 'gap-0',\n xs: 'gap-2',\n sm: 'gap-3',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n '2xl': 'gap-10',\n },\n },\n defaultVariants: {\n cols: 2,\n spacing: 'md',\n },\n});\n\ntype SimpleGridProps = React.ComponentProps<'div'> &\n VariantProps<typeof simpleGridVariants> & {\n verticalSpacing?: '0' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n minChildWidth?: string | number;\n };\n\nfunction SimpleGrid({\n className,\n cols,\n spacing,\n verticalSpacing,\n minChildWidth,\n style,\n children,\n ...props\n}: SimpleGridProps) {\n const verticalGap = verticalSpacing\n ? {\n '0': '0',\n xs: '0.5rem',\n sm: '0.75rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n '2xl': '2.5rem',\n }[verticalSpacing]\n : undefined;\n\n const gridTemplateColumns = minChildWidth\n ? `repeat(auto-fit, minmax(${typeof minChildWidth === 'number' ? `${minChildWidth}px` : minChildWidth}, 1fr))`\n : undefined;\n\n return (\n <div\n data-slot=\"simple-grid\"\n className={cn(\n 'cn-simple-grid min-w-0',\n simpleGridVariants({ cols: minChildWidth ? undefined : cols, spacing }),\n className,\n )}\n style={{\n ...(verticalGap && { rowGap: verticalGap }),\n ...(gridTemplateColumns && { gridTemplateColumns }),\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { SimpleGrid, simpleGridVariants };\nexport type { SimpleGridProps };\n","'use client';\n\nimport { Slider as SliderPrimitive } from '@base-ui/react/slider';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: SliderPrimitive.Root.Props) {\n const _values = React.useMemo(() => {\n if (typeof value === 'number') {\n return [value];\n }\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof defaultValue === 'number') {\n return [defaultValue];\n }\n if (Array.isArray(defaultValue)) {\n return defaultValue;\n }\n return [min];\n }, [value, defaultValue, min]);\n\n return (\n <SliderPrimitive.Root\n className={cn(\n 'data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full',\n className,\n )}\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n thumbAlignment=\"edge\"\n {...props}\n >\n <SliderPrimitive.Control className=\"cn-slider 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 <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className=\"cn-slider-track relative grow overflow-hidden select-none\"\n >\n <SliderPrimitive.Indicator\n data-slot=\"slider-range\"\n className=\"cn-slider-range select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full\"\n />\n </SliderPrimitive.Track>\n {_values.map((thumbValue) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={thumbValue}\n className=\"cn-slider-thumb block shrink-0 select-none disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Control>\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype SpaceProps = React.ComponentProps<'div'> & {\n /** Height (vertical spacer). Theme size or CSS value. */\n h?: ComponentSize | number | string;\n /** Width (horizontal spacer). Theme size or CSS value. */\n w?: ComponentSize | number | string;\n};\n\nconst sizeToRem: Record<ComponentSize, string> = {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '0.75rem',\n lg: '1rem',\n xl: '1.5rem',\n};\n\nfunction toSize(\n v: ComponentSize | number | string | undefined,\n): string | undefined {\n if (v == null) {\n return undefined;\n }\n if (typeof v === 'number') {\n return `${v}px`;\n }\n if (typeof v === 'string' && v in sizeToRem) {\n return sizeToRem[v as ComponentSize];\n }\n return v;\n}\n\nfunction Space({ className, h, w, style, ...props }: SpaceProps) {\n const hVal = toSize(h);\n const wVal = toSize(w);\n const styleOut: React.CSSProperties = { ...style };\n if (hVal != null) {\n styleOut.height = hVal;\n styleOut.minHeight = styleOut.minHeight ?? hVal;\n }\n if (wVal != null) {\n styleOut.width = wVal;\n styleOut.minWidth = styleOut.minWidth ?? wVal;\n }\n\n return (\n <div\n data-slot=\"space\"\n className={cn('cn-space shrink-0', className)}\n style={styleOut}\n {...props}\n />\n );\n}\n\nexport { Space };\nexport type { SpaceProps };\n","'use client';\n\nimport { IconChevronDown } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { Button } from './button';\n\ntype SpoilerProps = React.ComponentProps<'div'> & {\n maxHeight?: number;\n showLabel?: string;\n hideLabel?: string;\n initialState?: boolean;\n};\n\nfunction Spoiler({\n maxHeight = 100,\n showLabel = 'Show more',\n hideLabel = 'Show less',\n initialState = false,\n children,\n className,\n ...props\n}: SpoilerProps) {\n const [isExpanded, setIsExpanded] = useState(initialState);\n const [shouldShowButton, setShouldShowButton] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const el = contentRef.current;\n if (!el) {\n return;\n }\n\n const update = () => {\n setShouldShowButton(el.scrollHeight > maxHeight);\n };\n\n update();\n\n const resizeObserver = new ResizeObserver(update);\n resizeObserver.observe(el);\n window.addEventListener('resize', update);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', update);\n };\n }, [maxHeight]);\n\n return (\n <div\n data-slot=\"spoiler\"\n className={cn('cn-spoiler relative', className)}\n {...props}\n >\n <div\n ref={contentRef}\n data-slot=\"spoiler-content\"\n className=\"cn-spoiler-content\"\n style={{\n maxHeight: isExpanded ? 'none' : `${maxHeight}px`,\n }}\n >\n {children}\n </div>\n {!isExpanded && shouldShowButton && (\n <div\n data-slot=\"spoiler-fade\"\n className=\"cn-spoiler-fade pointer-events-none absolute inset-x-0 bottom-0\"\n />\n )}\n {shouldShowButton && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"mt-2 transition-colors\"\n >\n {isExpanded ? hideLabel : showLabel}\n <IconChevronDown\n className={cn(\n 'size-4 transition-transform',\n isExpanded && 'rotate-180',\n )}\n />\n </Button>\n )}\n </div>\n );\n}\n\nexport { Spoiler };\n","import type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype StackProps = React.ComponentProps<'div'> & {\n gap?: ComponentSize | number;\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n};\n\nfunction Stack({\n className,\n gap = 'md',\n align = 'stretch',\n justify = 'start',\n style,\n ...props\n}: StackProps) {\n const gapClasses = {\n xs: 'gap-1.5',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4',\n xl: 'gap-6',\n };\n\n const alignClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n };\n\n const justifyClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n };\n\n return (\n <div\n data-slot=\"stack\"\n className={cn(\n 'cn-stack flex min-w-0 flex-col',\n typeof gap === 'number' ? undefined : gapClasses[gap],\n alignClasses[align],\n justifyClasses[justify],\n className,\n )}\n style={typeof gap === 'number' ? { gap: `${gap}px`, ...style } : style}\n {...props}\n />\n );\n}\n\nexport { Stack };\nexport type { StackProps };\n","'use client';\n\nimport { IconCheck } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype StepperContextType = {\n activeStep: number;\n orientation: 'horizontal' | 'vertical';\n};\n\nconst StepperContext = createContext<StepperContextType>({\n activeStep: 0,\n orientation: 'horizontal',\n});\n\ntype StepperProps = React.ComponentProps<'div'> & {\n activeStep: number;\n orientation?: 'horizontal' | 'vertical';\n totalSteps?: number;\n};\n\nfunction Stepper({\n activeStep,\n orientation = 'horizontal',\n totalSteps,\n className,\n children,\n ...props\n}: StepperProps) {\n return (\n <StepperContext.Provider value={{ activeStep, orientation }}>\n <div\n data-slot=\"stepper\"\n className={cn(\n 'cn-stepper flex',\n orientation === 'horizontal'\n ? 'flex-row items-center'\n : 'flex-col items-start',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n );\n}\n\ntype StepProps = React.ComponentProps<'div'> & {\n index: number;\n label?: string;\n description?: string;\n isLast?: boolean;\n};\n\nfunction Step({\n index,\n label,\n description,\n isLast = false,\n className,\n children,\n ...props\n}: StepProps) {\n const { activeStep, orientation } = useContext(StepperContext);\n const isActive = index === activeStep;\n const isCompleted = index < activeStep;\n let state: 'completed' | 'active' | 'inactive' = 'inactive';\n if (isCompleted) {\n state = 'completed';\n } else if (isActive) {\n state = 'active';\n }\n\n return (\n <div\n data-slot=\"step\"\n data-state={state}\n className={cn(\n 'cn-step flex',\n orientation === 'horizontal' ? 'flex-1 items-center' : 'flex-row gap-4',\n className,\n )}\n {...props}\n >\n <div\n className={cn(\n 'cn-step-header flex items-center',\n orientation === 'horizontal' && 'flex-col gap-2',\n )}\n >\n <div\n data-slot=\"step-indicator\"\n data-state={state}\n className={cn('cn-step-indicator')}\n >\n {isCompleted ? (\n <IconCheck className=\"size-5\" />\n ) : (\n <span>{index + 1}</span>\n )}\n </div>\n {(label || description) && (\n <div\n className={cn(\n 'cn-step-text text-center',\n orientation === 'vertical' && 'text-left',\n )}\n >\n {label && <div className={cn('cn-step-label')}>{label}</div>}\n {description && (\n <div className=\"cn-step-description\">{description}</div>\n )}\n </div>\n )}\n </div>\n {orientation === 'horizontal' && !isLast && (\n <div\n data-slot=\"step-connector\"\n data-state={state}\n className={cn('cn-step-connector')}\n />\n )}\n {orientation === 'vertical' && (\n <div className=\"flex flex-1 flex-col gap-2\">{children}</div>\n )}\n </div>\n );\n}\n\nexport { Stepper, Step };\n","'use client';\n\nimport { Switch as SwitchPrimitive } from '@base-ui/react/switch';\nimport type * as React from 'react';\nimport type { ComponentColor, ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: ComponentSize;\n color?: ComponentColor;\n};\n\nfunction mapSwitchSize(size: ComponentSize): 'sm' | 'default' {\n return size === 'xs' || size === 'sm' ? 'sm' : 'default';\n}\n\nfunction Switch({\n className,\n size = 'md',\n color: _color,\n ...props\n}: SwitchProps) {\n const mappedSize = mapSwitchSize(size);\n\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={mappedSize}\n className={cn(\n 'cn-switch peer group/switch relative inline-flex items-center transition-all outline-none',\n 'after:absolute after:-inset-x-3 after:-inset-y-2',\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"cn-switch-thumb pointer-events-none block ring-0 transition-transform\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\nexport type { SwitchProps };\n","'use client';\n\nimport type * as React from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { UnstyledButton } from './unstyled-button';\n\nexport type TableOfContentsItem = {\n id: string;\n label: string;\n depth?: number;\n};\n\ntype TableOfContentsProps = React.ComponentProps<'nav'> & {\n items: TableOfContentsItem[];\n /** Currently active item id (e.g. from scroll spy) */\n activeId?: string | null;\n /** Called when an item is clicked (e.g. scroll to #id) */\n onItemClick?: (id: string) => void;\n size?: ComponentSize;\n /** Left padding offset per depth level (px) */\n depthOffset?: number;\n minDepth?: number;\n};\n\nfunction TableOfContents({\n className,\n items,\n activeId,\n onItemClick,\n size = 'md',\n depthOffset = 16,\n minDepth = 1,\n ...props\n}: TableOfContentsProps) {\n return (\n <nav\n data-slot=\"table-of-contents\"\n aria-label=\"Table of contents\"\n className={cn('cn-table-of-contents flex flex-col', className)}\n {...props}\n >\n {items.map((item) => {\n const depth = item.depth ?? 1;\n const paddingLeft = Math.max(0, depth - minDepth) * depthOffset;\n const isActive = activeId === item.id;\n\n return (\n <UnstyledButton\n key={item.id}\n type=\"button\"\n className={cn('cn-table-of-contents-item')}\n data-size={size}\n data-active={isActive}\n style={{\n paddingLeft: paddingLeft ? `${paddingLeft}px` : undefined,\n }}\n onClick={() => onItemClick?.(item.id)}\n >\n {item.label}\n </UnstyledButton>\n );\n })}\n </nav>\n );\n}\n\nexport { TableOfContents };\nexport type { TableOfContentsProps };\n","'use client';\n\nimport { IconX } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\n\ntype TagsInputProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\n value?: string[];\n defaultValue?: string[];\n onChange?: (value: string[]) => void;\n placeholder?: string;\n maxTags?: number;\n allowDuplicates?: boolean;\n splitChars?: string[];\n disabled?: boolean;\n};\n\nfunction TagsInput({\n className,\n value,\n defaultValue = [],\n onChange,\n placeholder = 'Add tag...',\n maxTags,\n allowDuplicates = false,\n splitChars = [',', 'Enter'],\n disabled = false,\n ...props\n}: TagsInputProps) {\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue);\n const [inputValue, setInputValue] = useState('');\n\n const tags = value ?? internalValue;\n\n const addTag = (tag: string) => {\n const trimmed = tag.trim();\n if (!trimmed) {\n return;\n }\n if (maxTags && tags.length >= maxTags) {\n return;\n }\n if (!allowDuplicates && tags.includes(trimmed)) {\n return;\n }\n\n const newTags = [...tags, trimmed];\n setInternalValue(newTags);\n onChange?.(newTags);\n setInputValue('');\n };\n\n const removeTag = (index: number) => {\n const newTags = tags.filter((_, i) => i !== index);\n setInternalValue(newTags);\n onChange?.(newTags);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (splitChars.includes(e.key)) {\n e.preventDefault();\n addTag(inputValue);\n } else if (e.key === 'Backspace' && !inputValue && tags.length > 0) {\n removeTag(tags.length - 1);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n\n // Check for split chars in pasted content\n for (const char of splitChars) {\n if (char !== 'Enter' && newValue.includes(char)) {\n const parts = newValue.split(char);\n for (const part of parts) {\n addTag(part);\n }\n return;\n }\n }\n\n setInputValue(newValue);\n };\n\n return (\n <div\n data-slot=\"tags-input\"\n className={cn('cn-tags-input cn-combobox-chips', className)}\n {...props}\n >\n {tags.map((tag, index) => (\n <span\n key={allowDuplicates ? `${tag}-${index}` : tag}\n data-slot=\"tags-input-tag\"\n className=\"cn-combobox-chip\"\n >\n {tag}\n <button\n type=\"button\"\n data-slot=\"tags-input-tag-remove\"\n onClick={() => removeTag(index)}\n disabled={disabled}\n className=\"cn-combobox-chip-remove\"\n >\n <span className=\"sr-only\">Remove</span>\n <IconX className=\"size-3\" />\n </button>\n </span>\n ))}\n <input\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n placeholder={tags.length === 0 ? placeholder : ''}\n disabled={disabled || (maxTags !== undefined && tags.length >= maxTags)}\n className=\"cn-tags-input-input\"\n />\n </div>\n );\n}\n\nexport { TagsInput };\n","'use client';\n\nimport { forwardRef } from 'react';\nimport type { ComponentSize } from '../../lib/theme-schema';\nimport { cn } from '../../lib/utils';\nimport { InputGroup, InputGroupAddon, InputGroupInput } from './input-group';\nimport { InputWrapper, type InputWrapperProps } from './input-wrapper';\n\nexport type TextInputProps = Omit<React.ComponentProps<'input'>, 'size'> &\n Omit<InputWrapperProps, 'children'> & {\n /** Input size */\n size?: ComponentSize;\n /** Left section (icon, text, etc.) */\n leftSection?: React.ReactNode;\n /** Right section (icon, button, etc.) */\n rightSection?: React.ReactNode;\n /** Pointer events for right section */\n rightSectionPointerEvents?: 'none' | 'all';\n };\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n (\n {\n label,\n description,\n error,\n required,\n withAsterisk,\n inputWrapperOrder,\n labelProps,\n descriptionProps,\n errorProps,\n inputContainer,\n disabled,\n className,\n size,\n leftSection,\n rightSection,\n rightSectionPointerEvents = 'none',\n ...inputProps\n },\n ref,\n ) => {\n const groupSizeClasses: Partial<Record<ComponentSize, string>> = {\n xs: 'h-7',\n sm: 'h-8',\n md: 'h-9',\n lg: 'h-10',\n xl: 'h-12',\n };\n\n const hasWrapper =\n label || description || error || required || withAsterisk;\n\n const inputElement = (\n <InputGroup\n disabled={disabled}\n className={cn(size && groupSizeClasses[size])}\n >\n {leftSection && (\n <InputGroupAddon align=\"inline-start\" className=\"pointer-events-none\">\n {leftSection}\n </InputGroupAddon>\n )}\n\n <InputGroupInput\n ref={ref}\n disabled={disabled}\n aria-invalid={error ? true : undefined}\n required={required}\n className={cn(className)}\n {...inputProps}\n />\n\n {rightSection && (\n <InputGroupAddon\n align=\"inline-end\"\n className={cn(\n rightSectionPointerEvents === 'none' && 'pointer-events-none',\n )}\n >\n {rightSection}\n </InputGroupAddon>\n )}\n </InputGroup>\n );\n\n if (!hasWrapper) {\n return inputElement;\n }\n\n return (\n <InputWrapper\n label={label}\n description={description}\n error={error}\n required={required}\n withAsterisk={withAsterisk}\n inputWrapperOrder={inputWrapperOrder}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorProps={errorProps}\n inputContainer={inputContainer}\n disabled={disabled}\n >\n {inputElement}\n </InputWrapper>\n );\n },\n);\n\nTextInput.displayName = 'TextInput';\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst themeIconVariants = cva(\n 'cn-theme-icon inline-flex items-center justify-center shrink-0 transition-colors',\n {\n variants: {\n size: {\n xs: 'size-6 [&>svg]:size-3',\n sm: 'size-8 [&>svg]:size-4',\n md: 'size-10 [&>svg]:size-5',\n lg: 'size-12 [&>svg]:size-6',\n xl: 'size-14 [&>svg]:size-7',\n '2xl': 'size-16 [&>svg]:size-8',\n },\n variant: {\n filled: 'bg-primary text-primary-foreground ',\n light: 'cn-theme-icon-variant-light',\n outline: 'cn-theme-icon-variant-outline',\n gradient:\n 'bg-gradient-to-br from-primary to-accent text-primary-foreground ',\n default: 'cn-theme-icon-variant-default',\n subtle:\n 'bg-transparent text-muted-foreground hover:bg-muted/60 hover:text-foreground',\n },\n color: {\n primary: '',\n secondary: '',\n accent: '',\n destructive: '',\n success: '',\n warning: '',\n },\n radius: {\n none: 'cn-theme-icon-radius-none',\n sm: 'cn-theme-icon-radius-sm',\n md: 'cn-theme-icon-radius-md',\n lg: 'cn-theme-icon-radius-lg',\n full: 'cn-theme-icon-radius-full',\n },\n },\n compoundVariants: [\n {\n variant: 'filled',\n color: 'secondary',\n className: 'bg-secondary text-secondary-foreground',\n },\n {\n variant: 'filled',\n color: 'accent',\n className: 'bg-accent text-accent-foreground',\n },\n {\n variant: 'filled',\n color: 'destructive',\n className: 'bg-destructive text-destructive-foreground',\n },\n {\n variant: 'light',\n color: 'secondary',\n className: 'bg-secondary/10 text-secondary-foreground',\n },\n {\n variant: 'light',\n color: 'accent',\n className: 'bg-accent/10 text-accent-foreground',\n },\n {\n variant: 'light',\n color: 'destructive',\n className: 'bg-destructive/10 text-destructive',\n },\n {\n variant: 'outline',\n color: 'secondary',\n className: 'border-secondary text-secondary-foreground',\n },\n {\n variant: 'outline',\n color: 'accent',\n className: 'border-accent text-accent-foreground',\n },\n {\n variant: 'outline',\n color: 'destructive',\n className: 'border-destructive text-destructive',\n },\n // Success color variants\n {\n variant: 'filled',\n color: 'success',\n className: 'bg-green-600 text-white dark:bg-green-500',\n },\n {\n variant: 'light',\n color: 'success',\n className:\n 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400',\n },\n {\n variant: 'outline',\n color: 'success',\n className:\n 'border-green-600 text-green-600 dark:border-green-500 dark:text-green-400',\n },\n // Warning color variants\n {\n variant: 'filled',\n color: 'warning',\n className: 'bg-yellow-600 text-white dark:bg-yellow-500',\n },\n {\n variant: 'light',\n color: 'warning',\n className:\n 'bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400',\n },\n {\n variant: 'outline',\n color: 'warning',\n className:\n 'border-yellow-600 text-yellow-600 dark:border-yellow-500 dark:text-yellow-400',\n },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'filled',\n color: 'primary',\n radius: 'md',\n },\n },\n);\n\ntype ThemeIconProps = React.ComponentProps<'div'> &\n VariantProps<typeof themeIconVariants>;\n\nfunction ThemeIcon({\n className,\n size,\n variant,\n color,\n radius,\n children,\n ...props\n}: ThemeIconProps) {\n return (\n <div\n data-slot=\"theme-icon\"\n className={cn(\n themeIconVariants({ size, variant, color, radius }),\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport { ThemeIcon, themeIconVariants };\nexport type { ThemeIconProps };\n","import type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nfunction Timeline({ className, ...props }: React.ComponentProps<'ol'>) {\n return (\n <ol\n data-slot=\"timeline\"\n className={cn('cn-timeline relative', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineItem({ className, ...props }: React.ComponentProps<'li'>) {\n return (\n <li\n data-slot=\"timeline-item\"\n className={cn('cn-timeline-item', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineDot({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & {\n variant?: 'default' | 'primary' | 'secondary';\n}) {\n return (\n <div\n data-slot=\"timeline-dot\"\n data-variant={variant}\n className={cn('cn-timeline-dot', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"timeline-content\"\n className={cn('cn-timeline-content', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineTitle({ className, ...props }: React.ComponentProps<'h3'>) {\n return (\n <h3\n data-slot=\"timeline-title\"\n className={cn('cn-timeline-title', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineDescription({\n className,\n ...props\n}: React.ComponentProps<'p'>) {\n return (\n <p\n data-slot=\"timeline-description\"\n className={cn('cn-timeline-description', className)}\n {...props}\n />\n );\n}\n\nfunction TimelineTime({ className, ...props }: React.ComponentProps<'time'>) {\n return (\n <time\n data-slot=\"timeline-time\"\n className={cn('cn-timeline-time', className)}\n {...props}\n />\n );\n}\n\nexport {\n Timeline,\n TimelineItem,\n TimelineDot,\n TimelineContent,\n TimelineTitle,\n TimelineDescription,\n TimelineTime,\n};\n","'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst titleVariants = cva('font-semibold tracking-tight text-pretty', {\n variants: {\n order: {\n 1: 'text-4xl md:text-5xl leading-tight',\n 2: 'text-3xl md:text-4xl leading-tight',\n 3: 'text-2xl md:text-3xl leading-snug',\n 4: 'text-xl md:text-2xl leading-snug',\n 5: 'text-lg md:text-xl leading-normal',\n 6: 'text-base md:text-lg leading-normal',\n },\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n accent: 'text-accent-foreground',\n gradient:\n 'bg-gradient-to-r from-primary via-primary/70 to-accent bg-clip-text text-transparent',\n dimmed: 'text-foreground/80',\n },\n weight: {\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n },\n align: {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n },\n },\n defaultVariants: {\n order: 3,\n variant: 'default',\n weight: 'semibold',\n align: 'left',\n },\n});\n\ntype TitleProps = Omit<React.ComponentProps<'h1'>, 'ref'> &\n VariantProps<typeof titleVariants>;\n\nfunction Title({\n className,\n order = 3,\n variant,\n weight,\n align,\n children,\n ...props\n}: TitleProps) {\n const Component = `h${order}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n return (\n <Component\n data-slot=\"title\"\n className={cn(\n titleVariants({ order, variant, weight, align }),\n className,\n )}\n {...props}\n >\n {children}\n </Component>\n );\n}\n\nexport { Title, titleVariants };\nexport type { TitleProps };\n","'use client';\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type * as React from 'react';\nimport { cn } from '../../lib/utils';\n\nconst toggleVariants = cva(\n 'cn-toggle inline-flex items-center justify-center gap-2 whitespace-nowrap border border-transparent outline-none transition-colors [&_svg]:pointer-events-none [&_svg:not([class*=\"size-\"])]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'cn-toggle-variant-default',\n outline: 'cn-toggle-variant-outline',\n },\n size: {\n default: 'cn-toggle-size-default',\n sm: 'cn-toggle-size-sm',\n lg: 'cn-toggle-size-lg',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction Toggle({\n className,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive> &\n VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n","'use client';\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn } from '../../lib/utils';\nimport { toggleVariants } from './toggle';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }\n>({\n size: 'default',\n variant: 'default',\n spacing: 0,\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n spacing = 0,\n children,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive> &\n VariantProps<typeof toggleVariants> & {\n spacing?: number;\n }) {\n return (\n <ToggleGroupPrimitive\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-spacing={spacing}\n style={{ '--gap': spacing } as React.CSSProperties}\n className={cn(\n 'cn-toggle-group group/toggle-group flex w-fit items-center',\n className,\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size, spacing }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof TogglePrimitive> &\n VariantProps<typeof toggleVariants>) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <TogglePrimitive\n data-slot=\"toggle-group-item\"\n data-variant={context.variant || variant}\n data-size={context.size || size}\n data-spacing={context.spacing}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'cn-toggle-group-item w-auto min-w-0 shrink-0 focus:z-10 focus-visible:z-10',\n className,\n )}\n {...props}\n >\n {children}\n </TogglePrimitive>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","'use client';\n\nimport type * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nexport type TransitionName =\n | 'fade'\n | 'fade-up'\n | 'fade-down'\n | 'fade-left'\n | 'fade-right'\n | 'slide-down'\n | 'slide-up'\n | 'slide-left'\n | 'slide-right'\n | 'scale';\n\nconst TRANSITIONS: Record<\n TransitionName,\n { in: React.CSSProperties; out: React.CSSProperties; property: string }\n> = {\n fade: {\n in: { opacity: 1 },\n out: { opacity: 0 },\n property: 'opacity',\n },\n 'fade-up': {\n in: { opacity: 1, transform: 'translateY(0)' },\n out: { opacity: 0, transform: 'translateY(12px)' },\n property: 'opacity, transform',\n },\n 'fade-down': {\n in: { opacity: 1, transform: 'translateY(0)' },\n out: { opacity: 0, transform: 'translateY(-12px)' },\n property: 'opacity, transform',\n },\n 'fade-left': {\n in: { opacity: 1, transform: 'translateX(0)' },\n out: { opacity: 0, transform: 'translateX(12px)' },\n property: 'opacity, transform',\n },\n 'fade-right': {\n in: { opacity: 1, transform: 'translateX(0)' },\n out: { opacity: 0, transform: 'translateX(-12px)' },\n property: 'opacity, transform',\n },\n 'slide-down': {\n in: { transform: 'translateY(0)' },\n out: { transform: 'translateY(-100%)' },\n property: 'transform',\n },\n 'slide-up': {\n in: { transform: 'translateY(0)' },\n out: { transform: 'translateY(100%)' },\n property: 'transform',\n },\n 'slide-left': {\n in: { transform: 'translateX(0)' },\n out: { transform: 'translateX(100%)' },\n property: 'transform',\n },\n 'slide-right': {\n in: { transform: 'translateX(0)' },\n out: { transform: 'translateX(-100%)' },\n property: 'transform',\n },\n scale: {\n in: { opacity: 1, transform: 'scale(1)' },\n out: { opacity: 0, transform: 'scale(0.95)' },\n property: 'opacity, transform',\n },\n};\n\ntype TransitionStatus =\n | 'entering'\n | 'entered'\n | 'exiting'\n | 'exited'\n | 'pre-entering'\n | 'pre-exiting';\n\ntype TransitionProps = {\n mounted: boolean;\n children: (styles: React.CSSProperties) => React.ReactElement;\n transition?: TransitionName;\n duration?: number;\n exitDuration?: number;\n timingFunction?: string;\n keepMounted?: boolean;\n onExited?: () => void;\n onEntered?: () => void;\n onExit?: () => void;\n onEnter?: () => void;\n enterDelay?: number;\n exitDelay?: number;\n};\n\nfunction useTransitionState(\n mounted: boolean,\n duration: number,\n exitDuration: number,\n timingFunction: string,\n onEnter?: () => void,\n onEntered?: () => void,\n onExit?: () => void,\n onExited?: () => void,\n enterDelay?: number,\n exitDelay?: number,\n) {\n const [status, setStatus] = useState<TransitionStatus>(\n mounted ? 'entered' : 'exited',\n );\n const [displayDuration, setDisplayDuration] = useState(duration);\n\n useEffect(() => {\n if (mounted) {\n setDisplayDuration(duration);\n const t1 = setTimeout(() => {\n setStatus('entering');\n onEnter?.();\n }, enterDelay ?? 0);\n const t2 = setTimeout(\n () => {\n setStatus('entered');\n onEntered?.();\n },\n (enterDelay ?? 0) + duration,\n );\n return () => {\n clearTimeout(t1);\n clearTimeout(t2);\n };\n }\n setDisplayDuration(exitDuration);\n const t1 = setTimeout(() => {\n setStatus('exiting');\n onExit?.();\n }, exitDelay ?? 0);\n const t2 = setTimeout(\n () => {\n setStatus('exited');\n onExited?.();\n },\n (exitDelay ?? 0) + exitDuration,\n );\n return () => {\n clearTimeout(t1);\n clearTimeout(t2);\n };\n }, [\n mounted,\n duration,\n exitDuration,\n enterDelay,\n exitDelay,\n onEnter,\n onEntered,\n onExit,\n onExited,\n ]);\n\n return { status, duration: displayDuration, timingFunction };\n}\n\nfunction Transition({\n mounted,\n children,\n transition = 'fade',\n duration = 250,\n exitDuration = duration,\n timingFunction = 'cubic-bezier(0.2, 0, 0, 1)',\n keepMounted = false,\n onExited,\n onEntered,\n onExit,\n onEnter,\n enterDelay,\n exitDelay,\n}: TransitionProps) {\n const {\n status,\n duration: d,\n timingFunction: tf,\n } = useTransitionState(\n mounted,\n duration,\n exitDuration,\n timingFunction,\n onEnter,\n onEntered,\n onExit,\n onExited,\n enterDelay,\n exitDelay,\n );\n\n const t = TRANSITIONS[transition];\n if (!t) {\n if (mounted) {\n return <>{children({})}</>;\n }\n if (keepMounted) {\n return children({ display: 'none' });\n }\n return null;\n }\n\n if (status === 'exited') {\n if (keepMounted) {\n return children({\n ...t.out,\n display: 'none',\n transitionProperty: t.property,\n transitionDuration: `${d}ms`,\n transitionTimingFunction: tf,\n });\n }\n return null;\n }\n\n const isOut =\n status === 'exiting' ||\n status === 'pre-exiting' ||\n status === 'pre-entering';\n const styles: React.CSSProperties = {\n ...(isOut ? t.out : t.in),\n transitionProperty: t.property,\n transitionDuration: `${d}ms`,\n transitionTimingFunction: tf,\n };\n\n return <>{children(styles)}</>;\n}\n\nexport { Transition };\nexport type { TransitionProps };\n","'use client';\n\nimport { IconChevronRight } from '@tabler/icons-react';\nimport type * as React from 'react';\nimport { useState } from 'react';\nimport { cn } from '../../lib/utils';\nimport { UnstyledButton } from './unstyled-button';\n\nexport type TreeNodeData = {\n label: React.ReactNode;\n value: string;\n children?: TreeNodeData[];\n nodeProps?: Record<string, unknown>;\n};\n\ntype TreeProps = React.ComponentProps<'div'> & {\n data: TreeNodeData[];\n /** Selected value (controlled) */\n selectedValue?: string | null;\n /** Called when selection changes */\n onSelectedValueChange?: (value: string | null) => void;\n /** Expanded values (controlled). If undefined, internal state is used. */\n expandedValues?: Set<string>;\n onExpandedValuesChange?: (values: Set<string>) => void;\n /** Padding left per level (px) */\n levelOffset?: number;\n /** Expand node on click (when it has children) */\n expandOnClick?: boolean;\n /** Select node on click */\n selectOnClick?: boolean;\n renderNode?: (payload: {\n node: TreeNodeData;\n level: number;\n expanded: boolean;\n hasChildren: boolean;\n selected: boolean;\n }) => React.ReactNode;\n};\n\nfunction Tree({\n className,\n data,\n selectedValue,\n onSelectedValueChange,\n expandedValues: expandedProp,\n onExpandedValuesChange,\n levelOffset = 24,\n expandOnClick = true,\n selectOnClick = true,\n renderNode,\n ...props\n}: TreeProps) {\n const [internalExpanded, setInternalExpanded] = useState<Set<string>>(\n new Set(),\n );\n const expanded = expandedProp !== undefined ? expandedProp : internalExpanded;\n const setExpanded =\n onExpandedValuesChange ??\n ((v: Set<string>) => setInternalExpanded(new Set(v)));\n\n const toggleExpand = (value: string) => {\n const next = new Set(expanded);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n setExpanded(next);\n };\n\n const handleNodeClick = (node: TreeNodeData, hasChildren: boolean) => {\n if (hasChildren && expandOnClick) {\n toggleExpand(node.value);\n }\n if (selectOnClick) {\n onSelectedValueChange?.(node.value);\n }\n };\n\n return (\n <div\n data-slot=\"tree\"\n role=\"tree\"\n className={cn('cn-tree', className)}\n {...props}\n >\n {data.map((node) => (\n <TreeNode\n key={node.value}\n node={node}\n level={0}\n expandedValues={expanded}\n toggleExpand={toggleExpand}\n selectedValue={selectedValue ?? null}\n onSelectedValueChange={onSelectedValueChange}\n handleNodeClick={handleNodeClick}\n levelOffset={levelOffset}\n renderNode={renderNode}\n />\n ))}\n </div>\n );\n}\n\ntype TreeNodeProps = {\n node: TreeNodeData;\n level: number;\n expandedValues: Set<string>;\n toggleExpand: (value: string) => void;\n selectedValue: string | null;\n onSelectedValueChange?: (value: string | null) => void;\n handleNodeClick: (node: TreeNodeData, hasChildren: boolean) => void;\n levelOffset: number;\n renderNode?: TreeProps['renderNode'];\n};\n\nfunction TreeNode({\n node,\n level,\n expandedValues,\n toggleExpand,\n selectedValue,\n handleNodeClick,\n levelOffset,\n renderNode,\n}: TreeNodeProps) {\n const hasChildren = Boolean(node.children?.length);\n const expanded = expandedValues.has(node.value);\n const selected = selectedValue === node.value;\n\n const label =\n renderNode?.({\n node,\n level,\n expanded,\n hasChildren,\n selected,\n }) ?? node.label;\n\n return (\n <div\n role=\"treeitem\"\n tabIndex={0}\n aria-expanded={hasChildren ? expanded : undefined}\n >\n <UnstyledButton\n type=\"button\"\n data-selected={selected}\n className={cn('cn-tree-node-button')}\n style={{ paddingLeft: `${level * levelOffset + 4}px` }}\n onClick={() => handleNodeClick(node, hasChildren)}\n >\n {hasChildren ? (\n <span\n className={cn(\n 'cn-tree-node-chevron text-muted-foreground flex shrink-0 transition-transform',\n expanded && 'rotate-90',\n )}\n >\n <IconChevronRight className=\"size-4\" />\n </span>\n ) : (\n <span aria-hidden className=\"cn-tree-node-spacer w-4 shrink-0\" />\n )}\n <span className=\"cn-tree-node-label min-w-0 flex-1 truncate\">\n {label}\n </span>\n </UnstyledButton>\n {hasChildren && expanded && node.children && (\n <fieldset className=\"cn-tree-node-children list-none border-0 p-0 m-0 min-w-0\">\n {node.children.map((child) => (\n <TreeNode\n key={child.value}\n node={child}\n level={level + 1}\n expandedValues={expandedValues}\n toggleExpand={toggleExpand}\n selectedValue={selectedValue ?? null}\n handleNodeClick={handleNodeClick}\n levelOffset={levelOffset}\n renderNode={renderNode}\n />\n ))}\n </fieldset>\n )}\n </div>\n );\n}\n\nexport { Tree };\nexport type { TreeProps };\n"],"mappings":"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","names":["jsx","jsxs","useBreadcrumbs","Link","useMesob","IconSearch","jsx","jsx","jsxs","jsx","jsxs","cva","jsx","Fragment","cva","jsx","jsx","jsx","jsxs","cva","jsx","jsxs","Fragment","jsx","sizeClasses","jsx","cva","jsx","jsxs","Fragment","jsx","jsxs","open","IconSearch","jsx","IconChevronRight","jsx","jsxs","IconChevronRight","Fragment","jsx","jsxs","useMesob","useMesob","useEffect","useRef","useState","useRender","cva","React","React","IconX","jsx","jsxs","IconX","React","jsx","jsx","jsxs","jsx","jsxs","useRender","cva","Fragment","jsx","jsxs","useRef","useState","useEffect","useMesob","Link","jsx","radiusClasses","React","Fragment","jsx","jsxs","getLoaderSize","jsx","jsx","jsxs","jsx","jsx","jsx","jsxs","useMesob","cva","React","cva","jsx","jsxs","useMesob","Link","forwardRef","jsx","jsxs","Fragment","jsx","jsxs","forwardRef","IconChevronDown","useState","jsx","jsxs","Fragment","jsx","jsxs","useState","IconChevronDown","useMesob","IconChevronDown","IconMenu2","isValidElement","useMemo","useRef","useState","jsx","jsxs","IconCheck","IconChevronDown","jsx","jsxs","IconChevronDown","IconCheck","jsx","jsxs","useMesob","useMemo","useState","useRef","isValidElement","IconMenu2","IconChevronDown","useState","Fragment","jsx","jsxs","sizeClasses","useState","IconChevronRight","useState","Fragment","jsx","jsxs","useState","IconChevronRight","IconPlus","cva","jsx","cva","jsx","jsxs","IconPlus","jsx","jsxs","IconFilter","jsx","jsxs","IconFilter","IconTrash","jsx","jsxs","IconTrash","IconChevronDown","IconChevronUp","useState","jsx","jsxs","useState","IconChevronUp","IconChevronDown","React","jsx","jsx","jsxs","_","IconSearch","IconX","parseAsInteger","parseAsString","useQueryState","useRef","jsx","jsxs","useQueryState","parseAsString","parseAsInteger","useRef","IconSearch","IconX","IconSearch","IconX","useRef","useDebouncedCallback","jsx","jsxs","useRef","useDebouncedCallback","IconSearch","IconX","useState","jsx","jsx","jsxs","useState","jsx","jsxs","cva","jsx","cva","jsx","jsx","jsxs","useCallback","useEffect","useState","IconCheck","jsx","sizeClasses","IconCheck","IconX","cva","jsx","jsxs","cva","IconX","IconChevronRight","jsx","jsxs","IconChevronRight","jsx","sizeClasses","jsx","jsxs","Fragment","jsx","jsxs","useState","useCallback","useEffect","IconSortAscendingLetters","IconSortDescendingLetters","parseAsInteger","parseAsString","useQueryState","jsx","jsxs","useQueryState","parseAsString","parseAsInteger","IconSortAscendingLetters","IconSortDescendingLetters","IconGridDots","IconList","IconTable","parseAsString","useQueryState","jsx","viewIcons","IconTable","IconGridDots","IconList","useQueryState","parseAsString","parseAsInteger","parseAsString","useMemo","useCallback","useMemo","useState","jsx","jsx","jsx","jsxs","jsx","jsx","jsxs","IconLoader2","IconX","jsx","jsx","jsxs","IconX","useState","createContext","useContext","useMemo","jsx","createContext","useMesob","useContext","IconList","Table","TableCell","TableHeader","TableRow","useMemo","useRef","createContext","useContext","jsx","createContext","useContext","jsx","useState","jsx","jsxs","useState","useState","jsx","jsxs","useState","IconTable","IconTrash","Fragment","jsx","jsxs","IconTable","IconTrash","useState","jsx","jsxs","useState","mergeAttributes","Fragment","jsx","jsxs","useRef","useMemo","Table","TableRow","TableCell","TableHeader","IconList","jsx","jsx","jsxs","useState","IconX","IconTextRecognition","useState","jsx","jsxs","useState","IconTextRecognition","IconTextRecognition","useState","jsx","jsxs","useState","IconTextRecognition","useLocale","jsx","useLocale","Fragment","jsx","jsx","jsxs","jsx","jsxs","parse","useLocale","jsx","useLocale","parse","useTheme","jsx","jsxs","useTheme","IconChevronDown","IconChevronUp","Fragment","jsx","jsxs","IconChevronDown","IconChevronUp","useRender","cva","Fragment","jsx","jsxs","cva","useRender","jsx","jsx","useMesob","cva","jsx","isExternal","cva","useMesob","Link","useCallback","useRef","useState","jsx","jsxs","useState","useCallback","useRef","useMesob","IconChevronDown","useLayoutEffect","useMemo","useRef","useState","jsx","jsxs","useMesob","useState","useRef","useLayoutEffect","useMemo","IconChevronDown","jsx","jsx","useRender","cva","Fragment","jsx","jsxs","cva","useRender","cva","jsx","cva","IconMenu2","IconX","cva","jsx","cva","IconX","IconMenu2","useRender","jsx","useRender","IconChevronDown","IconChevronLeft","IconChevronRight","React","jsx","className","props","IconChevronLeft","IconChevronRight","IconChevronDown","IconChevronLeft","IconChevronRight","React","jsx","jsxs","IconChevronLeft","IconChevronRight","jsx","React","Fragment","jsx","jsxs","config","IconX","jsx","IconX","cva","jsx","cva","React","useCallback","useEffect","useRef","useState","useCallback","useEffect","useRef","useState","jsx","jsxs","Fragment","jsx","jsxs","useRef","useCallback","pct","useState","useEffect","jsx","jsx","jsxs","sizeClasses","useCallback","useState","useRef","useEffect","inputContainer","IconCheck","IconChevronDown","useMemo","useState","jsx","jsxs","useState","useMemo","IconChevronDown","IconCheck","cva","jsx","cva","IconCheck","IconChevronRight","jsx","jsxs","IconChevronRight","IconCheck","IconCheck","useState","jsx","useState","IconCheck","React","jsx","jsxs","IconChevronRight","jsx","jsxs","IconChevronRight","jsx","jsx","jsxs","jsx","jsxs","useRef","Fragment","jsx","jsxs","useRef","IconX","useId","useRef","useState","jsx","jsxs","useState","useRef","useId","IconX","jsx","useEffect","useState","jsx","useState","useEffect","hasTargetAndParent","cloneElement","useEffect","useRef","jsx","useRender","React","Controller","jsx","Controller","useRender","cva","jsx","cva","jsx","gapClasses","jsx","Highlight","jsx","useState","jsx","Image","useState","cva","jsx","jsxs","cva","React","jsx","jsxs","useRender","cva","jsx","cva","useRender","useState","jsx","jsxs","useState","jsx","cva","jsx","cva","jsx","IconCheck","IconChevronRight","jsx","jsxs","IconCheck","IconChevronRight","forwardRef","useCallback","useState","jsx","jsxs","sizeClasses","forwardRef","useState","useCallback","AutocompletePrimitive","IconCheck","IconChevronDown","IconX","useState","jsx","jsxs","useState","AutocompletePrimitive","IconX","IconChevronDown","IconCheck","IconChevronDown","forwardRef","jsx","jsxs","forwardRef","IconChevronDown","useMesob","cva","jsx","jsxs","isExternal","cva","useMesob","Link","IconChevronDown","cva","jsx","jsxs","cva","IconChevronDown","jsx","formatNumber","IconChevronDown","IconChevronUp","forwardRef","useCallback","useRender","jsx","useRender","jsx","jsxs","sizeClasses","forwardRef","useCallback","IconChevronUp","IconChevronDown","IconChevronLeft","IconChevronRight","IconDots","jsx","jsxs","IconChevronLeft","IconChevronRight","IconDots","jsx","radiusClasses","forwardRef","useState","jsx","jsxs","forwardRef","useState","cva","jsx","jsxs","cva","jsx","radiusClasses","useState","jsx","useState","sizeClasses","jsx","jsx","jsxs","jsx","jsxs","cva","jsx","cva","React","jsx","jsxs","jsx","IconChevronDown","useEffect","useRef","useState","jsx","jsxs","useState","useRef","useEffect","IconChevronDown","jsx","gapClasses","IconCheck","createContext","useContext","jsx","jsxs","createContext","useContext","IconCheck","jsx","jsx","IconX","useState","jsx","jsxs","useState","IconX","forwardRef","jsx","jsxs","forwardRef","cva","jsx","cva","jsx","cva","jsx","cva","cva","jsx","cva","TogglePrimitive","React","jsx","TogglePrimitive","useEffect","useState","Fragment","jsx","t1","t2","IconChevronRight","useState","jsx","jsxs","useState","IconChevronRight"]}