@timbal-ai/timbal-react 1.6.1 → 1.7.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/app.cjs +138 -73
  3. package/dist/app.d.cts +3 -3
  4. package/dist/app.d.ts +3 -3
  5. package/dist/app.esm.js +5 -5
  6. package/dist/{chart-artifact-Dpt4t5sf.d.cts → chart-artifact-CuTiCITz.d.cts} +221 -15
  7. package/dist/{chart-artifact-BYl5C-dk.d.ts → chart-artifact-U-x0UNJm.d.ts} +221 -15
  8. package/dist/chat.esm.js +3 -3
  9. package/dist/{chunk-YYEI6XME.esm.js → chunk-22KWC2LS.esm.js} +5 -5
  10. package/dist/{chunk-MBS7XHV2.esm.js → chunk-45NXD3IG.esm.js} +3 -3
  11. package/dist/{chunk-24B4I4XC.esm.js → chunk-64RHAJVG.esm.js} +1 -1
  12. package/dist/{chunk-WQIQW7EM.esm.js → chunk-7AGIAQE6.esm.js} +1 -1
  13. package/dist/{chunk-NO5AWNWT.esm.js → chunk-7WU3IKAN.esm.js} +1 -1
  14. package/dist/{chunk-UVPXH4MB.esm.js → chunk-M5IBJBEY.esm.js} +80 -21
  15. package/dist/{chunk-HSL36SJ4.esm.js → chunk-PMMI7LBV.esm.js} +20 -8
  16. package/dist/{chunk-TMP7RIA7.esm.js → chunk-VKXOHVDE.esm.js} +2 -2
  17. package/dist/{chunk-ELEY66OH.esm.js → chunk-XOCOZU7J.esm.js} +11 -1
  18. package/dist/cli/timbal-ui-lint.mjs +32 -1
  19. package/dist/index.cjs +274 -198
  20. package/dist/index.d.cts +2 -2
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.esm.js +9 -9
  23. package/dist/{kanban-FFBeaZPS.d.cts → kanban-BQxWliCS.d.cts} +17 -0
  24. package/dist/{kanban-FFBeaZPS.d.ts → kanban-BQxWliCS.d.ts} +17 -0
  25. package/dist/studio.cjs +104 -85
  26. package/dist/studio.esm.js +6 -6
  27. package/dist/ui.cjs +6 -6
  28. package/dist/ui.d.cts +1 -1
  29. package/dist/ui.d.ts +1 -1
  30. package/dist/ui.esm.js +4 -4
  31. package/package.json +1 -1
package/dist/app.cjs CHANGED
@@ -272,6 +272,13 @@ var HOUSE_RULES = [
272
272
  slop: `<span className="text-blue-600 bg-green-50">`,
273
273
  good: `<span className="text-primary bg-muted">`
274
274
  },
