@assure-one/design-system 1.43.1 → 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.
- package/dist/{chunk-L5IQK3GV.js → chunk-4TXBY6P7.js} +4 -4
- package/dist/{chunk-L5IQK3GV.js.map → chunk-4TXBY6P7.js.map} +1 -1
- package/dist/{chunk-TBDTXAFH.js → chunk-E2URQD5A.js} +152 -121
- package/dist/chunk-E2URQD5A.js.map +1 -0
- package/dist/{chunk-5AL4W32Z.js → chunk-PC6M4QZ2.js} +9 -47
- package/dist/chunk-PC6M4QZ2.js.map +1 -0
- package/dist/{chunk-VK6SW34V.js → chunk-Z7QPHPNV.js} +3 -3
- package/dist/{chunk-VK6SW34V.js.map → chunk-Z7QPHPNV.js.map} +1 -1
- package/dist/icons/index.d.ts +135 -17
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +15 -8
- package/dist/index.js +115 -201
- package/dist/index.js.map +1 -1
- package/dist/legacy/index.js +3 -3
- package/dist/suite/index.js +3 -3
- package/docs/components.md +7 -5
- package/docs/components.registry.json +8 -4
- package/docs/for-ai-agents.md +1 -1
- package/eslint-config/index.mjs +240 -0
- package/package.json +1 -1
- package/dist/chunk-5AL4W32Z.js.map +0 -1
- package/dist/chunk-TBDTXAFH.js.map +0 -1
|
@@ -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, \"&\").replace(/\"/g, \""\").replace(/</g, \"<\");\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, 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
|
|
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-
|
|
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
|
|
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';
|
|
@@ -1774,7 +1774,7 @@ function useDataTable(options) {
|
|
|
1774
1774
|
onSelectAllMatching,
|
|
1775
1775
|
resetPageOnChange = true
|
|
1776
1776
|
} = options;
|
|
1777
|
-
const id = useId
|
|
1777
|
+
const id = useId(options.id, "ds-table");
|
|
1778
1778
|
const [sorting, setSortingState] = useSlice(
|
|
1779
1779
|
options.sorting,
|
|
1780
1780
|
options.state?.sorting,
|
|
@@ -2250,44 +2250,6 @@ function HelpTip({ title, body }) {
|
|
|
2250
2250
|
)
|
|
2251
2251
|
] });
|
|
2252
2252
|
}
|
|
2253
|
-
function AiSpark({ size = 16, className }) {
|
|
2254
|
-
const id = useId();
|
|
2255
|
-
return /* @__PURE__ */ jsxs(
|
|
2256
|
-
"svg",
|
|
2257
|
-
{
|
|
2258
|
-
width: size,
|
|
2259
|
-
height: size * 12 / 16,
|
|
2260
|
-
viewBox: "0 0 16 12",
|
|
2261
|
-
fill: "none",
|
|
2262
|
-
className: cn("ds:block ds:shrink-0", className),
|
|
2263
|
-
"aria-hidden": "true",
|
|
2264
|
-
children: [
|
|
2265
|
-
/* @__PURE__ */ jsx(
|
|
2266
|
-
"path",
|
|
2267
|
-
{
|
|
2268
|
-
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",
|
|
2269
|
-
fill: `url(#${id})`
|
|
2270
|
-
}
|
|
2271
|
-
),
|
|
2272
|
-
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
|
|
2273
|
-
"linearGradient",
|
|
2274
|
-
{
|
|
2275
|
-
id,
|
|
2276
|
-
x1: "0.265576",
|
|
2277
|
-
y1: "0.856805",
|
|
2278
|
-
x2: "13.5",
|
|
2279
|
-
y2: "12",
|
|
2280
|
-
gradientUnits: "userSpaceOnUse",
|
|
2281
|
-
children: [
|
|
2282
|
-
/* @__PURE__ */ jsx("stop", { stopColor: "#9E32FF" }),
|
|
2283
|
-
/* @__PURE__ */ jsx("stop", { offset: "1", stopColor: "#1BB6FF" })
|
|
2284
|
-
]
|
|
2285
|
-
}
|
|
2286
|
-
) })
|
|
2287
|
-
]
|
|
2288
|
-
}
|
|
2289
|
-
);
|
|
2290
|
-
}
|
|
2291
2253
|
function Field({ label, value, confirmed }) {
|
|
2292
2254
|
return /* @__PURE__ */ jsxs("div", { className: "ds:flex ds:flex-col ds:gap-0.5", children: [
|
|
2293
2255
|
/* @__PURE__ */ jsx("span", { className: "ds:text-fg-3 ds:text-[11px]", children: label }),
|
|
@@ -2311,7 +2273,7 @@ var AIReceiptPanel = forwardRef(function AIReceiptPanel2({ state = "idle", resul
|
|
|
2311
2273
|
),
|
|
2312
2274
|
...props,
|
|
2313
2275
|
children: [
|
|
2314
|
-
/* @__PURE__ */ jsx(
|
|
2276
|
+
/* @__PURE__ */ jsx(ExtractIcon, { size: 18, className: "ds:motion-safe:animate-pulse" }),
|
|
2315
2277
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
2316
2278
|
/* @__PURE__ */ jsx("p", { className: "ds:text-fg ds:text-sm ds:font-medium", children: "Reading your receipt\u2026" }),
|
|
2317
2279
|
/* @__PURE__ */ jsx("p", { className: "ds:text-fg-3 ds:text-xs", children: "Pulling the vendor, amount and a suggested category." })
|
|
@@ -2333,7 +2295,7 @@ var AIReceiptPanel = forwardRef(function AIReceiptPanel2({ state = "idle", resul
|
|
|
2333
2295
|
children: [
|
|
2334
2296
|
/* @__PURE__ */ jsxs("div", { className: "ds:flex ds:items-center ds:justify-between", children: [
|
|
2335
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: [
|
|
2336
|
-
/* @__PURE__ */ jsx(
|
|
2298
|
+
/* @__PURE__ */ jsx(ExtractIcon, { size: 14 }),
|
|
2337
2299
|
" Auto-filled from receipt"
|
|
2338
2300
|
] }),
|
|
2339
2301
|
onRemove && /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "sm", onClick: onRemove, children: "Remove" })
|
|
@@ -2368,7 +2330,7 @@ var AIReceiptPanel = forwardRef(function AIReceiptPanel2({ state = "idle", resul
|
|
|
2368
2330
|
),
|
|
2369
2331
|
...props,
|
|
2370
2332
|
children: [
|
|
2371
|
-
/* @__PURE__ */ jsx(
|
|
2333
|
+
/* @__PURE__ */ jsx(ExtractIcon, { size: 19 }),
|
|
2372
2334
|
/* @__PURE__ */ jsxs("span", { className: "ds:min-w-0 ds:flex-1", children: [
|
|
2373
2335
|
/* @__PURE__ */ jsx("span", { className: "ds:text-fg ds:block ds:text-sm ds:font-medium", children: "Attach receipt \u2014 auto-fill with AI" }),
|
|
2374
2336
|
/* @__PURE__ */ jsx("span", { className: "ds:text-fg-3 ds:block ds:text-xs", children: "We'll read the vendor, amount & suggest a category" })
|
|
@@ -5637,5 +5599,5 @@ function SignatureEditor({
|
|
|
5637
5599
|
SignatureEditor.displayName = "SignatureEditor";
|
|
5638
5600
|
|
|
5639
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 };
|
|
5640
|
-
//# sourceMappingURL=chunk-
|
|
5641
|
-
//# sourceMappingURL=chunk-
|
|
5602
|
+
//# sourceMappingURL=chunk-PC6M4QZ2.js.map
|
|
5603
|
+
//# sourceMappingURL=chunk-PC6M4QZ2.js.map
|