@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.
- package/CHANGELOG.md +24 -0
- package/dist/app.cjs +138 -73
- package/dist/app.d.cts +3 -3
- package/dist/app.d.ts +3 -3
- package/dist/app.esm.js +5 -5
- package/dist/{chart-artifact-Dpt4t5sf.d.cts → chart-artifact-CuTiCITz.d.cts} +221 -15
- package/dist/{chart-artifact-BYl5C-dk.d.ts → chart-artifact-U-x0UNJm.d.ts} +221 -15
- package/dist/chat.esm.js +3 -3
- package/dist/{chunk-YYEI6XME.esm.js → chunk-22KWC2LS.esm.js} +5 -5
- package/dist/{chunk-MBS7XHV2.esm.js → chunk-45NXD3IG.esm.js} +3 -3
- package/dist/{chunk-24B4I4XC.esm.js → chunk-64RHAJVG.esm.js} +1 -1
- package/dist/{chunk-WQIQW7EM.esm.js → chunk-7AGIAQE6.esm.js} +1 -1
- package/dist/{chunk-NO5AWNWT.esm.js → chunk-7WU3IKAN.esm.js} +1 -1
- package/dist/{chunk-UVPXH4MB.esm.js → chunk-M5IBJBEY.esm.js} +80 -21
- package/dist/{chunk-HSL36SJ4.esm.js → chunk-PMMI7LBV.esm.js} +20 -8
- package/dist/{chunk-TMP7RIA7.esm.js → chunk-VKXOHVDE.esm.js} +2 -2
- package/dist/{chunk-ELEY66OH.esm.js → chunk-XOCOZU7J.esm.js} +11 -1
- package/dist/cli/timbal-ui-lint.mjs +32 -1
- package/dist/index.cjs +274 -198
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.esm.js +9 -9
- package/dist/{kanban-FFBeaZPS.d.cts → kanban-BQxWliCS.d.cts} +17 -0
- package/dist/{kanban-FFBeaZPS.d.ts → kanban-BQxWliCS.d.ts} +17 -0
- package/dist/studio.cjs +104 -85
- package/dist/studio.esm.js +6 -6
- package/dist/ui.cjs +6 -6
- package/dist/ui.d.cts +1 -1
- package/dist/ui.d.ts +1 -1
- package/dist/ui.esm.js +4 -4
- 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
|
|
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/
|
|
2791
|
+
// src/layout/shell-nav-context.tsx
|
|
2753
2792
|
var import_react5 = require("react");
|
|
2754
|
-
var
|
|
2755
|
-
var
|
|
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 (
|
|
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
|
|
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)(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
|
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)(
|
|
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)(
|
|
5823
|
-
isCopied && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
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
|
|
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
|
-
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
7742
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react39.AuiIf, { condition: (s) => !s.message.isCopied, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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
|
|
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 ?
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
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
|
|
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)(
|
|
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
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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 })
|