275
+ {
276
+ id: "chart-token-color",
277
+ rule: "Pass chart and theme color tokens directly (var(--chart-1)) \u2014 never wrap them in hsl(), rgb(), or oklch().",
278
+ why: "The --chart-N and theme tokens are already full OKLCH colors. Wrapping them in hsl()/rgb() is invalid CSS, so the chart renders empty/uncolored \u2014 and the build still passes, so it's a silent runtime bug.",
279
+ slop: `<Cell fill="hsl(var(--chart-1))" />`,
280
+ good: `<Cell fill="var(--chart-1)" />`
281
+ },
275
282
  {
276
283
  id: "no-decorative-icons",
277
284
  rule: "Icons must earn their place (action, nav, or status). Never add an icon beside a label that already says the thing.",
@@ -673,6 +680,7 @@ var RAW_COLOR_RE = new RegExp(
673
680
  "g"
674
681
  );
675
682
  var COLOR_LITERAL_RE = /#[0-9a-fA-F]{3,8}\b|\b(?:oklch|rgba?|hsla?)\s*\(/g;
683
+ var COLOR_FN_WRAPPING_VAR_RE = /\b(?:hsl|hsla|rgb|rgba|oklch|oklab|lab|lch|hwb|color)\s*\(\s*var\(\s*--/i;
676
684
  var INLINE_STYLE_COLOR_RE = /style=\{\{[^}]*\b(?:color|background|backgroundColor|borderColor|fill|stroke)\b/;
677
685
  var BOLD_VALUE_RE = /text-(?:xl|2xl|3xl|4xl|5xl|6xl)[^"'`]*\bfont-(?:bold|extrabold|black|semibold)|font-(?:bold|extrabold|black|semibold)[^"'`]*text-(?:xl|2xl|3xl|4xl|5xl|6xl)/;
678
686
  var GRADIENT_RE = /\bbg-(?:gradient|linear|radial|conic)-/;
@@ -695,11 +703,26 @@ var RESERVED_GRADIENT_SET = new Set(RESERVED_GRADIENT_TOKENS);
695
703
  function stripVariants(util) {
696
704
  return util.replace(/^(?:[a-z-]+:)*/, "");
697
705
  }
706
+ function describeArg(value) {
707
+ if (value === null) return "null";
708
+ if (Array.isArray(value)) return "an array";
709
+ const t = typeof value;
710
+ if (t === "object") {
711
+ const keys = Object.keys(value).slice(0, 4);
712
+ return keys.length ? `an object with keys { ${keys.join(", ")} }` : "an object";
713
+ }
714
+ return `a ${t}`;
715
+ }
698
716
  function isCommentOrImport(line) {
699
717
  const t = line.trim();
700
718
  return t.startsWith("//") || t.startsWith("*") || t.startsWith("/*") || t.startsWith("import ") || t.startsWith("export ");
701
719
  }
702
720
  function lintGeneratedUi(source, options = {}) {
721
+ if (typeof source !== "string") {
722
+ throw new TypeError(
723
+ `lintGeneratedUi(source, options?) expects the generated code as a string, but received ${describeArg(source)}. Pass the raw .tsx source \u2014 lintGeneratedUi(code) \u2014 not an object like { filename, source } and not a previous LintResult.`
724
+ );
725
+ }
703
726
  const maxIcons = options.maxIconsPerView ?? SLOP_BUDGETS.maxIconsPerView;
704
727
  const maxRowDividers = options.maxRowDividers ?? SLOP_BUDGETS.maxRowDividers;
705
728
  const findings = [];
@@ -779,7 +802,17 @@ function lintGeneratedUi(source, options = {}) {
779
802
  });
780
803
  }
781
804
  }
782
- const literals = line.match(COLOR_LITERAL_RE);
805
+ const wrapsTokenInColorFn = COLOR_FN_WRAPPING_VAR_RE.test(line);
806
+ if (wrapsTokenInColorFn) {
807
+ findings.push({
808
+ rule: "chart-token-color-fn",
809
+ severity: "error",
810
+ line: lineNo,
811
+ message: "Color function wrapping a token (e.g. hsl(var(--chart-1))). The --chart-N and theme tokens are already OKLCH colors \u2014 wrapping them in hsl()/rgb() is invalid CSS and renders an empty/uncolored chart (the build still passes). Pass the token directly: var(--chart-1), or let the app-kit charts use --chart-N automatically.",
812
+ snippet: line.trim().slice(0, 120)
813
+ });
814
+ }
815
+ const literals = wrapsTokenInColorFn ? null : line.match(COLOR_LITERAL_RE);
783
816
  if (literals) {
784
817
  findings.push({
785
818
  rule: "color-literal",
@@ -930,6 +963,11 @@ function lintGeneratedUi(source, options = {}) {
930
963
  };
931
964
  }
932
965
  function formatLintReport(findings) {
966
+ if (!Array.isArray(findings)) {
967
+ throw new TypeError(
968
+ `formatLintReport(findings) expects the findings array, but received ${describeArg(findings)}. Pass result.findings \u2014 formatLintReport(lintGeneratedUi(code).findings) \u2014 not the whole LintResult.`
969
+ );
970
+ }
933
971
  if (findings.length === 0) return "";
934
972
  const lines = findings.slice().sort((a, b) => a.line - b.line).map((f) => {
935
973
  const tag = f.severity === "error" ? "ERROR" : "warn ";
@@ -2703,6 +2741,7 @@ var MetricTile = ({
2703
2741
  var import_jsx_runtime7 = require("react/jsx-runtime");
2704
2742
 
2705
2743
  // src/app/layout/AppShell.tsx
2744
+ var import_lucide_react = require("lucide-react");
2706
2745
  var import_react6 = require("motion/react");
2707
2746
  var import_react7 = require("react");
2708
2747
 
@@ -2749,18 +2788,25 @@ function useAppShellChat() {
2749
2788
  return (0, import_react4.useContext)(AppShellChatContext);
2750
2789
  }
2751
2790
 
2752
- // src/app/layout/app-shell-nav-context.tsx
2791
+ // src/layout/shell-nav-context.tsx
2753
2792
  var import_react5 = require("react");
2754
- var AppShellNavContext = (0, import_react5.createContext)(null);
2755
- var AppShellNavProvider = AppShellNavContext.Provider;
2793
+ var ShellNavContext = (0, import_react5.createContext)(null);
2794
+ var ShellNavProvider = ShellNavContext.Provider;
2795
+ function useOptionalShellNav() {
2796
+ return (0, import_react5.useContext)(ShellNavContext);
2797
+ }
2798
+
2799
+ // src/app/layout/app-shell-nav-context.tsx
2800
+ var AppShellNavProvider = ShellNavProvider;
2801
+ var NAV_NOOP = {
2802
+ open: false,
2803
+ setOpen: () => {
2804
+ },
2805
+ toggle: () => {
2806
+ }
2807
+ };
2756
2808
  function useAppShellNav() {
2757
- return (0, import_react5.useContext)(AppShellNavContext) ?? {
2758
- open: false,
2759
- setOpen: () => {
2760
- },
2761
- toggle: () => {
2762
- }
2763
- };
2809
+ return useOptionalShellNav() ?? NAV_NOOP;
2764
2810
  }
2765
2811
 
2766
2812
  // src/app/layout/AppShell.tsx
@@ -2771,6 +2817,12 @@ var floatingTriggerClass = cn(
2771
2817
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
2772
2818
  "bottom-6 right-6 max-sm:bottom-4 max-sm:right-4"
2773
2819
  );
2820
+ var floatingNavTriggerClass = cn(
2821
+ "aui-app-shell-nav-trigger-fixed fixed left-4 top-4 z-30 inline-flex size-10 items-center justify-center rounded-xl md:hidden",
2822
+ "border border-border/60 bg-card/85 text-foreground shadow-card-elevated backdrop-blur-xl supports-backdrop-filter:bg-card/75",
2823
+ "transition-colors hover:bg-card",
2824
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
2825
+ );
2774
2826
  var floatingPanelClass = cn(
2775
2827
  "aui-app-shell-chat-float fixed z-50 flex flex-col overflow-hidden rounded-2xl border border-border/60 shadow-card-elevated",
2776
2828
  "bg-card/85 backdrop-blur-xl supports-backdrop-filter:bg-card/75",
@@ -2861,12 +2913,14 @@ var AppShell = ({
2861
2913
  navOpen: navOpenProp,
2862
2914
  defaultNavOpen = false,
2863
2915
  onNavOpenChange,
2916
+ mobileSidebarTrigger = "auto",
2864
2917
  className,
2865
2918
  mainClassName,
2866
2919
  contentFill = false
2867
2920
  }) => {
2868
2921
  const topbarContent = topbar ?? header;
2869
2922
  const hasChat = Boolean(chat);
2923
+ const showFloatingNavTrigger = Boolean(sidebar) && mobileSidebarTrigger !== "none" && !(mobileSidebarTrigger === "topbar") && !topbarContent;
2870
2924
  const [uncontrolledNavOpen, setUncontrolledNavOpen] = (0, import_react7.useState)(defaultNavOpen);
2871
2925
  const isNavControlled = navOpenProp !== void 0;
2872
2926
  const navOpen = isNavControlled ? navOpenProp : uncontrolledNavOpen;
@@ -2926,6 +2980,17 @@ var AppShell = ({
2926
2980
  style: studioChromeShellStyle,
2927
2981
  children: [
2928
2982
  sidebar,
2983
+ showFloatingNavTrigger && !navOpen ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2984
+ "button",
2985
+ {
2986
+ type: "button",
2987
+ "aria-label": "Open navigation",
2988
+ "aria-expanded": false,
2989
+ onClick: () => setNavOpen(true),
2990
+ className: floatingNavTriggerClass,
2991
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react.MenuIcon, { className: "size-5", "aria-hidden": true })
2992
+ }
2993
+ ) : null,
2929
2994
  sidebar && navOpen ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2930
2995
  "button",
2931
2996
  {
@@ -3139,7 +3204,7 @@ var AppShellChatTrigger = ({
3139
3204
  };
3140
3205
 
3141
3206
  // src/app/layout/AppShellSidebarTrigger.tsx
3142
- var import_lucide_react = require("lucide-react");
3207
+ var import_lucide_react2 = require("lucide-react");
3143
3208
  var import_jsx_runtime11 = require("react/jsx-runtime");
3144
3209
  var AppShellSidebarTrigger = ({
3145
3210
  label = "Open navigation",
@@ -3158,7 +3223,7 @@ var AppShellSidebarTrigger = ({
3158
3223
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/10",
3159
3224
  className
3160
3225
  ),
3161
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react.MenuIcon, { className: "size-5", "aria-hidden": true })
3226
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react2.MenuIcon, { className: "size-5", "aria-hidden": true })
3162
3227
  }
3163
3228
  );
3164
3229
  };
@@ -3310,17 +3375,17 @@ function useAppCopilotContext() {
3310
3375
  }
3311
3376
 
3312
3377
  // src/app/chat/AppChatPanel.tsx
3313
- var import_lucide_react10 = require("lucide-react");
3378
+ var import_lucide_react11 = require("lucide-react");
3314
3379
 
3315
3380
  // src/chat/thread.tsx
3316
3381
  var import_react38 = require("react");
3317
3382
  var import_react39 = require("@assistant-ui/react");
3318
- var import_lucide_react9 = require("lucide-react");
3383
+ var import_lucide_react10 = require("lucide-react");
3319
3384
  var import_react40 = require("motion/react");
3320
3385
 
3321
3386
  // src/chat/attachment.tsx
3322
3387
  var import_react10 = require("react");
3323
- var import_lucide_react3 = require("lucide-react");
3388
+ var import_lucide_react4 = require("lucide-react");
3324
3389
  var import_react11 = require("@assistant-ui/react");
3325
3390
  var import_shallow = require("zustand/shallow");
3326
3391
 
@@ -3375,7 +3440,7 @@ function TooltipContent({
3375
3440
  }
3376
3441
 
3377
3442
  // src/ui/dialog.tsx
3378
- var import_lucide_react2 = require("lucide-react");
3443
+ var import_lucide_react3 = require("lucide-react");
3379
3444
  var import_radix_ui4 = require("radix-ui");
3380
3445
  var import_jsx_runtime18 = require("react/jsx-runtime");
3381
3446
  function Dialog({
@@ -3435,7 +3500,7 @@ function DialogContent({
3435
3500
  "data-slot": "dialog-close",
3436
3501
  className: "ring-offset-background focus:ring-ring data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-[opacity,background-color] hover:bg-ghost-fill-hover hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3437
3502
  children: [
3438
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react2.XIcon, {}),
3503
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react3.XIcon, {}),
3439
3504
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "sr-only", children: "Close" })
3440
3505
  ]
3441
3506
  }
@@ -3663,7 +3728,7 @@ var AttachmentThumb = () => {
3663
3728
  className: "aui-attachment-tile-image object-cover"
3664
3729
  }
3665
3730
  ),
3666
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(AvatarFallback, { delayMs: isImage ? 200 : 0, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react3.FileText, { className: "aui-attachment-tile-fallback-icon size-8 text-muted-foreground" }) })
3731
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(AvatarFallback, { delayMs: isImage ? 200 : 0, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react4.FileText, { className: "aui-attachment-tile-fallback-icon size-8 text-muted-foreground" }) })
3667
3732
  ] });
3668
3733
  };
3669
3734
  var AttachmentUI = () => {
@@ -3719,7 +3784,7 @@ var AttachmentRemove = () => {
3719
3784
  tooltip: "Remove file",
3720
3785
  className: "aui-attachment-tile-remove absolute top-1.5 right-1.5 size-3.5 rounded-full bg-card text-foreground opacity-100 shadow-card hover:bg-card! [&_svg]:text-foreground hover:[&_svg]:text-destructive",
3721
3786
  side: "top",
3722
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react3.XIcon, { className: "aui-attachment-remove-icon size-3" })
3787
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react4.XIcon, { className: "aui-attachment-remove-icon size-3" })
3723
3788
  }
3724
3789
  ) });
3725
3790
  };
@@ -3743,7 +3808,7 @@ var ComposerAddAttachment = () => {
3743
3808
  variant: "secondary",
3744
3809
  className: "aui-composer-add-attachment shrink-0 text-muted-foreground",
3745
3810
  "aria-label": "Add Attachment",
3746
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react3.PlusIcon, { className: "aui-attachment-add-icon size-4 stroke-[1.5]" })
3811
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react4.PlusIcon, { className: "aui-attachment-add-icon size-4 stroke-[1.5]" })
3747
3812
  }
