@assure-one/design-system 1.43.0 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/cn.ts","../src/icons/icon-base.tsx","../src/icons/alert-circle-icon.tsx","../src/icons/alert-triangle-icon.tsx","../src/icons/alert-triangle-solid-icon.tsx","../src/icons/align-center-icon.tsx","../src/icons/align-left-icon.tsx","../src/icons/align-right-icon.tsx","../src/icons/app-window-icon.tsx","../src/icons/archive-icon.tsx","../src/icons/arrow-down-icon.tsx","../src/icons/arrow-left-icon.tsx","../src/icons/arrow-right-icon.tsx","../src/icons/arrow-right-small-icon.tsx","../src/icons/arrow-up-icon.tsx","../src/icons/arrow-up-right-icon.tsx","../src/icons/at-sign-icon.tsx","../src/icons/ban-icon.tsx","../src/icons/bar-chart-icon.tsx","../src/icons/bell-icon.tsx","../src/icons/bell-ring-icon.tsx","../src/icons/bold-icon.tsx","../src/icons/book-text-icon.tsx","../src/icons/brain-icon.tsx","../src/icons/briefcase-icon.tsx","../src/icons/building-2-icon.tsx","../src/icons/building-icon.tsx","../src/icons/calculator-icon.tsx","../src/icons/calendar-icon.tsx","../src/icons/camera-icon.tsx","../src/icons/chart-no-axes-column-increasing-icon.tsx","../src/icons/chat-bubble-icon.tsx","../src/icons/check-check-icon.tsx","../src/icons/check-circle-2-icon.tsx","../src/icons/check-circle-solid-icon.tsx","../src/icons/check-icon.tsx","../src/icons/chevron-down-icon.tsx","../src/icons/chevron-left-icon.tsx","../src/icons/chevron-right-icon.tsx","../src/icons/chevron-up-icon.tsx","../src/icons/chevrons-down-up-icon.tsx","../src/icons/chevrons-left-icon.tsx","../src/icons/chevrons-right-icon.tsx","../src/icons/chevrons-up-down-icon.tsx","../src/icons/circle-dashed-icon.tsx","../src/icons/circle-dot-icon.tsx","../src/icons/circle-icon.tsx","../src/icons/clipboard-check-icon.tsx","../src/icons/clock-alert-icon.tsx","../src/icons/clock-icon.tsx","../src/icons/x-icon.tsx","../src/icons/close-icon.tsx","../src/icons/command-icon.tsx","../src/icons/copy-icon.tsx","../src/icons/corner-down-left-icon.tsx","../src/icons/credit-card-icon.tsx","../src/icons/decimals-arrow-left-icon.tsx","../src/icons/decimals-arrow-right-icon.tsx","../src/icons/file-text-icon.tsx","../src/icons/document-icon.tsx","../src/icons/dollar-sign-icon.tsx","../src/icons/download-icon.tsx","../src/icons/external-link-icon.tsx","../src/icons/extract-icon.tsx","../src/icons/eye-icon.tsx","../src/icons/eye-off-icon.tsx","../src/icons/file-chart-column-icon.tsx","../src/icons/file-icon.tsx","../src/icons/file-plus-icon.tsx","../src/icons/file-return-icon.tsx","../src/icons/filter-icon.tsx","../src/icons/flag-icon.tsx","../src/icons/folder-closed-icon.tsx","../src/icons/folder-down-icon.tsx","../src/icons/folder-open-icon.tsx","../src/icons/folder-plus-icon.tsx","../src/icons/folder-up-icon.tsx","../src/icons/globe-icon.tsx","../src/icons/google-brand-icon.tsx","../src/icons/graduation-cap-icon.tsx","../src/icons/grid-2x2-icon.tsx","../src/icons/grip-horizontal-icon.tsx","../src/icons/grip-vertical-icon.tsx","../src/icons/help-circle-icon.tsx","../src/icons/highlighter-icon.tsx","../src/icons/history-icon.tsx","../src/icons/home-icon.tsx","../src/icons/inbox-icon.tsx","../src/icons/info-circle-solid-icon.tsx","../src/icons/info-icon.tsx","../src/icons/italic-icon.tsx","../src/icons/kanban-icon.tsx","../src/icons/key-icon.tsx","../src/icons/landmark-icon.tsx","../src/icons/layers-icon.tsx","../src/icons/layout-dashboard-icon.tsx","../src/icons/layout-grid-icon.tsx","../src/icons/layout-list-icon.tsx","../src/icons/lightning-icon.tsx","../src/icons/link-2-icon.tsx","../src/icons/link-icon.tsx","../src/icons/list-checks-icon.tsx","../src/icons/list-icon.tsx","../src/icons/list-ordered-icon.tsx","../src/icons/loader-icon.tsx","../src/icons/lock-icon.tsx","../src/icons/lock-keyhole-icon.tsx","../src/icons/lock-open-icon.tsx","../src/icons/log-out-icon.tsx","../src/icons/mail-icon.tsx","../src/icons/map-pin-icon.tsx","../src/icons/maximize-icon.tsx","../src/icons/menu-icon.tsx","../src/icons/message-circle-icon.tsx","../src/icons/message-circle-more-icon.tsx","../src/icons/message-circle-warning-icon.tsx","../src/icons/mic-icon.tsx","../src/icons/microsoft-brand-icon.tsx","../src/icons/minimize-icon.tsx","../src/icons/minus-icon.tsx","../src/icons/monitor-icon.tsx","../src/icons/moon-icon.tsx","../src/icons/more-horizontal-icon.tsx","../src/icons/more-vertical-icon.tsx","../src/icons/mouse-pointer-2-icon.tsx","../src/icons/move-icon.tsx","../src/icons/palette-icon.tsx","../src/icons/panel-left-close-icon.tsx","../src/icons/panel-left-icon.tsx","../src/icons/panel-right-close-icon.tsx","../src/icons/panel-right-icon.tsx","../src/icons/paperclip-icon.tsx","../src/icons/pause-icon.tsx","../src/icons/pen-sign-icon.tsx","../src/icons/pen-tool-icon.tsx","../src/icons/pencil-icon.tsx","../src/icons/percent-icon.tsx","../src/icons/phone-icon.tsx","../src/icons/pin-icon.tsx","../src/icons/pin-off-icon.tsx","../src/icons/play-icon.tsx","../src/icons/plus-icon.tsx","../src/icons/receipt-icon.tsx","../src/icons/refresh-cw-icon.tsx","../src/icons/repeat-icon.tsx","../src/icons/reply-icon.tsx","../src/icons/rotate-ccw-icon.tsx","../src/icons/rows-4-icon.tsx","../src/icons/rows-icon.tsx","../src/icons/save-icon.tsx","../src/icons/search-check-icon.tsx","../src/icons/search-icon.tsx","../src/icons/send-icon.tsx","../src/icons/settings-icon.tsx","../src/icons/shield-icon.tsx","../src/icons/sigma-icon.tsx","../src/icons/slash-icon.tsx","../src/icons/smartphone-icon.tsx","../src/icons/sparkle-icon.tsx","../src/icons/sparkles-icon.tsx","../src/icons/square-exclamation-point-icon.tsx","../src/icons/square-function-icon.tsx","../src/icons/square-icon.tsx","../src/icons/square-play-icon.tsx","../src/icons/square-square-icon.tsx","../src/icons/stamp-icon.tsx","../src/icons/star-icon.tsx","../src/icons/stop-icon.tsx","../src/icons/strikethrough-icon.tsx","../src/icons/sun-icon.tsx","../src/icons/table-icon.tsx","../src/icons/tag-icon.tsx","../src/icons/team-icon.tsx","../src/icons/thumbs-down-icon.tsx","../src/icons/thumbs-up-icon.tsx","../src/icons/timer-icon.tsx","../src/icons/trash-icon.tsx","../src/icons/trash-2-icon.tsx","../src/icons/trash-solid-icon.tsx","../src/icons/trending-down-icon.tsx","../src/icons/trending-up-icon.tsx","../src/icons/type-icon.tsx","../src/icons/underline-icon.tsx","../src/icons/undo-2-icon.tsx","../src/icons/upload-icon.tsx","../src/icons/user-circle-icon.tsx","../src/icons/user-icon.tsx","../src/icons/users-icon.tsx","../src/icons/video-icon.tsx","../src/icons/volume-2-icon.tsx","../src/icons/volume-x-icon.tsx","../src/icons/workflow-icon.tsx","../src/icons/x-circle-icon.tsx","../src/icons/x-circle-solid-icon.tsx","../src/icons/zoom-in-icon.tsx","../src/icons/zoom-out-icon.tsx"],"names":["TriangleAlert","CircleCheck","useId","jsxs","jsx","createElement","Info","Sparkles","Square","CircleX"],"mappings":"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","file":"chunk-E2URQD5A.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\n/* ────────────────────────────────────────────────────────────────────────────\n * `cn` = clsx + tailwind-merge, taught the design system's own Tailwind 4\n * `@theme` scales.\n *\n * tailwind-merge ships Tailwind's *default* theme, so out of the box it cannot\n * tell that `rounded-card` is a border-radius or that `shadow-pop` is a\n * box-shadow. Unknown values fall through to the nearest catch-all: an\n * unrecognised radius belongs to no group at all, so both classes survive and\n * the stylesheet order decides; an unrecognised `shadow-*` value is filed as a\n * shadow *colour*, so it never conflicts with `shadow-md`. Registering the DS\n * scales below is what makes `cn()` resolve them.\n *\n * Source of truth: `src/tokens/generated/theme.css` (generated from `tokens/src`,\n * ADR-003). Each list holds only the DS-specific values — Tailwind's own values\n * (`rounded-md`, `shadow-lg`, `ease-out`, `font-mono`, …) are already known.\n * Tokens are additive, so adding a `--radius-*`, `--shadow-*`, `--ease-*`,\n * `--font-*`, `--text-*` or `--animate-*` token means adding its value to the\n * matching list.\n *\n * Deliberately NOT configured:\n *\n * - **A `prefix`.** Wave 1 compiles component CSS with Tailwind's `prefix(ds)`,\n * so DS classes read `ds:rounded-card`. Spike S1 measured that setting\n * tailwind-merge's `prefix` option *breaks* merging (2.6.1: 4 of 12 cases;\n * 3.6.0: stops merging a consumer's own unprefixed classes), while the default\n * configuration passes 12 of 12 because it treats `ds:` as an ordinary unknown\n * variant. ADR-004 decision 4 makes that binding: conflicts between the DS and\n * a consumer's vocabulary are settled by cascade layer, not by merging.\n * See `docs/spikes/s1` F4.\n * - **The `--z-*` scale.** Tailwind 4 has no `z` theme namespace, so the bare\n * `z-modal` form compiles to nothing; the DS reaches the scale through an\n * arbitrary value instead, and the default config already merges those against\n * `z-10`. Registering the bare names would make `cn(\"z-10\", \"z-modal\")` drop\n * the class that works in favour of one that does not.\n * - **`--color-*`.** Every `text-*`, `bg-*`, `border-*` and `ring-*` colour\n * group ends in a catch-all, so `text-fg-3`, `bg-bg-2` and their siblings\n * already resolve against each other and against arbitrary values.\n * - **The `size-*` and spacing scales.** The DS declares no `--spacing-*` token\n * and uses Tailwind's numeric scale, including the fractional steps, which\n * tailwind-merge 3 validates on its own.\n * ──────────────────────────────────────────────────────────────────────────── */\n\n/**\n * The scale lists below are written as one space-separated string rather than an\n * array of literals. That is not only for brevity: a bare `\"icon\"` or `\"pill\"`\n * literal in this module — which every component imports — is interned by the\n * checker before it reaches the components, which moves that member to the front\n * of the union TypeScript prints for `ButtonProps[\"size\"]` and\n * `TabsListProps[\"variant\"]` in `dist/index.d.ts` and `api/root.api.md`. Same\n * types, different member order, a failing `pnpm api:check`, and no public\n * signature touched. One sentence per scale keeps the emitted declarations\n * byte-identical.\n */\nconst split = (values: string) => values.split(\" \");\n\n/**\n * `--radius-*` values that are not Tailwind's. Feeds every `rounded-*` group.\n * `control surface surface-sm badge` are the W2-07 roles (`Surface` is their\n * first consumer); the reference steps stay out because no component may name one.\n */\nconst DS_RADIUS = split(\n \"badges btn buttons card cards general icon input inputs pill control surface surface-sm badge\",\n);\n\n/** `--shadow-*` values that are not Tailwind's, including the W2-08 elevation roles and the VN-5 field halo. */\nconst DS_SHADOW = split(\"card focus focus-ring focus-ring-field pop quiet subtle flat raised floating overlay\");\n\n/** `--ease-*` values that are not Tailwind's. */\nconst DS_EASE = split(\"out-quart\");\n\n/** `--font-*` values that are not Tailwind's. */\nconst DS_FONT = split(\"body display\");\n\n/**\n * `--text-*` values that are not Tailwind's: the twelve typography roles\n * (W2-01), which `Text` and `Heading` render as `text-<role>` (W2-12, W2-13).\n * Without this list tailwind-merge files `text-body` as a text *colour* and\n * drops it against `text-fg-3`.\n */\nconst DS_TEXT = split(\n \"display title-page title-section title-sub body body-sm label helper caption micro overline code\",\n);\n\n/**\n * `--animate-*` values that are not Tailwind's, plus `pulse-soft`, which is a\n * hand-written utility in `src/styles/components/ai-messaging.css` rather than a\n * theme token but belongs to the same class group.\n */\nconst DS_ANIMATE = split(\"accordion-down accordion-up collapsible-down collapsible-up pulse-soft\");\n\n/**\n * Matches a box-shadow written as an arbitrary value that references a\n * `--shadow-*` token — how components reach the shadow steps that are not\n * exposed as a named utility. tailwind-merge cannot tell an arbitrary box-shadow\n * from an arbitrary shadow *colour*, so any value that does not begin with a\n * length is filed under `shadow-color`, where it would never conflict with\n * `shadow-md` or `shadow-card`. Keying on the token prefix is exact for this\n * repo: every arbitrary shadow in `src/` is either a literal shadow (a length\n * list, which Tailwind already recognises) or a `--shadow-*` reference, and a\n * genuine shadow colour would reference a `--color-*` token and keep resolving\n * as a colour. Worked examples live in the test file, because `@source` scans\n * `src/lib` and a literal arbitrary class written here would be compiled into\n * `dist/styles.css`.\n */\nconst isDsShadowVar = (value: string) => /^\\[var\\(--shadow-[a-z0-9-]*\\)\\]$/.test(value);\n\n/**\n * The extension handed to tailwind-merge. Exported for the type and behaviour\n * assertions in `__tests__/cn.test.ts`; it is not part of the public surface —\n * `src/index.ts` exports `cn` only.\n */\nexport const dsMergeConfig = {\n extend: {\n theme: {\n radius: DS_RADIUS,\n shadow: DS_SHADOW,\n ease: DS_EASE,\n font: DS_FONT,\n text: DS_TEXT,\n animate: DS_ANIMATE,\n },\n classGroups: {\n shadow: [{ shadow: [isDsShadowVar] }],\n },\n },\n};\n\n/**\n * Why `extendTailwindMerge` is called through a non-generic alias: its type\n * parameters default to `DefaultClassGroupIds`, a ~400-member string-literal\n * union. Instantiating that generic in this module — which every component\n * imports — interns those literals before the checker reaches the components,\n * and that reorders the string-literal unions TypeScript prints for every `cva`\n * variant prop in `dist/index.d.ts` and `api/root.api.md`: identical types,\n * different member order, and a failing `pnpm api:check` for a change that\n * touches no public signature. The alias keeps the instantiation out of the\n * emitted declarations. `dsMergeConfig` is checked against tailwind-merge's own\n * `ConfigExtension` type in the test file, where emitted types are not at stake,\n * and the 30 conflict tests are the behavioural guard.\n */\nconst extendMerge = extendTailwindMerge as unknown as (\n config: typeof dsMergeConfig,\n) => (...classLists: string[]) => string;\n\nconst twMerge = extendMerge(dsMergeConfig);\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { createElement, useId } from \"react\";\n\nimport type { ControlSize } from \"../foundation/vocab\";\nimport { cn } from \"../lib/cn\";\nimport { iconSizes } from \"../tokens/reference\";\n\n/**\n * The icon contract (target architecture §37; W3-18, W3-19, W3-20): the props\n * every catalogue icon takes, the `<svg>` root they all render through, and\n * `createIcon()`, which builds an icon from path data or elements.\n *\n * The catalogue itself is one module per icon next to this file\n * (`src/icons/<name>-icon.tsx`); `src/icons/index.ts` and the compat facade\n * `src/primitives/icons.tsx` are generated from those modules by\n * `scripts/icons/generate.mjs`. `Icon` and `iconSizePx` are exported for the\n * catalogue modules only — neither barrel re-exports them.\n */\n\n/**\n * Named icon boxes — the four `--ds-icon-size-*` steps of W2-10 (12 / 14 / 16 /\n * 20 px), spelled with the shared size vocabulary (ADR-007) and derived from the\n * token scale so the type and the tokens cannot disagree.\n */\nexport type IconSize = Extract<ControlSize, keyof typeof iconSizes>;\n\nexport interface IconProps extends React.SVGAttributes<SVGElement> {\n /**\n * The icon box. A size name renders `var(--ds-icon-size-<name>)` — with the\n * legacy `--icon-size-<name>` and then the token's pixel value as fallbacks —\n * so a theme can retune the boxes; a number is a pixel box, as before.\n * Defaults to 24, the grid the glyphs are drawn on.\n */\n size?: IconSize | number;\n /**\n * Stroke width of every stroked element, set once on the root `<svg>` and\n * inherited. Defaults to Lucide's 2 on the 24-unit grid, at every size (the\n * line scales with the box, as Lucide's does). An explicit value always wins.\n */\n strokeWidth?: number | string | undefined;\n /**\n * Accessible name. Icons are decorative (`aria-hidden`); a `title` exposes\n * the svg as `role=\"img\"` with a `<title>` child. (An `aria-label` alone\n * still lands on the hidden svg, as it always has — C-DOM-15 freezes that\n * DOM for Pro; use `title` to name an icon.)\n */\n title?: string;\n}\n\n/** What every catalogue icon and every `createIcon()` product is. */\nexport interface IconComponent {\n (props: IconProps): React.JSX.Element;\n displayName?: string;\n /**\n * The Lucide glyph the icon draws, as plain `[tag, attributes]` data. Set on\n * every catalogue icon built from Lucide; `iconToSvg` and `iconCursor` read\n * it to produce the same glyph where React cannot render (CSS cursors,\n * non-React shells). Undefined for brand marks and `createIcon` products.\n */\n readonly iconNode?: IconNode;\n /** How `iconNode` is painted: outline (default), `filled`, or `solid` with knocked-out details. */\n readonly iconPaint?: IconPaint;\n}\n\nconst DEFAULT_VIEW_BOX = \"0 0 24 24\";\n/**\n * Lucide's stroke on the 24-unit grid. The catalogue draws Lucide's glyphs, so\n * `createIcon()` glyphs default to the same weight and sit beside them evenly.\n */\nconst DEFAULT_STROKE_WIDTH = 2;\n\n/** Pixel box of a `size` prop. For the catalogue modules; not package surface. */\nexport function iconSizePx(size: IconSize | number): number {\n return typeof size === \"number\" ? size : Number.parseFloat(iconSizes[size]);\n}\n\nfunction iconSizeVar(size: IconSize): string {\n return `var(--ds-icon-size-${size}, var(--icon-size-${size}, ${iconSizes[size]}))`;\n}\n\n/**\n * The `<svg>` root every catalogue icon renders through. For the catalogue\n * modules (and `createIcon`); not package surface — products use `createIcon`.\n */\nexport function Icon({\n size = 24,\n strokeWidth,\n viewBox = DEFAULT_VIEW_BOX,\n className,\n style,\n title,\n children,\n ...props\n}: IconProps & { children: React.ReactNode }) {\n const px = iconSizePx(size);\n // The pixel attributes are the no-CSS fallback; a named size is a token so\n // that themes and dense layouts can retune every icon at once.\n const box =\n typeof size === \"string\" ? { width: iconSizeVar(size), height: iconSizeVar(size) } : undefined;\n return (\n <svg\n width={px}\n height={px}\n viewBox={viewBox}\n fill=\"none\"\n strokeWidth={strokeWidth ?? DEFAULT_STROKE_WIDTH}\n className={cn(\"ds:shrink-0\", className)}\n style={box || style ? { ...box, ...style } : undefined}\n {...(title !== undefined ? { role: \"img\" } : { \"aria-hidden\": \"true\" })}\n {...props}\n >\n {title !== undefined ? <title>{title}</title> : null}\n {children}\n </svg>\n );\n}\n\nexport interface IconDefinition {\n /** Component name, e.g. `\"ArchiveIcon\"`; becomes the `displayName`. */\n name: string;\n /**\n * What to draw. Path data strings become `currentColor` strokes with round\n * caps and joins, the catalogue's outline style; pass elements for anything\n * else (filled dots, rects, a mark's fixed colours). Elements must not set\n * their own `strokeWidth` — it lives on the root so the prop works.\n */\n paths: string | readonly string[] | React.ReactNode;\n /** Defaults to `\"0 0 24 24\"`. A product icon drawn on another grid sets its own. */\n viewBox?: string;\n /** This glyph's default stroke width when the caller passes none. Defaults to Lucide's 2. */\n strokeWidth?: number | string;\n}\n\nfunction isPathData(paths: IconDefinition[\"paths\"]): paths is string | readonly string[] {\n return (\n typeof paths === \"string\" ||\n (Array.isArray(paths) && paths.every((path) => typeof path === \"string\"))\n );\n}\n\n/**\n * Builds an icon component with the catalogue's props, sizing, stroke and\n * accessibility contract from path data or SVG elements. Products use it for\n * icons that are theirs (vendor logos, annotation shapes) without inlining\n * `<svg>` at call sites; the catalogue uses it for its newer glyphs.\n *\n * @example\n * const ArchiveIcon = createIcon({\n * name: \"ArchiveIcon\",\n * paths: [\"M3 3h18a1 1 0 011 1v3a1 1 0 01-1 1H3a1 1 0 01-1-1V4a1 1 0 011-1z\", \"M4 8v11a2 2 0 002 2h12a2 2 0 002-2V8\", \"M10 12h4\"],\n * });\n */\nexport function createIcon(definition: IconDefinition): IconComponent {\n const { name, paths, viewBox, strokeWidth: defaultStrokeWidth } = definition;\n const children = isPathData(paths)\n ? (typeof paths === \"string\" ? [paths] : paths).map((d, index) => (\n <path\n key={index}\n d={d}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ))\n : paths;\n function Component({ strokeWidth = defaultStrokeWidth, ...props }: IconProps) {\n return (\n <Icon strokeWidth={strokeWidth} viewBox={viewBox} {...props}>\n {children}\n </Icon>\n );\n }\n Component.displayName = name;\n return Component;\n}\n\n/** A glyph from the `lucide` package: its plain `[tag, attributes]` node list. */\nexport type IconNode = readonly (readonly [\n tag: string,\n attributes: Readonly<Record<string, string | number | undefined>>,\n])[];\n\n/**\n * How a Lucide glyph is painted.\n *\n * - `outline` — Lucide's own stroke-only drawing (the default).\n * - `filled` — every shape filled with `currentColor` (`StarIcon`, `StopIcon`).\n * - `solid` — the shapes at `solid` indices filled with `currentColor`, and\n * every other element knocked out of them through a mask, so the inner\n * details (a tick, an exclamation, a cross) show the surface behind the\n * icon on any background. The `*SolidIcon` names use it: the same Lucide\n * geometry as their outline siblings, painted as a solid mark.\n */\nexport type IconPaint =\n | { kind: \"outline\" }\n | { kind: \"filled\" }\n | { kind: \"solid\"; containers: readonly number[] };\n\nfunction nodeElements(node: IconNode, stroke: string, fill?: string, keyPrefix = \"\") {\n return node.map(([tag, attributes], index) =>\n createElement(tag, {\n key: `${keyPrefix}${index}`,\n stroke,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n ...(fill ? { fill } : null),\n ...attributes,\n }),\n );\n}\n\n/** A mask id that is valid in `url(#…)` whatever form `useId` takes. */\nfunction useMaskId(): string {\n return `ds-icon-${useId().replace(/[^A-Za-z0-9_-]/g, \"\")}`;\n}\n\nfunction SolidGlyph({ node, containers }: { node: IconNode; containers: readonly number[] }) {\n const maskId = useMaskId();\n const shapes = node.filter((_, index) => containers.includes(index));\n const knockouts = node.filter((_, index) => !containers.includes(index));\n return (\n <>\n <mask id={maskId} maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"24\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n {nodeElements(knockouts, \"black\", \"none\", \"k\")}\n </mask>\n <g mask={`url(#${maskId})`}>\n {nodeElements(shapes, \"currentColor\", \"currentColor\", \"s\")}\n </g>\n </>\n );\n}\n\n/**\n * Builds a catalogue icon from a Lucide glyph. The node data comes from the\n * framework-free `lucide` package rather than `lucide-react`: its components\n * are `\"use client\"`, which would put a client boundary in front of every\n * icon and break the server-safe `/icons` entry. Rendering the data through\n * `Icon` keeps the catalogue's props and DOM contract. `filled` fills every\n * shape, for the few names whose glyph is a solid mark (`StarIcon`); `solid`\n * lists the container shapes of a `*SolidIcon` (see `IconPaint`).\n * For the catalogue modules; not package surface.\n */\nexport function lucideIcon(\n name: string,\n node: IconNode,\n { filled = false, solid }: { filled?: boolean; solid?: readonly number[] } = {},\n): IconComponent {\n const paint: IconPaint = solid\n ? { kind: \"solid\", containers: solid }\n : filled\n ? { kind: \"filled\" }\n : { kind: \"outline\" };\n let icon: IconComponent;\n if (paint.kind === \"solid\") {\n const Component = (props: IconProps) => (\n <Icon {...props}>\n <SolidGlyph node={node} containers={paint.containers} />\n </Icon>\n );\n Component.displayName = name;\n icon = Component;\n } else {\n icon = createIcon({\n name,\n paths: nodeElements(node, \"currentColor\", paint.kind === \"filled\" ? \"currentColor\" : undefined),\n });\n }\n return Object.assign(icon, { iconNode: node, iconPaint: paint });\n}\n\n/* ─── Framework-free output ────────────────────────────────────────────── */\n\nconst escapeAttribute = (value: string) =>\n value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/</g, \"&lt;\");\n\nfunction kebab(attribute: string): string {\n return attribute.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\nfunction elementMarkup(node: IconNode, extra: Record<string, string>): string {\n return node\n .map(([tag, attributes]) => {\n const all = { \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\", ...extra };\n for (const [key, value] of Object.entries(attributes)) {\n if (value !== undefined) all[kebab(key) as keyof typeof all] = String(value);\n }\n const attrs = Object.entries(all)\n .map(([key, value]) => `${key}=\"${escapeAttribute(value)}\"`)\n .join(\" \");\n return `<${tag} ${attrs}/>`;\n })\n .join(\"\");\n}\n\nfunction glyphMarkup(icon: IconComponent, stroke: string, idSuffix: string): string {\n const node = icon.iconNode;\n if (!node) {\n throw new TypeError(\n `${icon.displayName ?? \"This icon\"} has no Lucide glyph data; only catalogue icons built from Lucide can be serialised.`,\n );\n }\n const paint = icon.iconPaint ?? { kind: \"outline\" };\n if (paint.kind !== \"solid\") {\n return elementMarkup(node, {\n stroke,\n fill: paint.kind === \"filled\" ? stroke : \"none\",\n });\n }\n const id = `ds-icon-mask-${idSuffix}`;\n const shapes = node.filter((_, index) => paint.containers.includes(index));\n const knockouts = node.filter((_, index) => !paint.containers.includes(index));\n return (\n `<mask id=\"${id}\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"24\">` +\n `<rect width=\"24\" height=\"24\" fill=\"white\"/>${elementMarkup(knockouts, { stroke: \"black\", fill: \"none\" })}</mask>` +\n `<g mask=\"url(#${id})\">${elementMarkup(shapes, { stroke, fill: stroke })}</g>`\n );\n}\n\nexport interface IconToSvgOptions {\n /** Pixel box. Defaults to 24. */\n size?: number;\n /** Stroke width on the 24-unit grid. Defaults to Lucide's 2. */\n strokeWidth?: number;\n /** Paint. Defaults to `currentColor`; pass a colour where no CSS colour is inherited. */\n color?: string;\n /** Accessible name. Without it the markup is `aria-hidden`. */\n title?: string;\n}\n\n/**\n * A catalogue icon as a self-contained SVG string — the same Lucide glyph the\n * component renders — for places React cannot render into: a shell written as\n * plain HTML (the desktop connector), a native image, an email. Throws for\n * icons without Lucide data (brand marks). Pure: safe on the server.\n *\n * @example\n * iconToSvg(CheckIcon, { size: 16, color: \"#16a34a\" })\n */\nexport function iconToSvg(icon: IconComponent, options: IconToSvgOptions = {}): string {\n const { size = 24, strokeWidth = DEFAULT_STROKE_WIDTH, color = \"currentColor\", title } = options;\n const name = escapeAttribute(icon.displayName ?? \"icon\");\n const a11y = title\n ? `role=\"img\"><title>${escapeAttribute(title)}</title>`\n : `aria-hidden=\"true\">`;\n return (\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"${DEFAULT_VIEW_BOX}\" ` +\n `fill=\"none\" stroke-width=\"${strokeWidth}\" data-icon=\"${name}\" ${a11y}` +\n `${glyphMarkup(icon, escapeAttribute(color), name)}</svg>`\n );\n}\n\nexport interface IconCursorOptions {\n /** The click point on the 24-unit grid, `[x, y]`. */\n hotspot: readonly [number, number];\n /** CSS cursor used where custom cursors are unsupported. Defaults to `auto`. */\n fallback?: string;\n /** Ink of the glyph. Defaults to black; a white halo keeps it visible on any page. */\n color?: string;\n}\n\n/**\n * A catalogue icon as a CSS `cursor` value: the Lucide glyph drawn at 24px\n * with a halo so it reads over any document, then the hotspot and fallback.\n * Use it for tool modes (a highlighter, a stamp) instead of a hand-drawn\n * data-URL cursor.\n *\n * @example\n * style={{ cursor: iconCursor(HighlighterIcon, { hotspot: [3, 20], fallback: \"text\" }) }}\n */\nexport function iconCursor(icon: IconComponent, options: IconCursorOptions): string {\n const { hotspot, fallback = \"auto\", color = \"black\" } = options;\n const halo = glyphMarkup(icon, \"white\", \"halo\");\n const ink = glyphMarkup(icon, escapeAttribute(color), \"ink\");\n const svg =\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"${DEFAULT_VIEW_BOX}\" fill=\"none\">` +\n `<g stroke-width=\"4\">${halo}</g><g stroke-width=\"2\">${ink}</g></svg>`;\n return `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\") ${hotspot[0]} ${hotspot[1]}, ${fallback}`;\n}\n","import { CircleAlert } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AlertCircleIcon = /* @__PURE__ */ lucideIcon(\"AlertCircleIcon\", CircleAlert);\n","import { TriangleAlert } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AlertTriangleIcon = /* @__PURE__ */ lucideIcon(\"AlertTriangleIcon\", TriangleAlert);\n","import { TriangleAlert } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Lucide `TriangleAlert` painted solid: filled triangle, the exclamation knocked out. */\nexport const AlertTriangleSolidIcon = /* @__PURE__ */ lucideIcon(\"AlertTriangleSolidIcon\", TriangleAlert, { solid: [0] });\n","import { TextAlignCenter } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AlignCenterIcon = /* @__PURE__ */ lucideIcon(\"AlignCenterIcon\", TextAlignCenter);\n","import { TextAlignStart } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AlignLeftIcon = /* @__PURE__ */ lucideIcon(\"AlignLeftIcon\", TextAlignStart);\n","import { TextAlignEnd } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AlignRightIcon = /* @__PURE__ */ lucideIcon(\"AlignRightIcon\", TextAlignEnd);\n","import { AppWindow } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AppWindowIcon = /* @__PURE__ */ lucideIcon(\"AppWindowIcon\", AppWindow);\n","import { Archive } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ArchiveIcon = /* @__PURE__ */ lucideIcon(\"ArchiveIcon\", Archive);\n","import { ArrowDown } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ArrowDownIcon = /* @__PURE__ */ lucideIcon(\"ArrowDownIcon\", ArrowDown);\n","import { ArrowLeft } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ArrowLeftIcon = /* @__PURE__ */ lucideIcon(\"ArrowLeftIcon\", ArrowLeft);\n","import { ArrowRight } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ArrowRightIcon = /* @__PURE__ */ lucideIcon(\"ArrowRightIcon\", ArrowRight);\n","import { ArrowRightIcon } from \"./arrow-right-icon\";\n\n/**\n * @deprecated Use `ArrowRightIcon` — it is the same path; \"small\" was never a\n * different drawing. This alias is the identical component and stays through 2.x.\n */\nexport const ArrowRightSmallIcon = ArrowRightIcon;\n","import { ArrowUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ArrowUpIcon = /* @__PURE__ */ lucideIcon(\"ArrowUpIcon\", ArrowUp);\n","import { ArrowUpRight } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Opens or jumps to the item — an arrow leaving the top-right corner. */\nexport const ArrowUpRightIcon = /* @__PURE__ */ lucideIcon(\"ArrowUpRightIcon\", ArrowUpRight);\n","import { AtSign } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const AtSignIcon = /* @__PURE__ */ lucideIcon(\"AtSignIcon\", AtSign);\n","import { Ban } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Not allowed / blocked / voided. */\nexport const BanIcon = /* @__PURE__ */ lucideIcon(\"BanIcon\", Ban);\n","import { ChartNoAxesColumn } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BarChartIcon = /* @__PURE__ */ lucideIcon(\"BarChartIcon\", ChartNoAxesColumn);\n","import { Bell } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BellIcon = /* @__PURE__ */ lucideIcon(\"BellIcon\", Bell);\n","import { BellRing } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BellRingIcon = /* @__PURE__ */ lucideIcon(\"BellRingIcon\", BellRing);\n","import { Bold } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BoldIcon = /* @__PURE__ */ lucideIcon(\"BoldIcon\", Bold);\n","import { BookText } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BookTextIcon = /* @__PURE__ */ lucideIcon(\"BookTextIcon\", BookText);\n","import { Brain } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BrainIcon = /* @__PURE__ */ lucideIcon(\"BrainIcon\", Brain);\n","import { Briefcase } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BriefcaseIcon = /* @__PURE__ */ lucideIcon(\"BriefcaseIcon\", Briefcase);\n","import { Building2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const Building2Icon = /* @__PURE__ */ lucideIcon(\"Building2Icon\", Building2);\n","import { Building } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const BuildingIcon = /* @__PURE__ */ lucideIcon(\"BuildingIcon\", Building);\n","import { Calculator } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Calculator — a computed amount or a calculation tool. */\nexport const CalculatorIcon = /* @__PURE__ */ lucideIcon(\"CalculatorIcon\", Calculator);\n","import { Calendar } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CalendarIcon = /* @__PURE__ */ lucideIcon(\"CalendarIcon\", Calendar);\n","import { Camera } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Take or attach a photo. */\nexport const CameraIcon = /* @__PURE__ */ lucideIcon(\"CameraIcon\", Camera);\n","import { ChartNoAxesColumnIncreasing } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChartNoAxesColumnIncreasingIcon = /* @__PURE__ */ lucideIcon(\"ChartNoAxesColumnIncreasingIcon\", ChartNoAxesColumnIncreasing);\n","import { MessageSquare } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChatBubbleIcon = /* @__PURE__ */ lucideIcon(\"ChatBubbleIcon\", MessageSquare);\n","import { CheckCheck } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Double tick — delivered or read. */\nexport const CheckCheckIcon = /* @__PURE__ */ lucideIcon(\"CheckCheckIcon\", CheckCheck);\n","import { CircleCheck } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CheckCircle2Icon = /* @__PURE__ */ lucideIcon(\"CheckCircle2Icon\", CircleCheck);\n","import { CircleCheck } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Lucide `CircleCheck` painted solid: filled circle, the tick knocked out. */\nexport const CheckCircleSolidIcon = /* @__PURE__ */ lucideIcon(\"CheckCircleSolidIcon\", CircleCheck, { solid: [0] });\n","import { Check } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CheckIcon = /* @__PURE__ */ lucideIcon(\"CheckIcon\", Check);\n","import { ChevronDown } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChevronDownIcon = /* @__PURE__ */ lucideIcon(\"ChevronDownIcon\", ChevronDown);\n","import { ChevronLeft } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChevronLeftIcon = /* @__PURE__ */ lucideIcon(\"ChevronLeftIcon\", ChevronLeft);\n","import { ChevronRight } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChevronRightIcon = /* @__PURE__ */ lucideIcon(\"ChevronRightIcon\", ChevronRight);\n","import { ChevronUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChevronUpIcon = /* @__PURE__ */ lucideIcon(\"ChevronUpIcon\", ChevronUp);\n","import { ChevronsDownUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Collapse — the pair of `ChevronsUpDownIcon`. */\nexport const ChevronsDownUpIcon = /* @__PURE__ */ lucideIcon(\"ChevronsDownUpIcon\", ChevronsDownUp);\n","import { ChevronsLeft } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Collapse to the left / jump to the start. */\nexport const ChevronsLeftIcon = /* @__PURE__ */ lucideIcon(\"ChevronsLeftIcon\", ChevronsLeft);\n","import { ChevronsRight } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Expand to the right / jump to the end. */\nexport const ChevronsRightIcon = /* @__PURE__ */ lucideIcon(\"ChevronsRightIcon\", ChevronsRight);\n","import { ChevronsUpDown } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ChevronsUpDownIcon = /* @__PURE__ */ lucideIcon(\"ChevronsUpDownIcon\", ChevronsUpDown);\n","import { CircleDashed } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CircleDashedIcon = /* @__PURE__ */ lucideIcon(\"CircleDashedIcon\", CircleDashed);\n","import { CircleDot } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CircleDotIcon = /* @__PURE__ */ lucideIcon(\"CircleDotIcon\", CircleDot);\n","import { Circle } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CircleIcon = /* @__PURE__ */ lucideIcon(\"CircleIcon\", Circle);\n","import { ClipboardCheck } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ClipboardCheckIcon = /* @__PURE__ */ lucideIcon(\"ClipboardCheckIcon\", ClipboardCheck);\n","import { ClockAlert } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ClockAlertIcon = /* @__PURE__ */ lucideIcon(\"ClockAlertIcon\", ClockAlert);\n","import { Clock } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ClockIcon = /* @__PURE__ */ lucideIcon(\"ClockIcon\", Clock);\n","import { X } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const XIcon = /* @__PURE__ */ lucideIcon(\"XIcon\", X);\n","import { XIcon } from \"./x-icon\";\n\n/**\n * @deprecated Use `XIcon` — the same glyph under its lucide name (the catalogue\n * drew it twice). This alias is the identical component and stays through 2.x.\n */\nexport const CloseIcon = XIcon;\n","import { Command } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CommandIcon = /* @__PURE__ */ lucideIcon(\"CommandIcon\", Command);\n","import { Copy } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CopyIcon = /* @__PURE__ */ lucideIcon(\"CopyIcon\", Copy);\n","import { CornerDownLeft } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CornerDownLeftIcon = /* @__PURE__ */ lucideIcon(\"CornerDownLeftIcon\", CornerDownLeft);\n","import { CreditCard } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const CreditCardIcon = /* @__PURE__ */ lucideIcon(\"CreditCardIcon\", CreditCard);\n","import { DecimalsArrowLeft } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const DecimalsArrowLeftIcon = /* @__PURE__ */ lucideIcon(\"DecimalsArrowLeftIcon\", DecimalsArrowLeft);\n","import { DecimalsArrowRight } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const DecimalsArrowRightIcon = /* @__PURE__ */ lucideIcon(\"DecimalsArrowRightIcon\", DecimalsArrowRight);\n","import { FileText } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FileTextIcon = /* @__PURE__ */ lucideIcon(\"FileTextIcon\", FileText);\n","import { FileTextIcon } from \"./file-text-icon\";\n\n/** The same glyph as `FileTextIcon` (Lucide `file-text`), under its older name. */\nexport const DocumentIcon = FileTextIcon;\n","import { DollarSign } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const DollarSignIcon = /* @__PURE__ */ lucideIcon(\"DollarSignIcon\", DollarSign);\n","import { Download } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const DownloadIcon = /* @__PURE__ */ lucideIcon(\"DownloadIcon\", Download);\n","import { ExternalLink } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Pop-out / opens elsewhere — box with an arrow leaving the top-right corner. */\nexport const ExternalLinkIcon = /* @__PURE__ */ lucideIcon(\"ExternalLinkIcon\", ExternalLink);\n","import { Sparkles } from \"lucide\";\nimport { createElement, useId } from \"react\";\n\nimport { Icon, type IconComponent, type IconProps } from \"./icon-base\";\n\n/** The two stops of `--ds-gradient-ai`; an SVG paint server cannot read a CSS gradient. */\nconst AI_GRADIENT_FROM = \"#9e32ff\";\nconst AI_GRADIENT_TO = \"#1bb6ff\";\n\n/**\n * ExtractIcon — Lucide `Sparkles` stroked with the AI gradient (Pro purple →\n * cyan), for AI \"Extract\" affordances. Unlike the currentColor catalogue the\n * paint is the fixed `--ds-gradient-ai` ramp. Defaults to 16px. The gradient\n * id is per instance (`useId`) so several icons on a page do not clash.\n */\nfunction ExtractIconComponent({ size = 16, ...props }: IconProps) {\n const gradientId = `ds-extract-${useId().replace(/[^A-Za-z0-9_-]/g, \"\")}`;\n const stroke = `url(#${gradientId})`;\n return (\n <Icon size={size} {...props}>\n <defs>\n <linearGradient id={gradientId} x1=\"2\" y1=\"2\" x2=\"22\" y2=\"22\" gradientUnits=\"userSpaceOnUse\">\n <stop stopColor={AI_GRADIENT_FROM} />\n <stop offset=\"1\" stopColor={AI_GRADIENT_TO} />\n </linearGradient>\n </defs>\n {Sparkles.map(([tag, attributes], index) =>\n createElement(tag, {\n key: index,\n stroke,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n ...attributes,\n }),\n )}\n </Icon>\n );\n}\nfunction defineExtractIcon(): IconComponent {\n return Object.assign(ExtractIconComponent, {\n displayName: \"ExtractIcon\",\n iconNode: Sparkles,\n iconPaint: { kind: \"outline\" } as const,\n });\n}\n\n/** Built through a pure call so bundles that do not use it drop it. */\nexport const ExtractIcon = /* @__PURE__ */ defineExtractIcon();\n","import { Eye } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const EyeIcon = /* @__PURE__ */ lucideIcon(\"EyeIcon\", Eye);\n","import { EyeOff } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const EyeOffIcon = /* @__PURE__ */ lucideIcon(\"EyeOffIcon\", EyeOff);\n","import { FileChartColumn } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** A report document — a page with a column chart. */\nexport const FileChartColumnIcon = /* @__PURE__ */ lucideIcon(\n \"FileChartColumnIcon\",\n FileChartColumn,\n);\n","import { File } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FileIcon = /* @__PURE__ */ lucideIcon(\"FileIcon\", File);\n","import { FilePlus } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FilePlusIcon = /* @__PURE__ */ lucideIcon(\"FilePlusIcon\", FilePlus);\n","import { FileUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FileReturnIcon = /* @__PURE__ */ lucideIcon(\"FileReturnIcon\", FileUp);\n","import { Funnel } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/**\n * FilterIcon — funnel mark used for filter popover triggers across list\n * pages (clients, workflow, billing, organizers…) — Lucide `funnel`. Pair\n * with a corner notification dot to surface active filter count.\n */\nexport const FilterIcon = /* @__PURE__ */ lucideIcon(\"FilterIcon\", Funnel);\n","import { Flag } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FlagIcon = /* @__PURE__ */ lucideIcon(\"FlagIcon\", Flag);\n","import { Folder } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FolderClosedIcon = /* @__PURE__ */ lucideIcon(\"FolderClosedIcon\", Folder);\n","import { FolderDown } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Download a folder's contents. */\nexport const FolderDownIcon = /* @__PURE__ */ lucideIcon(\"FolderDownIcon\", FolderDown);\n","import { FolderOpen } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FolderOpenIcon = /* @__PURE__ */ lucideIcon(\"FolderOpenIcon\", FolderOpen);\n","import { FolderPlus } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const FolderPlusIcon = /* @__PURE__ */ lucideIcon(\"FolderPlusIcon\", FolderPlus);\n","import { FolderUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Folder with an up-arrow — the \"upload documents\" / document-request mark. */\nexport const FolderUpIcon = /* @__PURE__ */ lucideIcon(\"FolderUpIcon\", FolderUp);\n","import { Globe } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const GlobeIcon = /* @__PURE__ */ lucideIcon(\"GlobeIcon\", Globe);\n","import { Icon, type IconProps } from \"./icon-base\";\n\n// Tier E — brand icons (multi-color, brand-locked). These DO NOT respond\n// to `currentColor` or `color-*` token classes — that's by design. Use\n// only inside OAuth buttons, integration chips, and provider-list UIs.\n// All other \"icon\" usages should stay in the semantic catalog above.\n// Suffixed `BrandIcon` to make the different contract obvious at the\n// call site.\n/**\n * GoogleBrandIcon — Google four-color \"G\" mark. Brand-locked colors,\n * does NOT respond to currentColor. Use only in provider-list UIs\n * (OAuth buttons, integration chips). Standard 24-grid.\n */\nexport function GoogleBrandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <path\n fill=\"#4285F4\"\n d=\"M22 12.27c0-.71-.06-1.4-.18-2.07H12v3.93h5.59a4.78 4.78 0 01-2.07 3.14v2.6h3.34c1.95-1.8 3.08-4.45 3.08-7.6z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M12 22.5c2.81 0 5.16-.93 6.88-2.52l-3.34-2.6c-.93.62-2.11.99-3.54.99-2.72 0-5.03-1.84-5.86-4.31H2.69v2.69A10.5 10.5 0 0012 22.5z\"\n />\n <path\n fill=\"#FBBC05\"\n d=\"M6.14 14.06A6.3 6.3 0 015.8 12c0-.71.12-1.4.34-2.06V7.25H2.69A10.5 10.5 0 001.5 12c0 1.7.41 3.3 1.19 4.75l3.45-2.69z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M12 5.63c1.53 0 2.91.53 4 1.56l3-3C17.16 2.47 14.8 1.5 12 1.5A10.5 10.5 0 002.69 7.25l3.45 2.69C7 7.47 9.28 5.63 12 5.63z\"\n />\n </Icon>\n );\n}\n","import { GraduationCap } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Learning — tours, tutorials and training. */\nexport const GraduationCapIcon = /* @__PURE__ */ lucideIcon(\"GraduationCapIcon\", GraduationCap);\n","import { Grid2x2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const Grid2x2Icon = /* @__PURE__ */ lucideIcon(\"Grid2x2Icon\", Grid2x2);\n","import { GripHorizontal } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Six-dot drag handle for horizontally dragged tiles and widgets. */\nexport const GripHorizontalIcon = /* @__PURE__ */ lucideIcon(\"GripHorizontalIcon\", GripHorizontal);\n","import { GripVertical } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Six-dot drag handle for sortable rows and kanban cards. */\nexport const GripVerticalIcon = /* @__PURE__ */ lucideIcon(\"GripVerticalIcon\", GripVertical);\n","import { CircleQuestionMark } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const HelpCircleIcon = /* @__PURE__ */ lucideIcon(\"HelpCircleIcon\", CircleQuestionMark);\n","import { Highlighter } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const HighlighterIcon = /* @__PURE__ */ lucideIcon(\"HighlighterIcon\", Highlighter);\n","import { History } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const HistoryIcon = /* @__PURE__ */ lucideIcon(\"HistoryIcon\", History);\n","import { House } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const HomeIcon = /* @__PURE__ */ lucideIcon(\"HomeIcon\", House);\n","import { Inbox } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const InboxIcon = /* @__PURE__ */ lucideIcon(\"InboxIcon\", Inbox);\n","import { Info } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Lucide `Info` painted solid: filled circle, the i knocked out. */\nexport const InfoCircleSolidIcon = /* @__PURE__ */ lucideIcon(\"InfoCircleSolidIcon\", Info, { solid: [0] });\n","import { Info } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const InfoIcon = /* @__PURE__ */ lucideIcon(\"InfoIcon\", Info);\n","import { Italic } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ItalicIcon = /* @__PURE__ */ lucideIcon(\"ItalicIcon\", Italic);\n","import { Kanban } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const KanbanIcon = /* @__PURE__ */ lucideIcon(\"KanbanIcon\", Kanban);\n","import { Key } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const KeyIcon = /* @__PURE__ */ lucideIcon(\"KeyIcon\", Key);\n","import { Landmark } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Landmark / \"bank\" glyph (columns + pediment) — the accounting service mark. */\nexport const LandmarkIcon = /* @__PURE__ */ lucideIcon(\"LandmarkIcon\", Landmark);\n","import { Layers } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LayersIcon = /* @__PURE__ */ lucideIcon(\"LayersIcon\", Layers);\n","import { LayoutDashboard } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LayoutDashboardIcon = /* @__PURE__ */ lucideIcon(\n \"LayoutDashboardIcon\",\n LayoutDashboard,\n);\n","import { LayoutGrid } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LayoutGridIcon = /* @__PURE__ */ lucideIcon(\"LayoutGridIcon\", LayoutGrid);\n","import { LayoutList } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LayoutListIcon = /* @__PURE__ */ lucideIcon(\"LayoutListIcon\", LayoutList);\n","import { Zap } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LightningIcon = /* @__PURE__ */ lucideIcon(\"LightningIcon\", Zap);\n","import { Link2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const Link2Icon = /* @__PURE__ */ lucideIcon(\"Link2Icon\", Link2);\n","import { Link } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LinkIcon = /* @__PURE__ */ lucideIcon(\"LinkIcon\", Link);\n","import { ListChecks } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ListChecksIcon = /* @__PURE__ */ lucideIcon(\"ListChecksIcon\", ListChecks);\n","import { List } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ListIcon = /* @__PURE__ */ lucideIcon(\"ListIcon\", List);\n","import { ListOrdered } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ListOrderedIcon = /* @__PURE__ */ lucideIcon(\"ListOrderedIcon\", ListOrdered);\n","import { LoaderCircle } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/**\n * LoaderIcon — animated spinner (Lucide `loader-circle`). Render with\n * `className=\"animate-spin\"` (or `motion-safe:animate-spin` if you want to\n * respect `prefers-reduced-motion`; the catalog doesn't gate this itself\n * because the spinner IS the indicator for many flows).\n *\n * Visual contract: a three-quarter arc whose open end reads as the spinner's\n * leading edge when rotated.\n */\nexport const LoaderIcon = /* @__PURE__ */ lucideIcon(\"LoaderIcon\", LoaderCircle);\n","import { Lock } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LockIcon = /* @__PURE__ */ lucideIcon(\"LockIcon\", Lock);\n","import { LockKeyhole } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LockKeyholeIcon = /* @__PURE__ */ lucideIcon(\"LockKeyholeIcon\", LockKeyhole);\n","import { LockOpen } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LockOpenIcon = /* @__PURE__ */ lucideIcon(\"LockOpenIcon\", LockOpen);\n","import { LogOut } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const LogOutIcon = /* @__PURE__ */ lucideIcon(\"LogOutIcon\", LogOut);\n","import { Mail } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MailIcon = /* @__PURE__ */ lucideIcon(\"MailIcon\", Mail);\n","import { MapPin } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MapPinIcon = /* @__PURE__ */ lucideIcon(\"MapPinIcon\", MapPin);\n","import { Maximize } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Enter full screen / expand a panel — four outward corners. */\nexport const MaximizeIcon = /* @__PURE__ */ lucideIcon(\"MaximizeIcon\", Maximize);\n","import { Menu } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MenuIcon = /* @__PURE__ */ lucideIcon(\"MenuIcon\", Menu);\n","import { MessageCircle } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MessageCircleIcon = /* @__PURE__ */ lucideIcon(\"MessageCircleIcon\", MessageCircle);\n","import { MessageCircleMore } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Chat with an ellipsis — a conversation, or someone typing. */\nexport const MessageCircleMoreIcon = /* @__PURE__ */ lucideIcon(\n \"MessageCircleMoreIcon\",\n MessageCircleMore,\n);\n","import { MessageCircleWarning } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MessageCircleWarningIcon = /* @__PURE__ */ lucideIcon(\n \"MessageCircleWarningIcon\",\n MessageCircleWarning,\n);\n","import { Mic } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MicIcon = /* @__PURE__ */ lucideIcon(\"MicIcon\", Mic);\n","import { Icon, type IconProps } from \"./icon-base\";\n\n/**\n * MicrosoftBrandIcon — Microsoft four-square mark in red / green / blue /\n * yellow. Brand-locked colors, does NOT respond to currentColor. Use\n * inside Microsoft OAuth signin buttons, Outlook / Office integration\n * chips, and similar provider-list UIs. Standard 24-grid (10×10 squares\n * with 2u gaps).\n */\nexport function MicrosoftBrandIcon({ size = 24, ...props }: IconProps) {\n return (\n <Icon size={size} {...props}>\n <rect x=\"1\" y=\"1\" width=\"10\" height=\"10\" fill=\"#F25022\" />\n <rect x=\"13\" y=\"1\" width=\"10\" height=\"10\" fill=\"#7FBA00\" />\n <rect x=\"1\" y=\"13\" width=\"10\" height=\"10\" fill=\"#00A4EF\" />\n <rect x=\"13\" y=\"13\" width=\"10\" height=\"10\" fill=\"#FFB900\" />\n </Icon>\n );\n}\n","import { Minimize } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Leave full screen / shrink a panel — four inward corners. */\nexport const MinimizeIcon = /* @__PURE__ */ lucideIcon(\"MinimizeIcon\", Minimize);\n","import { Minus } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MinusIcon = /* @__PURE__ */ lucideIcon(\"MinusIcon\", Minus);\n","import { Monitor } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MonitorIcon = /* @__PURE__ */ lucideIcon(\"MonitorIcon\", Monitor);\n","import { Moon } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MoonIcon = /* @__PURE__ */ lucideIcon(\"MoonIcon\", Moon);\n","import { Ellipsis } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MoreHorizontalIcon = /* @__PURE__ */ lucideIcon(\"MoreHorizontalIcon\", Ellipsis);\n","import { EllipsisVertical } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Row or card overflow menu — the vertical pair of `MoreHorizontalIcon`. */\nexport const MoreVerticalIcon = /* @__PURE__ */ lucideIcon(\"MoreVerticalIcon\", EllipsisVertical);\n","import { MousePointer2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Pointer / select tool. */\nexport const MousePointer2Icon = /* @__PURE__ */ lucideIcon(\"MousePointer2Icon\", MousePointer2);\n","import { Move } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const MoveIcon = /* @__PURE__ */ lucideIcon(\"MoveIcon\", Move);\n","import { Palette } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PaletteIcon = /* @__PURE__ */ lucideIcon(\"PaletteIcon\", Palette);\n","import { PanelLeftClose } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PanelLeftCloseIcon = /* @__PURE__ */ lucideIcon(\"PanelLeftCloseIcon\", PanelLeftClose);\n","import { PanelLeft } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PanelLeftIcon = /* @__PURE__ */ lucideIcon(\"PanelLeftIcon\", PanelLeft);\n","import { PanelRightClose } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Collapse the right panel — the mirror of `PanelLeftCloseIcon`. */\nexport const PanelRightCloseIcon = /* @__PURE__ */ lucideIcon(\n \"PanelRightCloseIcon\",\n PanelRightClose,\n);\n","import { PanelRight } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Dock to the right — the mirror of `PanelLeftIcon`. */\nexport const PanelRightIcon = /* @__PURE__ */ lucideIcon(\"PanelRightIcon\", PanelRight);\n","import { Paperclip } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PaperclipIcon = /* @__PURE__ */ lucideIcon(\"PaperclipIcon\", Paperclip);\n","import { Pause } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PauseIcon = /* @__PURE__ */ lucideIcon(\"PauseIcon\", Pause);\n","import { Signature } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PenSignIcon = /* @__PURE__ */ lucideIcon(\"PenSignIcon\", Signature);\n","import { PenTool } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Pen-tool / nibbed signature pen — the e-signature mark. */\nexport const PenToolIcon = /* @__PURE__ */ lucideIcon(\"PenToolIcon\", PenTool);\n","import { Pencil } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PencilIcon = /* @__PURE__ */ lucideIcon(\"PencilIcon\", Pencil);\n","import { Percent } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PercentIcon = /* @__PURE__ */ lucideIcon(\"PercentIcon\", Percent);\n","import { Phone } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PhoneIcon = /* @__PURE__ */ lucideIcon(\"PhoneIcon\", Phone);\n","import { Pin } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PinIcon = /* @__PURE__ */ lucideIcon(\"PinIcon\", Pin);\n","import { PinOff } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PinOffIcon = /* @__PURE__ */ lucideIcon(\"PinOffIcon\", PinOff);\n","import { Play } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PlayIcon = /* @__PURE__ */ lucideIcon(\"PlayIcon\", Play);\n","import { Plus } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const PlusIcon = /* @__PURE__ */ lucideIcon(\"PlusIcon\", Plus);\n","import { Receipt } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ReceiptIcon = /* @__PURE__ */ lucideIcon(\"ReceiptIcon\", Receipt);\n","import { RefreshCw } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Two clockwise arrows — refresh / sync. `RotateCcwIcon` is the single-arrow undo. */\nexport const RefreshCwIcon = /* @__PURE__ */ lucideIcon(\"RefreshCwIcon\", RefreshCw);\n","import { Repeat } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const RepeatIcon = /* @__PURE__ */ lucideIcon(\"RepeatIcon\", Repeat);\n","import { Reply } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ReplyIcon = /* @__PURE__ */ lucideIcon(\"ReplyIcon\", Reply);\n","import { RotateCcw } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const RotateCcwIcon = /* @__PURE__ */ lucideIcon(\"RotateCcwIcon\", RotateCcw);\n","import { Rows4 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const Rows4Icon = /* @__PURE__ */ lucideIcon(\"Rows4Icon\", Rows4);\n","import { Rows } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const RowsIcon = /* @__PURE__ */ lucideIcon(\"RowsIcon\", Rows);\n","import { Save } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SaveIcon = /* @__PURE__ */ lucideIcon(\"SaveIcon\", Save);\n","import { SearchCheck } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SearchCheckIcon = /* @__PURE__ */ lucideIcon(\"SearchCheckIcon\", SearchCheck);\n","import { Search } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SearchIcon = /* @__PURE__ */ lucideIcon(\"SearchIcon\", Search);\n","import { Send } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SendIcon = /* @__PURE__ */ lucideIcon(\"SendIcon\", Send);\n","import { Settings } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SettingsIcon = /* @__PURE__ */ lucideIcon(\"SettingsIcon\", Settings);\n","import { Shield } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ShieldIcon = /* @__PURE__ */ lucideIcon(\"ShieldIcon\", Shield);\n","import { Sigma } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Formula / sum — the Greek capital sigma. */\nexport const SigmaIcon = /* @__PURE__ */ lucideIcon(\"SigmaIcon\", Sigma);\n","import { Slash } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SlashIcon = /* @__PURE__ */ lucideIcon(\"SlashIcon\", Slash);\n","import { Smartphone } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SmartphoneIcon = /* @__PURE__ */ lucideIcon(\"SmartphoneIcon\", Smartphone);\n","import { Sparkle } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SparkleIcon = /* @__PURE__ */ lucideIcon(\"SparkleIcon\", Sparkle);\n","import { Sparkles } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SparklesIcon = /* @__PURE__ */ lucideIcon(\"SparklesIcon\", Sparkles);\n","import { SquareExclamationPoint } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SquareExclamationPointIcon = /* @__PURE__ */ lucideIcon(\"SquareExclamationPointIcon\", SquareExclamationPoint);\n","import { SquareFunction } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SquareFunctionIcon = /* @__PURE__ */ lucideIcon(\"SquareFunctionIcon\", SquareFunction);\n","import { Square } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SquareIcon = /* @__PURE__ */ lucideIcon(\"SquareIcon\", Square);\n","import { SquarePlay } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** A video item — a play mark in a frame; `PlayIcon` is the playback control. */\nexport const SquarePlayIcon = /* @__PURE__ */ lucideIcon(\"SquarePlayIcon\", SquarePlay);\n","import { SquareSquare } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SquareSquareIcon = /* @__PURE__ */ lucideIcon(\"SquareSquareIcon\", SquareSquare);\n","import { Stamp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const StampIcon = /* @__PURE__ */ lucideIcon(\"StampIcon\", Stamp);\n","import { Star } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const StarIcon = /* @__PURE__ */ lucideIcon(\"StarIcon\", Star, { filled: true });\n","import { Square } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const StopIcon = /* @__PURE__ */ lucideIcon(\"StopIcon\", Square, { filled: true });\n","import { Strikethrough } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const StrikethroughIcon = /* @__PURE__ */ lucideIcon(\"StrikethroughIcon\", Strikethrough);\n","import { Sun } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const SunIcon = /* @__PURE__ */ lucideIcon(\"SunIcon\", Sun);\n","import { Table } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const TableIcon = /* @__PURE__ */ lucideIcon(\"TableIcon\", Table);\n","import { Tag } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const TagIcon = /* @__PURE__ */ lucideIcon(\"TagIcon\", Tag);\n","import { UserPlus } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const TeamIcon = /* @__PURE__ */ lucideIcon(\"TeamIcon\", UserPlus);\n","import { ThumbsDown } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ThumbsDownIcon = /* @__PURE__ */ lucideIcon(\"ThumbsDownIcon\", ThumbsDown);\n","import { ThumbsUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ThumbsUpIcon = /* @__PURE__ */ lucideIcon(\"ThumbsUpIcon\", ThumbsUp);\n","import { Timer } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Stopwatch — elapsed time and timers; `ClockIcon` is wall-clock time. */\nexport const TimerIcon = /* @__PURE__ */ lucideIcon(\"TimerIcon\", Timer);\n","import { Trash } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const TrashIcon = /* @__PURE__ */ lucideIcon(\"TrashIcon\", Trash);\n","import { TrashIcon } from \"./trash-icon\";\n\n/** The same glyph as `TrashIcon`: Lucide merged `trash-2` into `trash`. */\nexport const Trash2Icon = TrashIcon;\n","import { Trash2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Lucide `Trash2` painted solid, for destructive affordances in small round buttons where the outline reads thin: filled can and lid, the two slots knocked out. */\nexport const TrashSolidIcon = /* @__PURE__ */ lucideIcon(\"TrashSolidIcon\", Trash2, { solid: [2, 3, 4] });\n","import { TrendingDown } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const TrendingDownIcon = /* @__PURE__ */ lucideIcon(\"TrendingDownIcon\", TrendingDown);\n","import { TrendingUp } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const TrendingUpIcon = /* @__PURE__ */ lucideIcon(\"TrendingUpIcon\", TrendingUp);\n","import { Type } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Text / typography — a text block or a text field. */\nexport const TypeIcon = /* @__PURE__ */ lucideIcon(\"TypeIcon\", Type);\n","import { Underline } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const UnderlineIcon = /* @__PURE__ */ lucideIcon(\"UnderlineIcon\", Underline);\n","import { Undo2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const Undo2Icon = /* @__PURE__ */ lucideIcon(\"Undo2Icon\", Undo2);\n","import { Upload } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const UploadIcon = /* @__PURE__ */ lucideIcon(\"UploadIcon\", Upload);\n","import { CircleUser } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const UserCircleIcon = /* @__PURE__ */ lucideIcon(\"UserCircleIcon\", CircleUser);\n","import { User } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const UserIcon = /* @__PURE__ */ lucideIcon(\"UserIcon\", User);\n","import { Users } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const UsersIcon = /* @__PURE__ */ lucideIcon(\"UsersIcon\", Users);\n","import { Video } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Video camera; pair with `PlayIcon` for playback. */\nexport const VideoIcon = /* @__PURE__ */ lucideIcon(\"VideoIcon\", Video);\n","import { Volume2 } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Speaker with two sound waves — audio on. */\nexport const Volume2Icon = /* @__PURE__ */ lucideIcon(\"Volume2Icon\", Volume2);\n","import { VolumeX } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Speaker with a cross — muted. */\nexport const VolumeXIcon = /* @__PURE__ */ lucideIcon(\"VolumeXIcon\", VolumeX);\n","import { Workflow } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const WorkflowIcon = /* @__PURE__ */ lucideIcon(\"WorkflowIcon\", Workflow);\n","import { CircleX } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const XCircleIcon = /* @__PURE__ */ lucideIcon(\"XCircleIcon\", CircleX);\n","import { CircleX } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\n/** Lucide `CircleX` painted solid: filled circle, the cross knocked out. */\nexport const XCircleSolidIcon = /* @__PURE__ */ lucideIcon(\"XCircleSolidIcon\", CircleX, { solid: [0] });\n","import { ZoomIn } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ZoomInIcon = /* @__PURE__ */ lucideIcon(\"ZoomInIcon\", ZoomIn);\n","import { ZoomOut } from \"lucide\";\n\nimport { lucideIcon } from \"./icon-base\";\n\nexport const ZoomOutIcon = /* @__PURE__ */ lucideIcon(\"ZoomOutIcon\", ZoomOut);\n"]}
@@ -1,8 +1,8 @@
1
- import { slot, badgeAnatomy, stateAttributes, useDsMessages, deprecate, paginationAnatomy, Select, microInteractions, useFieldsetContext, useFieldControl, useControllableState, useMergedRefs, switchAnatomy, CONTROL_LABEL_TEXT, tableAnatomy, Pressable, FormBridge, CONTROL_SIZE_CLASSES, FileUpload, FileChip, Button, Tooltip, TooltipTrigger, TooltipContent, Avatar, Input, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuLabel, dataTableAnatomy, Checkbox, DocumentDetailPanel, DocumentDetailHeader, DocumentDetailTitle, DocumentDetailRequester, DocumentDetailMetaRow, DocumentDetailActions, DropdownMenuItem, DocumentList, DocumentRow, DocumentListSection, Textarea, DropdownMenuCheckboxItem, Popover, PopoverTrigger, PopoverContent, PopoverClose, DropdownMenuShortcut, useId as useId$1 } from './chunk-XJKCKBHI.js';
2
- import { cn, ShieldIcon, UploadIcon, SendIcon, ChevronLeftIcon, MoreHorizontalIcon, ChevronRightIcon, ChevronUpIcon, ChevronDownIcon, ChevronsUpDownIcon, LockIcon, TrashIcon, HelpCircleIcon, ArrowRightIcon, CheckIcon, EyeIcon, FileTextIcon, CloseIcon, SparklesIcon, PlusIcon, SearchIcon, AlertTriangleIcon, FolderClosedIcon, CalendarIcon, PencilIcon, LockOpenIcon, FlagIcon, CheckCircleSolidIcon, DownloadIcon, XCircleSolidIcon, MessageCircleIcon, BellIcon, PaperclipIcon, UsersIcon, ClockIcon, PlayIcon, PauseIcon, StopIcon, SettingsIcon, Trash2Icon, FileIcon, SparkleIcon, MailIcon } from './chunk-TBDTXAFH.js';
1
+ import { slot, badgeAnatomy, stateAttributes, useDsMessages, deprecate, paginationAnatomy, Select, microInteractions, useFieldsetContext, useFieldControl, useControllableState, useFormReset2, useMergedRefs, switchAnatomy, CONTROL_LABEL_TEXT, tableAnatomy, Pressable, FormBridge, CONTROL_SIZE_CLASSES, FileUpload, FileChip, Button, Tooltip, TooltipTrigger, TooltipContent, Avatar, Input, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuSeparator, DropdownMenuLabel, dataTableAnatomy, Checkbox, DocumentDetailPanel, DocumentDetailHeader, DocumentDetailTitle, DocumentDetailRequester, DocumentDetailMetaRow, DocumentDetailActions, DropdownMenuItem, DocumentList, DocumentRow, DocumentListSection, Textarea, DropdownMenuCheckboxItem, Popover, PopoverTrigger, PopoverContent, PopoverClose, DropdownMenuShortcut, useId } from './chunk-Z7QPHPNV.js';
2
+ import { cn, ShieldIcon, UploadIcon, SendIcon, ChevronLeftIcon, MoreHorizontalIcon, ChevronRightIcon, ChevronUpIcon, ChevronDownIcon, ChevronsUpDownIcon, LockIcon, TrashIcon, HelpCircleIcon, ExtractIcon, ArrowRightIcon, CheckIcon, EyeIcon, FileTextIcon, CloseIcon, SparklesIcon, PlusIcon, SearchIcon, AlertTriangleIcon, FolderClosedIcon, CalendarIcon, PencilIcon, LockOpenIcon, FlagIcon, CheckCircleSolidIcon, DownloadIcon, XCircleSolidIcon, MessageCircleIcon, BellIcon, PaperclipIcon, UsersIcon, ClockIcon, PlayIcon, PauseIcon, StopIcon, SettingsIcon, Trash2Icon, FileIcon, SparkleIcon, MailIcon } from './chunk-E2URQD5A.js';
3
3
  import { clsx } from 'clsx';
4
4
  import * as React2 from 'react';
5
- import { forwardRef, useMemo, createContext, useRef, useContext, useState, useCallback, useEffect, useId } from 'react';
5
+ import { forwardRef, useMemo, createContext, useRef, useContext, useState, useCallback, useEffect } from 'react';
6
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
7
7
  import { cva } from 'class-variance-authority';
8
8
  import * as ProgressPrimitive from '@radix-ui/react-progress';
@@ -906,19 +906,6 @@ var StatusPill = forwardRef(function StatusPill2({ status, dot = true, children,
906
906
  return /* @__PURE__ */ jsx(Badge, { ref, variant, dot, ...props, children: children ?? label });
907
907
  });
908
908
  StatusPill.displayName = "StatusPill";
909
- function useFormReset(elementRef, onReset, form) {
910
- const latest = useRef(onReset);
911
- latest.current = onReset;
912
- useEffect(() => {
913
- const element = elementRef.current;
914
- if (!element) return;
915
- const owner = form ? element.ownerDocument.getElementById(form) : element.closest("form");
916
- if (!owner) return;
917
- const handle = () => latest.current?.();
918
- owner.addEventListener("reset", handle);
919
- return () => owner.removeEventListener("reset", handle);
920
- }, [elementRef, form]);
921
- }
922
909
  var switchVariants = cva(
923
910
  [
924
911
  "ds:peer ds:inline-flex ds:shrink-0 ds:cursor-pointer ds:items-center ds:rounded-full ds:border ds:border-transparent",
@@ -997,7 +984,7 @@ var Switch = React2.forwardRef(
997
984
  });
998
985
  const initialChecked = React2.useRef(checkedProp ?? defaultChecked ?? false);
999
986
  const rootRef = React2.useRef(null);
1000
- useFormReset(rootRef, () => setChecked(initialChecked.current), form);
987
+ useFormReset2(rootRef, () => setChecked(initialChecked.current), form);
1001
988
  const mergedRef = useMergedRefs(ref, rootRef);
1002
989
  const root = /* @__PURE__ */ jsx(
1003
990
  SwitchPrimitive.Root,
@@ -1787,7 +1774,7 @@ function useDataTable(options) {
1787
1774
  onSelectAllMatching,
1788
1775
  resetPageOnChange = true
1789
1776
  } = options;
1790
- const id = useId$1(options.id, "ds-table");
1777
+ const id = useId(options.id, "ds-table");
1791
1778
  const [sorting, setSortingState] = useSlice(
1792
1779
  options.sorting,
1793
1780
  options.state?.sorting,
@@ -2263,44 +2250,6 @@ function HelpTip({ title, body }) {
2263
2250
  )
2264
2251
  ] });
2265
2252
  }
2266
- function AiSpark({ size = 16, className }) {
2267
- const id = useId();
2268
- return /* @__PURE__ */ jsxs(
2269
- "svg",
2270
- {
2271
- width: size,
2272
- height: size * 12 / 16,
2273
- viewBox: "0 0 16 12",
2274
- fill: "none",
2275
- className: cn("ds:block ds:shrink-0", className),
2276
- "aria-hidden": "true",
2277
- children: [
2278
- /* @__PURE__ */ jsx(
2279
- "path",
2280
- {
2281
- d: "M6.24553 5.34293C5.91553 5.23294 5.91553 4.76699 6.24553 4.657L8.18254 4.01207C8.60834 3.87011 8.99522 3.63094 9.31252 3.3135C9.62982 2.99607 9.8688 2.6091 10.0105 2.18327L10.6555 0.247473C10.7655 -0.0824911 11.2315 -0.0824912 11.3415 0.247473L11.9866 2.18427C12.1285 2.61002 12.3677 2.99686 12.6852 3.31412C13.0027 3.63139 13.3897 3.87035 13.8156 4.01207L15.7516 4.657C15.8238 4.68071 15.8868 4.72664 15.9314 4.78823C15.976 4.84982 16 4.92392 16 4.99996C16 5.07601 15.976 5.15011 15.9314 5.2117C15.8868 5.27329 15.8238 5.31921 15.7516 5.34293L13.8146 5.98786C13.3889 6.12971 13.0021 6.36874 12.6848 6.68599C12.3675 7.00324 12.1284 7.39001 11.9866 7.81566L11.3415 9.75245C11.3178 9.82471 11.2719 9.88763 11.2103 9.93223C11.1487 9.97684 11.0746 10.0009 10.9985 10.0009C10.9225 10.0009 10.8484 9.97684 10.7868 9.93223C10.7252 9.88763 10.6793 9.82471 10.6555 9.75245L10.0105 7.81566C9.86867 7.39001 9.62962 7.00324 9.31233 6.68599C8.99505 6.36874 8.60823 6.12971 8.18254 5.98786L6.24553 5.34293ZM1.14651 9.20551C1.1032 9.19117 1.06552 9.16355 1.03881 9.12658C1.0121 9.0896 0.99772 9.04515 0.99772 8.99954C0.99772 8.95392 1.0121 8.90947 1.03881 8.87249C1.06552 8.83552 1.1032 8.8079 1.14651 8.79356L2.30851 8.4066C2.82651 8.23362 3.23252 7.82766 3.40552 7.30972L3.79252 6.14784C3.80686 6.10454 3.83448 6.06686 3.87146 6.04015C3.90844 6.01345 3.9529 5.99907 3.99852 5.99907C4.04414 5.99907 4.0886 6.01345 4.12558 6.04015C4.16256 6.06686 4.19018 6.10454 4.20452 6.14784L4.59152 7.30972C4.67664 7.56516 4.82009 7.79728 5.0105 7.98767C5.20091 8.17806 5.43305 8.32149 5.68853 8.4066L6.85053 8.79356C6.89384 8.8079 6.93152 8.83551 6.95823 8.87249C6.98494 8.90947 6.99932 8.95392 6.99932 8.99954C6.99932 9.04515 6.98494 9.0896 6.95823 9.12658C6.93152 9.16355 6.89384 9.19117 6.85053 9.20551L5.68853 9.59247C5.43305 9.67758 5.20091 9.82101 5.0105 10.0114C4.82009 10.2018 4.67664 10.4339 4.59152 10.6894L4.20452 11.8512C4.19018 11.8945 4.16256 11.9322 4.12558 11.9589C4.0886 11.9856 4.04414 12 3.99852 12C3.9529 12 3.90844 11.9856 3.87146 11.9589C3.83448 11.9322 3.80686 11.8945 3.79252 11.8512L3.40552 10.6894C3.3204 10.4339 3.17695 10.2018 2.98654 10.0114C2.79613 9.82101 2.56399 9.67758 2.30851 9.59247L1.14651 9.20551ZM0.097503 2.13727C0.0690292 2.1274 0.0443387 2.1089 0.0268643 2.08435C0.00938996 2.0598 1.317e-09 2.03042 0 2.00029C-1.318e-09 1.97015 0.00938995 1.94077 0.0268643 1.91622C0.0443387 1.89167 0.0690292 1.87317 0.097503 1.8633L0.871506 1.60533C1.21751 1.49034 1.48851 1.21937 1.60351 0.873408L1.86151 0.0994903C1.87138 0.0710193 1.88988 0.0463306 1.91443 0.0288584C1.93899 0.0113861 1.96837 0.00199815 1.99851 0.00199814C2.02865 0.00199814 2.05803 0.0113861 2.08259 0.0288583C2.10714 0.0463306 2.12564 0.0710193 2.13551 0.0994903L2.39351 0.873408C2.45024 1.0439 2.54593 1.19882 2.673 1.32588C2.80006 1.45293 2.955 1.54861 3.12552 1.60533L3.89952 1.8633C3.92799 1.87317 3.95268 1.89167 3.97016 1.91622C3.98763 1.94077 3.99702 1.97015 3.99702 2.00029C3.99702 2.03042 3.98763 2.0598 3.97016 2.08435C3.95268 2.1089 3.92799 2.1274 3.89952 2.13727L3.12552 2.39524C2.955 2.45196 2.80006 2.54764 2.673 2.6747C2.54593 2.80175 2.45024 2.95667 2.39351 3.12717L2.13551 3.90008C2.12564 3.92855 2.10714 3.95324 2.08259 3.97071C2.05804 3.98819 2.02865 3.99757 1.99851 3.99757C1.96837 3.99757 1.93899 3.98819 1.91443 3.97071C1.88988 3.95324 1.87138 3.92855 1.86151 3.90008L1.60351 3.12617C1.48851 2.7802 1.21751 2.50923 0.871506 2.39424L0.097503 2.13727Z",
2282
- fill: `url(#${id})`
2283
- }
2284
- ),
2285
- /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
2286
- "linearGradient",
2287
- {
2288
- id,
2289
- x1: "0.265576",
2290
- y1: "0.856805",
2291
- x2: "13.5",
2292
- y2: "12",
2293
- gradientUnits: "userSpaceOnUse",
2294
- children: [
2295
- /* @__PURE__ */ jsx("stop", { stopColor: "#9E32FF" }),
2296
- /* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#1BB6FF" })
2297
- ]
2298
- }
2299
- ) })
2300
- ]
2301
- }
2302
- );
2303
- }
2304
2253
  function Field({ label, value, confirmed }) {
2305
2254
  return /* @__PURE__ */ jsxs("div", { className: "ds:flex ds:flex-col ds:gap-0.5", children: [
2306
2255
  /* @__PURE__ */ jsx("span", { className: "ds:text-fg-3 ds:text-[11px]", children: label }),
@@ -2324,7 +2273,7 @@ var AIReceiptPanel = forwardRef(function AIReceiptPanel2({ state = "idle", resul
2324
2273
  ),
2325
2274
  ...props,
2326
2275
  children: [
2327
- /* @__PURE__ */ jsx(AiSpark, { size: 18, className: "ds:motion-safe:animate-pulse" }),
2276
+ /* @__PURE__ */ jsx(ExtractIcon, { size: 18, className: "ds:motion-safe:animate-pulse" }),
2328
2277
  /* @__PURE__ */ jsxs("div", { children: [
2329
2278
  /* @__PURE__ */ jsx("p", { className: "ds:text-fg ds:text-sm ds:font-medium", children: "Reading your receipt\u2026" }),
2330
2279
  /* @__PURE__ */ jsx("p", { className: "ds:text-fg-3 ds:text-xs", children: "Pulling the vendor, amount and a suggested category." })
@@ -2346,7 +2295,7 @@ var AIReceiptPanel = forwardRef(function AIReceiptPanel2({ state = "idle", resul
2346
2295
  children: [
2347
2296
  /* @__PURE__ */ jsxs("div", { className: "ds:flex ds:items-center ds:justify-between", children: [
2348
2297
  /* @__PURE__ */ jsxs("span", { className: "ds:text-fg-2 ds:inline-flex ds:items-center ds:gap-1.5 ds:text-xs ds:font-semibold", children: [
2349
- /* @__PURE__ */ jsx(AiSpark, { size: 14 }),
2298
+ /* @__PURE__ */ jsx(ExtractIcon, { size: 14 }),
2350
2299
  " Auto-filled from receipt"
2351
2300
  ] }),
2352
2301
  onRemove && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: onRemove, children: "Remove" })
@@ -2381,7 +2330,7 @@ var AIReceiptPanel = forwardRef(function AIReceiptPanel2({ state = "idle", resul
2381
2330
  ),
2382
2331
  ...props,
2383
2332
  children: [
2384
- /* @__PURE__ */ jsx(AiSpark, { size: 19 }),
2333
+ /* @__PURE__ */ jsx(ExtractIcon, { size: 19 }),
2385
2334
  /* @__PURE__ */ jsxs("span", { className: "ds:min-w-0 ds:flex-1", children: [
2386
2335
  /* @__PURE__ */ jsx("span", { className: "ds:text-fg ds:block ds:text-sm ds:font-medium", children: "Attach receipt \u2014 auto-fill with AI" }),
2387
2336
  /* @__PURE__ */ jsx("span", { className: "ds:text-fg-3 ds:block ds:text-xs", children: "We'll read the vendor, amount & suggest a category" })
@@ -3583,9 +3532,10 @@ var DataTable = forwardRef(function DataTable2({ withToolbar, className, childre
3583
3532
  className: cn(
3584
3533
  // Outer frame on the whole component: a single visible border +
3585
3534
  // quiet shadow wrapping the toolbar (if any) and the table as one
3586
- // card. overflow-hidden clips the header/cell backgrounds to the
3587
- // rounded corners.
3588
- "ds:w-full ds:overflow-hidden ds:rounded-card ds:border ds:border-rule-strong ds:bg-surface ds:shadow-quiet",
3535
+ // card. The overflow clips the header/cell backgrounds to the
3536
+ // rounded corners; a table wider than the card scrolls sideways
3537
+ // inside it instead of being cut off (the toolbar stays put).
3538
+ "ds:w-full ds:overflow-x-auto ds:overflow-y-hidden ds:rounded-card ds:border ds:border-rule-strong ds:bg-surface ds:shadow-quiet",
3589
3539
  "ds:[&_table]:bg-surface ds:[&_table]:w-full ds:[&_table]:border-collapse",
3590
3540
  className
3591
3541
  ),
@@ -3605,6 +3555,8 @@ var DataTableToolbar = forwardRef(
3605
3555
  className: cn(
3606
3556
  "ds:flex ds:flex-wrap ds:items-center ds:gap-2 ds:px-3 ds:py-2.5",
3607
3557
  "ds:border-rule ds:bg-surface ds:border-b",
3558
+ // Pinned to the card's left edge while a wide table scrolls.
3559
+ "ds:sticky ds:left-0",
3608
3560
  className
3609
3561
  ),
3610
3562
  ...props
@@ -3625,7 +3577,8 @@ var DataTableSearch = forwardRef(
3625
3577
  inputSize: "sm",
3626
3578
  placeholder,
3627
3579
  prefixIcon: /* @__PURE__ */ jsx(SearchIcon, { "aria-hidden": "true" }),
3628
- className: cn("ds:w-[280px]", className),
3580
+ rootClassName: "ds:w-auto ds:min-w-0 ds:max-w-full ds:shrink",
3581
+ className: cn("ds:w-[280px] ds:max-w-full", className),
3629
3582
  ...props
3630
3583
  }
3631
3584
  );
@@ -3792,7 +3745,10 @@ var DataTableCellId = forwardRef(
3792
3745
  ref,
3793
3746
  ...slot(dataTableAnatomy, "cell"),
3794
3747
  ...stateAttributes({ variant: "id" }),
3795
- className: cn("ds:font-sans ds:text-fg-4 ds:text-xs ds:tabular-nums", className),
3748
+ className: cn(
3749
+ "ds:font-sans ds:text-fg-4 ds:text-xs ds:whitespace-nowrap ds:tabular-nums",
3750
+ className
3751
+ ),
3796
3752
  ...props
3797
3753
  }
3798
3754
  );
@@ -3818,7 +3774,7 @@ var DataTableCellDue = forwardRef(
3818
3774
  "data-due-state": ariaState,
3819
3775
  ...slot(dataTableAnatomy, "cell"),
3820
3776
  ...stateAttributes({ variant: "due" }),
3821
- className: cn("ds:font-sans ds:tabular-nums", tone, className),
3777
+ className: cn("ds:font-sans ds:whitespace-nowrap ds:tabular-nums", tone, className),
3822
3778
  ...props,
3823
3779
  children: children ?? dueDateFormatter.format(value)
3824
3780
  }
@@ -4895,6 +4851,7 @@ function useStopwatch() {
4895
4851
  }, [setPhase]);
4896
4852
  return { phase, elapsedMs, isRunning: phase === "running", start, pause, resume, stop, reset };
4897
4853
  }
4854
+ var FOCUSED_INPUT_ROW = "ds:transition-colors ds:duration-[var(--duration-fast)] ds:ease-[var(--ease-out-quart)] ds:motion-reduce:transition-none ds:has-[input:focus-visible:not([readonly])]:bg-surface-2";
4898
4855
  var TimeLogger = forwardRef(function TimeLogger2({ className, orientation = "vertical", children, ...props }, ref) {
4899
4856
  return /* @__PURE__ */ jsx(
4900
4857
  "div",
@@ -5020,6 +4977,9 @@ var TimeLoggerTimer = forwardRef(
5020
4977
  ref,
5021
4978
  className: cn(
5022
4979
  "ds:border-rule-soft ds:flex ds:items-center ds:gap-2.5 ds:border-t ds:px-4 ds:py-4",
4980
+ // The bare input has no chrome of its own; tint its row while it
4981
+ // has keyboard focus so the focus is visible beyond the caret.
4982
+ FOCUSED_INPUT_ROW,
5023
4983
  // In a horizontal bar this segment is usually the `flex-1` grower;
5024
4984
  // min-w-0 lets the clock shrink instead of pushing the trailing
5025
4985
  // segment off the edge.
@@ -5129,32 +5089,41 @@ var TimeLoggerField = forwardRef(
5129
5089
  TimeLoggerField.displayName = "TimeLoggerField";
5130
5090
  var TimeLoggerNotes = forwardRef(
5131
5091
  function TimeLoggerNotes2({ value, onValueChange, icon, placeholder = "Add notes", className, ...props }, ref) {
5132
- return /* @__PURE__ */ jsxs("div", { className: "ds:border-rule-soft ds:flex ds:items-center ds:gap-3 ds:border-t ds:px-4 ds:py-3", children: [
5133
- /* @__PURE__ */ jsx(
5134
- "span",
5135
- {
5136
- className: "ds:text-fg-4 ds:flex ds:size-[17px] ds:shrink-0 ds:items-center ds:justify-center ds:[&_svg]:size-[17px]",
5137
- "aria-hidden": "true",
5138
- children: icon ?? /* @__PURE__ */ jsx(FileTextIcon, {})
5139
- }
5140
- ),
5141
- /* @__PURE__ */ jsx(
5142
- "input",
5143
- {
5144
- ref,
5145
- type: "text",
5146
- value: value ?? "",
5147
- onChange: (event) => onValueChange?.(event.target.value),
5148
- placeholder,
5149
- "aria-label": "Notes",
5150
- className: cn(
5151
- "ds:text-fg ds:placeholder:text-fg-4 ds:min-w-0 ds:flex-1 ds:border-0 ds:bg-transparent ds:text-sm ds:outline-none",
5152
- className
5092
+ return /* @__PURE__ */ jsxs(
5093
+ "div",
5094
+ {
5095
+ className: cn(
5096
+ "ds:border-rule-soft ds:flex ds:items-center ds:gap-3 ds:border-t ds:px-4 ds:py-3",
5097
+ FOCUSED_INPUT_ROW
5098
+ ),
5099
+ children: [
5100
+ /* @__PURE__ */ jsx(
5101
+ "span",
5102
+ {
5103
+ className: "ds:text-fg-4 ds:flex ds:size-[17px] ds:shrink-0 ds:items-center ds:justify-center ds:[&_svg]:size-[17px]",
5104
+ "aria-hidden": "true",
5105
+ children: icon ?? /* @__PURE__ */ jsx(FileTextIcon, {})
5106
+ }
5153
5107
  ),
5154
- ...props
5155
- }
5156
- )
5157
- ] });
5108
+ /* @__PURE__ */ jsx(
5109
+ "input",
5110
+ {
5111
+ ref,
5112
+ type: "text",
5113
+ value: value ?? "",
5114
+ onChange: (event) => onValueChange?.(event.target.value),
5115
+ placeholder,
5116
+ "aria-label": "Notes",
5117
+ className: cn(
5118
+ "ds:text-fg ds:placeholder:text-fg-4 ds:min-w-0 ds:flex-1 ds:border-0 ds:bg-transparent ds:text-sm ds:outline-none",
5119
+ className
5120
+ ),
5121
+ ...props
5122
+ }
5123
+ )
5124
+ ]
5125
+ }
5126
+ );
5158
5127
  }
5159
5128
  );
5160
5129
  TimeLoggerNotes.displayName = "TimeLoggerNotes";
@@ -5629,6 +5598,6 @@ function SignatureEditor({
5629
5598
  }
5630
5599
  SignatureEditor.displayName = "SignatureEditor";
5631
5600
 
5632
- export { AIReceiptPanel, AiDraftCard, Assignee, AttentionItem, Badge, Blockquote, BottomNav, CategoryDivider, CategoryTag, ChannelTabs, ClientRailGroupHeader, ClientRailItem, Dash, DashGrid, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DocumentChecklist, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, EmailMessageCard, EmptyValue, EngagementCard, EngagementTimeline, EngagementTimelineStep, IntentBadge, MissingDocumentsPanel, MoneyCell, NewMenu, PROGRESS_LEGACY_TO_INTENT, Pagination, ProgressBar, ProgressRing, SERVICE_TONES, STATUS_DOT_TONE_TO_INTENT, Section, SectionHead, SectionHeader, SegmentedProgress, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, StagePill, Stat, StatusDot, StatusPill, SuggestionPills, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsCell, TeamMemberSelect, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToggleGroup, ToggleGroupItem, badgeVariants, compareSortValues, formatClock, formatCurrency, formatDuration, nextSortDirection, parseDuration, progressBarVariants, progressRingVariants, resolveBadgeAppearance, serviceToneLabel, serviceToneStyle, statusDotVariants, useDataTable, useFormReset, useStopwatch };
5633
- //# sourceMappingURL=chunk-LUWPEBXZ.js.map
5634
- //# sourceMappingURL=chunk-LUWPEBXZ.js.map
5601
+ export { AIReceiptPanel, AiDraftCard, Assignee, AttentionItem, Badge, Blockquote, BottomNav, CategoryDivider, CategoryTag, ChannelTabs, ClientRailGroupHeader, ClientRailItem, Dash, DashGrid, DataTable, DataTableBody, DataTableCell, DataTableCellDue, DataTableCellId, DataTableCellMono, DataTableCellName, DataTableCheckbox, DataTableHead, DataTableHeader, DataTablePagination, DataTableResultsCount, DataTableRow, DataTableSearch, DataTableSpacer, DataTableToolbar, DataTableView, DocumentChecklist, DocumentFileCard, DocumentFileLine, DocumentFileRow, DocumentRequestCard, DocumentRequestDetail, DocumentRequestField, DocumentRequestUpload, DocumentSourceFilter, DocumentSourceTag, DocumentsWorkspaceLayout, EmailMessageCard, EmptyValue, EngagementCard, EngagementTimeline, EngagementTimelineStep, IntentBadge, MissingDocumentsPanel, MoneyCell, NewMenu, PROGRESS_LEGACY_TO_INTENT, Pagination, ProgressBar, ProgressRing, SERVICE_TONES, STATUS_DOT_TONE_TO_INTENT, Section, SectionHead, SectionHeader, SegmentedProgress, SignatureEditor, Skeleton, SkeletonCircle, SkeletonText, StagePill, Stat, StatusDot, StatusPill, SuggestionPills, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagsCell, TeamMemberSelect, TimeLogger, TimeLoggerActions, TimeLoggerBillable, TimeLoggerContextRow, TimeLoggerEntry, TimeLoggerEntryList, TimeLoggerField, TimeLoggerFooter, TimeLoggerHeader, TimeLoggerNotes, TimeLoggerTimer, ToggleGroup, ToggleGroupItem, badgeVariants, compareSortValues, formatClock, formatCurrency, formatDuration, nextSortDirection, parseDuration, progressBarVariants, progressRingVariants, resolveBadgeAppearance, serviceToneLabel, serviceToneStyle, statusDotVariants, useDataTable, useStopwatch };
5602
+ //# sourceMappingURL=chunk-PC6M4QZ2.js.map
5603
+ //# sourceMappingURL=chunk-PC6M4QZ2.js.map