@aortl/admin-react 0.7.0 → 0.7.1

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,"file":"index.mjs","names":[],"sources":["../src/cn.ts","../src/Accordion.tsx","../src/AdminRoot.tsx","../src/icon.ts","../src/Alert.tsx","../src/AppShell.tsx","../src/Badge.tsx","../src/BrandTile.tsx","../src/Button.tsx","../src/ButtonGroup.tsx","../src/Breadcrumbs.tsx","../src/Input.tsx","../src/FileInput.tsx","../src/InputGroup.tsx","../src/Pagination.tsx","../src/Textarea.tsx","../src/Checkbox.tsx","../src/Radio.tsx","../src/Progress.tsx","../src/Spinner.tsx","../src/Switch.tsx","../src/Select.tsx","../src/Card.tsx","../src/Dialog.tsx","../src/Field.tsx","../src/Footer.tsx","../src/Menu.tsx","../src/Navbar.tsx","../src/Tabs.tsx","../src/Tooltip.tsx","../src/PropertyList.tsx","../src/Table.tsx","../src/Sidebar.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\n\n/**\n * Every admin class name is prefixed so the bundle can coexist with a host\n * page's CSS without colliding on common names like `.btn` or `.card`. The\n * matching CSS lives in `@aortl/admin-css/admin.scoped.css` (built by\n * `wrap-scoped.mjs`), which carries the same prefix on every selector.\n */\nconst PREFIX = \"_ao-\";\n\nfunction prefixTokens(value: string): string {\n if (!value) return \"\";\n return value\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => `${PREFIX}${token}`)\n .join(\" \");\n}\n\nfunction join(...parts: Array<string | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n\n/**\n * className merger that preserves Base UI's render-prop className form.\n *\n * `base` carries admin's own classes (e.g. `[\"btn\", \"btn-primary\"]`) and is\n * always prefixed with `_ao-`. `className` is the consumer-supplied prop and\n * passes through verbatim — it lives in the caller's namespace.\n *\n * Base UI components accept `className: string | ((state) => string | undefined)`.\n * The function form has to be deferred until Base UI invokes it with the\n * component state.\n */\nexport function cn(base: ClassValue, className: string | undefined): string;\nexport function cn<TState>(\n base: ClassValue,\n className: (state: TState) => string | undefined,\n): (state: TState) => string;\nexport function cn<TState>(\n base: ClassValue,\n className: string | ((state: TState) => string | undefined) | undefined,\n): string | ((state: TState) => string);\nexport function cn<TState>(\n base: ClassValue,\n className: string | ((state: TState) => string | undefined) | undefined,\n): string | ((state: TState) => string) {\n const baseClasses = prefixTokens(clsx(base));\n if (typeof className === \"function\") {\n return (state) => join(baseClasses, className(state) ?? undefined);\n }\n return join(baseClasses, className);\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type AccordionProps = ComponentProps<\"div\">;\n\nfunction AccordionRoot({ className, ...rest }: AccordionProps) {\n return <div className={cn(\"accordion\", className)} {...rest} />;\n}\n\nexport type AccordionItemProps = ComponentProps<\"details\">;\n\nfunction AccordionItem({ className, ...rest }: AccordionItemProps) {\n return <details className={cn(\"accordion-item\", className)} {...rest} />;\n}\n\nexport type AccordionSummaryProps = ComponentProps<\"summary\">;\n\nfunction AccordionSummary({ className, ...rest }: AccordionSummaryProps) {\n return <summary className={cn(\"accordion-summary\", className)} {...rest} />;\n}\n\nexport type AccordionContentProps = ComponentProps<\"div\">;\n\nfunction AccordionContent({ className, ...rest }: AccordionContentProps) {\n return <div className={cn(\"accordion-content\", className)} {...rest} />;\n}\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Item: AccordionItem,\n Summary: AccordionSummary,\n Content: AccordionContent,\n});\n","import type { CSSProperties, ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport interface AdminRootProps extends ComponentProps<\"div\"> {\n /**\n * Force a color scheme for this subtree. Sets `data-theme`, which flips the\n * semantic tokens and `color-scheme`. Omit to follow the OS preference.\n */\n theme?: \"light\" | \"dark\";\n /**\n * CSS color (e.g. `var(--color-purple-600)`) applied as `--color-system-accent`\n * to brand-shift the navbar + footer stripes and `<BrandTile>`. See\n * [Customize › System accent](https://digital-udvikling.github.io/admin-design-system/basics/customize/#system-accent).\n */\n systemAccent?: string;\n}\n\nexport function AdminRoot({ className, theme, systemAccent, style, ...rest }: AdminRootProps) {\n const rootStyle =\n systemAccent !== undefined\n ? ({ ...style, \"--color-system-accent\": systemAccent } as CSSProperties)\n : style;\n\n return (\n <div\n className={cn(\"admin-root\", className)}\n style={rootStyle}\n {...rest}\n {...(theme !== undefined && { \"data-theme\": theme })}\n />\n );\n}\n","import { createElement, isValidElement } from \"react\";\nimport type { ComponentType, ReactElement, ReactNode } from \"react\";\n\n/**\n * Props every icon component is expected to accept. Matches `@tabler/icons-react`\n * (size + standard SVG attributes), but loose enough to accept other libraries.\n */\nexport interface IconRenderProps {\n size?: number | string;\n \"aria-hidden\"?: boolean | \"true\" | \"false\";\n}\n\nexport type IconComponent = ComponentType<IconRenderProps>;\n\n/**\n * The value a component prop named `icon` will accept. Either:\n * - a component reference (`icon={IconHome}`) — rendered with `size={16} aria-hidden`,\n * - or an already-instantiated React element (`icon={<IconHome size={20} />}`) — rendered as-is.\n */\nexport type IconProp = IconComponent | ReactElement | null | undefined;\n\n/**\n * Render an `IconProp` to a React node, defaulting to `size={16} aria-hidden`\n * when given a component reference.\n *\n * Anything that is not `null`/`undefined` and not already a React element is\n * treated as a component type — `createElement` accepts function components,\n * `forwardRef`s (e.g. `@tabler/icons-react`), `memo`, etc.\n */\nexport function renderIcon(icon: IconProp, size: number = 16): ReactNode {\n if (icon == null) return null;\n if (isValidElement(icon)) return icon;\n return createElement(icon as IconComponent, { size, \"aria-hidden\": true });\n}\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface AlertProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n variant?: AlertVariant;\n /** Leading icon. Rendered as the first child so the CSS grid kicks in. */\n icon?: IconProp;\n /** Renders as `<Alert.Title>`. */\n title?: ReactNode;\n /** Renders as `<Alert.Description>`. */\n description?: ReactNode;\n}\n\nfunction AlertRoot({\n variant = \"info\",\n icon,\n title,\n description,\n className,\n role,\n children,\n ...rest\n}: AlertProps) {\n const defaultRole = variant === \"danger\" || variant === \"warning\" ? \"alert\" : \"status\";\n return (\n <div\n role={role ?? defaultRole}\n className={cn([\"alert\", `alert-${variant}`], className)}\n {...rest}\n >\n {renderIcon(icon)}\n {title !== undefined ? <AlertTitle>{title}</AlertTitle> : null}\n {description !== undefined ? <AlertDescription>{description}</AlertDescription> : null}\n {children}\n </div>\n );\n}\n\nexport type AlertTitleProps = ComponentProps<\"strong\">;\nfunction AlertTitle({ className, ...rest }: AlertTitleProps) {\n return <strong className={cn(\"alert-title\", className)} {...rest} />;\n}\n\nexport type AlertDescriptionProps = ComponentProps<\"p\">;\nfunction AlertDescription({ className, ...rest }: AlertDescriptionProps) {\n return <p className={cn(\"alert-description\", className)} {...rest} />;\n}\n\nexport const Alert = Object.assign(AlertRoot, {\n Title: AlertTitle,\n Description: AlertDescription,\n});\n","import { createContext, useContext, useMemo, useState } from \"react\";\nimport type { CSSProperties, ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\n\ninterface AppShellContextValue {\n mobileDrawerOpen: boolean;\n setMobileDrawerOpen: (open: boolean) => void;\n hasSidebar: boolean;\n}\n\nconst AppShellContext = createContext<AppShellContextValue | null>(null);\n\nexport function useAppShell(): AppShellContextValue | null {\n return useContext(AppShellContext);\n}\n\nexport interface AppShellProps extends ComponentProps<\"div\"> {\n hasSidebar?: boolean;\n hasFooter?: boolean;\n mobileDrawerOpen?: boolean;\n defaultMobileDrawerOpen?: boolean;\n onMobileDrawerOpenChange?: (open: boolean) => void;\n /**\n * CSS color (e.g. `var(--color-purple-600)`) applied as `--color-system-accent`\n * to the shell root. See [Customize › System accent](https://digital-udvikling.github.io/admin-design-system/basics/customize/#system-accent).\n */\n systemAccent?: string;\n children?: ReactNode;\n}\n\nfunction AppShellRoot({\n hasSidebar = false,\n hasFooter = false,\n mobileDrawerOpen,\n defaultMobileDrawerOpen = false,\n onMobileDrawerOpenChange,\n systemAccent,\n className,\n style,\n children,\n ...rest\n}: AppShellProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultMobileDrawerOpen);\n const isControlled = mobileDrawerOpen !== undefined;\n const open = isControlled ? mobileDrawerOpen : uncontrolledOpen;\n\n const value = useMemo<AppShellContextValue>(\n () => ({\n mobileDrawerOpen: open,\n setMobileDrawerOpen: (next) => {\n if (!isControlled) setUncontrolledOpen(next);\n onMobileDrawerOpenChange?.(next);\n },\n hasSidebar,\n }),\n [open, isControlled, onMobileDrawerOpenChange, hasSidebar],\n );\n\n const rootStyle =\n systemAccent !== undefined\n ? ({ ...style, \"--color-system-accent\": systemAccent } as CSSProperties)\n : style;\n\n return (\n <AppShellContext.Provider value={value}>\n <div\n className={cn(\n [\n \"app-shell\",\n hasSidebar && \"app-shell-with-sidebar\",\n hasFooter && \"app-shell-with-footer\",\n ],\n className,\n )}\n style={rootStyle}\n {...rest}\n >\n {children}\n </div>\n </AppShellContext.Provider>\n );\n}\n\nexport type AppShellMainProps = ComponentProps<\"main\">;\n\nfunction AppShellMain({ className, ...rest }: AppShellMainProps) {\n return <main className={cn(\"app-shell-main\", className)} {...rest} />;\n}\n\nexport const AppShell = Object.assign(AppShellRoot, {\n Main: AppShellMain,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type BadgeVariant = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\" | \"primary\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps extends ComponentProps<\"span\"> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Leading icon. */\n icon?: IconProp;\n}\n\nexport function Badge({\n variant = \"neutral\",\n size = \"md\",\n icon,\n className,\n children,\n ...rest\n}: BadgeProps) {\n return (\n <span\n className={cn([\"badge\", `badge-${variant}`, size !== \"md\" && `badge-${size}`], className)}\n {...rest}\n >\n {renderIcon(icon, size === \"sm\" ? 10 : 12)}\n {children}\n </span>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface BrandTileProps extends ComponentProps<\"span\"> {\n /** 1–2 letter monogram. Ignored if `icon` is provided. */\n monogram?: string;\n /** Icon component or element. Takes precedence over `monogram`. */\n icon?: IconProp;\n}\n\nexport function BrandTile({ monogram, icon, className, children, ...rest }: BrandTileProps) {\n return (\n <span className={cn(\"brand-tile\", className)} aria-hidden {...rest}>\n {icon ? renderIcon(icon, 14) : (children ?? monogram)}\n </span>\n );\n}\n","import { Button as BaseButton } from \"@base-ui/react/button\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends ComponentProps<typeof BaseButton> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n fullWidth?: boolean;\n /** Shows a spinner in place of the leading icon and disables interaction.\n * Sets `aria-busy=\"true\"` and the native `disabled` attribute. */\n loading?: boolean;\n /** Leading icon. Pass a component (`icon={IconPlus}`) or an element. */\n icon?: IconProp;\n /** Trailing icon. Pass a component (`iconTrailing={IconArrowRight}`) or an element. */\n iconTrailing?: IconProp;\n}\n\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n fullWidth,\n loading,\n icon,\n iconTrailing,\n className,\n type = \"button\",\n disabled,\n children,\n ...rest\n}: ButtonProps) {\n const iconOnly = children == null && (icon != null || iconTrailing != null);\n return (\n <BaseButton\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cn(\n [\n \"btn\",\n `btn-${variant}`,\n size !== \"md\" && `btn-${size}`,\n fullWidth && \"btn-full-width\",\n loading && \"btn-loading\",\n iconOnly && \"btn-square\",\n ],\n className,\n )}\n {...rest}\n >\n {loading ? null : renderIcon(icon)}\n {children}\n {renderIcon(iconTrailing)}\n </BaseButton>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type ButtonGroupOrientation = \"horizontal\" | \"vertical\";\n\nexport interface ButtonGroupProps extends ComponentProps<\"div\"> {\n orientation?: ButtonGroupOrientation;\n}\n\nexport function ButtonGroup({\n orientation = \"horizontal\",\n role = \"group\",\n className,\n ...rest\n}: ButtonGroupProps) {\n return (\n <div\n role={role}\n className={cn([\"btn-group\", orientation === \"vertical\" && \"btn-group-vertical\"], className)}\n {...rest}\n />\n );\n}\n","import { Children, Fragment, isValidElement, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface BreadcrumbsProps extends ComponentProps<\"nav\"> {\n /** Custom separator between items. Defaults to \"/\" from CSS. */\n separator?: ReactNode;\n /** Accessible label for the nav landmark. */\n \"aria-label\"?: string;\n}\n\nfunction BreadcrumbsRoot({\n separator,\n className,\n children,\n \"aria-label\": ariaLabel = \"Breadcrumb\",\n ...rest\n}: BreadcrumbsProps) {\n const items = Children.toArray(children).filter(isValidElement);\n return (\n <nav aria-label={ariaLabel} className={cn(\"breadcrumbs\", className)} {...rest}>\n <ol>\n {items.map((child, i) => (\n <Fragment key={child.key ?? i}>\n {child}\n {i < items.length - 1 ? <BreadcrumbSeparator>{separator}</BreadcrumbSeparator> : null}\n </Fragment>\n ))}\n </ol>\n </nav>\n );\n}\n\ntype BreadcrumbItemAsLink = ComponentProps<\"a\"> & {\n href: string;\n current?: boolean;\n icon?: IconProp;\n};\ntype BreadcrumbItemAsSpan = ComponentProps<\"span\"> & {\n href?: undefined;\n current?: boolean;\n icon?: IconProp;\n};\n\nexport type BreadcrumbItemProps = BreadcrumbItemAsLink | BreadcrumbItemAsSpan;\n\nfunction BreadcrumbItem(props: BreadcrumbItemProps) {\n if (props.href !== undefined) {\n const { className, current, icon, children, ...rest } = props;\n return (\n <li>\n <a\n className={cn(\"breadcrumb-item\", className)}\n aria-current={current ? \"page\" : undefined}\n {...rest}\n >\n {renderIcon(icon, 14)}\n {children}\n </a>\n </li>\n );\n }\n const { className, current, icon, children, ...rest } = props;\n return (\n <li>\n <span\n className={cn(\"breadcrumb-item\", className)}\n aria-current={current ? \"page\" : undefined}\n {...rest}\n >\n {renderIcon(icon, 14)}\n {children}\n </span>\n </li>\n );\n}\n\nexport type BreadcrumbSeparatorProps = ComponentProps<\"li\">;\n\n// `role=\"presentation\"` so the separator doesn't get announced as a list item;\n// `<li>` so the markup is valid inside `<ol>`.\nfunction BreadcrumbSeparator({ className, children, ...rest }: BreadcrumbSeparatorProps) {\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"breadcrumb-separator\", className)}\n {...rest}\n >\n {children}\n </li>\n );\n}\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbItem,\n Separator: BreadcrumbSeparator,\n});\n","import { Input as BaseInput } from \"@base-ui/react/input\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type InputVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\ntype BaseInputProps = Omit<ComponentProps<typeof BaseInput>, \"size\">;\n\nexport interface InputProps extends BaseInputProps {\n variant?: InputVariant;\n inputSize?: InputSize;\n}\n\nexport function Input({\n variant = \"bordered\",\n inputSize = \"md\",\n className,\n type = \"text\",\n ...rest\n}: InputProps) {\n return (\n <BaseInput\n type={type}\n className={cn(\n [\"input\", `input-${variant}`, inputSize !== \"md\" && `input-${inputSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n","import { Input as BaseInput } from \"@base-ui/react/input\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type FileInputVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type FileInputSize = \"sm\" | \"md\" | \"lg\";\n\ntype BaseInputProps = Omit<ComponentProps<typeof BaseInput>, \"size\" | \"type\">;\n\nexport interface FileInputProps extends BaseInputProps {\n variant?: FileInputVariant;\n inputSize?: FileInputSize;\n}\n\nexport function FileInput({\n variant = \"bordered\",\n inputSize = \"md\",\n className,\n ...rest\n}: FileInputProps) {\n return (\n <BaseInput\n type=\"file\"\n className={cn(\n [\"file-input\", `file-input-${variant}`, inputSize !== \"md\" && `file-input-${inputSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type InputGroupProps = ComponentProps<\"div\">;\n\nfunction InputGroupRoot({ className, ...rest }: InputGroupProps) {\n return <div className={cn(\"input-group\", className)} {...rest} />;\n}\n\nexport type InputGroupAddonProps = ComponentProps<\"span\">;\n\nfunction InputGroupAddon({ className, ...rest }: InputGroupAddonProps) {\n return <span className={cn(\"input-group-addon\", className)} {...rest} />;\n}\n\nexport const InputGroup = Object.assign(InputGroupRoot, {\n Addon: InputGroupAddon,\n});\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type PaginationItem =\n | { type: \"page\"; page: number; selected: boolean }\n | { type: \"previous\"; page: number; disabled: boolean }\n | { type: \"next\"; page: number; disabled: boolean }\n | { type: \"ellipsis\"; key: \"start\" | \"end\" };\n\nexport interface PaginationProps extends Omit<ComponentProps<\"nav\">, \"onChange\"> {\n /** Current page, 1-based. */\n page: number;\n /** Total number of pages. */\n total: number;\n /** Called when a page number, prev, or next button is activated. */\n onPageChange: (page: number) => void;\n /** Pages shown either side of `page`. Default 1. */\n siblingCount?: number;\n /** Pages always shown at the start and end. Default 1. */\n boundaryCount?: number;\n /** Icon for the previous-page control. Defaults to a built-in chevron. */\n previousIcon?: IconProp;\n /** Icon for the next-page control. Defaults to a built-in chevron. */\n nextIcon?: IconProp;\n /** Override the renderer for one item — useful for routing libraries that\n * expect their own Link component (Next.js, TanStack Router, etc.). */\n renderItem?: (item: PaginationItem) => ReactNode;\n}\n\n/**\n * Compute the items to render for a given `page` / `total`. Always returns:\n * previous, ...numbers/ellipses, next\n * with `boundaryCount` items on each end and `siblingCount` items around `page`.\n * Pure: no React state, safe to call during render.\n */\nexport function getPaginationItems({\n page,\n total,\n siblingCount = 1,\n boundaryCount = 1,\n}: {\n page: number;\n total: number;\n siblingCount?: number;\n boundaryCount?: number;\n}): PaginationItem[] {\n if (total <= 0) {\n return [\n { type: \"previous\", page: 1, disabled: true },\n { type: \"next\", page: 1, disabled: true },\n ];\n }\n const clampedPage = Math.min(Math.max(1, page), total);\n const items: PaginationItem[] = [];\n items.push({ type: \"previous\", page: clampedPage - 1, disabled: clampedPage === 1 });\n\n const startPages = range(1, Math.min(boundaryCount, total));\n const endPages = range(Math.max(total - boundaryCount + 1, boundaryCount + 1), total);\n\n const siblingsStart = Math.max(\n Math.min(clampedPage - siblingCount, total - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n );\n const siblingsEnd = Math.min(\n Math.max(clampedPage + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? (endPages[0] as number) - 2 : total - 1,\n );\n\n const middle: (number | \"ellipsis-start\" | \"ellipsis-end\")[] = [];\n // Start ellipsis (or extra page when gap is exactly 1)\n if (siblingsStart > boundaryCount + 2) {\n middle.push(\"ellipsis-start\");\n } else if (boundaryCount + 1 < total - boundaryCount) {\n middle.push(boundaryCount + 1);\n }\n\n middle.push(...range(siblingsStart, siblingsEnd));\n\n // End ellipsis (or extra page when gap is exactly 1)\n if (siblingsEnd < total - boundaryCount - 1) {\n middle.push(\"ellipsis-end\");\n } else if (total - boundaryCount > boundaryCount) {\n middle.push(total - boundaryCount);\n }\n\n const seen = new Set<number>();\n const pushNumber = (n: number) => {\n if (n < 1 || n > total || seen.has(n)) return;\n seen.add(n);\n items.push({ type: \"page\", page: n, selected: n === clampedPage });\n };\n\n for (const n of startPages) pushNumber(n);\n for (const entry of middle) {\n if (entry === \"ellipsis-start\") {\n items.push({ type: \"ellipsis\", key: \"start\" });\n } else if (entry === \"ellipsis-end\") {\n items.push({ type: \"ellipsis\", key: \"end\" });\n } else {\n pushNumber(entry);\n }\n }\n for (const n of endPages) pushNumber(n);\n\n items.push({ type: \"next\", page: clampedPage + 1, disabled: clampedPage === total });\n return items;\n}\n\nfunction range(start: number, end: number): number[] {\n if (end < start) return [];\n const out: number[] = [];\n for (let i = start; i <= end; i++) out.push(i);\n return out;\n}\n\nexport function Pagination({\n page,\n total,\n onPageChange,\n siblingCount = 1,\n boundaryCount = 1,\n previousIcon,\n nextIcon,\n renderItem,\n className,\n \"aria-label\": ariaLabel = \"Pagination\",\n ...rest\n}: PaginationProps) {\n const items = getPaginationItems({ page, total, siblingCount, boundaryCount });\n const prev = previousIcon !== undefined ? renderIcon(previousIcon, 16) : <ChevronLeftIcon />;\n const next = nextIcon !== undefined ? renderIcon(nextIcon, 16) : <ChevronRightIcon />;\n return (\n <nav aria-label={ariaLabel} className={cn(\"pagination\", className)} {...rest}>\n <ul>\n {items.map((item, i) => (\n <li key={paginationItemKey(item, i)} className={cn(\"page-item\", undefined)}>\n {renderItem ? renderItem(item) : defaultRender(item, onPageChange, prev, next)}\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nfunction ChevronLeftIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M15 6l-6 6 6 6\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n );\n}\n\nfunction paginationItemKey(item: PaginationItem, index: number): string {\n switch (item.type) {\n case \"previous\":\n return \"previous\";\n case \"next\":\n return \"next\";\n case \"ellipsis\":\n return `ellipsis-${item.key}`;\n case \"page\":\n return `page-${item.page}`;\n default:\n return `${index}`;\n }\n}\n\nfunction defaultRender(\n item: PaginationItem,\n onPageChange: (n: number) => void,\n prev: ReactNode,\n next: ReactNode,\n): ReactNode {\n switch (item.type) {\n case \"previous\":\n return (\n <button\n type=\"button\"\n className={cn(\"page-link\", undefined)}\n aria-label=\"Previous page\"\n aria-disabled={item.disabled || undefined}\n disabled={item.disabled}\n onClick={() => onPageChange(item.page)}\n >\n {prev}\n </button>\n );\n case \"next\":\n return (\n <button\n type=\"button\"\n className={cn(\"page-link\", undefined)}\n aria-label=\"Next page\"\n aria-disabled={item.disabled || undefined}\n disabled={item.disabled}\n onClick={() => onPageChange(item.page)}\n >\n {next}\n </button>\n );\n case \"ellipsis\":\n return (\n <span className={cn(\"page-ellipsis\", undefined)} aria-hidden=\"true\">\n …\n </span>\n );\n case \"page\":\n return (\n <button\n type=\"button\"\n className={cn([\"page-link\", item.selected && \"active\"], undefined)}\n aria-current={item.selected ? \"page\" : undefined}\n aria-label={`Page ${item.page}`}\n onClick={() => onPageChange(item.page)}\n >\n {item.page}\n </button>\n );\n }\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TextareaVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TextareaProps extends Omit<ComponentProps<\"textarea\">, \"size\"> {\n variant?: TextareaVariant;\n textareaSize?: TextareaSize;\n}\n\nexport function Textarea({\n variant = \"bordered\",\n textareaSize = \"md\",\n className,\n ...rest\n}: TextareaProps) {\n return (\n <textarea\n className={cn(\n [\"textarea\", `textarea-${variant}`, textareaSize !== \"md\" && `textarea-${textareaSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n","import { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type CheckboxProps = ComponentProps<typeof BaseCheckbox.Root>;\n\nfunction CheckboxRoot({ className, children, ...rest }: CheckboxProps) {\n return (\n <BaseCheckbox.Root className={cn(\"checkbox\", className)} {...rest}>\n {children ?? (\n <CheckboxIndicator>\n <CheckIcon />\n </CheckboxIndicator>\n )}\n </BaseCheckbox.Root>\n );\n}\n\nexport type CheckboxIndicatorProps = ComponentProps<typeof BaseCheckbox.Indicator>;\n\nfunction CheckboxIndicator({ className, ...rest }: CheckboxIndicatorProps) {\n return <BaseCheckbox.Indicator className={cn(\"checkbox-indicator\", className)} {...rest} />;\n}\n\nfunction CheckIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"100%\"\n height=\"100%\"\n aria-hidden\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Indicator: CheckboxIndicator,\n});\n","import { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type RadioProps = ComponentProps<typeof BaseRadio.Root>;\n\nfunction RadioRoot({ className, children, ...rest }: RadioProps) {\n return (\n <BaseRadio.Root className={cn(\"radio\", className)} {...rest}>\n {children ?? <RadioIndicator />}\n </BaseRadio.Root>\n );\n}\n\nexport type RadioIndicatorProps = ComponentProps<typeof BaseRadio.Indicator>;\n\nfunction RadioIndicator({ className, ...rest }: RadioIndicatorProps) {\n return <BaseRadio.Indicator className={cn(\"radio-indicator\", className)} {...rest} />;\n}\n\nexport const Radio = Object.assign(RadioRoot, {\n Indicator: RadioIndicator,\n});\n\nexport type RadioGroupOrientation = \"horizontal\" | \"vertical\";\n\nexport interface RadioGroupProps extends ComponentProps<typeof BaseRadioGroup> {\n orientation?: RadioGroupOrientation;\n}\n\nexport function RadioGroup({ orientation = \"horizontal\", className, ...rest }: RadioGroupProps) {\n return (\n <BaseRadioGroup\n className={cn(\n [\"radio-group\", orientation === \"vertical\" && \"radio-group-vertical\"],\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type ProgressVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps extends Omit<ComponentProps<\"progress\">, \"value\"> {\n /** Current value in `[0, max]`. Omit (or pass `undefined`) for an indeterminate bar. */\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n size?: ProgressSize;\n}\n\nexport function Progress({\n value,\n max = 100,\n variant = \"primary\",\n size = \"md\",\n className,\n ...rest\n}: ProgressProps) {\n return (\n <progress\n value={value}\n max={max}\n className={cn(\n [\n \"progress\",\n variant !== \"primary\" && `progress-${variant}`,\n size !== \"md\" && `progress-${size}`,\n ],\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SpinnerProps extends ComponentProps<\"output\"> {\n size?: SpinnerSize;\n /** Accessible label announced by screen readers. Defaults to \"Loading\". */\n label?: string;\n}\n\n// `<output>` has an implicit `role=\"status\"`, so screen readers announce the\n// `aria-label` politely when the spinner appears. Pure CSS handles the visual.\nexport function Spinner({ size = \"md\", label = \"Loading\", className, ...rest }: SpinnerProps) {\n return (\n <output\n aria-label={label}\n className={cn([\"spinner\", size !== \"md\" && `spinner-${size}`], className)}\n {...rest}\n />\n );\n}\n","import { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SwitchProps = ComponentProps<typeof BaseSwitch.Root>;\n\nfunction SwitchRoot({ className, children, ...rest }: SwitchProps) {\n return (\n <BaseSwitch.Root className={cn(\"switch\", className)} {...rest}>\n {children ?? <SwitchThumb />}\n </BaseSwitch.Root>\n );\n}\n\nexport type SwitchThumbProps = ComponentProps<typeof BaseSwitch.Thumb>;\n\nfunction SwitchThumb({ className, ...rest }: SwitchThumbProps) {\n return <BaseSwitch.Thumb className={cn(\"switch-thumb\", className)} {...rest} />;\n}\n\nexport const Switch = Object.assign(SwitchRoot, {\n Thumb: SwitchThumb,\n});\n","import { Select as BaseSelect } from \"@base-ui/react/select\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SelectProps = ComponentProps<typeof BaseSelect.Root>;\n\nfunction SelectRoot(props: SelectProps) {\n return <BaseSelect.Root {...props} />;\n}\n\nexport type SelectTriggerVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type SelectTriggerSize = \"sm\" | \"md\" | \"lg\";\n\ntype BaseSelectTriggerProps = Omit<ComponentProps<typeof BaseSelect.Trigger>, \"size\">;\n\nexport interface SelectTriggerProps extends BaseSelectTriggerProps {\n variant?: SelectTriggerVariant;\n triggerSize?: SelectTriggerSize;\n}\n\nfunction SelectTrigger({\n variant = \"bordered\",\n triggerSize = \"md\",\n className,\n ...rest\n}: SelectTriggerProps) {\n return (\n <BaseSelect.Trigger\n className={cn(\n [\"select\", `select-${variant}`, triggerSize !== \"md\" && `select-${triggerSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport type SelectValueProps = ComponentProps<typeof BaseSelect.Value>;\n\nfunction SelectValue(props: SelectValueProps) {\n return <BaseSelect.Value {...props} />;\n}\n\nexport type SelectIconProps = ComponentProps<typeof BaseSelect.Icon>;\n\nfunction SelectIcon({ className, children, ...rest }: SelectIconProps) {\n return (\n <BaseSelect.Icon className={cn(\"select-icon\", className)} {...rest}>\n {children ?? <ChevronDownIcon />}\n </BaseSelect.Icon>\n );\n}\n\nexport interface SelectPopupProps extends ComponentProps<typeof BaseSelect.Popup> {\n sideOffset?: number;\n}\n\nfunction SelectPopup({ className, sideOffset = 4, children, ...rest }: SelectPopupProps) {\n return (\n <BaseSelect.Portal>\n <BaseSelect.Positioner sideOffset={sideOffset}>\n <BaseSelect.Popup className={cn(\"select-popup\", className)} {...rest}>\n {children}\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n );\n}\n\nexport type SelectItemProps = ComponentProps<typeof BaseSelect.Item>;\n\nfunction SelectItem({ className, ...rest }: SelectItemProps) {\n return <BaseSelect.Item className={cn(\"select-item\", className)} {...rest} />;\n}\n\nexport type SelectItemTextProps = ComponentProps<typeof BaseSelect.ItemText>;\n\nfunction SelectItemText(props: SelectItemTextProps) {\n return <BaseSelect.ItemText {...props} />;\n}\n\nexport type SelectItemIndicatorProps = ComponentProps<typeof BaseSelect.ItemIndicator>;\n\nfunction SelectItemIndicator({ className, children, ...rest }: SelectItemIndicatorProps) {\n return (\n <BaseSelect.ItemIndicator className={cn(\"select-item-indicator\", className)} {...rest}>\n {children ?? <CheckIcon />}\n </BaseSelect.ItemIndicator>\n );\n}\n\nexport type SelectGroupProps = ComponentProps<typeof BaseSelect.Group>;\n\nfunction SelectGroup(props: SelectGroupProps) {\n return <BaseSelect.Group {...props} />;\n}\n\nexport type SelectGroupLabelProps = ComponentProps<typeof BaseSelect.GroupLabel>;\n\nfunction SelectGroupLabel({ className, ...rest }: SelectGroupLabelProps) {\n return <BaseSelect.GroupLabel className={cn(\"select-group-label\", className)} {...rest} />;\n}\n\nfunction CheckIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"100%\"\n height=\"100%\"\n aria-hidden\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction ChevronDownIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"100%\"\n height=\"100%\"\n aria-hidden\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\nexport const Select = Object.assign(SelectRoot, {\n Trigger: SelectTrigger,\n Value: SelectValue,\n Icon: SelectIcon,\n Popup: SelectPopup,\n Item: SelectItem,\n ItemText: SelectItemText,\n ItemIndicator: SelectItemIndicator,\n Group: SelectGroup,\n GroupLabel: SelectGroupLabel,\n});\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface CardContainerProps extends ComponentProps<\"div\"> {\n bordered?: boolean;\n compact?: boolean;\n}\n\n/**\n * The bare `.card` container — no body, no title. Use this when you need to\n * compose the internals yourself (e.g. a media block above the body).\n */\nfunction CardContainer({ bordered, compact, className, ...rest }: CardContainerProps) {\n return (\n <div\n className={cn([\"card\", bordered && \"card-bordered\", compact && \"card-compact\"], className)}\n {...rest}\n />\n );\n}\n\nexport interface CardProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n bordered?: boolean;\n compact?: boolean;\n /** Leading icon for the title row. */\n icon?: IconProp;\n /** Renders as `<Card.Title>`. */\n title?: ReactNode;\n /** Renders as `<Card.Description>`. */\n description?: ReactNode;\n /** Trailing header controls (close, edit, …). Renders as `<Card.Toolbar>`. */\n toolbar?: ReactNode;\n /** Renders as `<Card.Actions>`. */\n actions?: ReactNode;\n}\n\n/**\n * Standard card: a `.card` container with a single `.card-body` that lays out\n * an optional title (with icon), description, children, and actions. For\n * anything outside that shape, use `<Card.Container>` and compose by hand.\n */\nfunction CardRoot({\n bordered,\n compact,\n icon,\n title,\n description,\n toolbar,\n actions,\n className,\n children,\n ...rest\n}: CardProps) {\n const hasTitle = icon !== undefined || title !== undefined;\n const titleEl = hasTitle ? <CardTitle icon={icon}>{title}</CardTitle> : null;\n return (\n <CardContainer bordered={bordered} compact={compact} className={className} {...rest}>\n <CardBody>\n {toolbar !== undefined ? (\n <CardHeader>\n {titleEl}\n <CardToolbar>{toolbar}</CardToolbar>\n </CardHeader>\n ) : (\n titleEl\n )}\n {description !== undefined ? <CardDescription>{description}</CardDescription> : null}\n {children}\n {actions !== undefined ? <CardActions>{actions}</CardActions> : null}\n </CardBody>\n </CardContainer>\n );\n}\n\nexport type CardBodyProps = ComponentProps<\"div\">;\nfunction CardBody({ className, ...rest }: CardBodyProps) {\n return <div className={cn(\"card-body\", className)} {...rest} />;\n}\n\nexport type CardHeaderProps = ComponentProps<\"div\">;\nfunction CardHeader({ className, ...rest }: CardHeaderProps) {\n return <div className={cn(\"card-header\", className)} {...rest} />;\n}\n\nexport type CardToolbarProps = ComponentProps<\"div\">;\nfunction CardToolbar({ className, ...rest }: CardToolbarProps) {\n return <div className={cn(\"card-toolbar\", className)} {...rest} />;\n}\n\nexport interface CardTitleProps extends ComponentProps<\"h3\"> {\n /** Leading icon. */\n icon?: IconProp;\n}\nfunction CardTitle({ icon, className, children, ...rest }: CardTitleProps) {\n return (\n <h3 className={cn(\"card-title\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </h3>\n );\n}\n\nexport type CardDescriptionProps = ComponentProps<\"p\">;\nfunction CardDescription({ className, ...rest }: CardDescriptionProps) {\n return <p className={cn(\"card-description\", className)} {...rest} />;\n}\n\nexport type CardActionsProps = ComponentProps<\"div\">;\nfunction CardActions({ className, ...rest }: CardActionsProps) {\n return <div className={cn(\"card-actions\", className)} {...rest} />;\n}\n\nexport const Card = Object.assign(CardRoot, {\n Container: CardContainer,\n Body: CardBody,\n Header: CardHeader,\n Toolbar: CardToolbar,\n Title: CardTitle,\n Description: CardDescription,\n Actions: CardActions,\n});\n","import {\n createContext,\n useContext,\n useEffect,\n useRef,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type DialogSize = \"sm\" | \"md\" | \"lg\";\nexport type DialogClosedBy = \"any\" | \"closerequest\" | \"none\";\n\ninterface DialogContextValue {\n close: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nfunction DefaultCloseIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport interface DialogContainerProps extends Omit<ComponentProps<\"dialog\">, \"open\"> {\n /** Controlled open state. Omit for uncontrolled (e.g. driven by Invoker Commands). */\n open?: boolean;\n /** Fires when the dialog closes (Esc, backdrop, close button, form method=\"dialog\"). */\n onOpenChange?: (open: boolean) => void;\n /** Width preset. Default: `\"md\"`. */\n size?: DialogSize;\n /**\n * Native `closedby` attribute. `\"any\"` allows Esc + backdrop click,\n * `\"closerequest\"` only Esc, `\"none\"` neither. Default: `\"any\"`.\n */\n closedby?: DialogClosedBy;\n}\n\n/**\n * The bare `<dialog>` primitive — no opinions about header, body, or footer.\n * Use this when the default `<Dialog>` layout doesn't fit (custom header,\n * media block, multi-step content).\n */\nfunction DialogContainer({\n open,\n onOpenChange,\n size = \"md\",\n closedby = \"any\",\n className,\n children,\n ...rest\n}: DialogContainerProps) {\n const ref = useRef<HTMLDialogElement | null>(null);\n const onOpenChangeRef = useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n\n useEffect(() => {\n const el = ref.current;\n if (!el || open === undefined) return;\n if (open && !el.open) el.showModal();\n else if (!open && el.open) el.close();\n }, [open]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const handleClose = () => onOpenChangeRef.current?.(false);\n el.addEventListener(\"close\", handleClose);\n return () => el.removeEventListener(\"close\", handleClose);\n }, []);\n\n const ctx: DialogContextValue = {\n close: () => ref.current?.close(),\n };\n\n return (\n <DialogContext.Provider value={ctx}>\n <dialog\n ref={ref}\n className={cn([\"dialog\", size !== \"md\" && `dialog-${size}`], className)}\n closedby={closedby}\n {...rest}\n >\n {children}\n </dialog>\n </DialogContext.Provider>\n );\n}\n\nexport type DialogHeaderProps = ComponentProps<\"div\">;\n\nfunction DialogHeader({ className, ...rest }: DialogHeaderProps) {\n return <div className={cn(\"dialog-header\", className)} {...rest} />;\n}\n\nexport interface DialogTitleProps extends ComponentProps<\"h2\"> {\n /** Leading icon. */\n icon?: IconProp;\n}\n\nfunction DialogTitle({ icon, className, children, ...rest }: DialogTitleProps) {\n return (\n <h2 className={cn(\"dialog-title\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </h2>\n );\n}\n\nexport type DialogDescriptionProps = ComponentProps<\"p\">;\n\nfunction DialogDescription({ className, ...rest }: DialogDescriptionProps) {\n return <p className={cn(\"dialog-description\", className)} {...rest} />;\n}\n\nexport type DialogBodyProps = ComponentProps<\"div\">;\n\nfunction DialogBody({ className, ...rest }: DialogBodyProps) {\n return <div className={cn(\"dialog-body\", className)} {...rest} />;\n}\n\nexport type DialogFooterProps = ComponentProps<\"div\">;\n\nfunction DialogFooter({ className, ...rest }: DialogFooterProps) {\n return <div className={cn(\"dialog-footer\", className)} {...rest} />;\n}\n\nexport interface DialogCloseButtonProps extends ComponentProps<\"button\"> {\n /** Override the default X icon. */\n icon?: IconProp;\n}\n\nfunction DialogCloseButton({\n icon,\n className,\n children,\n onClick,\n type = \"button\",\n \"aria-label\": ariaLabel = \"Close\",\n ...rest\n}: DialogCloseButtonProps) {\n const ctx = useContext(DialogContext);\n return (\n <button\n type={type}\n className={cn(\"dialog-close\", className)}\n aria-label={ariaLabel}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) ctx?.close();\n }}\n {...rest}\n >\n {children ?? (icon !== undefined ? renderIcon(icon) : <DefaultCloseIcon />)}\n </button>\n );\n}\n\nexport interface DialogProps extends Omit<DialogContainerProps, \"title\" | \"children\"> {\n /** Leading icon for the title row. */\n icon?: IconProp;\n /** Renders as `<Dialog.Title>`. */\n title?: ReactNode;\n /** Renders as `<Dialog.Description>`. */\n description?: ReactNode;\n /** Renders as `<Dialog.Footer>`. */\n actions?: ReactNode;\n /** Show the X close button in the header. Default: `true`. */\n dismissible?: boolean;\n /** aria-label for the close button. Default: `\"Close\"`. */\n closeLabel?: string;\n children?: ReactNode;\n}\n\n/**\n * Standard modal: a `<dialog>` with an opinionated header / body / footer\n * layout driven by shorthand props. For anything outside that shape, use\n * `<Dialog.Container>` and compose by hand.\n */\nfunction DialogRoot({\n icon,\n title,\n description,\n actions,\n dismissible = true,\n closeLabel = \"Close\",\n children,\n ...containerProps\n}: DialogProps) {\n const hasTitle = title !== undefined || icon !== undefined;\n const showHeader = hasTitle || dismissible;\n return (\n <DialogContainer {...containerProps}>\n {showHeader ? (\n <DialogHeader>\n {hasTitle ? (\n <DialogTitle icon={icon}>{title}</DialogTitle>\n ) : (\n <span className={cn(\"flex-1\", undefined)} />\n )}\n {dismissible ? <DialogCloseButton aria-label={closeLabel} /> : null}\n </DialogHeader>\n ) : null}\n {description !== undefined ? <DialogDescription>{description}</DialogDescription> : null}\n {children !== undefined ? <DialogBody>{children}</DialogBody> : null}\n {actions !== undefined ? <DialogFooter>{actions}</DialogFooter> : null}\n </DialogContainer>\n );\n}\n\nexport const Dialog = Object.assign(DialogRoot, {\n Container: DialogContainer,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n CloseButton: DialogCloseButton,\n});\n","import { Field as BaseField } from \"@base-ui/react/field\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\n/**\n * Thin wrappers around Base UI's Field primitives that apply the design\n * system's class names. Compose for fully accessible labeled form fields:\n *\n * <Field name=\"email\">\n * <Field.Label>Email</Field.Label>\n * <Input type=\"email\" required />\n * <Field.Description>We'll never share your email.</Field.Description>\n * <Field.Error match=\"valueMissing\">Email is required.</Field.Error>\n * </Field>\n */\n\nexport type FieldProps = ComponentProps<typeof BaseField.Root>;\n\nfunction FieldRoot({ className, ...rest }: FieldProps) {\n return <BaseField.Root className={cn(\"field\", className)} {...rest} />;\n}\n\nexport type FieldLabelProps = ComponentProps<typeof BaseField.Label> & {\n /** Renders a red asterisk after the label text via `data-required`. */\n required?: boolean;\n};\n\nfunction FieldLabel({ className, required, ...rest }: FieldLabelProps) {\n return (\n <BaseField.Label\n data-required={required ? \"\" : undefined}\n className={cn(\"field-label\", className)}\n {...rest}\n />\n );\n}\n\nexport type FieldDescriptionProps = ComponentProps<typeof BaseField.Description>;\n\nfunction FieldDescription({ className, ...rest }: FieldDescriptionProps) {\n return <BaseField.Description className={cn(\"field-description\", className)} {...rest} />;\n}\n\nexport type FieldErrorProps = ComponentProps<typeof BaseField.Error>;\n\nfunction FieldError({ className, ...rest }: FieldErrorProps) {\n return <BaseField.Error className={cn(\"field-error\", className)} {...rest} />;\n}\n\nexport const Field = Object.assign(FieldRoot, {\n Label: FieldLabel,\n Description: FieldDescription,\n Error: FieldError,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type FooterProps = ComponentProps<\"footer\">;\n\nfunction FooterRoot({ className, ...rest }: FooterProps) {\n return <footer className={cn(\"footer\", className)} {...rest} />;\n}\n\nexport type FooterLinksProps = ComponentProps<\"div\">;\n\nfunction FooterLinks({ className, ...rest }: FooterLinksProps) {\n return <div className={cn(\"footer-links\", className)} {...rest} />;\n}\n\nexport type FooterLinkProps = ComponentProps<\"a\">;\n\nfunction FooterLink({ className, children, ...rest }: FooterLinkProps) {\n return (\n <a className={cn(\"footer-link\", className)} {...rest}>\n {children}\n </a>\n );\n}\n\nexport type FooterMetaProps = ComponentProps<\"div\">;\n\nfunction FooterMeta({ className, ...rest }: FooterMetaProps) {\n return <div className={cn(\"footer-meta\", className)} {...rest} />;\n}\n\nexport const Footer = Object.assign(FooterRoot, {\n Links: FooterLinks,\n Link: FooterLink,\n Meta: FooterMeta,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface MenuProps extends ComponentProps<\"details\"> {}\n\nfunction MenuRoot({ className, ...rest }: MenuProps) {\n return <details className={cn(\"menu\", className)} {...rest} />;\n}\n\nexport type MenuTriggerProps = ComponentProps<\"summary\">;\n\nfunction MenuTrigger({ className, ...rest }: MenuTriggerProps) {\n return <summary className={cn(\"menu-trigger\", className)} {...rest} />;\n}\n\nexport type MenuPopupProps = ComponentProps<\"div\">;\n\nfunction MenuPopup({ className, role = \"menu\", ...rest }: MenuPopupProps) {\n return <div role={role} className={cn(\"menu-popup\", className)} {...rest} />;\n}\n\ntype MenuItemAsButton = ComponentProps<\"button\"> & { href?: undefined; icon?: IconProp };\ntype MenuItemAsLink = ComponentProps<\"a\"> & { href: string; icon?: IconProp };\n\nexport type MenuItemProps = MenuItemAsButton | MenuItemAsLink;\n\nfunction MenuItem(props: MenuItemProps) {\n if (props.href !== undefined) {\n const { className, role = \"menuitem\", icon, children, ...rest } = props;\n return (\n <a role={role} className={cn(\"menu-item\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </a>\n );\n }\n const { className, type = \"button\", role = \"menuitem\", icon, children, ...rest } = props;\n return (\n <button type={type} role={role} className={cn(\"menu-item\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </button>\n );\n}\n\nexport type MenuSeparatorProps = ComponentProps<\"hr\">;\n\nfunction MenuSeparator({ className, ...rest }: MenuSeparatorProps) {\n return <hr className={cn(\"menu-separator\", className)} {...rest} />;\n}\n\nexport type MenuGroupProps = ComponentProps<\"div\">;\n\nfunction MenuGroup({ className, role = \"group\", ...rest }: MenuGroupProps) {\n return <div role={role} className={cn(\"menu-group\", className)} {...rest} />;\n}\n\nexport type MenuGroupLabelProps = ComponentProps<\"div\">;\n\nfunction MenuGroupLabel({ className, ...rest }: MenuGroupLabelProps) {\n return <div className={cn(\"menu-group-label\", className)} {...rest} />;\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Trigger: MenuTrigger,\n Popup: MenuPopup,\n Item: MenuItem,\n Separator: MenuSeparator,\n Group: MenuGroup,\n GroupLabel: MenuGroupLabel,\n});\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { useAppShell } from \"./AppShell\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\nimport { Menu } from \"./Menu\";\n\nexport type NavbarProps = ComponentProps<\"header\">;\n\nfunction NavbarRoot({ className, ...rest }: NavbarProps) {\n return <header className={cn(\"navbar\", className)} {...rest} />;\n}\n\nexport type NavbarBrandProps = ComponentProps<\"div\">;\n\nfunction NavbarBrand({ className, ...rest }: NavbarBrandProps) {\n return <div className={cn(\"navbar-brand\", className)} {...rest} />;\n}\n\nexport type NavbarItemsProps = ComponentProps<\"nav\">;\n\nfunction NavbarItems({ className, ...rest }: NavbarItemsProps) {\n return <nav className={cn(\"navbar-items\", className)} {...rest} />;\n}\n\nexport interface NavbarItemProps extends ComponentProps<\"a\"> {\n active?: boolean;\n /** Leading icon. */\n icon?: IconProp;\n}\n\nfunction NavbarItem({ active, icon, className, children, ...rest }: NavbarItemProps) {\n return (\n <a\n className={cn(\"navbar-item\", className)}\n aria-current={active ? \"page\" : undefined}\n {...rest}\n >\n {renderIcon(icon)}\n {children}\n </a>\n );\n}\n\nexport interface NavbarDropdownProps extends Omit<ComponentProps<\"details\">, \"title\"> {\n /** Text shown in the trigger. */\n label: ReactNode;\n}\n\nfunction NavbarDropdown({ label, className, children, ...rest }: NavbarDropdownProps) {\n return (\n <Menu className={className} {...rest}>\n <Menu.Trigger className={cn(\"navbar-item\", undefined)}>{label}</Menu.Trigger>\n <Menu.Popup>{children}</Menu.Popup>\n </Menu>\n );\n}\n\nexport type NavbarActionsProps = ComponentProps<\"div\">;\n\nfunction NavbarActions({ className, ...rest }: NavbarActionsProps) {\n return <div className={cn(\"navbar-actions\", className)} {...rest} />;\n}\n\nexport interface NavbarMobileToggleProps extends Omit<\n ComponentProps<\"button\">,\n \"onClick\" | \"children\"\n> {\n /** Accessible label for the toggle. Default: \"Open menu\". */\n label?: string;\n}\n\nfunction NavbarMobileToggle({\n label = \"Open menu\",\n className,\n type = \"button\",\n ...rest\n}: NavbarMobileToggleProps) {\n const shell = useAppShell();\n const open = shell?.mobileDrawerOpen ?? false;\n\n return (\n <button\n type={type}\n aria-label={label}\n aria-expanded={open}\n onClick={() => shell?.setMobileDrawerOpen(!open)}\n className={cn(\"navbar-mobile-toggle\", className)}\n {...rest}\n />\n );\n}\n\nexport const Navbar = Object.assign(NavbarRoot, {\n Brand: NavbarBrand,\n Items: NavbarItems,\n Item: NavbarItem,\n Dropdown: NavbarDropdown,\n Actions: NavbarActions,\n MobileToggle: NavbarMobileToggle,\n});\n","import { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TabsVariant = \"bordered\" | \"boxed\";\nexport type TabsSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TabsProps extends ComponentProps<typeof BaseTabs.Root> {\n variant?: TabsVariant;\n size?: TabsSize;\n fullWidth?: boolean;\n}\n\nfunction TabsRoot({\n variant = \"bordered\",\n size = \"md\",\n fullWidth = false,\n className,\n ...rest\n}: TabsProps) {\n return (\n <BaseTabs.Root\n className={cn(\n [\n \"tabs\",\n `tabs-${variant}`,\n size !== \"md\" && `tabs-${size}`,\n fullWidth && \"tabs-full-width\",\n ],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport type TabsListProps = ComponentProps<typeof BaseTabs.List>;\n\nfunction TabsList({ className, ...rest }: TabsListProps) {\n return <BaseTabs.List className={cn(\"tab-list\", className)} {...rest} />;\n}\n\nexport type TabsTabProps = ComponentProps<typeof BaseTabs.Tab>;\n\nfunction TabsTab({ className, ...rest }: TabsTabProps) {\n return <BaseTabs.Tab className={cn(\"tab\", className)} {...rest} />;\n}\n\nexport type TabsPanelProps = ComponentProps<typeof BaseTabs.Panel>;\n\nfunction TabsPanel({ className, ...rest }: TabsPanelProps) {\n return <BaseTabs.Panel className={cn(\"tab-panel\", className)} {...rest} />;\n}\n\nexport type TabsIndicatorProps = ComponentProps<typeof BaseTabs.Indicator>;\n\nfunction TabsIndicator({ className, ...rest }: TabsIndicatorProps) {\n return <BaseTabs.Indicator className={cn(\"tab-indicator\", className)} {...rest} />;\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n List: TabsList,\n Tab: TabsTab,\n Panel: TabsPanel,\n Indicator: TabsIndicator,\n});\n","import { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport type { ComponentProps, ReactElement, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TooltipProviderProps = ComponentProps<typeof BaseTooltip.Provider>;\n\nfunction TooltipProvider(props: TooltipProviderProps) {\n return <BaseTooltip.Provider {...props} />;\n}\n\nexport type TooltipRootProps = ComponentProps<typeof BaseTooltip.Root>;\n\nfunction TooltipRoot(props: TooltipRootProps) {\n return <BaseTooltip.Root {...props} />;\n}\n\nexport type TooltipTriggerProps = ComponentProps<typeof BaseTooltip.Trigger>;\n\nfunction TooltipTrigger(props: TooltipTriggerProps) {\n return <BaseTooltip.Trigger {...props} />;\n}\n\nexport type TooltipSize = \"sm\" | \"md\";\n\ntype TooltipPositionerProps = ComponentProps<typeof BaseTooltip.Positioner>;\n\nexport interface TooltipPopupProps extends ComponentProps<typeof BaseTooltip.Popup> {\n size?: TooltipSize;\n side?: TooltipPositionerProps[\"side\"];\n align?: TooltipPositionerProps[\"align\"];\n sideOffset?: TooltipPositionerProps[\"sideOffset\"];\n}\n\nfunction TooltipPopup({\n size = \"md\",\n side = \"top\",\n align = \"center\",\n sideOffset = 6,\n role = \"tooltip\",\n className,\n children,\n ...rest\n}: TooltipPopupProps) {\n return (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner sideOffset={sideOffset} side={side} align={align}>\n <BaseTooltip.Popup\n role={role}\n className={cn([\"tooltip\", size !== \"md\" && `tooltip-${size}`], className)}\n {...rest}\n >\n {children}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n );\n}\n\nexport interface TooltipProps extends Omit<TooltipRootProps, \"children\"> {\n /** Tooltip body — string or rich node. */\n content: ReactNode;\n side?: TooltipPopupProps[\"side\"];\n align?: TooltipPopupProps[\"align\"];\n sideOffset?: TooltipPopupProps[\"sideOffset\"];\n size?: TooltipSize;\n /** The trigger element. Must be a single React element so Base UI can merge trigger props/refs into it. */\n children: ReactElement;\n}\n\nfunction TooltipShorthand({\n content,\n side,\n align,\n sideOffset,\n size,\n children,\n ...rootProps\n}: TooltipProps) {\n return (\n <TooltipRoot {...rootProps}>\n <BaseTooltip.Trigger render={children} />\n <TooltipPopup side={side} align={align} sideOffset={sideOffset} size={size}>\n {content}\n </TooltipPopup>\n </TooltipRoot>\n );\n}\n\nexport const Tooltip = Object.assign(TooltipShorthand, {\n Provider: TooltipProvider,\n Root: TooltipRoot,\n Trigger: TooltipTrigger,\n Popup: TooltipPopup,\n});\n","import { useRef, useState, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"./cn\";\n\n// Inline SVGs match Tabler's stroke conventions (24px viewBox, stroke-width 2,\n// round caps + joins, currentColor). admin-react stays icon-library-agnostic;\n// consumers don't need @tabler/icons-react or the Tabler webfont.\nfunction CopyGlyph({ className }: { className: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className={className}\n >\n <path d=\"M7 7m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\n <path d=\"M15 7v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </svg>\n );\n}\n\nfunction CheckGlyph({ className }: { className: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className={className}\n >\n <path d=\"M5 12l5 5l10 -10\" />\n </svg>\n );\n}\n\nexport interface PropertyListProps extends Omit<ComponentProps<\"section\">, \"title\"> {\n striped?: boolean;\n /** Reveals a copy button on every item's value cell. Per-item `copyable`\n * on `<PropertyList.Item>` opts in for individual rows. */\n copyable?: boolean;\n /** Collapses the whole section when every item rendered the auto em-dash\n * fallback for an empty value. */\n hideIfAllEmpty?: boolean;\n /** Optional section heading rendered as `<h3 class=\"property-list-title\">`\n * above the items grid. */\n title?: ReactNode;\n}\n\nfunction PropertyListRoot({\n striped,\n copyable,\n hideIfAllEmpty,\n title,\n className,\n children,\n ...rest\n}: PropertyListProps) {\n return (\n <section\n className={cn(\n [\n \"property-list\",\n striped && \"property-list-striped\",\n copyable && \"property-list-copyable\",\n hideIfAllEmpty && \"property-list-hide-if-empty\",\n ],\n className,\n )}\n {...rest}\n >\n {title !== undefined ? (\n <h3 className={cn(\"property-list-title\", undefined)}>{title}</h3>\n ) : null}\n <dl className={cn(\"property-list-items\", undefined)}>{children}</dl>\n </section>\n );\n}\n\nexport interface PropertyListItemProps extends Omit<ComponentProps<\"dd\">, \"title\" | \"label\"> {\n label?: ReactNode;\n value?: ReactNode;\n /** Right-aligns the value cell + applies `tabular-nums`. Mirrors `Table.Cell.numeric`. */\n numeric?: boolean;\n /** Opts this row into the copy affordance regardless of list-level `copyable`. */\n copyable?: boolean;\n /** Overrides the text the copy button writes to the clipboard. */\n copyValue?: string;\n}\n\nfunction isEmptyValue(value: ReactNode): boolean {\n if (value == null) return true;\n if (typeof value === \"string\") return value.trim() === \"\";\n return false;\n}\n\n// Item is a thin wrapper that emits a <dt>/<dd> pair as siblings (no host\n// element). In shorthand mode it generates the subparts; in children mode it\n// renders them verbatim. Either way, no extra DOM wrapper is introduced.\nfunction PropertyListItem({\n label,\n value,\n numeric,\n copyable,\n copyValue,\n children,\n ...rest\n}: PropertyListItemProps) {\n if (children !== undefined) {\n return <>{children}</>;\n }\n const empty = isEmptyValue(value);\n return (\n <>\n <PropertyListLabel>{label}</PropertyListLabel>\n <PropertyListValue\n numeric={numeric}\n copyable={copyable}\n empty={empty}\n copyValue={copyValue ?? (typeof value === \"string\" ? value : undefined)}\n {...rest}\n >\n {empty ? \"—\" : value}\n </PropertyListValue>\n </>\n );\n}\n\nexport type PropertyListLabelProps = ComponentProps<\"dt\">;\nfunction PropertyListLabel({ className, ...rest }: PropertyListLabelProps) {\n return <dt className={cn(\"property-list-label\", className)} {...rest} />;\n}\n\nexport interface PropertyListValueProps extends ComponentProps<\"dd\"> {\n numeric?: boolean;\n copyable?: boolean;\n /** Marks the cell as carrying an auto-rendered em-dash. The list-level\n * `hideIfAllEmpty` collapses the section when every value is empty. */\n empty?: boolean;\n /** Overrides the text the copy button writes to the clipboard. */\n copyValue?: string;\n}\n\nfunction PropertyListValue({\n numeric,\n copyable,\n empty,\n copyValue,\n className,\n children,\n ...rest\n}: PropertyListValueProps) {\n const ddRef = useRef<HTMLElement | null>(null);\n const [copied, setCopied] = useState(false);\n\n async function handleCopy() {\n const text = copyValue ?? ddRef.current?.textContent?.trim() ?? \"\";\n if (!text) return;\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1200);\n } catch {\n // Permission denied or unsupported — fail silently.\n }\n }\n\n return (\n <dd\n ref={ddRef}\n className={cn(\n [\n \"property-list-value\",\n numeric && \"property-list-value-numeric\",\n copyable && \"property-list-value-copyable\",\n empty && \"property-list-value-empty\",\n ],\n className,\n )}\n {...rest}\n >\n {children}\n <button\n type=\"button\"\n aria-label=\"Copy\"\n className={cn(\"property-list-copy\", undefined)}\n onClick={handleCopy}\n data-copied={copied ? \"true\" : undefined}\n >\n <CopyGlyph className={cn(\"property-list-copy-icon\", undefined)} />\n <CheckGlyph className={cn(\"property-list-copy-icon-copied\", undefined)} />\n </button>\n </dd>\n );\n}\n\nexport const PropertyList = Object.assign(PropertyListRoot, {\n Item: PropertyListItem,\n Label: PropertyListLabel,\n Value: PropertyListValue,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TableAlign = \"left\" | \"right\" | \"center\";\n\nexport interface TableProps extends ComponentProps<\"table\"> {\n striped?: boolean;\n bordered?: boolean;\n relaxed?: boolean;\n /** Pins `<thead>` while the surrounding scroll container scrolls.\n * Requires an overflowing ancestor — wrap the table in\n * `<div style=\"overflow:auto; max-height: …\">`. */\n sticky?: boolean;\n}\n\nfunction TableRoot({ striped, bordered, relaxed, sticky, className, ...rest }: TableProps) {\n return (\n <table\n className={cn(\n [\n \"table\",\n striped && \"table-striped\",\n bordered && \"table-bordered\",\n relaxed && \"table-relaxed\",\n sticky && \"table-sticky\",\n ],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport type TableHeadProps = ComponentProps<\"thead\">;\nfunction TableHead({ className, ...rest }: TableHeadProps) {\n return <thead className={className} {...rest} />;\n}\n\nexport type TableBodyProps = ComponentProps<\"tbody\">;\nfunction TableBody({ className, ...rest }: TableBodyProps) {\n return <tbody className={className} {...rest} />;\n}\n\nexport type TableFootProps = ComponentProps<\"tfoot\">;\nfunction TableFoot({ className, ...rest }: TableFootProps) {\n return <tfoot className={className} {...rest} />;\n}\n\nexport interface TableRowProps extends ComponentProps<\"tr\"> {\n /** Visually marks the row as selected. Independent of the CSS rule that\n * tints rows containing a checked checkbox — use this for programmatic\n * selection (single-select on row click, server-driven highlight, …). */\n selected?: boolean;\n /** Applies `.table-row-link` so the first `<a>` inside the row expands to\n * fill the row. The consumer still supplies the anchor — this just adds\n * the CSS hook so the hit-area covers the whole row. */\n asLink?: boolean;\n}\nfunction TableRow({ selected, asLink, className, ...rest }: TableRowProps) {\n return (\n <tr\n className={cn(asLink && \"table-row-link\", className)}\n data-selected={selected || undefined}\n {...rest}\n />\n );\n}\n\nexport interface TableHeaderCellProps extends Omit<ComponentProps<\"th\">, \"align\"> {\n align?: TableAlign;\n /** Narrow first-column gutter — mirrors the body cell `gutter` modifier so\n * the column lines up. Use for status-icon columns and select-all\n * checkboxes. */\n gutter?: boolean;\n}\nfunction TableHeaderCell({ align, gutter, className, scope, ...rest }: TableHeaderCellProps) {\n return (\n <th\n className={cn([\"table-header-cell\", gutter && \"table-cell-gutter\"], className)}\n data-align={align && align !== \"left\" ? align : undefined}\n scope={scope ?? \"col\"}\n {...rest}\n />\n );\n}\n\nexport interface TableCellProps extends Omit<ComponentProps<\"td\">, \"align\"> {\n align?: TableAlign;\n /** Narrow first-column gutter for row-level status icons. */\n gutter?: boolean;\n /** `text-right` + `tabular-nums` for currency/totals columns. */\n numeric?: boolean;\n}\nfunction TableCell({ align, gutter, numeric, className, ...rest }: TableCellProps) {\n return (\n <td\n className={cn(\n [\"table-cell\", gutter && \"table-cell-gutter\", numeric && \"table-cell-numeric\"],\n className,\n )}\n data-align={align && align !== \"left\" ? align : undefined}\n {...rest}\n />\n );\n}\n\nexport const Table = Object.assign(TableRoot, {\n Head: TableHead,\n Body: TableBody,\n Foot: TableFoot,\n Row: TableRow,\n HeaderCell: TableHeaderCell,\n Cell: TableCell,\n});\n","import { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { createContext, useContext, useState } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { useAppShell } from \"./AppShell\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\ninterface SidebarContextValue {\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n}\n\nconst SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport interface SidebarProps extends Omit<ComponentProps<\"aside\">, \"onChange\"> {\n /** Controlled collapsed state. Pair with `onCollapsedChange`. */\n collapsed?: boolean;\n /** Uncontrolled initial state. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Accessible label for the mobile drawer dialog. Default: \"Navigation\". */\n drawerLabel?: string;\n}\n\nfunction SidebarRoot({\n collapsed,\n defaultCollapsed,\n onCollapsedChange,\n drawerLabel = \"Navigation\",\n className,\n children,\n ...rest\n}: SidebarProps) {\n const shell = useAppShell();\n const drawerOpen = shell?.mobileDrawerOpen ?? false;\n\n return (\n <SidebarContext.Provider value={{ collapsed, defaultCollapsed, onCollapsedChange }}>\n <aside className={cn(\"sidebar\", className)} {...rest}>\n {drawerOpen ? null : children}\n </aside>\n {shell ? (\n <BaseDialog.Root open={drawerOpen} onOpenChange={(open) => shell.setMobileDrawerOpen(open)}>\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={cn(\"sidebar-drawer-backdrop\", undefined)} />\n <BaseDialog.Popup\n className={cn(\"sidebar-drawer\", undefined)}\n aria-label={drawerLabel}\n onClick={(event) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"a, [data-drawer-close]\")) {\n shell.setMobileDrawerOpen(false);\n }\n }}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n ) : null}\n </SidebarContext.Provider>\n );\n}\n\nexport type SidebarHeaderProps = ComponentProps<\"div\">;\n\nfunction SidebarHeader({ className, ...rest }: SidebarHeaderProps) {\n return <div className={cn(\"sidebar-header\", className)} {...rest} />;\n}\n\nexport type SidebarNavProps = ComponentProps<\"nav\">;\n\nfunction SidebarNav({ className, ...rest }: SidebarNavProps) {\n return <nav className={cn(\"sidebar-nav\", className)} {...rest} />;\n}\n\nexport type SidebarGroupProps = ComponentProps<\"div\">;\n\nfunction SidebarGroup({ className, ...rest }: SidebarGroupProps) {\n return <div className={cn(\"sidebar-group\", className)} {...rest} />;\n}\n\nexport type SidebarGroupLabelProps = ComponentProps<\"div\">;\n\nfunction SidebarGroupLabel({ className, ...rest }: SidebarGroupLabelProps) {\n return <div className={cn(\"sidebar-group-label\", className)} {...rest} />;\n}\n\nexport interface SidebarItemProps extends ComponentProps<\"a\"> {\n active?: boolean;\n /** Leading icon. Rendered inside `<Sidebar.Icon>`. */\n icon?: IconProp;\n /** Trailing badge. Rendered inside `<Sidebar.Badge>`. */\n badge?: ReactNode;\n}\n\nfunction SidebarItem({ active, icon, badge, className, children, ...rest }: SidebarItemProps) {\n return (\n <a\n className={cn(\"sidebar-item\", className)}\n aria-current={active ? \"page\" : undefined}\n {...rest}\n >\n {icon != null ? <SidebarIcon>{renderIcon(icon)}</SidebarIcon> : null}\n {children !== undefined ? <SidebarLabel>{children}</SidebarLabel> : null}\n {badge !== undefined ? <SidebarBadge>{badge}</SidebarBadge> : null}\n </a>\n );\n}\n\nexport type SidebarIconProps = ComponentProps<\"span\">;\n\nfunction SidebarIcon({ className, ...rest }: SidebarIconProps) {\n return <span aria-hidden className={cn(\"sidebar-icon\", className)} {...rest} />;\n}\n\nexport type SidebarLabelProps = ComponentProps<\"span\">;\n\nfunction SidebarLabel({ className, ...rest }: SidebarLabelProps) {\n return <span className={cn(\"sidebar-label\", className)} {...rest} />;\n}\n\nexport type SidebarBadgeProps = ComponentProps<\"span\">;\n\nfunction SidebarBadge({ className, ...rest }: SidebarBadgeProps) {\n return <span className={cn(\"sidebar-badge\", className)} {...rest} />;\n}\n\nexport interface SidebarCollapsibleProps extends Omit<\n ComponentProps<\"details\">,\n \"onToggle\" | \"open\"\n> {\n /** Leading icon for the trigger. Rendered inside `<Sidebar.Icon>`. */\n icon?: IconProp;\n /** Label shown next to the icon. Rendered inside `<Sidebar.Label>`. */\n label?: ReactNode;\n /** Full trigger content. Overrides `icon` + `label`. */\n trigger?: ReactNode;\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n /** Fires when the panel toggles open/closed. */\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction SidebarCollapsible({\n icon,\n label,\n trigger,\n children,\n className,\n open,\n defaultOpen,\n onOpenChange,\n ...rest\n}: SidebarCollapsibleProps) {\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isOpen = isControlled ? open : internalOpen;\n\n const triggerContent = trigger ?? (\n <>\n {icon != null ? <SidebarIcon>{renderIcon(icon)}</SidebarIcon> : null}\n {label !== undefined ? <SidebarLabel>{label}</SidebarLabel> : null}\n </>\n );\n\n return (\n <details\n className={cn(\"sidebar-collapsible\", className)}\n open={isOpen}\n onToggle={(event) => {\n const next = (event.currentTarget as HTMLDetailsElement).open;\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n <summary className={cn(\"sidebar-collapsible-trigger\", undefined)}>{triggerContent}</summary>\n <div className={cn(\"sidebar-collapsible-panel\", undefined)}>{children}</div>\n </details>\n );\n}\n\nexport interface SidebarSubItemProps extends ComponentProps<\"a\"> {\n active?: boolean;\n /** Leading icon. */\n icon?: IconProp;\n badge?: ReactNode;\n}\n\nfunction SidebarSubItem({\n active,\n icon,\n badge,\n className,\n children,\n ...rest\n}: SidebarSubItemProps) {\n return (\n <a\n className={cn(\"sidebar-subitem\", className)}\n aria-current={active ? \"page\" : undefined}\n {...rest}\n >\n {icon != null ? <SidebarIcon>{renderIcon(icon)}</SidebarIcon> : null}\n {children}\n {badge !== undefined ? <SidebarBadge>{badge}</SidebarBadge> : null}\n </a>\n );\n}\n\nexport type SidebarFooterProps = ComponentProps<\"div\">;\n\nfunction SidebarFooter({ className, ...rest }: SidebarFooterProps) {\n return <div className={cn(\"sidebar-footer\", className)} {...rest} />;\n}\n\nexport interface SidebarCollapseToggleProps extends Omit<ComponentProps<\"label\">, \"htmlFor\"> {\n /** Accessible label for the checkbox. Default: \"Toggle sidebar\". */\n label?: string;\n}\n\nfunction SidebarCollapseToggle({\n label = \"Toggle sidebar\",\n className,\n children,\n ...rest\n}: SidebarCollapseToggleProps) {\n const ctx = useContext(SidebarContext);\n const controlledChecked = ctx?.collapsed;\n const isControlled = controlledChecked !== undefined;\n\n return (\n <label className={cn(\"sidebar-collapse-toggle\", className)} {...rest}>\n <input\n type=\"checkbox\"\n className={cn(\"sidebar-toggle\", undefined)}\n aria-label={label}\n {...(isControlled\n ? { checked: controlledChecked }\n : { defaultChecked: ctx?.defaultCollapsed })}\n onChange={(event) => ctx?.onCollapsedChange?.(event.currentTarget.checked)}\n />\n <span className={cn(\"sr-only\", undefined)}>{label}</span>\n {children}\n </label>\n );\n}\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Header: SidebarHeader,\n Nav: SidebarNav,\n Group: SidebarGroup,\n GroupLabel: SidebarGroupLabel,\n Item: SidebarItem,\n Icon: SidebarIcon,\n Label: SidebarLabel,\n Badge: SidebarBadge,\n Collapsible: SidebarCollapsible,\n SubItem: SidebarSubItem,\n Footer: SidebarFooter,\n CollapseToggle: SidebarCollapseToggle,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/cn.ts","../src/Accordion.tsx","../src/AdminRoot.tsx","../src/icon.ts","../src/Alert.tsx","../src/AppShell.tsx","../src/Badge.tsx","../src/BrandTile.tsx","../src/Button.tsx","../src/ButtonGroup.tsx","../src/Breadcrumbs.tsx","../src/Input.tsx","../src/FileInput.tsx","../src/InputGroup.tsx","../src/Pagination.tsx","../src/Textarea.tsx","../src/Checkbox.tsx","../src/Radio.tsx","../src/Progress.tsx","../src/Spinner.tsx","../src/Switch.tsx","../src/Select.tsx","../src/Card.tsx","../src/Dialog.tsx","../src/Field.tsx","../src/Footer.tsx","../src/Menu.tsx","../src/Navbar.tsx","../src/Tabs.tsx","../src/Tooltip.tsx","../src/PropertyList.tsx","../src/Table.tsx","../src/Sidebar.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\n\n/**\n * Every admin class name is prefixed so the bundle can coexist with a host\n * page's CSS without colliding on common names like `.btn` or `.card`. The\n * matching CSS lives in `@aortl/admin-css/admin.scoped.css` (built by\n * `wrap-scoped.mjs`), which carries the same prefix on every selector.\n */\nconst PREFIX = \"_ao-\";\n\nfunction prefixTokens(value: string): string {\n if (!value) return \"\";\n return value\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => `${PREFIX}${token}`)\n .join(\" \");\n}\n\nfunction join(...parts: Array<string | undefined>): string {\n return parts.filter(Boolean).join(\" \");\n}\n\n/**\n * className merger that preserves Base UI's render-prop className form.\n *\n * `base` carries admin's own classes (e.g. `[\"btn\", \"btn-primary\"]`) and is\n * always prefixed with `_ao-`. `className` is the consumer-supplied prop and\n * passes through verbatim — it lives in the caller's namespace.\n *\n * Base UI components accept `className: string | ((state) => string | undefined)`.\n * The function form has to be deferred until Base UI invokes it with the\n * component state.\n */\nexport function cn(base: ClassValue, className: string | undefined): string;\nexport function cn<TState>(\n base: ClassValue,\n className: (state: TState) => string | undefined,\n): (state: TState) => string;\nexport function cn<TState>(\n base: ClassValue,\n className: string | ((state: TState) => string | undefined) | undefined,\n): string | ((state: TState) => string);\nexport function cn<TState>(\n base: ClassValue,\n className: string | ((state: TState) => string | undefined) | undefined,\n): string | ((state: TState) => string) {\n const baseClasses = prefixTokens(clsx(base));\n if (typeof className === \"function\") {\n return (state) => join(baseClasses, className(state) ?? undefined);\n }\n return join(baseClasses, className);\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type AccordionProps = ComponentProps<\"div\">;\n\nfunction AccordionRoot({ className, ...rest }: AccordionProps) {\n return <div className={cn(\"accordion\", className)} {...rest} />;\n}\n\nexport type AccordionItemProps = ComponentProps<\"details\">;\n\nfunction AccordionItem({ className, ...rest }: AccordionItemProps) {\n return <details className={cn(\"accordion-item\", className)} {...rest} />;\n}\n\nexport type AccordionSummaryProps = ComponentProps<\"summary\">;\n\nfunction AccordionSummary({ className, ...rest }: AccordionSummaryProps) {\n return <summary className={cn(\"accordion-summary\", className)} {...rest} />;\n}\n\nexport type AccordionContentProps = ComponentProps<\"div\">;\n\nfunction AccordionContent({ className, ...rest }: AccordionContentProps) {\n return <div className={cn(\"accordion-content\", className)} {...rest} />;\n}\n\nexport const Accordion = Object.assign(AccordionRoot, {\n Item: AccordionItem,\n Summary: AccordionSummary,\n Content: AccordionContent,\n});\n","import type { CSSProperties, ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport interface AdminRootProps extends ComponentProps<\"div\"> {\n /**\n * Force a color scheme for this subtree. Sets `data-theme`, which flips the\n * semantic tokens and `color-scheme`. Omit to follow the OS preference.\n */\n theme?: \"light\" | \"dark\";\n /**\n * CSS color (e.g. `var(--color-purple-600)`) applied as `--color-system-accent`\n * to brand-shift the navbar + footer stripes and `<BrandTile>`. See\n * [Customize › System accent](https://digital-udvikling.github.io/admin-design-system/basics/customize/#system-accent).\n */\n systemAccent?: string;\n}\n\nexport function AdminRoot({ className, theme, systemAccent, style, ...rest }: AdminRootProps) {\n const rootStyle =\n systemAccent !== undefined\n ? ({ ...style, \"--color-system-accent\": systemAccent } as CSSProperties)\n : style;\n\n return (\n <div\n className={cn(\"admin-root\", className)}\n style={rootStyle}\n {...rest}\n {...(theme !== undefined && { \"data-theme\": theme })}\n />\n );\n}\n","import { createElement, isValidElement } from \"react\";\nimport type { ComponentType, ReactElement, ReactNode } from \"react\";\n\n/**\n * Props every icon component is expected to accept. Matches `@tabler/icons-react`\n * (size + standard SVG attributes), but loose enough to accept other libraries.\n */\nexport interface IconRenderProps {\n size?: number | string;\n \"aria-hidden\"?: boolean | \"true\" | \"false\";\n}\n\nexport type IconComponent = ComponentType<IconRenderProps>;\n\n/**\n * The value a component prop named `icon` will accept. Either:\n * - a component reference (`icon={IconHome}`) — rendered with `size={16} aria-hidden`,\n * - or an already-instantiated React element (`icon={<IconHome size={20} />}`) — rendered as-is.\n */\nexport type IconProp = IconComponent | ReactElement | null | undefined;\n\n/**\n * Render an `IconProp` to a React node, defaulting to `size={16} aria-hidden`\n * when given a component reference.\n *\n * Anything that is not `null`/`undefined` and not already a React element is\n * treated as a component type — `createElement` accepts function components,\n * `forwardRef`s (e.g. `@tabler/icons-react`), `memo`, etc.\n */\nexport function renderIcon(icon: IconProp, size: number = 16): ReactNode {\n if (icon == null) return null;\n if (isValidElement(icon)) return icon;\n return createElement(icon as IconComponent, { size, \"aria-hidden\": true });\n}\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface AlertProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n variant?: AlertVariant;\n /** Leading icon. Rendered as the first child so the CSS grid kicks in. */\n icon?: IconProp;\n /** Renders as `<Alert.Title>`. */\n title?: ReactNode;\n /** Renders as `<Alert.Description>`. */\n description?: ReactNode;\n}\n\nfunction AlertRoot({\n variant = \"info\",\n icon,\n title,\n description,\n className,\n role,\n children,\n ...rest\n}: AlertProps) {\n const defaultRole = variant === \"danger\" || variant === \"warning\" ? \"alert\" : \"status\";\n return (\n <div\n role={role ?? defaultRole}\n className={cn([\"alert\", `alert-${variant}`], className)}\n {...rest}\n >\n {renderIcon(icon)}\n {title !== undefined ? <AlertTitle>{title}</AlertTitle> : null}\n {description !== undefined ? <AlertDescription>{description}</AlertDescription> : null}\n {children}\n </div>\n );\n}\n\nexport type AlertTitleProps = ComponentProps<\"strong\">;\nfunction AlertTitle({ className, ...rest }: AlertTitleProps) {\n return <strong className={cn(\"alert-title\", className)} {...rest} />;\n}\n\nexport type AlertDescriptionProps = ComponentProps<\"p\">;\nfunction AlertDescription({ className, ...rest }: AlertDescriptionProps) {\n return <p className={cn(\"alert-description\", className)} {...rest} />;\n}\n\nexport const Alert = Object.assign(AlertRoot, {\n Title: AlertTitle,\n Description: AlertDescription,\n});\n","import { createContext, useContext, useMemo, useState } from \"react\";\nimport type { CSSProperties, ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\n\ninterface AppShellContextValue {\n mobileDrawerOpen: boolean;\n setMobileDrawerOpen: (open: boolean) => void;\n hasSidebar: boolean;\n}\n\nconst AppShellContext = createContext<AppShellContextValue | null>(null);\n\nexport function useAppShell(): AppShellContextValue | null {\n return useContext(AppShellContext);\n}\n\nexport interface AppShellProps extends ComponentProps<\"div\"> {\n hasSidebar?: boolean;\n hasFooter?: boolean;\n mobileDrawerOpen?: boolean;\n defaultMobileDrawerOpen?: boolean;\n onMobileDrawerOpenChange?: (open: boolean) => void;\n /**\n * CSS color (e.g. `var(--color-purple-600)`) applied as `--color-system-accent`\n * to the shell root. See [Customize › System accent](https://digital-udvikling.github.io/admin-design-system/basics/customize/#system-accent).\n */\n systemAccent?: string;\n children?: ReactNode;\n}\n\nfunction AppShellRoot({\n hasSidebar = false,\n hasFooter = false,\n mobileDrawerOpen,\n defaultMobileDrawerOpen = false,\n onMobileDrawerOpenChange,\n systemAccent,\n className,\n style,\n children,\n ...rest\n}: AppShellProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultMobileDrawerOpen);\n const isControlled = mobileDrawerOpen !== undefined;\n const open = isControlled ? mobileDrawerOpen : uncontrolledOpen;\n\n const value = useMemo<AppShellContextValue>(\n () => ({\n mobileDrawerOpen: open,\n setMobileDrawerOpen: (next) => {\n if (!isControlled) setUncontrolledOpen(next);\n onMobileDrawerOpenChange?.(next);\n },\n hasSidebar,\n }),\n [open, isControlled, onMobileDrawerOpenChange, hasSidebar],\n );\n\n const rootStyle =\n systemAccent !== undefined\n ? ({ ...style, \"--color-system-accent\": systemAccent } as CSSProperties)\n : style;\n\n return (\n <AppShellContext.Provider value={value}>\n <div\n className={cn(\n [\n \"app-shell\",\n hasSidebar && \"app-shell-with-sidebar\",\n hasFooter && \"app-shell-with-footer\",\n ],\n className,\n )}\n style={rootStyle}\n {...rest}\n >\n {children}\n </div>\n </AppShellContext.Provider>\n );\n}\n\nexport type AppShellMainProps = ComponentProps<\"main\">;\n\nfunction AppShellMain({ className, ...rest }: AppShellMainProps) {\n return <main className={cn(\"app-shell-main\", className)} {...rest} />;\n}\n\nexport const AppShell = Object.assign(AppShellRoot, {\n Main: AppShellMain,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type BadgeVariant = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\" | \"primary\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps extends ComponentProps<\"span\"> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n /** Leading icon. */\n icon?: IconProp;\n}\n\nexport function Badge({\n variant = \"neutral\",\n size = \"md\",\n icon,\n className,\n children,\n ...rest\n}: BadgeProps) {\n return (\n <span\n className={cn([\"badge\", `badge-${variant}`, size !== \"md\" && `badge-${size}`], className)}\n {...rest}\n >\n {renderIcon(icon, size === \"sm\" ? 10 : 12)}\n {children}\n </span>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface BrandTileProps extends ComponentProps<\"span\"> {\n /** 1–2 letter monogram. Ignored if `icon` is provided. */\n monogram?: string;\n /** Icon component or element. Takes precedence over `monogram`. */\n icon?: IconProp;\n}\n\nexport function BrandTile({ monogram, icon, className, children, ...rest }: BrandTileProps) {\n return (\n <span className={cn(\"brand-tile\", className)} aria-hidden {...rest}>\n {icon ? renderIcon(icon, 14) : (children ?? monogram)}\n </span>\n );\n}\n","import { Button as BaseButton } from \"@base-ui/react/button\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends ComponentProps<typeof BaseButton> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n fullWidth?: boolean;\n /** Shows a spinner in place of the leading icon and disables interaction.\n * Sets `aria-busy=\"true\"` and the native `disabled` attribute. */\n loading?: boolean;\n /** Leading icon. Pass a component (`icon={IconPlus}`) or an element. */\n icon?: IconProp;\n /** Trailing icon. Pass a component (`iconTrailing={IconArrowRight}`) or an element. */\n iconTrailing?: IconProp;\n}\n\nexport function Button({\n variant = \"primary\",\n size = \"md\",\n fullWidth,\n loading,\n icon,\n iconTrailing,\n className,\n type = \"button\",\n disabled,\n children,\n ...rest\n}: ButtonProps) {\n const iconOnly = children == null && (icon != null || iconTrailing != null);\n return (\n <BaseButton\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cn(\n [\n \"btn\",\n `btn-${variant}`,\n size !== \"md\" && `btn-${size}`,\n fullWidth && \"btn-full-width\",\n loading && \"btn-loading\",\n iconOnly && \"btn-square\",\n ],\n className,\n )}\n {...rest}\n >\n {loading ? null : renderIcon(icon)}\n {children}\n {renderIcon(iconTrailing)}\n </BaseButton>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type ButtonGroupOrientation = \"horizontal\" | \"vertical\";\n\nexport interface ButtonGroupProps extends ComponentProps<\"div\"> {\n orientation?: ButtonGroupOrientation;\n}\n\nexport function ButtonGroup({\n orientation = \"horizontal\",\n role = \"group\",\n className,\n ...rest\n}: ButtonGroupProps) {\n return (\n <div\n role={role}\n className={cn([\"btn-group\", orientation === \"vertical\" && \"btn-group-vertical\"], className)}\n {...rest}\n />\n );\n}\n","import { Children, Fragment, isValidElement, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface BreadcrumbsProps extends ComponentProps<\"nav\"> {\n /** Custom separator between items. Defaults to \"/\" from CSS. */\n separator?: ReactNode;\n /** Accessible label for the nav landmark. */\n \"aria-label\"?: string;\n}\n\nfunction BreadcrumbsRoot({\n separator,\n className,\n children,\n \"aria-label\": ariaLabel = \"Breadcrumb\",\n ...rest\n}: BreadcrumbsProps) {\n const items = Children.toArray(children).filter(isValidElement);\n return (\n <nav aria-label={ariaLabel} className={cn(\"breadcrumbs\", className)} {...rest}>\n <ol>\n {items.map((child, i) => (\n <Fragment key={child.key ?? i}>\n {child}\n {i < items.length - 1 ? <BreadcrumbSeparator>{separator}</BreadcrumbSeparator> : null}\n </Fragment>\n ))}\n </ol>\n </nav>\n );\n}\n\ntype BreadcrumbItemAsLink = ComponentProps<\"a\"> & {\n href: string;\n current?: boolean;\n icon?: IconProp;\n};\ntype BreadcrumbItemAsSpan = ComponentProps<\"span\"> & {\n href?: undefined;\n current?: boolean;\n icon?: IconProp;\n};\n\nexport type BreadcrumbItemProps = BreadcrumbItemAsLink | BreadcrumbItemAsSpan;\n\nfunction BreadcrumbItem(props: BreadcrumbItemProps) {\n if (props.href !== undefined) {\n const { className, current, icon, children, ...rest } = props;\n return (\n <li>\n <a\n className={cn(\"breadcrumb-item\", className)}\n aria-current={current ? \"page\" : undefined}\n {...rest}\n >\n {renderIcon(icon, 14)}\n {children}\n </a>\n </li>\n );\n }\n const { className, current, icon, children, ...rest } = props;\n return (\n <li>\n <span\n className={cn(\"breadcrumb-item\", className)}\n aria-current={current ? \"page\" : undefined}\n {...rest}\n >\n {renderIcon(icon, 14)}\n {children}\n </span>\n </li>\n );\n}\n\nexport type BreadcrumbSeparatorProps = ComponentProps<\"li\">;\n\n// `role=\"presentation\"` so the separator doesn't get announced as a list item;\n// `<li>` so the markup is valid inside `<ol>`.\nfunction BreadcrumbSeparator({ className, children, ...rest }: BreadcrumbSeparatorProps) {\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"breadcrumb-separator\", className)}\n {...rest}\n >\n {children}\n </li>\n );\n}\n\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Item: BreadcrumbItem,\n Separator: BreadcrumbSeparator,\n});\n","import { Input as BaseInput } from \"@base-ui/react/input\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type InputVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\n\ntype BaseInputProps = Omit<ComponentProps<typeof BaseInput>, \"size\">;\n\nexport interface InputProps extends BaseInputProps {\n variant?: InputVariant;\n inputSize?: InputSize;\n}\n\nexport function Input({\n variant = \"bordered\",\n inputSize = \"md\",\n className,\n type = \"text\",\n ...rest\n}: InputProps) {\n return (\n <BaseInput\n type={type}\n className={cn(\n [\"input\", `input-${variant}`, inputSize !== \"md\" && `input-${inputSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n","import { Input as BaseInput } from \"@base-ui/react/input\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type FileInputVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type FileInputSize = \"sm\" | \"md\" | \"lg\";\n\ntype BaseInputProps = Omit<ComponentProps<typeof BaseInput>, \"size\" | \"type\">;\n\nexport interface FileInputProps extends BaseInputProps {\n variant?: FileInputVariant;\n inputSize?: FileInputSize;\n}\n\nexport function FileInput({\n variant = \"bordered\",\n inputSize = \"md\",\n className,\n ...rest\n}: FileInputProps) {\n return (\n <BaseInput\n type=\"file\"\n className={cn(\n [\"file-input\", `file-input-${variant}`, inputSize !== \"md\" && `file-input-${inputSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type InputGroupProps = ComponentProps<\"div\">;\n\nfunction InputGroupRoot({ className, ...rest }: InputGroupProps) {\n return <div className={cn(\"input-group\", className)} {...rest} />;\n}\n\nexport type InputGroupAddonProps = ComponentProps<\"span\">;\n\nfunction InputGroupAddon({ className, ...rest }: InputGroupAddonProps) {\n return <span className={cn(\"input-group-addon\", className)} {...rest} />;\n}\n\nexport const InputGroup = Object.assign(InputGroupRoot, {\n Addon: InputGroupAddon,\n});\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type PaginationItem =\n | { type: \"page\"; page: number; selected: boolean }\n | { type: \"previous\"; page: number; disabled: boolean }\n | { type: \"next\"; page: number; disabled: boolean }\n | { type: \"ellipsis\"; key: \"start\" | \"end\" };\n\nexport interface PaginationProps extends Omit<ComponentProps<\"nav\">, \"onChange\"> {\n /** Current page, 1-based. */\n page: number;\n /** Total number of pages. */\n total: number;\n /** Called when a page number, prev, or next button is activated. */\n onPageChange: (page: number) => void;\n /** Pages shown either side of `page`. Default 1. */\n siblingCount?: number;\n /** Pages always shown at the start and end. Default 1. */\n boundaryCount?: number;\n /** Icon for the previous-page control. Defaults to a built-in chevron. */\n previousIcon?: IconProp;\n /** Icon for the next-page control. Defaults to a built-in chevron. */\n nextIcon?: IconProp;\n /** Override the renderer for one item — useful for routing libraries that\n * expect their own Link component (Next.js, TanStack Router, etc.). */\n renderItem?: (item: PaginationItem) => ReactNode;\n}\n\n/**\n * Compute the items to render for a given `page` / `total`. Always returns:\n * previous, ...numbers/ellipses, next\n * with `boundaryCount` items on each end and `siblingCount` items around `page`.\n * Pure: no React state, safe to call during render.\n */\nexport function getPaginationItems({\n page,\n total,\n siblingCount = 1,\n boundaryCount = 1,\n}: {\n page: number;\n total: number;\n siblingCount?: number;\n boundaryCount?: number;\n}): PaginationItem[] {\n if (total <= 0) {\n return [\n { type: \"previous\", page: 1, disabled: true },\n { type: \"next\", page: 1, disabled: true },\n ];\n }\n const clampedPage = Math.min(Math.max(1, page), total);\n const items: PaginationItem[] = [];\n items.push({ type: \"previous\", page: clampedPage - 1, disabled: clampedPage === 1 });\n\n const startPages = range(1, Math.min(boundaryCount, total));\n const endPages = range(Math.max(total - boundaryCount + 1, boundaryCount + 1), total);\n\n const siblingsStart = Math.max(\n Math.min(clampedPage - siblingCount, total - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n );\n const siblingsEnd = Math.min(\n Math.max(clampedPage + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? (endPages[0] as number) - 2 : total - 1,\n );\n\n const middle: (number | \"ellipsis-start\" | \"ellipsis-end\")[] = [];\n // Start ellipsis (or extra page when gap is exactly 1)\n if (siblingsStart > boundaryCount + 2) {\n middle.push(\"ellipsis-start\");\n } else if (boundaryCount + 1 < total - boundaryCount) {\n middle.push(boundaryCount + 1);\n }\n\n middle.push(...range(siblingsStart, siblingsEnd));\n\n // End ellipsis (or extra page when gap is exactly 1)\n if (siblingsEnd < total - boundaryCount - 1) {\n middle.push(\"ellipsis-end\");\n } else if (total - boundaryCount > boundaryCount) {\n middle.push(total - boundaryCount);\n }\n\n const seen = new Set<number>();\n const pushNumber = (n: number) => {\n if (n < 1 || n > total || seen.has(n)) return;\n seen.add(n);\n items.push({ type: \"page\", page: n, selected: n === clampedPage });\n };\n\n for (const n of startPages) pushNumber(n);\n for (const entry of middle) {\n if (entry === \"ellipsis-start\") {\n items.push({ type: \"ellipsis\", key: \"start\" });\n } else if (entry === \"ellipsis-end\") {\n items.push({ type: \"ellipsis\", key: \"end\" });\n } else {\n pushNumber(entry);\n }\n }\n for (const n of endPages) pushNumber(n);\n\n items.push({ type: \"next\", page: clampedPage + 1, disabled: clampedPage === total });\n return items;\n}\n\nfunction range(start: number, end: number): number[] {\n if (end < start) return [];\n const out: number[] = [];\n for (let i = start; i <= end; i++) out.push(i);\n return out;\n}\n\nexport function Pagination({\n page,\n total,\n onPageChange,\n siblingCount = 1,\n boundaryCount = 1,\n previousIcon,\n nextIcon,\n renderItem,\n className,\n \"aria-label\": ariaLabel = \"Pagination\",\n ...rest\n}: PaginationProps) {\n const items = getPaginationItems({ page, total, siblingCount, boundaryCount });\n const prev = previousIcon !== undefined ? renderIcon(previousIcon, 16) : <ChevronLeftIcon />;\n const next = nextIcon !== undefined ? renderIcon(nextIcon, 16) : <ChevronRightIcon />;\n return (\n <nav aria-label={ariaLabel} className={cn(\"pagination\", className)} {...rest}>\n <ul>\n {items.map((item, i) => (\n <li key={paginationItemKey(item, i)} className={cn(\"page-item\", undefined)}>\n {renderItem ? renderItem(item) : defaultRender(item, onPageChange, prev, next)}\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n\nfunction ChevronLeftIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M15 6l-6 6 6 6\" />\n </svg>\n );\n}\n\nfunction ChevronRightIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n );\n}\n\nfunction paginationItemKey(item: PaginationItem, index: number): string {\n switch (item.type) {\n case \"previous\":\n return \"previous\";\n case \"next\":\n return \"next\";\n case \"ellipsis\":\n return `ellipsis-${item.key}`;\n case \"page\":\n return `page-${item.page}`;\n default:\n return `${index}`;\n }\n}\n\nfunction defaultRender(\n item: PaginationItem,\n onPageChange: (n: number) => void,\n prev: ReactNode,\n next: ReactNode,\n): ReactNode {\n switch (item.type) {\n case \"previous\":\n return (\n <button\n type=\"button\"\n className={cn(\"page-link\", undefined)}\n aria-label=\"Previous page\"\n aria-disabled={item.disabled || undefined}\n disabled={item.disabled}\n onClick={() => onPageChange(item.page)}\n >\n {prev}\n </button>\n );\n case \"next\":\n return (\n <button\n type=\"button\"\n className={cn(\"page-link\", undefined)}\n aria-label=\"Next page\"\n aria-disabled={item.disabled || undefined}\n disabled={item.disabled}\n onClick={() => onPageChange(item.page)}\n >\n {next}\n </button>\n );\n case \"ellipsis\":\n return (\n <span className={cn(\"page-ellipsis\", undefined)} aria-hidden=\"true\">\n …\n </span>\n );\n case \"page\":\n return (\n <button\n type=\"button\"\n className={cn([\"page-link\", item.selected && \"active\"], undefined)}\n aria-current={item.selected ? \"page\" : undefined}\n aria-label={`Page ${item.page}`}\n onClick={() => onPageChange(item.page)}\n >\n {item.page}\n </button>\n );\n }\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TextareaVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TextareaProps extends Omit<ComponentProps<\"textarea\">, \"size\"> {\n variant?: TextareaVariant;\n textareaSize?: TextareaSize;\n}\n\nexport function Textarea({\n variant = \"bordered\",\n textareaSize = \"md\",\n className,\n ...rest\n}: TextareaProps) {\n return (\n <textarea\n className={cn(\n [\"textarea\", `textarea-${variant}`, textareaSize !== \"md\" && `textarea-${textareaSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n","import { Checkbox as BaseCheckbox } from \"@base-ui/react/checkbox\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type CheckboxProps = ComponentProps<typeof BaseCheckbox.Root>;\n\nfunction CheckboxRoot({ className, children, ...rest }: CheckboxProps) {\n return (\n <BaseCheckbox.Root className={cn(\"checkbox\", className)} {...rest}>\n {children ?? (\n <CheckboxIndicator>\n <CheckIcon />\n </CheckboxIndicator>\n )}\n </BaseCheckbox.Root>\n );\n}\n\nexport type CheckboxIndicatorProps = ComponentProps<typeof BaseCheckbox.Indicator>;\n\nfunction CheckboxIndicator({ className, ...rest }: CheckboxIndicatorProps) {\n return <BaseCheckbox.Indicator className={cn(\"checkbox-indicator\", className)} {...rest} />;\n}\n\nfunction CheckIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"100%\"\n height=\"100%\"\n aria-hidden\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nexport const Checkbox = Object.assign(CheckboxRoot, {\n Indicator: CheckboxIndicator,\n});\n","import { Radio as BaseRadio } from \"@base-ui/react/radio\";\nimport { RadioGroup as BaseRadioGroup } from \"@base-ui/react/radio-group\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type RadioProps = ComponentProps<typeof BaseRadio.Root>;\n\nfunction RadioRoot({ className, children, ...rest }: RadioProps) {\n return (\n <BaseRadio.Root className={cn(\"radio\", className)} {...rest}>\n {children ?? <RadioIndicator />}\n </BaseRadio.Root>\n );\n}\n\nexport type RadioIndicatorProps = ComponentProps<typeof BaseRadio.Indicator>;\n\nfunction RadioIndicator({ className, ...rest }: RadioIndicatorProps) {\n return <BaseRadio.Indicator className={cn(\"radio-indicator\", className)} {...rest} />;\n}\n\nexport const Radio = Object.assign(RadioRoot, {\n Indicator: RadioIndicator,\n});\n\nexport type RadioGroupOrientation = \"horizontal\" | \"vertical\";\n\nexport interface RadioGroupProps extends ComponentProps<typeof BaseRadioGroup> {\n orientation?: RadioGroupOrientation;\n}\n\nexport function RadioGroup({ orientation = \"horizontal\", className, ...rest }: RadioGroupProps) {\n return (\n <BaseRadioGroup\n className={cn(\n [\"radio-group\", orientation === \"vertical\" && \"radio-group-vertical\"],\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type ProgressVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps extends Omit<ComponentProps<\"progress\">, \"value\"> {\n /** Current value in `[0, max]`. Omit (or pass `undefined`) for an indeterminate bar. */\n value?: number;\n max?: number;\n variant?: ProgressVariant;\n size?: ProgressSize;\n}\n\nexport function Progress({\n value,\n max = 100,\n variant = \"primary\",\n size = \"md\",\n className,\n ...rest\n}: ProgressProps) {\n return (\n <progress\n value={value}\n max={max}\n className={cn(\n [\n \"progress\",\n variant !== \"primary\" && `progress-${variant}`,\n size !== \"md\" && `progress-${size}`,\n ],\n className,\n )}\n {...rest}\n />\n );\n}\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SpinnerProps extends ComponentProps<\"output\"> {\n size?: SpinnerSize;\n /** Accessible label announced by screen readers. Defaults to \"Loading\". */\n label?: string;\n}\n\n// `<output>` has an implicit `role=\"status\"`, so screen readers announce the\n// `aria-label` politely when the spinner appears. Pure CSS handles the visual.\nexport function Spinner({ size = \"md\", label = \"Loading\", className, ...rest }: SpinnerProps) {\n return (\n <output\n aria-label={label}\n className={cn([\"spinner\", size !== \"md\" && `spinner-${size}`], className)}\n {...rest}\n />\n );\n}\n","import { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SwitchProps = ComponentProps<typeof BaseSwitch.Root>;\n\nfunction SwitchRoot({ className, children, ...rest }: SwitchProps) {\n return (\n <BaseSwitch.Root className={cn(\"switch\", className)} {...rest}>\n {children ?? <SwitchThumb />}\n </BaseSwitch.Root>\n );\n}\n\nexport type SwitchThumbProps = ComponentProps<typeof BaseSwitch.Thumb>;\n\nfunction SwitchThumb({ className, ...rest }: SwitchThumbProps) {\n return <BaseSwitch.Thumb className={cn(\"switch-thumb\", className)} {...rest} />;\n}\n\nexport const Switch = Object.assign(SwitchRoot, {\n Thumb: SwitchThumb,\n});\n","import { Select as BaseSelect } from \"@base-ui/react/select\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type SelectProps = ComponentProps<typeof BaseSelect.Root>;\n\nfunction SelectRoot(props: SelectProps) {\n return <BaseSelect.Root {...props} />;\n}\n\nexport type SelectTriggerVariant = \"bordered\" | \"ghost\" | \"danger\";\nexport type SelectTriggerSize = \"sm\" | \"md\" | \"lg\";\n\ntype BaseSelectTriggerProps = Omit<ComponentProps<typeof BaseSelect.Trigger>, \"size\">;\n\nexport interface SelectTriggerProps extends BaseSelectTriggerProps {\n variant?: SelectTriggerVariant;\n triggerSize?: SelectTriggerSize;\n}\n\nfunction SelectTrigger({\n variant = \"bordered\",\n triggerSize = \"md\",\n className,\n ...rest\n}: SelectTriggerProps) {\n return (\n <BaseSelect.Trigger\n className={cn(\n [\"select\", `select-${variant}`, triggerSize !== \"md\" && `select-${triggerSize}`],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport type SelectValueProps = ComponentProps<typeof BaseSelect.Value>;\n\nfunction SelectValue(props: SelectValueProps) {\n return <BaseSelect.Value {...props} />;\n}\n\nexport type SelectIconProps = ComponentProps<typeof BaseSelect.Icon>;\n\nfunction SelectIcon({ className, children, ...rest }: SelectIconProps) {\n return (\n <BaseSelect.Icon className={cn(\"select-icon\", className)} {...rest}>\n {children ?? <ChevronDownIcon />}\n </BaseSelect.Icon>\n );\n}\n\nexport interface SelectPopupProps extends ComponentProps<typeof BaseSelect.Popup> {\n sideOffset?: number;\n}\n\nfunction SelectPopup({ className, sideOffset = 4, children, ...rest }: SelectPopupProps) {\n return (\n <BaseSelect.Portal>\n <BaseSelect.Positioner sideOffset={sideOffset}>\n <BaseSelect.Popup className={cn(\"select-popup\", className)} {...rest}>\n {children}\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n );\n}\n\nexport type SelectItemProps = ComponentProps<typeof BaseSelect.Item>;\n\nfunction SelectItem({ className, ...rest }: SelectItemProps) {\n return <BaseSelect.Item className={cn(\"select-item\", className)} {...rest} />;\n}\n\nexport type SelectItemTextProps = ComponentProps<typeof BaseSelect.ItemText>;\n\nfunction SelectItemText(props: SelectItemTextProps) {\n return <BaseSelect.ItemText {...props} />;\n}\n\nexport type SelectItemIndicatorProps = ComponentProps<typeof BaseSelect.ItemIndicator>;\n\nfunction SelectItemIndicator({ className, children, ...rest }: SelectItemIndicatorProps) {\n return (\n <BaseSelect.ItemIndicator className={cn(\"select-item-indicator\", className)} {...rest}>\n {children ?? <CheckIcon />}\n </BaseSelect.ItemIndicator>\n );\n}\n\nexport type SelectGroupProps = ComponentProps<typeof BaseSelect.Group>;\n\nfunction SelectGroup(props: SelectGroupProps) {\n return <BaseSelect.Group {...props} />;\n}\n\nexport type SelectGroupLabelProps = ComponentProps<typeof BaseSelect.GroupLabel>;\n\nfunction SelectGroupLabel({ className, ...rest }: SelectGroupLabelProps) {\n return <BaseSelect.GroupLabel className={cn(\"select-group-label\", className)} {...rest} />;\n}\n\nfunction CheckIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"100%\"\n height=\"100%\"\n aria-hidden\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nfunction ChevronDownIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n width=\"100%\"\n height=\"100%\"\n aria-hidden\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n}\n\nexport const Select = Object.assign(SelectRoot, {\n Trigger: SelectTrigger,\n Value: SelectValue,\n Icon: SelectIcon,\n Popup: SelectPopup,\n Item: SelectItem,\n ItemText: SelectItemText,\n ItemIndicator: SelectItemIndicator,\n Group: SelectGroup,\n GroupLabel: SelectGroupLabel,\n});\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface CardContainerProps extends ComponentProps<\"div\"> {\n bordered?: boolean;\n compact?: boolean;\n}\n\n/**\n * The bare `.card` container — no body, no title. Use this when you need to\n * compose the internals yourself (e.g. a media block above the body).\n */\nfunction CardContainer({ bordered, compact, className, ...rest }: CardContainerProps) {\n return (\n <div\n className={cn([\"card\", bordered && \"card-bordered\", compact && \"card-compact\"], className)}\n {...rest}\n />\n );\n}\n\nexport interface CardProps extends Omit<ComponentProps<\"div\">, \"title\"> {\n bordered?: boolean;\n compact?: boolean;\n /** Leading icon for the title row. */\n icon?: IconProp;\n /** Renders as `<Card.Title>`. */\n title?: ReactNode;\n /** Renders as `<Card.Description>`. */\n description?: ReactNode;\n /** Trailing header controls (close, edit, …). Renders as `<Card.Toolbar>`. */\n toolbar?: ReactNode;\n /** Renders as `<Card.Actions>`. */\n actions?: ReactNode;\n}\n\n/**\n * Standard card: a `.card` container with a single `.card-body` that lays out\n * an optional title (with icon), description, children, and actions. For\n * anything outside that shape, use `<Card.Container>` and compose by hand.\n */\nfunction CardRoot({\n bordered,\n compact,\n icon,\n title,\n description,\n toolbar,\n actions,\n className,\n children,\n ...rest\n}: CardProps) {\n const hasTitle = icon !== undefined || title !== undefined;\n const titleEl = hasTitle ? <CardTitle icon={icon}>{title}</CardTitle> : null;\n return (\n <CardContainer bordered={bordered} compact={compact} className={className} {...rest}>\n <CardBody>\n {toolbar !== undefined ? (\n <CardHeader>\n {titleEl}\n <CardToolbar>{toolbar}</CardToolbar>\n </CardHeader>\n ) : (\n titleEl\n )}\n {description !== undefined ? <CardDescription>{description}</CardDescription> : null}\n {children}\n {actions !== undefined ? <CardActions>{actions}</CardActions> : null}\n </CardBody>\n </CardContainer>\n );\n}\n\nexport type CardBodyProps = ComponentProps<\"div\">;\nfunction CardBody({ className, ...rest }: CardBodyProps) {\n return <div className={cn(\"card-body\", className)} {...rest} />;\n}\n\nexport type CardHeaderProps = ComponentProps<\"div\">;\nfunction CardHeader({ className, ...rest }: CardHeaderProps) {\n return <div className={cn(\"card-header\", className)} {...rest} />;\n}\n\nexport type CardToolbarProps = ComponentProps<\"div\">;\nfunction CardToolbar({ className, ...rest }: CardToolbarProps) {\n return <div className={cn(\"card-toolbar\", className)} {...rest} />;\n}\n\nexport interface CardTitleProps extends ComponentProps<\"h3\"> {\n /** Leading icon. */\n icon?: IconProp;\n}\nfunction CardTitle({ icon, className, children, ...rest }: CardTitleProps) {\n return (\n <h3 className={cn(\"card-title\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </h3>\n );\n}\n\nexport type CardDescriptionProps = ComponentProps<\"p\">;\nfunction CardDescription({ className, ...rest }: CardDescriptionProps) {\n return <p className={cn(\"card-description\", className)} {...rest} />;\n}\n\nexport type CardActionsProps = ComponentProps<\"div\">;\nfunction CardActions({ className, ...rest }: CardActionsProps) {\n return <div className={cn(\"card-actions\", className)} {...rest} />;\n}\n\nexport const Card = Object.assign(CardRoot, {\n Container: CardContainer,\n Body: CardBody,\n Header: CardHeader,\n Toolbar: CardToolbar,\n Title: CardTitle,\n Description: CardDescription,\n Actions: CardActions,\n});\n","import {\n createContext,\n useContext,\n useEffect,\n useRef,\n type ComponentProps,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport type DialogSize = \"sm\" | \"md\" | \"lg\";\nexport type DialogClosedBy = \"any\" | \"closerequest\" | \"none\";\n\ninterface DialogContextValue {\n close: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue | null>(null);\n\nfunction DefaultCloseIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\nexport interface DialogContainerProps extends Omit<ComponentProps<\"dialog\">, \"open\"> {\n /** Controlled open state. Omit for uncontrolled (e.g. driven by Invoker Commands). */\n open?: boolean;\n /** Fires when the dialog closes (Esc, backdrop, close button, form method=\"dialog\"). */\n onOpenChange?: (open: boolean) => void;\n /** Width preset. Default: `\"md\"`. */\n size?: DialogSize;\n /**\n * Native `closedby` attribute. `\"any\"` allows Esc + backdrop click,\n * `\"closerequest\"` only Esc, `\"none\"` neither. Default: `\"any\"`.\n */\n closedby?: DialogClosedBy;\n}\n\n/**\n * The bare `<dialog>` primitive — no opinions about header, body, or footer.\n * Use this when the default `<Dialog>` layout doesn't fit (custom header,\n * media block, multi-step content).\n */\nfunction DialogContainer({\n open,\n onOpenChange,\n size = \"md\",\n closedby = \"any\",\n className,\n children,\n ...rest\n}: DialogContainerProps) {\n const ref = useRef<HTMLDialogElement | null>(null);\n const onOpenChangeRef = useRef(onOpenChange);\n onOpenChangeRef.current = onOpenChange;\n\n useEffect(() => {\n const el = ref.current;\n if (!el || open === undefined) return;\n if (open && !el.open) el.showModal();\n else if (!open && el.open) el.close();\n }, [open]);\n\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const handleClose = () => onOpenChangeRef.current?.(false);\n el.addEventListener(\"close\", handleClose);\n return () => el.removeEventListener(\"close\", handleClose);\n }, []);\n\n const ctx: DialogContextValue = {\n close: () => ref.current?.close(),\n };\n\n return (\n <DialogContext.Provider value={ctx}>\n <dialog\n ref={ref}\n className={cn([\"dialog\", size !== \"md\" && `dialog-${size}`], className)}\n closedby={closedby}\n {...rest}\n >\n {children}\n </dialog>\n </DialogContext.Provider>\n );\n}\n\nexport type DialogHeaderProps = ComponentProps<\"div\">;\n\nfunction DialogHeader({ className, ...rest }: DialogHeaderProps) {\n return <div className={cn(\"dialog-header\", className)} {...rest} />;\n}\n\nexport interface DialogTitleProps extends ComponentProps<\"h2\"> {\n /** Leading icon. */\n icon?: IconProp;\n}\n\nfunction DialogTitle({ icon, className, children, ...rest }: DialogTitleProps) {\n return (\n <h2 className={cn(\"dialog-title\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </h2>\n );\n}\n\nexport type DialogDescriptionProps = ComponentProps<\"p\">;\n\nfunction DialogDescription({ className, ...rest }: DialogDescriptionProps) {\n return <p className={cn(\"dialog-description\", className)} {...rest} />;\n}\n\nexport type DialogBodyProps = ComponentProps<\"div\">;\n\nfunction DialogBody({ className, ...rest }: DialogBodyProps) {\n return <div className={cn(\"dialog-body\", className)} {...rest} />;\n}\n\nexport type DialogFooterProps = ComponentProps<\"div\">;\n\nfunction DialogFooter({ className, ...rest }: DialogFooterProps) {\n return <div className={cn(\"dialog-footer\", className)} {...rest} />;\n}\n\nexport interface DialogCloseButtonProps extends ComponentProps<\"button\"> {\n /** Override the default X icon. */\n icon?: IconProp;\n}\n\nfunction DialogCloseButton({\n icon,\n className,\n children,\n onClick,\n type = \"button\",\n \"aria-label\": ariaLabel = \"Close\",\n ...rest\n}: DialogCloseButtonProps) {\n const ctx = useContext(DialogContext);\n return (\n <button\n type={type}\n className={cn(\"dialog-close\", className)}\n aria-label={ariaLabel}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) ctx?.close();\n }}\n {...rest}\n >\n {children ?? (icon !== undefined ? renderIcon(icon) : <DefaultCloseIcon />)}\n </button>\n );\n}\n\nexport interface DialogProps extends Omit<DialogContainerProps, \"title\" | \"children\"> {\n /** Leading icon for the title row. */\n icon?: IconProp;\n /** Renders as `<Dialog.Title>`. */\n title?: ReactNode;\n /** Renders as `<Dialog.Description>`. */\n description?: ReactNode;\n /** Renders as `<Dialog.Footer>`. */\n actions?: ReactNode;\n /** Show the X close button in the header. Default: `true`. */\n dismissible?: boolean;\n /** aria-label for the close button. Default: `\"Close\"`. */\n closeLabel?: string;\n children?: ReactNode;\n}\n\n/**\n * Standard modal: a `<dialog>` with an opinionated header / body / footer\n * layout driven by shorthand props. For anything outside that shape, use\n * `<Dialog.Container>` and compose by hand.\n */\nfunction DialogRoot({\n icon,\n title,\n description,\n actions,\n dismissible = true,\n closeLabel = \"Close\",\n children,\n ...containerProps\n}: DialogProps) {\n const hasTitle = title !== undefined || icon !== undefined;\n const showHeader = hasTitle || dismissible;\n return (\n <DialogContainer {...containerProps}>\n {showHeader ? (\n <DialogHeader>\n {hasTitle ? (\n <DialogTitle icon={icon}>{title}</DialogTitle>\n ) : (\n <span className={cn(\"flex-1\", undefined)} />\n )}\n {dismissible ? <DialogCloseButton aria-label={closeLabel} /> : null}\n </DialogHeader>\n ) : null}\n {description !== undefined ? <DialogDescription>{description}</DialogDescription> : null}\n {children !== undefined ? <DialogBody>{children}</DialogBody> : null}\n {actions !== undefined ? <DialogFooter>{actions}</DialogFooter> : null}\n </DialogContainer>\n );\n}\n\nexport const Dialog = Object.assign(DialogRoot, {\n Container: DialogContainer,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n CloseButton: DialogCloseButton,\n});\n","import { Field as BaseField } from \"@base-ui/react/field\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\n/**\n * Thin wrappers around Base UI's Field primitives that apply the design\n * system's class names. Compose for fully accessible labeled form fields:\n *\n * <Field name=\"email\">\n * <Field.Label>Email</Field.Label>\n * <Input type=\"email\" required />\n * <Field.Description>We'll never share your email.</Field.Description>\n * <Field.Error match=\"valueMissing\">Email is required.</Field.Error>\n * </Field>\n */\n\nexport type FieldProps = ComponentProps<typeof BaseField.Root>;\n\nfunction FieldRoot({ className, ...rest }: FieldProps) {\n return <BaseField.Root className={cn(\"field\", className)} {...rest} />;\n}\n\nexport type FieldLabelProps = ComponentProps<typeof BaseField.Label> & {\n /** Renders a red asterisk after the label text via `data-required`. */\n required?: boolean;\n};\n\nfunction FieldLabel({ className, required, ...rest }: FieldLabelProps) {\n return (\n <BaseField.Label\n data-required={required ? \"\" : undefined}\n className={cn(\"field-label\", className)}\n {...rest}\n />\n );\n}\n\nexport type FieldDescriptionProps = ComponentProps<typeof BaseField.Description>;\n\nfunction FieldDescription({ className, ...rest }: FieldDescriptionProps) {\n return <BaseField.Description className={cn(\"field-description\", className)} {...rest} />;\n}\n\nexport type FieldErrorProps = ComponentProps<typeof BaseField.Error>;\n\nfunction FieldError({ className, ...rest }: FieldErrorProps) {\n return <BaseField.Error className={cn(\"field-error\", className)} {...rest} />;\n}\n\nexport const Field = Object.assign(FieldRoot, {\n Label: FieldLabel,\n Description: FieldDescription,\n Error: FieldError,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type FooterProps = ComponentProps<\"footer\">;\n\nfunction FooterRoot({ className, ...rest }: FooterProps) {\n return <footer className={cn(\"footer\", className)} {...rest} />;\n}\n\nexport type FooterLinksProps = ComponentProps<\"div\">;\n\nfunction FooterLinks({ className, ...rest }: FooterLinksProps) {\n return <div className={cn(\"footer-links\", className)} {...rest} />;\n}\n\nexport type FooterLinkProps = ComponentProps<\"a\">;\n\nfunction FooterLink({ className, children, ...rest }: FooterLinkProps) {\n return (\n <a className={cn(\"footer-link\", className)} {...rest}>\n {children}\n </a>\n );\n}\n\nexport type FooterMetaProps = ComponentProps<\"div\">;\n\nfunction FooterMeta({ className, ...rest }: FooterMetaProps) {\n return <div className={cn(\"footer-meta\", className)} {...rest} />;\n}\n\nexport const Footer = Object.assign(FooterRoot, {\n Links: FooterLinks,\n Link: FooterLink,\n Meta: FooterMeta,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\nexport interface MenuProps extends ComponentProps<\"details\"> {}\n\nfunction MenuRoot({ className, ...rest }: MenuProps) {\n return <details className={cn(\"menu\", className)} {...rest} />;\n}\n\nexport type MenuTriggerProps = ComponentProps<\"summary\">;\n\nfunction MenuTrigger({ className, ...rest }: MenuTriggerProps) {\n return <summary className={cn(\"menu-trigger\", className)} {...rest} />;\n}\n\nexport type MenuPopupProps = ComponentProps<\"div\">;\n\nfunction MenuPopup({ className, role = \"menu\", ...rest }: MenuPopupProps) {\n return <div role={role} className={cn(\"menu-popup\", className)} {...rest} />;\n}\n\ntype MenuItemAsButton = ComponentProps<\"button\"> & { href?: undefined; icon?: IconProp };\ntype MenuItemAsLink = ComponentProps<\"a\"> & { href: string; icon?: IconProp };\n\nexport type MenuItemProps = MenuItemAsButton | MenuItemAsLink;\n\nfunction MenuItem(props: MenuItemProps) {\n if (props.href !== undefined) {\n const { className, role = \"menuitem\", icon, children, ...rest } = props;\n return (\n <a role={role} className={cn(\"menu-item\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </a>\n );\n }\n const { className, type = \"button\", role = \"menuitem\", icon, children, ...rest } = props;\n return (\n <button type={type} role={role} className={cn(\"menu-item\", className)} {...rest}>\n {renderIcon(icon)}\n {children}\n </button>\n );\n}\n\nexport type MenuSeparatorProps = ComponentProps<\"hr\">;\n\nfunction MenuSeparator({ className, ...rest }: MenuSeparatorProps) {\n return <hr className={cn(\"menu-separator\", className)} {...rest} />;\n}\n\nexport type MenuGroupProps = ComponentProps<\"div\">;\n\nfunction MenuGroup({ className, role = \"group\", ...rest }: MenuGroupProps) {\n return <div role={role} className={cn(\"menu-group\", className)} {...rest} />;\n}\n\nexport type MenuGroupLabelProps = ComponentProps<\"div\">;\n\nfunction MenuGroupLabel({ className, ...rest }: MenuGroupLabelProps) {\n return <div className={cn(\"menu-group-label\", className)} {...rest} />;\n}\n\nexport const Menu = Object.assign(MenuRoot, {\n Trigger: MenuTrigger,\n Popup: MenuPopup,\n Item: MenuItem,\n Separator: MenuSeparator,\n Group: MenuGroup,\n GroupLabel: MenuGroupLabel,\n});\n","import type { ComponentProps, ReactNode } from \"react\";\nimport { useAppShell } from \"./AppShell\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\nimport { Menu } from \"./Menu\";\n\nexport type NavbarProps = ComponentProps<\"header\">;\n\nfunction NavbarRoot({ className, ...rest }: NavbarProps) {\n return <header className={cn(\"navbar\", className)} {...rest} />;\n}\n\nexport type NavbarBrandProps = ComponentProps<\"div\">;\n\nfunction NavbarBrand({ className, ...rest }: NavbarBrandProps) {\n return <div className={cn(\"navbar-brand\", className)} {...rest} />;\n}\n\nexport type NavbarItemsProps = ComponentProps<\"nav\">;\n\nfunction NavbarItems({ className, ...rest }: NavbarItemsProps) {\n return <nav className={cn(\"navbar-items\", className)} {...rest} />;\n}\n\nexport interface NavbarItemProps extends ComponentProps<\"a\"> {\n active?: boolean;\n /** Leading icon. */\n icon?: IconProp;\n}\n\nfunction NavbarItem({ active, icon, className, children, ...rest }: NavbarItemProps) {\n return (\n <a\n className={cn(\"navbar-item\", className)}\n aria-current={active ? \"page\" : undefined}\n {...rest}\n >\n {renderIcon(icon)}\n {children}\n </a>\n );\n}\n\nexport interface NavbarDropdownProps extends Omit<ComponentProps<\"details\">, \"title\"> {\n /** Text shown in the trigger. */\n label: ReactNode;\n}\n\nfunction NavbarDropdown({ label, className, children, ...rest }: NavbarDropdownProps) {\n return (\n <Menu className={className} {...rest}>\n <Menu.Trigger className={cn(\"navbar-item\", undefined)}>{label}</Menu.Trigger>\n <Menu.Popup>{children}</Menu.Popup>\n </Menu>\n );\n}\n\nexport type NavbarActionsProps = ComponentProps<\"div\">;\n\nfunction NavbarActions({ className, ...rest }: NavbarActionsProps) {\n return <div className={cn(\"navbar-actions\", className)} {...rest} />;\n}\n\nexport interface NavbarMobileToggleProps extends Omit<\n ComponentProps<\"button\">,\n \"onClick\" | \"children\"\n> {\n /** Accessible label for the toggle. Default: \"Open menu\". */\n label?: string;\n}\n\nfunction NavbarMobileToggle({\n label = \"Open menu\",\n className,\n type = \"button\",\n ...rest\n}: NavbarMobileToggleProps) {\n const shell = useAppShell();\n const open = shell?.mobileDrawerOpen ?? false;\n\n return (\n <button\n type={type}\n aria-label={label}\n aria-expanded={open}\n onClick={() => shell?.setMobileDrawerOpen(!open)}\n className={cn(\"navbar-mobile-toggle\", className)}\n {...rest}\n />\n );\n}\n\nexport const Navbar = Object.assign(NavbarRoot, {\n Brand: NavbarBrand,\n Items: NavbarItems,\n Item: NavbarItem,\n Dropdown: NavbarDropdown,\n Actions: NavbarActions,\n MobileToggle: NavbarMobileToggle,\n});\n","import { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TabsVariant = \"bordered\" | \"boxed\";\nexport type TabsSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TabsProps extends ComponentProps<typeof BaseTabs.Root> {\n variant?: TabsVariant;\n size?: TabsSize;\n fullWidth?: boolean;\n}\n\nfunction TabsRoot({\n variant = \"bordered\",\n size = \"md\",\n fullWidth = false,\n className,\n ...rest\n}: TabsProps) {\n return (\n <BaseTabs.Root\n className={cn(\n [\n \"tabs\",\n `tabs-${variant}`,\n size !== \"md\" && `tabs-${size}`,\n fullWidth && \"tabs-full-width\",\n ],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport type TabsListProps = ComponentProps<typeof BaseTabs.List>;\n\nfunction TabsList({ className, ...rest }: TabsListProps) {\n return <BaseTabs.List className={cn(\"tab-list\", className)} {...rest} />;\n}\n\nexport type TabsTabProps = ComponentProps<typeof BaseTabs.Tab>;\n\nfunction TabsTab({ className, ...rest }: TabsTabProps) {\n return <BaseTabs.Tab className={cn(\"tab\", className)} {...rest} />;\n}\n\nexport type TabsPanelProps = ComponentProps<typeof BaseTabs.Panel>;\n\nfunction TabsPanel({ className, ...rest }: TabsPanelProps) {\n return <BaseTabs.Panel className={cn(\"tab-panel\", className)} {...rest} />;\n}\n\nexport type TabsIndicatorProps = ComponentProps<typeof BaseTabs.Indicator>;\n\nfunction TabsIndicator({ className, ...rest }: TabsIndicatorProps) {\n return <BaseTabs.Indicator className={cn(\"tab-indicator\", className)} {...rest} />;\n}\n\nexport const Tabs = Object.assign(TabsRoot, {\n List: TabsList,\n Tab: TabsTab,\n Panel: TabsPanel,\n Indicator: TabsIndicator,\n});\n","import { Tooltip as BaseTooltip } from \"@base-ui/react/tooltip\";\nimport type { ComponentProps, ReactElement, ReactNode } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TooltipProviderProps = ComponentProps<typeof BaseTooltip.Provider>;\n\nfunction TooltipProvider(props: TooltipProviderProps) {\n return <BaseTooltip.Provider {...props} />;\n}\n\nexport type TooltipRootProps = ComponentProps<typeof BaseTooltip.Root>;\n\nfunction TooltipRoot(props: TooltipRootProps) {\n return <BaseTooltip.Root {...props} />;\n}\n\nexport type TooltipTriggerProps = ComponentProps<typeof BaseTooltip.Trigger>;\n\nfunction TooltipTrigger(props: TooltipTriggerProps) {\n return <BaseTooltip.Trigger {...props} />;\n}\n\nexport type TooltipSize = \"sm\" | \"md\";\n\ntype TooltipPositionerProps = ComponentProps<typeof BaseTooltip.Positioner>;\n\nexport interface TooltipPopupProps extends ComponentProps<typeof BaseTooltip.Popup> {\n size?: TooltipSize;\n side?: TooltipPositionerProps[\"side\"];\n align?: TooltipPositionerProps[\"align\"];\n sideOffset?: TooltipPositionerProps[\"sideOffset\"];\n}\n\nfunction TooltipPopup({\n size = \"md\",\n side = \"top\",\n align = \"center\",\n sideOffset = 6,\n role = \"tooltip\",\n className,\n children,\n ...rest\n}: TooltipPopupProps) {\n return (\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner sideOffset={sideOffset} side={side} align={align}>\n <BaseTooltip.Popup\n role={role}\n className={cn([\"tooltip\", size !== \"md\" && `tooltip-${size}`], className)}\n {...rest}\n >\n {children}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n );\n}\n\nexport interface TooltipProps extends Omit<TooltipRootProps, \"children\"> {\n /** Tooltip body — string or rich node. */\n content: ReactNode;\n side?: TooltipPopupProps[\"side\"];\n align?: TooltipPopupProps[\"align\"];\n sideOffset?: TooltipPopupProps[\"sideOffset\"];\n size?: TooltipSize;\n /** The trigger element. Must be a single React element so Base UI can merge trigger props/refs into it. */\n children: ReactElement;\n}\n\nfunction TooltipShorthand({\n content,\n side,\n align,\n sideOffset,\n size,\n children,\n ...rootProps\n}: TooltipProps) {\n return (\n <TooltipRoot {...rootProps}>\n <BaseTooltip.Trigger render={children} />\n <TooltipPopup side={side} align={align} sideOffset={sideOffset} size={size}>\n {content}\n </TooltipPopup>\n </TooltipRoot>\n );\n}\n\nexport const Tooltip = Object.assign(TooltipShorthand, {\n Provider: TooltipProvider,\n Root: TooltipRoot,\n Trigger: TooltipTrigger,\n Popup: TooltipPopup,\n});\n","import { useRef, useState, type ComponentProps, type ReactNode } from \"react\";\nimport { cn } from \"./cn\";\n\n// Inline SVGs match Tabler's stroke conventions (24px viewBox, stroke-width 2,\n// round caps + joins, currentColor). admin-react stays icon-library-agnostic;\n// consumers don't need @tabler/icons-react or the Tabler webfont.\nfunction CopyGlyph({ className }: { className: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className={className}\n >\n <path d=\"M7 7m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z\" />\n <path d=\"M15 7v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2\" />\n </svg>\n );\n}\n\nfunction CheckGlyph({ className }: { className: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className={className}\n >\n <path d=\"M5 12l5 5l10 -10\" />\n </svg>\n );\n}\n\nexport interface PropertyListProps extends Omit<ComponentProps<\"section\">, \"title\"> {\n striped?: boolean;\n /** Tightens row height and padding for very dense panels. */\n compact?: boolean;\n /** Reveals a copy button on every item's value cell. Per-item `copyable`\n * on `<PropertyList.Item>` opts in for individual rows. */\n copyable?: boolean;\n /** Collapses the whole section when every item rendered the auto em-dash\n * fallback for an empty value. */\n hideIfAllEmpty?: boolean;\n /** Optional section heading rendered as `<h3 class=\"property-list-title\">`\n * above the items grid. */\n title?: ReactNode;\n}\n\nfunction PropertyListRoot({\n striped,\n compact,\n copyable,\n hideIfAllEmpty,\n title,\n className,\n children,\n ...rest\n}: PropertyListProps) {\n return (\n <section\n className={cn(\n [\n \"property-list\",\n striped && \"property-list-striped\",\n compact && \"property-list-compact\",\n copyable && \"property-list-copyable\",\n hideIfAllEmpty && \"property-list-hide-if-empty\",\n ],\n className,\n )}\n {...rest}\n >\n {title !== undefined ? (\n <h3 className={cn(\"property-list-title\", undefined)}>{title}</h3>\n ) : null}\n <dl className={cn(\"property-list-items\", undefined)}>{children}</dl>\n </section>\n );\n}\n\nexport interface PropertyListItemProps extends Omit<ComponentProps<\"dd\">, \"title\" | \"label\"> {\n label?: ReactNode;\n value?: ReactNode;\n /** Right-aligns the value cell + applies `tabular-nums`. Mirrors `Table.Cell.numeric`. */\n numeric?: boolean;\n /** Opts this row into the copy affordance regardless of list-level `copyable`. */\n copyable?: boolean;\n /** Overrides the text the copy button writes to the clipboard. */\n copyValue?: string;\n}\n\nfunction isEmptyValue(value: ReactNode): boolean {\n if (value == null) return true;\n if (typeof value === \"string\") return value.trim() === \"\";\n return false;\n}\n\n// Item is a thin wrapper that emits a <dt>/<dd> pair as siblings (no host\n// element). In shorthand mode it generates the subparts; in children mode it\n// renders them verbatim. Either way, no extra DOM wrapper is introduced.\nfunction PropertyListItem({\n label,\n value,\n numeric,\n copyable,\n copyValue,\n children,\n ...rest\n}: PropertyListItemProps) {\n if (children !== undefined) {\n return <>{children}</>;\n }\n const empty = isEmptyValue(value);\n return (\n <>\n <PropertyListLabel>{label}</PropertyListLabel>\n <PropertyListValue\n numeric={numeric}\n copyable={copyable}\n empty={empty}\n copyValue={copyValue ?? (typeof value === \"string\" ? value : undefined)}\n {...rest}\n >\n {empty ? \"—\" : value}\n </PropertyListValue>\n </>\n );\n}\n\nexport type PropertyListLabelProps = ComponentProps<\"dt\">;\nfunction PropertyListLabel({ className, ...rest }: PropertyListLabelProps) {\n return <dt className={cn(\"property-list-label\", className)} {...rest} />;\n}\n\nexport interface PropertyListValueProps extends ComponentProps<\"dd\"> {\n numeric?: boolean;\n copyable?: boolean;\n /** Marks the cell as carrying an auto-rendered em-dash. The list-level\n * `hideIfAllEmpty` collapses the section when every value is empty. */\n empty?: boolean;\n /** Overrides the text the copy button writes to the clipboard. */\n copyValue?: string;\n}\n\nfunction PropertyListValue({\n numeric,\n copyable,\n empty,\n copyValue,\n className,\n children,\n ...rest\n}: PropertyListValueProps) {\n const ddRef = useRef<HTMLElement | null>(null);\n const [copied, setCopied] = useState(false);\n\n async function handleCopy() {\n const text = copyValue ?? ddRef.current?.textContent?.trim() ?? \"\";\n if (!text) return;\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1200);\n } catch {\n // Permission denied or unsupported — fail silently.\n }\n }\n\n return (\n <dd\n ref={ddRef}\n className={cn(\n [\n \"property-list-value\",\n numeric && \"property-list-value-numeric\",\n copyable && \"property-list-value-copyable\",\n empty && \"property-list-value-empty\",\n ],\n className,\n )}\n {...rest}\n >\n {children}\n <button\n type=\"button\"\n aria-label=\"Copy\"\n className={cn(\"property-list-copy\", undefined)}\n onClick={handleCopy}\n data-copied={copied ? \"true\" : undefined}\n >\n <CopyGlyph className={cn(\"property-list-copy-icon\", undefined)} />\n <CheckGlyph className={cn(\"property-list-copy-icon-copied\", undefined)} />\n </button>\n </dd>\n );\n}\n\nexport const PropertyList = Object.assign(PropertyListRoot, {\n Item: PropertyListItem,\n Label: PropertyListLabel,\n Value: PropertyListValue,\n});\n","import type { ComponentProps } from \"react\";\nimport { cn } from \"./cn\";\n\nexport type TableAlign = \"left\" | \"right\" | \"center\";\n\nexport interface TableProps extends ComponentProps<\"table\"> {\n striped?: boolean;\n bordered?: boolean;\n relaxed?: boolean;\n /** Pins `<thead>` while the surrounding scroll container scrolls.\n * Requires an overflowing ancestor — wrap the table in\n * `<div style=\"overflow:auto; max-height: …\">`. */\n sticky?: boolean;\n}\n\nfunction TableRoot({ striped, bordered, relaxed, sticky, className, ...rest }: TableProps) {\n return (\n <table\n className={cn(\n [\n \"table\",\n striped && \"table-striped\",\n bordered && \"table-bordered\",\n relaxed && \"table-relaxed\",\n sticky && \"table-sticky\",\n ],\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport type TableHeadProps = ComponentProps<\"thead\">;\nfunction TableHead({ className, ...rest }: TableHeadProps) {\n return <thead className={className} {...rest} />;\n}\n\nexport type TableBodyProps = ComponentProps<\"tbody\">;\nfunction TableBody({ className, ...rest }: TableBodyProps) {\n return <tbody className={className} {...rest} />;\n}\n\nexport type TableFootProps = ComponentProps<\"tfoot\">;\nfunction TableFoot({ className, ...rest }: TableFootProps) {\n return <tfoot className={className} {...rest} />;\n}\n\nexport interface TableRowProps extends ComponentProps<\"tr\"> {\n /** Visually marks the row as selected. Independent of the CSS rule that\n * tints rows containing a checked checkbox — use this for programmatic\n * selection (single-select on row click, server-driven highlight, …). */\n selected?: boolean;\n /** Applies `.table-row-link` so the first `<a>` inside the row expands to\n * fill the row. The consumer still supplies the anchor — this just adds\n * the CSS hook so the hit-area covers the whole row. */\n asLink?: boolean;\n}\nfunction TableRow({ selected, asLink, className, ...rest }: TableRowProps) {\n return (\n <tr\n className={cn(asLink && \"table-row-link\", className)}\n data-selected={selected || undefined}\n {...rest}\n />\n );\n}\n\nexport interface TableHeaderCellProps extends Omit<ComponentProps<\"th\">, \"align\"> {\n align?: TableAlign;\n /** Narrow first-column gutter — mirrors the body cell `gutter` modifier so\n * the column lines up. Use for status-icon columns and select-all\n * checkboxes. */\n gutter?: boolean;\n}\nfunction TableHeaderCell({ align, gutter, className, scope, ...rest }: TableHeaderCellProps) {\n return (\n <th\n className={cn([\"table-header-cell\", gutter && \"table-cell-gutter\"], className)}\n data-align={align && align !== \"left\" ? align : undefined}\n scope={scope ?? \"col\"}\n {...rest}\n />\n );\n}\n\nexport interface TableCellProps extends Omit<ComponentProps<\"td\">, \"align\"> {\n align?: TableAlign;\n /** Narrow first-column gutter for row-level status icons. */\n gutter?: boolean;\n /** `text-right` + `tabular-nums` for currency/totals columns. */\n numeric?: boolean;\n}\nfunction TableCell({ align, gutter, numeric, className, ...rest }: TableCellProps) {\n return (\n <td\n className={cn(\n [\"table-cell\", gutter && \"table-cell-gutter\", numeric && \"table-cell-numeric\"],\n className,\n )}\n data-align={align && align !== \"left\" ? align : undefined}\n {...rest}\n />\n );\n}\n\nexport const Table = Object.assign(TableRoot, {\n Head: TableHead,\n Body: TableBody,\n Foot: TableFoot,\n Row: TableRow,\n HeaderCell: TableHeaderCell,\n Cell: TableCell,\n});\n","import { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { createContext, useContext, useState } from \"react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { useAppShell } from \"./AppShell\";\nimport { cn } from \"./cn\";\nimport { renderIcon, type IconProp } from \"./icon\";\n\ninterface SidebarContextValue {\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n}\n\nconst SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport interface SidebarProps extends Omit<ComponentProps<\"aside\">, \"onChange\"> {\n /** Controlled collapsed state. Pair with `onCollapsedChange`. */\n collapsed?: boolean;\n /** Uncontrolled initial state. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Accessible label for the mobile drawer dialog. Default: \"Navigation\". */\n drawerLabel?: string;\n}\n\nfunction SidebarRoot({\n collapsed,\n defaultCollapsed,\n onCollapsedChange,\n drawerLabel = \"Navigation\",\n className,\n children,\n ...rest\n}: SidebarProps) {\n const shell = useAppShell();\n const drawerOpen = shell?.mobileDrawerOpen ?? false;\n\n return (\n <SidebarContext.Provider value={{ collapsed, defaultCollapsed, onCollapsedChange }}>\n <aside className={cn(\"sidebar\", className)} {...rest}>\n {drawerOpen ? null : children}\n </aside>\n {shell ? (\n <BaseDialog.Root open={drawerOpen} onOpenChange={(open) => shell.setMobileDrawerOpen(open)}>\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={cn(\"sidebar-drawer-backdrop\", undefined)} />\n <BaseDialog.Popup\n className={cn(\"sidebar-drawer\", undefined)}\n aria-label={drawerLabel}\n onClick={(event) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"a, [data-drawer-close]\")) {\n shell.setMobileDrawerOpen(false);\n }\n }}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n ) : null}\n </SidebarContext.Provider>\n );\n}\n\nexport type SidebarHeaderProps = ComponentProps<\"div\">;\n\nfunction SidebarHeader({ className, ...rest }: SidebarHeaderProps) {\n return <div className={cn(\"sidebar-header\", className)} {...rest} />;\n}\n\nexport type SidebarNavProps = ComponentProps<\"nav\">;\n\nfunction SidebarNav({ className, ...rest }: SidebarNavProps) {\n return <nav className={cn(\"sidebar-nav\", className)} {...rest} />;\n}\n\nexport type SidebarGroupProps = ComponentProps<\"div\">;\n\nfunction SidebarGroup({ className, ...rest }: SidebarGroupProps) {\n return <div className={cn(\"sidebar-group\", className)} {...rest} />;\n}\n\nexport type SidebarGroupLabelProps = ComponentProps<\"div\">;\n\nfunction SidebarGroupLabel({ className, ...rest }: SidebarGroupLabelProps) {\n return <div className={cn(\"sidebar-group-label\", className)} {...rest} />;\n}\n\nexport interface SidebarItemProps extends ComponentProps<\"a\"> {\n active?: boolean;\n /** Leading icon. Rendered inside `<Sidebar.Icon>`. */\n icon?: IconProp;\n /** Trailing badge. Rendered inside `<Sidebar.Badge>`. */\n badge?: ReactNode;\n}\n\nfunction SidebarItem({ active, icon, badge, className, children, ...rest }: SidebarItemProps) {\n return (\n <a\n className={cn(\"sidebar-item\", className)}\n aria-current={active ? \"page\" : undefined}\n {...rest}\n >\n {icon != null ? <SidebarIcon>{renderIcon(icon)}</SidebarIcon> : null}\n {children !== undefined ? <SidebarLabel>{children}</SidebarLabel> : null}\n {badge !== undefined ? <SidebarBadge>{badge}</SidebarBadge> : null}\n </a>\n );\n}\n\nexport type SidebarIconProps = ComponentProps<\"span\">;\n\nfunction SidebarIcon({ className, ...rest }: SidebarIconProps) {\n return <span aria-hidden className={cn(\"sidebar-icon\", className)} {...rest} />;\n}\n\nexport type SidebarLabelProps = ComponentProps<\"span\">;\n\nfunction SidebarLabel({ className, ...rest }: SidebarLabelProps) {\n return <span className={cn(\"sidebar-label\", className)} {...rest} />;\n}\n\nexport type SidebarBadgeProps = ComponentProps<\"span\">;\n\nfunction SidebarBadge({ className, ...rest }: SidebarBadgeProps) {\n return <span className={cn(\"sidebar-badge\", className)} {...rest} />;\n}\n\nexport interface SidebarCollapsibleProps extends Omit<\n ComponentProps<\"details\">,\n \"onToggle\" | \"open\"\n> {\n /** Leading icon for the trigger. Rendered inside `<Sidebar.Icon>`. */\n icon?: IconProp;\n /** Label shown next to the icon. Rendered inside `<Sidebar.Label>`. */\n label?: ReactNode;\n /** Full trigger content. Overrides `icon` + `label`. */\n trigger?: ReactNode;\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n /** Fires when the panel toggles open/closed. */\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction SidebarCollapsible({\n icon,\n label,\n trigger,\n children,\n className,\n open,\n defaultOpen,\n onOpenChange,\n ...rest\n}: SidebarCollapsibleProps) {\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isOpen = isControlled ? open : internalOpen;\n\n const triggerContent = trigger ?? (\n <>\n {icon != null ? <SidebarIcon>{renderIcon(icon)}</SidebarIcon> : null}\n {label !== undefined ? <SidebarLabel>{label}</SidebarLabel> : null}\n </>\n );\n\n return (\n <details\n className={cn(\"sidebar-collapsible\", className)}\n open={isOpen}\n onToggle={(event) => {\n const next = (event.currentTarget as HTMLDetailsElement).open;\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n }}\n {...rest}\n >\n <summary className={cn(\"sidebar-collapsible-trigger\", undefined)}>{triggerContent}</summary>\n <div className={cn(\"sidebar-collapsible-panel\", undefined)}>{children}</div>\n </details>\n );\n}\n\nexport interface SidebarSubItemProps extends ComponentProps<\"a\"> {\n active?: boolean;\n /** Leading icon. */\n icon?: IconProp;\n badge?: ReactNode;\n}\n\nfunction SidebarSubItem({\n active,\n icon,\n badge,\n className,\n children,\n ...rest\n}: SidebarSubItemProps) {\n return (\n <a\n className={cn(\"sidebar-subitem\", className)}\n aria-current={active ? \"page\" : undefined}\n {...rest}\n >\n {icon != null ? <SidebarIcon>{renderIcon(icon)}</SidebarIcon> : null}\n {children}\n {badge !== undefined ? <SidebarBadge>{badge}</SidebarBadge> : null}\n </a>\n );\n}\n\nexport type SidebarFooterProps = ComponentProps<\"div\">;\n\nfunction SidebarFooter({ className, ...rest }: SidebarFooterProps) {\n return <div className={cn(\"sidebar-footer\", className)} {...rest} />;\n}\n\nexport interface SidebarCollapseToggleProps extends Omit<ComponentProps<\"label\">, \"htmlFor\"> {\n /** Accessible label for the checkbox. Default: \"Toggle sidebar\". */\n label?: string;\n}\n\nfunction SidebarCollapseToggle({\n label = \"Toggle sidebar\",\n className,\n children,\n ...rest\n}: SidebarCollapseToggleProps) {\n const ctx = useContext(SidebarContext);\n const controlledChecked = ctx?.collapsed;\n const isControlled = controlledChecked !== undefined;\n\n return (\n <label className={cn(\"sidebar-collapse-toggle\", className)} {...rest}>\n <input\n type=\"checkbox\"\n className={cn(\"sidebar-toggle\", undefined)}\n aria-label={label}\n {...(isControlled\n ? { checked: controlledChecked }\n : { defaultChecked: ctx?.defaultCollapsed })}\n onChange={(event) => ctx?.onCollapsedChange?.(event.currentTarget.checked)}\n />\n <span className={cn(\"sr-only\", undefined)}>{label}</span>\n {children}\n </label>\n );\n}\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Header: SidebarHeader,\n Nav: SidebarNav,\n Group: SidebarGroup,\n GroupLabel: SidebarGroupLabel,\n Item: SidebarItem,\n Icon: SidebarIcon,\n Label: SidebarLabel,\n Badge: SidebarBadge,\n Collapsible: SidebarCollapsible,\n SubItem: SidebarSubItem,\n Footer: SidebarFooter,\n CollapseToggle: SidebarCollapseToggle,\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aortl/admin-react",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "React component library for the admin design system. Pairs with @aortl/admin-css.",
5
5
  "keywords": [
6
6
  "components",
@@ -42,7 +42,7 @@
42
42
  "dependencies": {
43
43
  "@base-ui/react": "1.4.1",
44
44
  "clsx": "2.1.1",
45
- "@aortl/admin-css": "0.7.0"
45
+ "@aortl/admin-css": "0.7.1"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@testing-library/dom": "10.4.1",