3748
3813
  ) });
3749
3814
  };
@@ -3756,7 +3821,7 @@ var import_remark_gfm = __toESM(require("remark-gfm"), 1);
3756
3821
  var import_remark_math = __toESM(require("remark-math"), 1);
3757
3822
  var import_rehype_katex = __toESM(require("rehype-katex"), 1);
3758
3823
  var import_react25 = require("react");
3759
- var import_lucide_react5 = require("lucide-react");
3824
+ var import_lucide_react6 = require("lucide-react");
3760
3825
 
3761
3826
  // src/chat/syntax-highlighter.tsx
3762
3827
  var import_react24 = require("react");
@@ -4990,7 +5055,7 @@ function inferDataKeys(data, xKey) {
4990
5055
  // src/artifacts/question-artifact.tsx
4991
5056
  var import_react16 = require("react");
4992
5057
  var import_react17 = require("@assistant-ui/react");
4993
- var import_lucide_react4 = require("lucide-react");
5058
+ var import_lucide_react5 = require("lucide-react");
4994
5059
  var import_jsx_runtime32 = require("react/jsx-runtime");
4995
5060
  function optionKey(option, index) {
4996
5061
  const id = option.id?.trim();
@@ -5004,7 +5069,7 @@ var OptionRadio = ({ selected }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx
5004
5069
  selected ? "border-foreground bg-foreground text-background" : "border-border bg-background"
5005
5070
  ),
5006
5071
  "aria-hidden": true,
5007
- children: selected ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react4.CheckIcon, { className: "size-2.5 stroke-[3]" }) : null
5072
+ children: selected ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react5.CheckIcon, { className: "size-2.5 stroke-[3]" }) : null
5008
5073
  }
5009
5074
  );
5010
5075
  var QuestionArtifactView = ({
@@ -5819,8 +5884,8 @@ var CodeHeader = ({ language, code }) => {
5819
5884
  onClick: onCopy,
5820
5885
  className: "transition-colors hover:text-foreground",
5821
5886
  children: [
5822
- !isCopied && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react5.CopyIcon, { className: "h-3.5 w-3.5" }),
5823
- isCopied && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react5.CheckIcon, { className: "h-3.5 w-3.5 text-emerald-500" })
5887
+ !isCopied && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react6.CopyIcon, { className: "h-3.5 w-3.5" }),
5888
+ isCopied && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_lucide_react6.CheckIcon, { className: "h-3.5 w-3.5 text-emerald-500" })
5824
5889
  ]
5825
5890
  }
5826
5891
  )
@@ -6040,7 +6105,7 @@ var defaultComponents = (0, import_react_markdown.unstable_memoizeMarkdownCompon
6040
6105
 
6041
6106
  // src/chat/tool-fallback.tsx
6042
6107
  var import_react32 = require("react");
6043
- var import_lucide_react6 = require("lucide-react");
6108
+ var import_lucide_react7 = require("lucide-react");
6044
6109
  var import_react33 = require("@assistant-ui/react");
6045
6110
 
6046
6111
  // src/ui/shimmer.tsx
@@ -7081,7 +7146,7 @@ var TimelineActionLabel = ({ action, detail, shimmer = false }) => /* @__PURE__
7081
7146
  detail ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: studioTimelineDetailClass, children: detail }) : null
7082
7147
  ] });
7083
7148
  var TimelineHoverChevron = ({ expanded }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
7084
- import_lucide_react6.ChevronRightIcon,
7149
+ import_lucide_react7.ChevronRightIcon,
7085
7150
  {
7086
7151
  className: studioTimelineChevronClass(expanded),
7087
7152
  "aria-hidden": true
@@ -7231,7 +7296,7 @@ var ToolArtifactFallback = (props) => {
7231
7296
 
7232
7297
  // src/chat/composer.tsx
7233
7298
  var import_react34 = require("@assistant-ui/react");
7234
- var import_lucide_react7 = require("lucide-react");
7299
+ var import_lucide_react8 = require("lucide-react");
7235
7300
  var import_jsx_runtime48 = require("react/jsx-runtime");
7236
7301
  var Composer = ({
7237
7302
  placeholder = "Send a message...",
@@ -7323,7 +7388,7 @@ var ComposerSendOrCancel = ({ sendTooltip }) => {
7323
7388
  type: "submit",
7324
7389
  className: "aui-composer-send shrink-0 disabled:opacity-30",
7325
7390
  "aria-label": "Send message",
7326
- children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react7.ArrowUpIcon, { className: "aui-composer-send-icon size-4" })
7391
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react8.ArrowUpIcon, { className: "aui-composer-send-icon size-4" })
7327
7392
  }
7328
7393
  ) }) }),
7329
7394
  /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react34.AuiIf, { condition: (s) => s.thread.isRunning, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_react34.ComposerPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
@@ -7333,7 +7398,7 @@ var ComposerSendOrCancel = ({ sendTooltip }) => {
7333
7398
  variant: "primary",
7334
7399
  className: "aui-composer-cancel shrink-0",
7335
7400
  "aria-label": "Stop generating",
7336
- children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react7.SquareIcon, { className: "aui-composer-cancel-icon size-3 fill-current" })
7401
+ children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(import_lucide_react8.SquareIcon, { className: "aui-composer-cancel-icon size-3 fill-current" })
7337
7402
  }
7338
7403
  ) }) })
7339
7404
  ] });
@@ -7342,7 +7407,7 @@ var ComposerSendOrCancel = ({ sendTooltip }) => {
7342
7407
  // src/chat/suggestions.tsx
7343
7408
  var import_react35 = require("react");
7344
7409
  var import_react36 = require("@assistant-ui/react");
7345
- var import_lucide_react8 = require("lucide-react");
7410
+ var import_lucide_react9 = require("lucide-react");
7346
7411
  var import_jsx_runtime49 = require("react/jsx-runtime");
7347
7412
  var Suggestions = ({
7348
7413
  suggestions,
@@ -7377,7 +7442,7 @@ var SuggestionRow = ({ suggestion }) => {
7377
7442
  onClick,
7378
7443
  className: cn("aui-thread-suggestion", studioListRowButtonClass),
7379
7444
  children: [
7380
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "aui-thread-suggestion-icon shrink-0 text-muted-foreground", children: suggestion.icon ?? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react8.ArrowUpIcon, { className: "size-4", strokeWidth: 1.75, "aria-hidden": true }) }),
7445
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "aui-thread-suggestion-icon shrink-0 text-muted-foreground", children: suggestion.icon ?? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react9.ArrowUpIcon, { className: "size-4", strokeWidth: 1.75, "aria-hidden": true }) }),
7381
7446
  /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("span", { className: "aui-thread-suggestion-text min-w-0 flex-1 text-left", children: [
7382
7447
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "aui-thread-suggestion-text-1 block truncate text-sm font-normal text-foreground", children: suggestion.title }),
7383
7448
  suggestion.description && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "aui-thread-suggestion-text-2 mt-0.5 block truncate text-xs text-muted-foreground", children: suggestion.description })
@@ -7597,7 +7662,7 @@ var ThreadScrollToBottom = () => {
7597
7662
  tooltip: "Scroll to bottom",
7598
7663
  variant: "secondary",
7599
7664
  className: "aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center disabled:invisible",
7600
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.ArrowDownIcon, { className: "size-4" })
7665
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.ArrowDownIcon, { className: "size-4" })
7601
7666
  }
7602
7667
  ) });
7603
7668
  };
@@ -7738,8 +7803,8 @@ var AssistantActionBar = () => {
7738
7803
  variant: "ghost",
7739
7804
  className: ASSISTANT_ACTION_ICON_CLASS,
7740
7805
  children: [
7741
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react39.AuiIf, { condition: (s) => s.message.isCopied, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.CheckIcon, { className: "size-3" }) }),
7742
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react39.AuiIf, { condition: (s) => !s.message.isCopied, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.CopyIcon, { className: "size-3" }) })
7806
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react39.AuiIf, { condition: (s) => s.message.isCopied, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.CheckIcon, { className: "size-3" }) }),
7807
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react39.AuiIf, { condition: (s) => !s.message.isCopied, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.CopyIcon, { className: "size-3" }) })
7743
7808
  ]
7744
7809
  }
7745
7810
  ) }),
@@ -7749,7 +7814,7 @@ var AssistantActionBar = () => {
7749
7814
  tooltip: "Regenerate",
7750
7815
  variant: "ghost",
7751
7816
  className: ASSISTANT_ACTION_ICON_CLASS,
7752
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.RefreshCwIcon, { className: "size-3" })
7817
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.RefreshCwIcon, { className: "size-3" })
7753
7818
  }
7754
7819
  ) }),
7755
7820
  /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react39.ActionBarMorePrimitive.Root, { children: [
@@ -7762,7 +7827,7 @@ var AssistantActionBar = () => {
7762
7827
  ASSISTANT_ACTION_ICON_CLASS,
7763
7828
  "data-[state=open]:text-muted-foreground/80"
7764
7829
  ),
7765
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.MoreHorizontalIcon, { className: "size-3" })
7830
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.MoreHorizontalIcon, { className: "size-3" })
7766
7831
  }
7767
7832
  ) }),
7768
7833
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
@@ -7772,7 +7837,7 @@ var AssistantActionBar = () => {
7772
7837
  align: "start",
7773
7838
  className: "aui-action-bar-more-content z-50 min-w-36 overflow-hidden rounded-lg border border-border bg-popover p-1 text-popover-foreground shadow-card-elevated",
7774
7839
  children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react39.ActionBarPrimitive.ExportMarkdown, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react39.ActionBarMorePrimitive.Item, { className: "aui-action-bar-more-item flex cursor-pointer select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none hover:bg-muted focus:bg-muted", children: [
7775
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.DownloadIcon, { className: "size-4 shrink-0" }),
7840
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.DownloadIcon, { className: "size-4 shrink-0" }),
7776
7841
  "Export as Markdown"
7777
7842
  ] }) })
7778
7843
  }
@@ -7830,7 +7895,7 @@ var UserActionBar = () => {
7830
7895
  tooltip: "Edit",
7831
7896
  variant: "ghost",
7832
7897
  className: ASSISTANT_ACTION_ICON_CLASS,
7833
- children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react9.PencilIcon, { className: "size-3" })
7898
+ children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_lucide_react10.PencilIcon, { className: "size-3" })
7834
7899
  }
7835
7900
  ) })
7836
7901
  }
@@ -7906,7 +7971,7 @@ var AppChatPanel = ({
7906
7971
  className: closeButtonClass,
7907
7972
  onClick: () => shellChat.setOpen(false),
7908
7973
  "aria-label": "Close assistant",
7909
- children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react10.XIcon, { className: "size-4", "aria-hidden": true })
7974
+ children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react11.XIcon, { className: "size-4", "aria-hidden": true })
7910
7975
  }
7911
7976
  ) }) : null,
7912
7977
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: bodyClass, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
@@ -8435,7 +8500,7 @@ var ResourceCard = ({
8435
8500
  };
8436
8501
 
8437
8502
  // src/app/surfaces/AlertCard.tsx
8438
- var import_lucide_react11 = require("lucide-react");
8503
+ var import_lucide_react12 = require("lucide-react");
8439
8504
  var import_jsx_runtime62 = require("react/jsx-runtime");
8440
8505
  var alertCardShellClass = cn(
8441
8506
  "flex flex-col rounded-2xl p-4 text-left font-normal border border-border shadow-card",
@@ -8479,7 +8544,7 @@ var AlertCard = ({
8479
8544
  ] });
8480
8545
  const cardContent = /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-start justify-between gap-4 w-full h-full", children: [
8481
8546
  bodyContent,
8482
- showTrailing ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "shrink-0 flex items-center justify-center self-center text-muted-foreground/50", children: trailing || /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react11.ChevronRight, { className: "size-4" }) }) : null
8547
+ showTrailing ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "shrink-0 flex items-center justify-center self-center text-muted-foreground/50", children: trailing || /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react12.ChevronRight, { className: "size-4" }) }) : null
8483
8548
  ] });
8484
8549
  if (onClick) {
8485
8550
  return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
@@ -8497,11 +8562,11 @@ var AlertCard = ({
8497
8562
  };
8498
8563
 
8499
8564
  // src/app/surfaces/CatalogCard.tsx
8500
- var import_lucide_react13 = require("lucide-react");
8565
+ var import_lucide_react14 = require("lucide-react");
8501
8566
 
8502
8567
  // src/ui/copy-button.tsx
8503
8568
  var React4 = __toESM(require("react"), 1);
8504
- var import_lucide_react12 = require("lucide-react");
8569
+ var import_lucide_react13 = require("lucide-react");
8505
8570
  var import_jsx_runtime63 = require("react/jsx-runtime");
8506
8571
  function CopyButton({
8507
8572
  value,
@@ -8527,7 +8592,7 @@ function CopyButton({
8527
8592
  } catch {
8528
8593
  }
8529
8594
  };
8530
- const Icon = copied ? import_lucide_react12.CheckIcon : import_lucide_react12.CopyIcon;
8595
+ const Icon = copied ? import_lucide_react13.CheckIcon : import_lucide_react13.CopyIcon;
8531
8596
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(
8532
8597
  "button",
8533
8598
  {
@@ -8599,7 +8664,7 @@ var CatalogCard = ({
8599
8664
  onClick: (e) => e.stopPropagation(),
8600
8665
  children: [
8601
8666
  /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "truncate", children: title }),
8602
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react13.ExternalLink, { className: "size-3.5 shrink-0 text-muted-foreground/60" })
8667
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react14.ExternalLink, { className: "size-3.5 shrink-0 text-muted-foreground/60" })
8603
8668
  ]
8604
8669
  }
8605
8670
  ) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("h4", { className: "text-sm font-medium leading-snug text-foreground truncate", children: title }) }),
@@ -8626,7 +8691,7 @@ var CatalogCard = ({
8626
8691
  onClick: (e) => e.stopPropagation(),
8627
8692
  children: [
8628
8693
  /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { children: link.label }),
8629
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react13.ExternalLink, { className: "size-2.5 shrink-0 text-muted-foreground/50" })
8694
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react14.ExternalLink, { className: "size-2.5 shrink-0 text-muted-foreground/50" })
8630
8695
  ]
8631
8696
  },
8632
8697
  idx
@@ -9291,7 +9356,7 @@ var FieldTextarea = ({
9291
9356
 
9292
9357
  // src/app/forms/FieldSelect.tsx
9293
9358
  var import_react51 = require("react");
9294
- var import_lucide_react14 = require("lucide-react");
9359
+ var import_lucide_react15 = require("lucide-react");
9295
9360
  var import_jsx_runtime79 = require("react/jsx-runtime");
9296
9361
  var selectWrapClass = "relative";
9297
9362
  var selectClass = cn(
@@ -9330,7 +9395,7 @@ var FieldSelect = ({
9330
9395
  }
9331
9396
  ),
9332
9397
  /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
9333
- import_lucide_react14.ChevronDownIcon,
9398
+ import_lucide_react15.ChevronDownIcon,
9334
9399
  {
9335
9400
  className: "pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2 text-muted-foreground",
9336
9401
  "aria-hidden": true
@@ -9397,7 +9462,7 @@ var FieldSwitch = ({
9397
9462
  };
9398
9463
 
9399
9464
  // src/app/forms/SearchInput.tsx
9400
- var import_lucide_react15 = require("lucide-react");
9465
+ var import_lucide_react16 = require("lucide-react");
9401
9466
  var import_jsx_runtime81 = require("react/jsx-runtime");
9402
9467
  var SearchInput = ({
9403
9468
  className,
@@ -9413,7 +9478,7 @@ var SearchInput = ({
9413
9478
  className
9414
9479
  ),
9415
9480
  children: [
9416
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react15.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground", "aria-hidden": true }),
9481
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react16.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground", "aria-hidden": true }),
9417
9482
  /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
9418
9483
  "input",
9419
9484
  {
@@ -9474,11 +9539,11 @@ var FilterField = ({
9474
9539
 
9475
9540
  // src/app/data/FilterDropdown.tsx
9476
9541
  var import_react53 = require("react");
9477
- var import_lucide_react18 = require("lucide-react");
9542
+ var import_lucide_react19 = require("lucide-react");
9478
9543
 
9479
9544
  // src/ui/checkbox.tsx
9480
9545
  var import_radix_ui6 = require("radix-ui");
9481
- var import_lucide_react16 = require("lucide-react");
9546
+ var import_lucide_react17 = require("lucide-react");
9482
9547
  var import_jsx_runtime85 = require("react/jsx-runtime");
9483
9548
  function Checkbox({
9484
9549
  className,
@@ -9500,7 +9565,7 @@ function Checkbox({
9500
9565
  {
9501
9566
  "data-slot": "checkbox-indicator",
9502
9567
  className: "flex items-center justify-center text-current animate-checkbox-pop",
9503
- children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react16.CheckIcon, { className: "size-2.5 stroke-[3.5px]" })
9568
+ children: /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react17.CheckIcon, { className: "size-2.5 stroke-[3.5px]" })
9504
9569
  }
9505
9570
  )
9506
9571
  }
@@ -9509,7 +9574,7 @@ function Checkbox({
9509
9574
 
9510
9575
  // src/ui/select.tsx
9511
9576
  var import_radix_ui7 = require("radix-ui");
9512
- var import_lucide_react17 = require("lucide-react");
9577
+ var import_lucide_react18 = require("lucide-react");
9513
9578
  var import_jsx_runtime86 = require("react/jsx-runtime");
9514
9579
  function Select({
9515
9580
  ...props
@@ -9540,7 +9605,7 @@ function SelectTrigger({
9540
9605
  ...props,
9541
9606
  children: [
9542
9607
  children,
9543
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_radix_ui7.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react17.ChevronDownIcon, { className: "size-4 opacity-50" }) })
9608
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_radix_ui7.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react18.ChevronDownIcon, { className: "size-4 opacity-50" }) })
9544
9609
  ]
9545
9610
  }
9546
9611
  );
@@ -9596,7 +9661,7 @@ function SelectItem({
9596
9661
  ),
9597
9662
  ...props,
9598
9663
  children: [
9599
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_radix_ui7.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react17.CheckIcon, { className: "size-4" }) }) }),
9664
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_radix_ui7.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react18.CheckIcon, { className: "size-4" }) }) }),
9600
9665
  /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_radix_ui7.Select.ItemText, { children })
9601
9666
  ]
9602
9667
  }
@@ -9612,7 +9677,7 @@ function SelectScrollUpButton({
9612
9677
  "data-slot": "select-scroll-up-button",
9613
9678
  className: cn("flex cursor-default items-center justify-center py-1", className),
9614
9679
  ...props,
9615
- children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react17.ChevronUpIcon, { className: "size-4" })
9680
+ children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react18.ChevronUpIcon, { className: "size-4" })
9616
9681
  }
9617
9682
  );
9618
9683
  }
@@ -9626,7 +9691,7 @@ function SelectScrollDownButton({
9626
9691
  "data-slot": "select-scroll-down-button",
9627
9692
  className: cn("flex cursor-default items-center justify-center py-1", className),
9628
9693
  ...props,
9629
- children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react17.ChevronDownIcon, { className: "size-4" })
9694
+ children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_lucide_react18.ChevronDownIcon, { className: "size-4" })
9630
9695
  }
9631
9696
  );
9632
9697
  }
@@ -9794,7 +9859,7 @@ function FilterDropdown({
9794
9859
  variant: "outline",
9795
9860
  size: "sm",
9796
9861
  className: "border-dashed font-medium text-muted-foreground hover:text-foreground",
9797
- iconLeading: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react18.ListFilterIcon, { className: "size-4" }),
9862
+ iconLeading: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react19.ListFilterIcon, { className: "size-4" }),
9798
9863
  children: label
9799
9864
  }
9800
9865
  ) }),
@@ -9822,7 +9887,7 @@ function FilterDropdown({
9822
9887
  field.icon,
9823
9888
  /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("span", { children: field.label })
9824
9889
  ] }),
9825
- /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react18.ChevronRightIcon, { className: "size-4 text-muted-foreground/50" })
9890
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react19.ChevronRightIcon, { className: "size-4 text-muted-foreground/50" })
9826
9891
  ]
9827
9892
  },
9828
9893
  field.id
@@ -9870,7 +9935,7 @@ function FilterChip({ label, onRemove }) {
9870
9935
  onClick: onRemove,
9871
9936
  "aria-label": `Remove ${label}`,
9872
9937
  className: "flex size-5 items-center justify-center rounded-full text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground",
9873
- children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react18.XIcon, { className: "size-3.5" })
9938
+ children: /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(import_lucide_react19.XIcon, { className: "size-3.5" })
9874
9939
  }
9875
9940
  )
9876
9941
  ] });
@@ -10133,7 +10198,7 @@ function ApplyClear({ onClear, onApply }) {
10133
10198
 
10134
10199
  // src/app/data/DataTable.tsx
10135
10200
  var import_react54 = require("react");
10136
- var import_lucide_react19 = require("lucide-react");
10201
+ var import_lucide_react20 = require("lucide-react");
10137
10202
 
10138
10203
  // src/ui/skeleton.tsx
10139
10204
  var import_jsx_runtime89 = require("react/jsx-runtime");
@@ -10192,12 +10257,12 @@ function SortIndicator({
10192
10257
  }) {
10193
10258
  const iconClass = "size-3.5 shrink-0 opacity-60 group-hover:opacity-100";
10194
10259
  if (!active) {
10195
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react19.ArrowUpDownIcon, { className: iconClass, "aria-hidden": true });
10260
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react20.ArrowUpDownIcon, { className: iconClass, "aria-hidden": true });
10196
10261
  }
10197
10262
  if (direction === "desc") {
10198
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react19.ArrowDownIcon, { className: iconClass, "aria-hidden": true });
10263
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react20.ArrowDownIcon, { className: iconClass, "aria-hidden": true });
10199
10264
  }
10200
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react19.ArrowUpIcon, { className: iconClass, "aria-hidden": true });
10265
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react20.ArrowUpIcon, { className: iconClass, "aria-hidden": true });
10201
10266
  }
10202
10267
  function DataTable({
10203
10268
  columns,
@@ -10474,7 +10539,7 @@ function DataTable({
10474
10539
  onClick: () => setPage(pageIndex - 1),
10475
10540
  disabled: pageIndex <= 0,
10476
10541
  "aria-label": "Previous page",
10477
- children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react19.ChevronLeftIcon, { className: "size-4", "aria-hidden": true })
10542
+ children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react20.ChevronLeftIcon, { className: "size-4", "aria-hidden": true })
10478
10543
  }
10479
10544
  ),
10480
10545
  /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
@@ -10485,7 +10550,7 @@ function DataTable({
10485
10550
  onClick: () => setPage(pageIndex + 1),
10486
10551
  disabled: pageIndex >= pageCount - 1,
10487
10552
  "aria-label": "Next page",
10488
- children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react19.ChevronRightIcon, { className: "size-4", "aria-hidden": true })
10553
+ children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react20.ChevronRightIcon, { className: "size-4", "aria-hidden": true })
10489
10554
  }
10490
10555
  )
10491
10556
  ] })
@@ -11024,7 +11089,7 @@ function UntitledButton({
11024
11089
  }
11025
11090
 
11026
11091
  // src/ui/banner.tsx
11027
- var import_lucide_react20 = require("lucide-react");
11092
+ var import_lucide_react21 = require("lucide-react");
11028
11093
  var import_jsx_runtime95 = require("react/jsx-runtime");
11029
11094
  var bannerSoftClass = {
11030
11095
  default: "border-border/50 bg-muted/30 text-foreground/90 dark:bg-muted/15",
@@ -11121,7 +11186,7 @@ function Banner({
11121
11186
  isSingleLine ? "self-center" : "-mt-0.5",
11122
11187
  isSolid ? "opacity-80 hover:bg-background/15 hover:opacity-100" : "text-muted-foreground hover:bg-foreground/10 hover:text-foreground"
11123
11188
  ),
11124
- children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react20.XIcon, { className: "size-4", "aria-hidden": true })
11189
+ children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_lucide_react21.XIcon, { className: "size-4", "aria-hidden": true })
11125
11190
  }
11126
11191
  ) : null
11127
11192
  ]
@@ -11220,7 +11285,7 @@ var React5 = __toESM(require("react"), 1);
11220
11285
  var import_core2 = require("@dnd-kit/core");
11221
11286
  var import_sortable = require("@dnd-kit/sortable");
11222
11287
  var import_utilities = require("@dnd-kit/utilities");
11223
- var import_lucide_react21 = require("lucide-react");
11288
+ var import_lucide_react22 = require("lucide-react");
11224
11289
  var import_jsx_runtime97 = require("react/jsx-runtime");
11225
11290
  var columnTitleToneClass = {
11226
11291
  default: "text-foreground",
@@ -11306,7 +11371,7 @@ function SortableCard({
11306
11371
  className: "absolute right-1.5 top-1.5 z-10 grid size-6 cursor-grab touch-none place-items-center rounded-md text-muted-foreground/40 opacity-0 transition hover:bg-foreground/5 hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/15 group-hover/kanban-card:opacity-100 active:cursor-grabbing",
11307
11372
  ...attributes,
11308
11373
  ...listeners,
11309
- children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.GripVerticalIcon, { className: "size-4", "aria-hidden": true })
11374
+ children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react22.GripVerticalIcon, { className: "size-4", "aria-hidden": true })
11310
11375
  }
11311
11376
  ) : null,
11312
11377
  renderCard(card, { column, isDragging, isOverlay: false, dragHandleProps })