@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/index.cjs
CHANGED
|
@@ -1643,14 +1643,14 @@ function DialogDescription({
|
|
|
1643
1643
|
className,
|
|
1644
1644
|
...props
|
|
1645
1645
|
}) {
|
|
1646
|
-
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1647
|
-
|
|
1646
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_radix_ui2.Dialog.Description, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
1647
|
+
"div",
|
|
1648
1648
|
{
|
|
1649
1649
|
"data-slot": "dialog-description",
|
|
1650
1650
|
className: cn("text-sm text-muted-foreground", className),
|
|
1651
1651
|
...props
|
|
1652
1652
|
}
|
|
1653
|
-
);
|
|
1653
|
+
) });
|
|
1654
1654
|
}
|
|
1655
1655
|
function DialogHeader({ className, ...props }) {
|
|
1656
1656
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
@@ -6070,9 +6070,9 @@ var TimbalChatShell = ({
|
|
|
6070
6070
|
};
|
|
6071
6071
|
|
|
6072
6072
|
// src/studio/shell/studio-shell.tsx
|
|
6073
|
-
var
|
|
6073
|
+
var import_react50 = require("react");
|
|
6074
6074
|
var import_lucide_react14 = require("lucide-react");
|
|
6075
|
-
var
|
|
6075
|
+
var import_react51 = require("motion/react");
|
|
6076
6076
|
|
|
6077
6077
|
// src/design/sidebar-motion.ts
|
|
6078
6078
|
var STUDIO_SIDEBAR_EASE_ENTER = [0, 0, 0.2, 1];
|
|
@@ -6255,11 +6255,19 @@ function useStudioSidebarLayout() {
|
|
|
6255
6255
|
}
|
|
6256
6256
|
|
|
6257
6257
|
// src/studio/sidebar/sidebar.tsx
|
|
6258
|
-
var
|
|
6259
|
-
var
|
|
6258
|
+
var import_react44 = require("react");
|
|
6259
|
+
var import_react45 = require("motion/react");
|
|
6260
|
+
|
|
6261
|
+
// src/layout/shell-nav-context.tsx
|
|
6262
|
+
var import_react37 = require("react");
|
|
6263
|
+
var ShellNavContext = (0, import_react37.createContext)(null);
|
|
6264
|
+
var ShellNavProvider = ShellNavContext.Provider;
|
|
6265
|
+
function useOptionalShellNav() {
|
|
6266
|
+
return (0, import_react37.useContext)(ShellNavContext);
|
|
6267
|
+
}
|
|
6260
6268
|
|
|
6261
6269
|
// src/studio/sidebar/sidebar-entries.tsx
|
|
6262
|
-
var
|
|
6270
|
+
var import_react38 = require("motion/react");
|
|
6263
6271
|
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
6264
6272
|
var StudioSidebarEntries = ({
|
|
6265
6273
|
visible,
|
|
@@ -6267,12 +6275,12 @@ var StudioSidebarEntries = ({
|
|
|
6267
6275
|
children,
|
|
6268
6276
|
className
|
|
6269
6277
|
}) => {
|
|
6270
|
-
const reducedMotion = (0,
|
|
6278
|
+
const reducedMotion = (0, import_react38.useReducedMotion)();
|
|
6271
6279
|
if (reducedMotion) {
|
|
6272
6280
|
return visible ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: cn("flex min-h-0 flex-1 flex-col", className), children }) : null;
|
|
6273
6281
|
}
|
|
6274
6282
|
return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
6275
|
-
|
|
6283
|
+
import_react38.motion.div,
|
|
6276
6284
|
{
|
|
6277
6285
|
className: cn("flex min-h-0 flex-1 flex-col", className),
|
|
6278
6286
|
initial: false,
|
|
@@ -6292,11 +6300,11 @@ var StudioSidebarEntries = ({
|
|
|
6292
6300
|
};
|
|
6293
6301
|
|
|
6294
6302
|
// src/studio/sidebar/sidebar-footer.tsx
|
|
6295
|
-
var
|
|
6303
|
+
var import_react41 = require("react");
|
|
6296
6304
|
var import_lucide_react11 = require("lucide-react");
|
|
6297
6305
|
|
|
6298
6306
|
// src/auth/provider.tsx
|
|
6299
|
-
var
|
|
6307
|
+
var import_react39 = require("react");
|
|
6300
6308
|
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
6301
6309
|
function isInsideIframe() {
|
|
6302
6310
|
try {
|
|
@@ -6305,26 +6313,26 @@ function isInsideIframe() {
|
|
|
6305
6313
|
return true;
|
|
6306
6314
|
}
|
|
6307
6315
|
}
|
|
6308
|
-
var SessionContext = (0,
|
|
6316
|
+
var SessionContext = (0, import_react39.createContext)(void 0);
|
|
6309
6317
|
var useSession = () => {
|
|
6310
|
-
const context = (0,
|
|
6318
|
+
const context = (0, import_react39.useContext)(SessionContext);
|
|
6311
6319
|
if (context === void 0) {
|
|
6312
6320
|
throw new Error("useSession must be used within a SessionProvider");
|
|
6313
6321
|
}
|
|
6314
6322
|
return context;
|
|
6315
6323
|
};
|
|
6316
6324
|
var useOptionalSession = () => {
|
|
6317
|
-
const context = (0,
|
|
6325
|
+
const context = (0, import_react39.useContext)(SessionContext);
|
|
6318
6326
|
return context ?? null;
|
|
6319
6327
|
};
|
|
6320
6328
|
var SessionProvider = ({
|
|
6321
6329
|
children,
|
|
6322
6330
|
enabled = true
|
|
6323
6331
|
}) => {
|
|
6324
|
-
const [user, setUser] = (0,
|
|
6325
|
-
const [loading, setLoading] = (0,
|
|
6326
|
-
const [embedded] = (0,
|
|
6327
|
-
(0,
|
|
6332
|
+
const [user, setUser] = (0, import_react39.useState)(null);
|
|
6333
|
+
const [loading, setLoading] = (0, import_react39.useState)(enabled);
|
|
6334
|
+
const [embedded] = (0, import_react39.useState)(isInsideIframe);
|
|
6335
|
+
(0, import_react39.useEffect)(() => {
|
|
6328
6336
|
if (!enabled) {
|
|
6329
6337
|
setLoading(false);
|
|
6330
6338
|
return;
|
|
@@ -6385,7 +6393,7 @@ var SessionProvider = ({
|
|
|
6385
6393
|
messageCleanup?.();
|
|
6386
6394
|
};
|
|
6387
6395
|
}, [enabled, embedded]);
|
|
6388
|
-
const logout = (0,
|
|
6396
|
+
const logout = (0, import_react39.useCallback)(() => {
|
|
6389
6397
|
clearTokens();
|
|
6390
6398
|
setUser(null);
|
|
6391
6399
|
const returnTo = encodeURIComponent(
|
|
@@ -6433,17 +6441,17 @@ function studioSidebarNavItemClasses(iconOnly, isActive) {
|
|
|
6433
6441
|
}
|
|
6434
6442
|
|
|
6435
6443
|
// src/studio/sidebar/sidebar-entry-motion.tsx
|
|
6436
|
-
var
|
|
6444
|
+
var import_react40 = require("motion/react");
|
|
6437
6445
|
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
6438
6446
|
var StudioSidebarEntryMotion = ({
|
|
6439
6447
|
children,
|
|
6440
6448
|
className
|
|
6441
6449
|
}) => {
|
|
6442
|
-
const reducedMotion = (0,
|
|
6450
|
+
const reducedMotion = (0, import_react40.useReducedMotion)();
|
|
6443
6451
|
if (reducedMotion) {
|
|
6444
6452
|
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className, children });
|
|
6445
6453
|
}
|
|
6446
|
-
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
6454
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react40.motion.div, { variants: studioSidebarEntryItemVariants, className: cn(className), children });
|
|
6447
6455
|
};
|
|
6448
6456
|
|
|
6449
6457
|
// src/studio/sidebar/sidebar-tooltip.tsx
|
|
@@ -6683,8 +6691,8 @@ var StudioSidebarFooter = ({
|
|
|
6683
6691
|
}) => {
|
|
6684
6692
|
const session = useOptionalSession();
|
|
6685
6693
|
const user = session?.user ?? null;
|
|
6686
|
-
const [isDark, setIsDark] = (0,
|
|
6687
|
-
(0,
|
|
6694
|
+
const [isDark, setIsDark] = (0, import_react41.useState)(false);
|
|
6695
|
+
(0, import_react41.useEffect)(() => {
|
|
6688
6696
|
if (typeof window === "undefined" || typeof document === "undefined") return;
|
|
6689
6697
|
const stored = window.localStorage.getItem(STORAGE_KEYS.theme);
|
|
6690
6698
|
if (stored) {
|
|
@@ -7036,14 +7044,14 @@ function TimbalMark({
|
|
|
7036
7044
|
}
|
|
7037
7045
|
|
|
7038
7046
|
// src/studio/sidebar/shell-inset-bridge-context.tsx
|
|
7039
|
-
var
|
|
7047
|
+
var import_react43 = require("react");
|
|
7040
7048
|
|
|
7041
7049
|
// src/layout/shell-inset-context.tsx
|
|
7042
|
-
var
|
|
7043
|
-
var ShellInsetContext = (0,
|
|
7050
|
+
var import_react42 = require("react");
|
|
7051
|
+
var ShellInsetContext = (0, import_react42.createContext)(null);
|
|
7044
7052
|
var ShellInsetProvider = ShellInsetContext.Provider;
|
|
7045
7053
|
function useShellInsetReporter() {
|
|
7046
|
-
return (0,
|
|
7054
|
+
return (0, import_react42.useContext)(ShellInsetContext);
|
|
7047
7055
|
}
|
|
7048
7056
|
|
|
7049
7057
|
// src/studio/sidebar/shell-inset-bridge-context.tsx
|
|
@@ -7052,7 +7060,7 @@ var StudioSidebarShellInsetBridge = ({
|
|
|
7052
7060
|
}) => {
|
|
7053
7061
|
const reportInset = useShellInsetReporter();
|
|
7054
7062
|
const { isMobile, isCollapsedRail } = useStudioSidebarLayout();
|
|
7055
|
-
(0,
|
|
7063
|
+
(0, import_react43.useLayoutEffect)(() => {
|
|
7056
7064
|
const insetPx = isMobile ? 0 : isCollapsedRail ? SIDEBAR_INSET_PX_COLLAPSED : SIDEBAR_INSET_PX_EXPANDED;
|
|
7057
7065
|
reportInset?.(insetPx);
|
|
7058
7066
|
onInsetChange?.(insetPx);
|
|
@@ -7095,7 +7103,7 @@ var StudioSidebarPanel = ({
|
|
|
7095
7103
|
logo,
|
|
7096
7104
|
emptyCaption = null
|
|
7097
7105
|
}) => {
|
|
7098
|
-
const reducedMotion = (0,
|
|
7106
|
+
const reducedMotion = (0, import_react45.useReducedMotion)();
|
|
7099
7107
|
const isCollapsedRail = widthCollapsed && !isMobile;
|
|
7100
7108
|
const iconOnlyLayout = studioSidebarIconOnlyLayout(isMobile, isCollapsedRail);
|
|
7101
7109
|
const isDrawerOpen = isMobile && mobileOpen;
|
|
@@ -7117,7 +7125,7 @@ var StudioSidebarPanel = ({
|
|
|
7117
7125
|
const brandNode = brand ?? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TimbalMark, { size: 32 });
|
|
7118
7126
|
const logoNode = logo ?? (isCustomBrand ? null : brandNode);
|
|
7119
7127
|
const panel = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
7120
|
-
|
|
7128
|
+
import_react45.motion.div,
|
|
7121
7129
|
{
|
|
7122
7130
|
"data-sidebar-collapsed": isCollapsedRail ? "" : void 0,
|
|
7123
7131
|
className: cn(
|
|
@@ -7187,7 +7195,7 @@ var StudioSidebarPanel = ({
|
|
|
7187
7195
|
);
|
|
7188
7196
|
if (isMobile) {
|
|
7189
7197
|
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
7190
|
-
|
|
7198
|
+
import_react45.motion.aside,
|
|
7191
7199
|
{
|
|
7192
7200
|
className: "fixed inset-y-0 left-0 z-[60] flex",
|
|
7193
7201
|
"aria-label": "Studio navigation",
|
|
@@ -7225,51 +7233,62 @@ var StudioSidebar = ({
|
|
|
7225
7233
|
onMobileOpenChange: onMobileOpenChangeProp,
|
|
7226
7234
|
onInsetChange
|
|
7227
7235
|
}) => {
|
|
7228
|
-
const reducedMotion = (0,
|
|
7236
|
+
const reducedMotion = (0, import_react45.useReducedMotion)();
|
|
7229
7237
|
const fetched = useWorkforces({ enabled: workforcesProp === void 0 });
|
|
7230
7238
|
const workforces = workforcesProp ?? fetched.workforces;
|
|
7231
|
-
const [internalSelected, setInternalSelected] = (0,
|
|
7239
|
+
const [internalSelected, setInternalSelected] = (0, import_react44.useState)(
|
|
7232
7240
|
selectedIdProp ?? ""
|
|
7233
7241
|
);
|
|
7234
|
-
(0,
|
|
7242
|
+
(0, import_react44.useEffect)(() => {
|
|
7235
7243
|
if (selectedIdProp !== void 0) return;
|
|
7236
7244
|
if (internalSelected) return;
|
|
7237
7245
|
const first = workforces[0]?.id ?? workforces[0]?.uid ?? workforces[0]?.name;
|
|
7238
7246
|
if (first) setInternalSelected(first);
|
|
7239
7247
|
}, [workforces, selectedIdProp, internalSelected]);
|
|
7240
7248
|
const selectedId = selectedIdProp ?? internalSelected ?? workforces[0]?.id ?? workforces[0]?.uid ?? workforces[0]?.name ?? "";
|
|
7241
|
-
const [collapsed, setCollapsed] = (0,
|
|
7249
|
+
const [collapsed, setCollapsed] = (0, import_react44.useState)(() => {
|
|
7242
7250
|
const persisted = readPersistedCollapsed(persistKey);
|
|
7243
7251
|
return persisted || defaultCollapsed;
|
|
7244
7252
|
});
|
|
7245
|
-
const handleCollapsedChange = (0,
|
|
7253
|
+
const handleCollapsedChange = (0, import_react44.useCallback)(
|
|
7246
7254
|
(next) => {
|
|
7247
7255
|
setCollapsed(next);
|
|
7248
7256
|
writePersistedCollapsed(persistKey, next);
|
|
7249
7257
|
},
|
|
7250
7258
|
[persistKey]
|
|
7251
7259
|
);
|
|
7252
|
-
const [isMobile, setIsMobile] = (0,
|
|
7260
|
+
const [isMobile, setIsMobile] = (0, import_react44.useState)(() => {
|
|
7253
7261
|
if (typeof window === "undefined") return false;
|
|
7254
7262
|
return window.innerWidth < mobileBreakpointPx;
|
|
7255
7263
|
});
|
|
7256
|
-
(0,
|
|
7264
|
+
(0, import_react44.useEffect)(() => {
|
|
7257
7265
|
if (typeof window === "undefined") return;
|
|
7258
7266
|
const onResize = () => setIsMobile(window.innerWidth < mobileBreakpointPx);
|
|
7259
7267
|
onResize();
|
|
7260
7268
|
window.addEventListener("resize", onResize);
|
|
7261
7269
|
return () => window.removeEventListener("resize", onResize);
|
|
7262
7270
|
}, [mobileBreakpointPx]);
|
|
7263
|
-
const
|
|
7264
|
-
const
|
|
7265
|
-
const
|
|
7271
|
+
const shellNav = useOptionalShellNav();
|
|
7272
|
+
const isControlled = mobileOpenProp !== void 0;
|
|
7273
|
+
const usingShellNav = !isControlled && shellNav !== null;
|
|
7274
|
+
const [internalMobileOpen, setInternalMobileOpen] = (0, import_react44.useState)(false);
|
|
7275
|
+
const mobileOpen = isControlled ? mobileOpenProp : usingShellNav ? shellNav.open : internalMobileOpen;
|
|
7276
|
+
const setMobileOpen = (0, import_react44.useCallback)(
|
|
7266
7277
|
(next) => {
|
|
7267
|
-
if (
|
|
7278
|
+
if (isControlled) {
|
|
7279
|
+
onMobileOpenChangeProp?.(next);
|
|
7280
|
+
return;
|
|
7281
|
+
}
|
|
7282
|
+
if (usingShellNav) {
|
|
7283
|
+
shellNav.setOpen(next);
|
|
7284
|
+
} else {
|
|
7285
|
+
setInternalMobileOpen(next);
|
|
7286
|
+
}
|
|
7268
7287
|
onMobileOpenChangeProp?.(next);
|
|
7269
7288
|
},
|
|
7270
|
-
[
|
|
7289
|
+
[isControlled, usingShellNav, shellNav, onMobileOpenChangeProp]
|
|
7271
7290
|
);
|
|
7272
|
-
const handleSelect = (0,
|
|
7291
|
+
const handleSelect = (0, import_react44.useCallback)(
|
|
7273
7292
|
(id) => {
|
|
7274
7293
|
if (selectedIdProp === void 0) setInternalSelected(id);
|
|
7275
7294
|
onSelect?.(id);
|
|
@@ -7277,10 +7296,10 @@ var StudioSidebar = ({
|
|
|
7277
7296
|
},
|
|
7278
7297
|
[selectedIdProp, onSelect, isMobile, setMobileOpen]
|
|
7279
7298
|
);
|
|
7280
|
-
(0,
|
|
7299
|
+
(0, import_react44.useEffect)(() => {
|
|
7281
7300
|
if (!isMobile && mobileOpen) setMobileOpen(false);
|
|
7282
7301
|
}, [isMobile, mobileOpen, setMobileOpen]);
|
|
7283
|
-
(0,
|
|
7302
|
+
(0, import_react44.useEffect)(() => {
|
|
7284
7303
|
if (!isMobile || !mobileOpen) return;
|
|
7285
7304
|
const onKeyDown = (e) => {
|
|
7286
7305
|
if (e.key === "Escape") setMobileOpen(false);
|
|
@@ -7298,7 +7317,7 @@ var StudioSidebar = ({
|
|
|
7298
7317
|
const entriesVisible = isMobile || phaseEntriesVisible;
|
|
7299
7318
|
const isCollapsedRail = widthCollapsed && !isMobile;
|
|
7300
7319
|
const iconOnlyLayout = studioSidebarIconOnlyLayout(isMobile, isCollapsedRail);
|
|
7301
|
-
const contextValue = (0,
|
|
7320
|
+
const contextValue = (0, import_react44.useMemo)(
|
|
7302
7321
|
() => ({
|
|
7303
7322
|
collapsed: effectiveCollapsed,
|
|
7304
7323
|
isMobile,
|
|
@@ -7334,23 +7353,23 @@ var StudioSidebar = ({
|
|
|
7334
7353
|
};
|
|
7335
7354
|
|
|
7336
7355
|
// src/studio/sidebar/sidebar-runtime-portal.tsx
|
|
7337
|
-
var
|
|
7356
|
+
var import_react46 = require("react");
|
|
7338
7357
|
var import_react_dom = require("react-dom");
|
|
7339
7358
|
var import_lucide_react13 = require("lucide-react");
|
|
7340
|
-
var
|
|
7359
|
+
var import_react47 = require("@assistant-ui/react");
|
|
7341
7360
|
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
7342
7361
|
var StudioSidebarRuntimePortal = ({
|
|
7343
7362
|
label = "New chat"
|
|
7344
7363
|
}) => {
|
|
7345
7364
|
const { iconOnlyLayout, isMobile, closeMobile } = useStudioSidebarLayout();
|
|
7346
|
-
const hasMessages = (0,
|
|
7365
|
+
const hasMessages = (0, import_react47.useThread)((s) => s.messages.length > 0);
|
|
7347
7366
|
const { clear } = useTimbalRuntime();
|
|
7348
|
-
const [anchor, setAnchor] = (0,
|
|
7349
|
-
const startNewChat = (0,
|
|
7367
|
+
const [anchor, setAnchor] = (0, import_react46.useState)(null);
|
|
7368
|
+
const startNewChat = (0, import_react46.useCallback)(() => {
|
|
7350
7369
|
clear();
|
|
7351
7370
|
if (isMobile) closeMobile?.();
|
|
7352
7371
|
}, [clear, isMobile, closeMobile]);
|
|
7353
|
-
(0,
|
|
7372
|
+
(0, import_react46.useLayoutEffect)(() => {
|
|
7354
7373
|
setAnchor(document.getElementById(DOM_IDS.sidebarRuntimeAnchor));
|
|
7355
7374
|
}, []);
|
|
7356
7375
|
if (!anchor || !hasMessages) return null;
|
|
@@ -7377,8 +7396,8 @@ var StudioSidebarRuntimePortal = ({
|
|
|
7377
7396
|
};
|
|
7378
7397
|
|
|
7379
7398
|
// src/studio/sidebar/welcome.tsx
|
|
7380
|
-
var
|
|
7381
|
-
var
|
|
7399
|
+
var import_react48 = require("motion/react");
|
|
7400
|
+
var import_react49 = require("@assistant-ui/react");
|
|
7382
7401
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
7383
7402
|
var welcomeStagger2 = {
|
|
7384
7403
|
initial: {},
|
|
@@ -7404,7 +7423,7 @@ var welcomeIcon2 = {
|
|
|
7404
7423
|
}
|
|
7405
7424
|
};
|
|
7406
7425
|
var StudioWelcome = ({ config, icon }) => {
|
|
7407
|
-
const isEmpty = (0,
|
|
7426
|
+
const isEmpty = (0, import_react49.useThread)((s) => s.messages.length === 0);
|
|
7408
7427
|
if (!isEmpty) return null;
|
|
7409
7428
|
const iconNode = icon ?? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
7410
7429
|
TimbalMark,
|
|
@@ -7414,16 +7433,16 @@ var StudioWelcome = ({ config, icon }) => {
|
|
|
7414
7433
|
}
|
|
7415
7434
|
);
|
|
7416
7435
|
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "aui-thread-welcome-root mx-auto my-auto flex w-full max-w-(--thread-max-width) grow flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "aui-thread-welcome-center flex w-full grow flex-col items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
|
|
7417
|
-
|
|
7436
|
+
import_react48.motion.div,
|
|
7418
7437
|
{
|
|
7419
7438
|
className: "aui-thread-welcome-message flex flex-col items-center justify-center px-2 text-center sm:px-4",
|
|
7420
7439
|
variants: welcomeStagger2,
|
|
7421
7440
|
initial: "initial",
|
|
7422
7441
|
animate: "animate",
|
|
7423
7442
|
children: [
|
|
7424
|
-
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
7443
|
+
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react48.motion.div, { variants: welcomeIcon2, className: "mb-4 md:mb-5", children: iconNode }),
|
|
7425
7444
|
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
7426
|
-
|
|
7445
|
+
import_react48.motion.h1,
|
|
7427
7446
|
{
|
|
7428
7447
|
variants: welcomeItem2,
|
|
7429
7448
|
className: "aui-thread-welcome-message-inner text-xl font-semibold sm:text-2xl",
|
|
@@ -7431,7 +7450,7 @@ var StudioWelcome = ({ config, icon }) => {
|
|
|
7431
7450
|
}
|
|
7432
7451
|
),
|
|
7433
7452
|
/* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
|
|
7434
|
-
|
|
7453
|
+
import_react48.motion.p,
|
|
7435
7454
|
{
|
|
7436
7455
|
variants: welcomeItem2,
|
|
7437
7456
|
className: "aui-thread-welcome-message-inner mt-2 text-muted-foreground",
|
|
@@ -7445,7 +7464,7 @@ var StudioWelcome = ({ config, icon }) => {
|
|
|
7445
7464
|
|
|
7446
7465
|
// src/studio/shell/studio-shell.tsx
|
|
7447
7466
|
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
7448
|
-
var
|
|
7467
|
+
var import_react52 = require("react");
|
|
7449
7468
|
var DEFAULT_BREAKPOINT_PX2 = 768;
|
|
7450
7469
|
function readPersistedCollapsed2(key) {
|
|
7451
7470
|
if (!key || typeof window === "undefined") return false;
|
|
@@ -7488,7 +7507,7 @@ var TimbalStudioShell = ({
|
|
|
7488
7507
|
components,
|
|
7489
7508
|
...chatProps
|
|
7490
7509
|
}) => {
|
|
7491
|
-
const reducedMotion = (0,
|
|
7510
|
+
const reducedMotion = (0, import_react51.useReducedMotion)();
|
|
7492
7511
|
const shouldFetchWorkforces = !workforceId && workforcesProp === void 0;
|
|
7493
7512
|
const fetched = useWorkforces({
|
|
7494
7513
|
enabled: shouldFetchWorkforces,
|
|
@@ -7496,36 +7515,36 @@ var TimbalStudioShell = ({
|
|
|
7496
7515
|
baseUrl: workforcesBaseUrl
|
|
7497
7516
|
});
|
|
7498
7517
|
const workforces = workforcesProp ?? fetched.workforces;
|
|
7499
|
-
const [internalSelected, setInternalSelected] = (0,
|
|
7518
|
+
const [internalSelected, setInternalSelected] = (0, import_react50.useState)(
|
|
7500
7519
|
workforceId ?? ""
|
|
7501
7520
|
);
|
|
7502
|
-
(0,
|
|
7521
|
+
(0, import_react50.useEffect)(() => {
|
|
7503
7522
|
if (workforceId) return;
|
|
7504
7523
|
if (internalSelected) return;
|
|
7505
7524
|
const first = workforces[0]?.id ?? workforces[0]?.uid ?? workforces[0]?.name;
|
|
7506
7525
|
if (first) setInternalSelected(first);
|
|
7507
7526
|
}, [workforces, workforceId, internalSelected]);
|
|
7508
7527
|
const activeWorkforceId = workforceId ?? internalSelected ?? fetched.selectedId ?? "";
|
|
7509
|
-
const [collapsed, setCollapsed] = (0,
|
|
7528
|
+
const [collapsed, setCollapsed] = (0, import_react50.useState)(() => {
|
|
7510
7529
|
const persisted = readPersistedCollapsed2(persistKey);
|
|
7511
7530
|
return persisted || defaultCollapsed;
|
|
7512
7531
|
});
|
|
7513
|
-
const [isMobile, setIsMobile] = (0,
|
|
7532
|
+
const [isMobile, setIsMobile] = (0, import_react50.useState)(() => {
|
|
7514
7533
|
if (typeof window === "undefined") return false;
|
|
7515
7534
|
return window.innerWidth < mobileBreakpointPx;
|
|
7516
7535
|
});
|
|
7517
|
-
const [mobileSidebarOpen, setMobileSidebarOpen] = (0,
|
|
7518
|
-
(0,
|
|
7536
|
+
const [mobileSidebarOpen, setMobileSidebarOpen] = (0, import_react50.useState)(false);
|
|
7537
|
+
(0, import_react50.useEffect)(() => {
|
|
7519
7538
|
if (typeof window === "undefined") return;
|
|
7520
7539
|
const onResize = () => setIsMobile(window.innerWidth < mobileBreakpointPx);
|
|
7521
7540
|
onResize();
|
|
7522
7541
|
window.addEventListener("resize", onResize);
|
|
7523
7542
|
return () => window.removeEventListener("resize", onResize);
|
|
7524
7543
|
}, [mobileBreakpointPx]);
|
|
7525
|
-
(0,
|
|
7544
|
+
(0, import_react50.useEffect)(() => {
|
|
7526
7545
|
if (!isMobile) setMobileSidebarOpen(false);
|
|
7527
7546
|
}, [isMobile]);
|
|
7528
|
-
(0,
|
|
7547
|
+
(0, import_react50.useEffect)(() => {
|
|
7529
7548
|
if (!mobileSidebarOpen) return;
|
|
7530
7549
|
const onKeyDown = (e) => {
|
|
7531
7550
|
if (e.key === "Escape") setMobileSidebarOpen(false);
|
|
@@ -7549,21 +7568,21 @@ var TimbalStudioShell = ({
|
|
|
7549
7568
|
layoutDirection
|
|
7550
7569
|
);
|
|
7551
7570
|
const desktopInsetPx = widthCollapsed ? SIDEBAR_INSET_PX_COLLAPSED : SIDEBAR_INSET_PX_EXPANDED;
|
|
7552
|
-
const onCollapsedChange = (0,
|
|
7571
|
+
const onCollapsedChange = (0, import_react50.useCallback)(
|
|
7553
7572
|
(next) => {
|
|
7554
7573
|
setCollapsed(next);
|
|
7555
7574
|
writePersistedCollapsed2(persistKey, next);
|
|
7556
7575
|
},
|
|
7557
7576
|
[persistKey]
|
|
7558
7577
|
);
|
|
7559
|
-
const handleSelectWorkforce = (0,
|
|
7578
|
+
const handleSelectWorkforce = (0, import_react50.useCallback)(
|
|
7560
7579
|
(id) => {
|
|
7561
7580
|
if (!workforceId) setInternalSelected(id);
|
|
7562
7581
|
if (isMobile) setMobileSidebarOpen(false);
|
|
7563
7582
|
},
|
|
7564
7583
|
[workforceId, isMobile]
|
|
7565
7584
|
);
|
|
7566
|
-
const sidebarContext = (0,
|
|
7585
|
+
const sidebarContext = (0, import_react50.useMemo)(
|
|
7567
7586
|
() => ({
|
|
7568
7587
|
collapsed: effectiveCollapsed,
|
|
7569
7588
|
isMobile,
|
|
@@ -7573,7 +7592,7 @@ var TimbalStudioShell = ({
|
|
|
7573
7592
|
}),
|
|
7574
7593
|
[effectiveCollapsed, isMobile, isCollapsedRail, iconOnlyLayout]
|
|
7575
7594
|
);
|
|
7576
|
-
const resolvedComponents = (0,
|
|
7595
|
+
const resolvedComponents = (0, import_react50.useMemo)(() => {
|
|
7577
7596
|
const next = { Welcome: StudioWelcome, ...components };
|
|
7578
7597
|
next.Composer = makeComposerWithPortal(components?.Composer);
|
|
7579
7598
|
return next;
|
|
@@ -7632,7 +7651,7 @@ var TimbalStudioShell = ({
|
|
|
7632
7651
|
}
|
|
7633
7652
|
),
|
|
7634
7653
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
|
|
7635
|
-
|
|
7654
|
+
import_react51.motion.header,
|
|
7636
7655
|
{
|
|
7637
7656
|
className: cn(
|
|
7638
7657
|
"absolute top-0 right-0 z-40 flex items-start justify-between gap-2",
|
|
@@ -7673,7 +7692,7 @@ var TimbalStudioShell = ({
|
|
|
7673
7692
|
}
|
|
7674
7693
|
),
|
|
7675
7694
|
/* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
7676
|
-
|
|
7695
|
+
import_react51.motion.main,
|
|
7677
7696
|
{
|
|
7678
7697
|
className: cn(
|
|
7679
7698
|
"relative z-10 flex h-full min-w-0 flex-col",
|
|
@@ -7683,7 +7702,7 @@ var TimbalStudioShell = ({
|
|
|
7683
7702
|
initial: false,
|
|
7684
7703
|
animate: { paddingLeft: isMobile ? 12 : desktopInsetPx },
|
|
7685
7704
|
transition: layoutTransition,
|
|
7686
|
-
children: activeWorkforceId ? /* @__PURE__ */ (0,
|
|
7705
|
+
children: activeWorkforceId ? /* @__PURE__ */ (0, import_react52.createElement)(
|
|
7687
7706
|
TimbalChat,
|
|
7688
7707
|
{
|
|
7689
7708
|
...chatProps,
|
|
@@ -7717,7 +7736,7 @@ var userMessageRootClass = [
|
|
|
7717
7736
|
].join(" ");
|
|
7718
7737
|
|
|
7719
7738
|
// src/studio/sidebar/mode-toggle.tsx
|
|
7720
|
-
var
|
|
7739
|
+
var import_react53 = require("react");
|
|
7721
7740
|
var import_lucide_react15 = require("lucide-react");
|
|
7722
7741
|
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
7723
7742
|
function readStoredTheme() {
|
|
@@ -7747,8 +7766,8 @@ var ModeToggle = ({
|
|
|
7747
7766
|
label = "Toggle theme"
|
|
7748
7767
|
}) => {
|
|
7749
7768
|
const isControlled = theme !== void 0;
|
|
7750
|
-
const [internalIsDark, setInternalIsDark] = (0,
|
|
7751
|
-
(0,
|
|
7769
|
+
const [internalIsDark, setInternalIsDark] = (0, import_react53.useState)(false);
|
|
7770
|
+
(0, import_react53.useLayoutEffect)(() => {
|
|
7752
7771
|
if (isControlled) return;
|
|
7753
7772
|
const stored = readStoredTheme();
|
|
7754
7773
|
if (stored) {
|
|
@@ -7760,7 +7779,7 @@ var ModeToggle = ({
|
|
|
7760
7779
|
setInternalIsDark(document.documentElement.classList.contains("dark"));
|
|
7761
7780
|
}, [isControlled]);
|
|
7762
7781
|
const isDark = isControlled ? theme === "dark" : internalIsDark;
|
|
7763
|
-
const onClick = (0,
|
|
7782
|
+
const onClick = (0, import_react53.useCallback)(() => {
|
|
7764
7783
|
const next = isDark ? "light" : "dark";
|
|
7765
7784
|
if (setTheme) {
|
|
7766
7785
|
setTheme(next);
|
|
@@ -7796,11 +7815,11 @@ var ModeToggle = ({
|
|
|
7796
7815
|
};
|
|
7797
7816
|
|
|
7798
7817
|
// src/studio/mode-switch.tsx
|
|
7799
|
-
var
|
|
7818
|
+
var import_react56 = require("react");
|
|
7800
7819
|
|
|
7801
7820
|
// src/ui/pill-segmented-tabs.tsx
|
|
7802
|
-
var
|
|
7803
|
-
var
|
|
7821
|
+
var import_react54 = require("react");
|
|
7822
|
+
var import_react55 = require("motion/react");
|
|
7804
7823
|
|
|
7805
7824
|
// src/design/pill-segmented-classes.ts
|
|
7806
7825
|
var pillSegmentedTrackBase = "inline-flex w-fit max-w-max shrink-0 self-start items-center rounded-full";
|
|
@@ -7844,7 +7863,7 @@ var PillTab = ({
|
|
|
7844
7863
|
segmentClassName,
|
|
7845
7864
|
animateIndicator
|
|
7846
7865
|
}) => {
|
|
7847
|
-
const handlePress = (0,
|
|
7866
|
+
const handlePress = (0, import_react54.useCallback)(() => {
|
|
7848
7867
|
if (!disabled) onSelect(tabKey);
|
|
7849
7868
|
}, [disabled, onSelect, tabKey]);
|
|
7850
7869
|
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
|
|
@@ -7861,7 +7880,7 @@ var PillTab = ({
|
|
|
7861
7880
|
),
|
|
7862
7881
|
children: [
|
|
7863
7882
|
isActive && animateIndicator ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
7864
|
-
|
|
7883
|
+
import_react55.motion.div,
|
|
7865
7884
|
{
|
|
7866
7885
|
layoutId,
|
|
7867
7886
|
className: pillSegmentedActiveIndicatorClass,
|
|
@@ -7882,9 +7901,9 @@ var PillSegmentedTabs = ({
|
|
|
7882
7901
|
layoutId: layoutIdProp,
|
|
7883
7902
|
"aria-label": ariaLabel
|
|
7884
7903
|
}) => {
|
|
7885
|
-
const reactId = (0,
|
|
7904
|
+
const reactId = (0, import_react54.useId)();
|
|
7886
7905
|
const layoutId = layoutIdProp ?? `pill-segmented-${reactId.replace(/:/g, "")}`;
|
|
7887
|
-
const reducedMotion = (0,
|
|
7906
|
+
const reducedMotion = (0, import_react55.useReducedMotion)();
|
|
7888
7907
|
const isFlush = trackVariant === "flush";
|
|
7889
7908
|
const trackClass2 = isFlush ? pillSegmentedTrackFlushClass : pillSegmentedTrackClass;
|
|
7890
7909
|
const segmentClassName = isFlush ? pillSegmentedFlushSegmentClass : pillSegmentedSegmentClass;
|
|
@@ -7903,7 +7922,7 @@ var PillSegmentedTabs = ({
|
|
|
7903
7922
|
tab.key
|
|
7904
7923
|
)) });
|
|
7905
7924
|
};
|
|
7906
|
-
var MemoPillSegmentedTabs = (0,
|
|
7925
|
+
var MemoPillSegmentedTabs = (0, import_react54.memo)(PillSegmentedTabs);
|
|
7907
7926
|
|
|
7908
7927
|
// src/studio/mode-switch.tsx
|
|
7909
7928
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
@@ -7911,7 +7930,7 @@ var STUDIO_NAV_MODE = {
|
|
|
7911
7930
|
BUILD: "build",
|
|
7912
7931
|
OPERATE: "operate"
|
|
7913
7932
|
};
|
|
7914
|
-
var StudioModeSwitch = (0,
|
|
7933
|
+
var StudioModeSwitch = (0, import_react56.memo)(
|
|
7915
7934
|
function StudioModeSwitch2({
|
|
7916
7935
|
value,
|
|
7917
7936
|
onChange,
|
|
@@ -7920,14 +7939,14 @@ var StudioModeSwitch = (0, import_react55.memo)(
|
|
|
7920
7939
|
manageLabel = "Manage",
|
|
7921
7940
|
"aria-label": ariaLabel = "Studio mode"
|
|
7922
7941
|
}) {
|
|
7923
|
-
const tabs = (0,
|
|
7942
|
+
const tabs = (0, import_react56.useMemo)(
|
|
7924
7943
|
() => [
|
|
7925
7944
|
{ key: STUDIO_NAV_MODE.BUILD, label: buildLabel },
|
|
7926
7945
|
{ key: STUDIO_NAV_MODE.OPERATE, label: manageLabel }
|
|
7927
7946
|
],
|
|
7928
7947
|
[buildLabel, manageLabel]
|
|
7929
7948
|
);
|
|
7930
|
-
const handleChange = (0,
|
|
7949
|
+
const handleChange = (0, import_react56.useCallback)(
|
|
7931
7950
|
(key) => {
|
|
7932
7951
|
if (key === STUDIO_NAV_MODE.BUILD || key === STUDIO_NAV_MODE.OPERATE) {
|
|
7933
7952
|
onChange(key);
|
|
@@ -8086,6 +8105,13 @@ var HOUSE_RULES = [
|
|
|
8086
8105
|
slop: `<span className="text-blue-600 bg-green-50">`,
|
|
8087
8106
|
good: `<span className="text-primary bg-muted">`
|
|
8088
8107
|
},
|
|
8108
|
+
{
|
|
8109
|
+
id: "chart-token-color",
|
|
8110
|
+
rule: "Pass chart and theme color tokens directly (var(--chart-1)) \u2014 never wrap them in hsl(), rgb(), or oklch().",
|
|
8111
|
+
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.",
|
|
8112
|
+
slop: `<Cell fill="hsl(var(--chart-1))" />`,
|
|
8113
|
+
good: `<Cell fill="var(--chart-1)" />`
|
|
8114
|
+
},
|
|
8089
8115
|
{
|
|
8090
8116
|
id: "no-decorative-icons",
|
|
8091
8117
|
rule: "Icons must earn their place (action, nav, or status). Never add an icon beside a label that already says the thing.",
|
|
@@ -8487,6 +8513,7 @@ var RAW_COLOR_RE = new RegExp(
|
|
|
8487
8513
|
"g"
|
|
8488
8514
|
);
|
|
8489
8515
|
var COLOR_LITERAL_RE = /#[0-9a-fA-F]{3,8}\b|\b(?:oklch|rgba?|hsla?)\s*\(/g;
|
|
8516
|
+
var COLOR_FN_WRAPPING_VAR_RE = /\b(?:hsl|hsla|rgb|rgba|oklch|oklab|lab|lch|hwb|color)\s*\(\s*var\(\s*--/i;
|
|
8490
8517
|
var INLINE_STYLE_COLOR_RE = /style=\{\{[^}]*\b(?:color|background|backgroundColor|borderColor|fill|stroke)\b/;
|
|
8491
8518
|
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)/;
|
|
8492
8519
|
var GRADIENT_RE = /\bbg-(?:gradient|linear|radial|conic)-/;
|
|
@@ -8509,11 +8536,26 @@ var RESERVED_GRADIENT_SET = new Set(RESERVED_GRADIENT_TOKENS);
|
|
|
8509
8536
|
function stripVariants(util) {
|
|
8510
8537
|
return util.replace(/^(?:[a-z-]+:)*/, "");
|
|
8511
8538
|
}
|
|
8539
|
+
function describeArg(value) {
|
|
8540
|
+
if (value === null) return "null";
|
|
8541
|
+
if (Array.isArray(value)) return "an array";
|
|
8542
|
+
const t = typeof value;
|
|
8543
|
+
if (t === "object") {
|
|
8544
|
+
const keys = Object.keys(value).slice(0, 4);
|
|
8545
|
+
return keys.length ? `an object with keys { ${keys.join(", ")} }` : "an object";
|
|
8546
|
+
}
|
|
8547
|
+
return `a ${t}`;
|
|
8548
|
+
}
|
|
8512
8549
|
function isCommentOrImport(line) {
|
|
8513
8550
|
const t = line.trim();
|
|
8514
8551
|
return t.startsWith("//") || t.startsWith("*") || t.startsWith("/*") || t.startsWith("import ") || t.startsWith("export ");
|
|
8515
8552
|
}
|
|
8516
8553
|
function lintGeneratedUi(source, options = {}) {
|
|
8554
|
+
if (typeof source !== "string") {
|
|
8555
|
+
throw new TypeError(
|
|
8556
|
+
`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.`
|
|
8557
|
+
);
|
|
8558
|
+
}
|
|
8517
8559
|
const maxIcons = options.maxIconsPerView ?? SLOP_BUDGETS.maxIconsPerView;
|
|
8518
8560
|
const maxRowDividers = options.maxRowDividers ?? SLOP_BUDGETS.maxRowDividers;
|
|
8519
8561
|
const findings = [];
|
|
@@ -8593,7 +8635,17 @@ function lintGeneratedUi(source, options = {}) {
|
|
|
8593
8635
|
});
|
|
8594
8636
|
}
|
|
8595
8637
|
}
|
|
8596
|
-
const
|
|
8638
|
+
const wrapsTokenInColorFn = COLOR_FN_WRAPPING_VAR_RE.test(line);
|
|
8639
|
+
if (wrapsTokenInColorFn) {
|
|
8640
|
+
findings.push({
|
|
8641
|
+
rule: "chart-token-color-fn",
|
|
8642
|
+
severity: "error",
|
|
8643
|
+
line: lineNo,
|
|
8644
|
+
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.",
|
|
8645
|
+
snippet: line.trim().slice(0, 120)
|
|
8646
|
+
});
|
|
8647
|
+
}
|
|
8648
|
+
const literals = wrapsTokenInColorFn ? null : line.match(COLOR_LITERAL_RE);
|
|
8597
8649
|
if (literals) {
|
|
8598
8650
|
findings.push({
|
|
8599
8651
|
rule: "color-literal",
|
|
@@ -8744,6 +8796,11 @@ function lintGeneratedUi(source, options = {}) {
|
|
|
8744
8796
|
};
|
|
8745
8797
|
}
|
|
8746
8798
|
function formatLintReport(findings) {
|
|
8799
|
+
if (!Array.isArray(findings)) {
|
|
8800
|
+
throw new TypeError(
|
|
8801
|
+
`formatLintReport(findings) expects the findings array, but received ${describeArg(findings)}. Pass result.findings \u2014 formatLintReport(lintGeneratedUi(code).findings) \u2014 not the whole LintResult.`
|
|
8802
|
+
);
|
|
8803
|
+
}
|
|
8747
8804
|
if (findings.length === 0) return "";
|
|
8748
8805
|
const lines = findings.slice().sort((a, b) => a.line - b.line).map((f) => {
|
|
8749
8806
|
const tag = f.severity === "error" ? "ERROR" : "warn ";
|
|
@@ -9454,7 +9511,7 @@ var TimbalThemeStyle = ({
|
|
|
9454
9511
|
};
|
|
9455
9512
|
|
|
9456
9513
|
// src/app/layout/app-density-context.tsx
|
|
9457
|
-
var
|
|
9514
|
+
var import_react57 = require("react");
|
|
9458
9515
|
|
|
9459
9516
|
// src/design/app-classes.ts
|
|
9460
9517
|
var appPageColumnClass = "mx-auto w-full max-w-[100rem] px-4 md:px-6 lg:px-8";
|
|
@@ -9590,7 +9647,7 @@ function appDensityClass(key, density = "default") {
|
|
|
9590
9647
|
|
|
9591
9648
|
// src/app/layout/app-density-context.tsx
|
|
9592
9649
|
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
9593
|
-
var AppDensityContext = (0,
|
|
9650
|
+
var AppDensityContext = (0, import_react57.createContext)("default");
|
|
9594
9651
|
var AppDensityProvider = ({
|
|
9595
9652
|
density = "default",
|
|
9596
9653
|
children
|
|
@@ -9598,7 +9655,7 @@ var AppDensityProvider = ({
|
|
|
9598
9655
|
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(AppDensityContext.Provider, { value: density, children });
|
|
9599
9656
|
};
|
|
9600
9657
|
function useAppDensity() {
|
|
9601
|
-
return (0,
|
|
9658
|
+
return (0, import_react57.useContext)(AppDensityContext);
|
|
9602
9659
|
}
|
|
9603
9660
|
function useAppDensityClass(key, override) {
|
|
9604
9661
|
const inherited = useAppDensity();
|
|
@@ -9654,7 +9711,7 @@ function metricTilesGridColsClass(n) {
|
|
|
9654
9711
|
}
|
|
9655
9712
|
|
|
9656
9713
|
// src/charts/sparkline.tsx
|
|
9657
|
-
var
|
|
9714
|
+
var import_react58 = require("react");
|
|
9658
9715
|
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
9659
9716
|
var Sparkline = ({
|
|
9660
9717
|
data,
|
|
@@ -9670,9 +9727,9 @@ var Sparkline = ({
|
|
|
9670
9727
|
labels,
|
|
9671
9728
|
formatValue
|
|
9672
9729
|
}) => {
|
|
9673
|
-
const uid = (0,
|
|
9674
|
-
const containerRef = (0,
|
|
9675
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
9730
|
+
const uid = (0, import_react58.useId)();
|
|
9731
|
+
const containerRef = (0, import_react58.useRef)(null);
|
|
9732
|
+
const [activeIndex, setActiveIndex] = (0, import_react58.useState)(null);
|
|
9676
9733
|
const values = data.map((d) => typeof d === "number" ? d : toNum(d[dataKey]));
|
|
9677
9734
|
if (values.length === 0) {
|
|
9678
9735
|
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: cn("inline-block", className), style: { width, height } });
|
|
@@ -9929,29 +9986,29 @@ var MetricTile = ({
|
|
|
9929
9986
|
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
9930
9987
|
|
|
9931
9988
|
// src/app/layout/AppShell.tsx
|
|
9989
|
+
var import_lucide_react16 = require("lucide-react");
|
|
9932
9990
|
var import_react60 = require("motion/react");
|
|
9933
9991
|
var import_react61 = require("react");
|
|
9934
9992
|
|
|
9935
9993
|
// src/app/layout/app-shell-chat-context.tsx
|
|
9936
|
-
var
|
|
9937
|
-
var AppShellChatContext = (0,
|
|
9994
|
+
var import_react59 = require("react");
|
|
9995
|
+
var AppShellChatContext = (0, import_react59.createContext)(null);
|
|
9938
9996
|
var AppShellChatProvider = AppShellChatContext.Provider;
|
|
9939
9997
|
function useAppShellChat() {
|
|
9940
|
-
return (0,
|
|
9998
|
+
return (0, import_react59.useContext)(AppShellChatContext);
|
|
9941
9999
|
}
|
|
9942
10000
|
|
|
9943
10001
|
// src/app/layout/app-shell-nav-context.tsx
|
|
9944
|
-
var
|
|
9945
|
-
var
|
|
9946
|
-
|
|
10002
|
+
var AppShellNavProvider = ShellNavProvider;
|
|
10003
|
+
var NAV_NOOP = {
|
|
10004
|
+
open: false,
|
|
10005
|
+
setOpen: () => {
|
|
10006
|
+
},
|
|
10007
|
+
toggle: () => {
|
|
10008
|
+
}
|
|
10009
|
+
};
|
|
9947
10010
|
function useAppShellNav() {
|
|
9948
|
-
return (
|
|
9949
|
-
open: false,
|
|
9950
|
-
setOpen: () => {
|
|
9951
|
-
},
|
|
9952
|
-
toggle: () => {
|
|
9953
|
-
}
|
|
9954
|
-
};
|
|
10011
|
+
return useOptionalShellNav() ?? NAV_NOOP;
|
|
9955
10012
|
}
|
|
9956
10013
|
|
|
9957
10014
|
// src/app/layout/AppShell.tsx
|
|
@@ -9962,6 +10019,12 @@ var floatingTriggerClass = cn(
|
|
|
9962
10019
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",
|
|
9963
10020
|
"bottom-6 right-6 max-sm:bottom-4 max-sm:right-4"
|
|
9964
10021
|
);
|
|
10022
|
+
var floatingNavTriggerClass = cn(
|
|
10023
|
+
"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",
|
|
10024
|
+
"border border-border/60 bg-card/85 text-foreground shadow-card-elevated backdrop-blur-xl supports-backdrop-filter:bg-card/75",
|
|
10025
|
+
"transition-colors hover:bg-card",
|
|
10026
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background"
|
|
10027
|
+
);
|
|
9965
10028
|
var floatingPanelClass = cn(
|
|
9966
10029
|
"aui-app-shell-chat-float fixed z-50 flex flex-col overflow-hidden rounded-2xl border border-border/60 shadow-card-elevated",
|
|
9967
10030
|
"bg-card/85 backdrop-blur-xl supports-backdrop-filter:bg-card/75",
|
|
@@ -10052,12 +10115,14 @@ var AppShell = ({
|
|
|
10052
10115
|
navOpen: navOpenProp,
|
|
10053
10116
|
defaultNavOpen = false,
|
|
10054
10117
|
onNavOpenChange,
|
|
10118
|
+
mobileSidebarTrigger = "auto",
|
|
10055
10119
|
className,
|
|
10056
10120
|
mainClassName,
|
|
10057
10121
|
contentFill = false
|
|
10058
10122
|
}) => {
|
|
10059
10123
|
const topbarContent = topbar ?? header;
|
|
10060
10124
|
const hasChat = Boolean(chat);
|
|
10125
|
+
const showFloatingNavTrigger = Boolean(sidebar) && mobileSidebarTrigger !== "none" && !(mobileSidebarTrigger === "topbar") && !topbarContent;
|
|
10061
10126
|
const [uncontrolledNavOpen, setUncontrolledNavOpen] = (0, import_react61.useState)(defaultNavOpen);
|
|
10062
10127
|
const isNavControlled = navOpenProp !== void 0;
|
|
10063
10128
|
const navOpen = isNavControlled ? navOpenProp : uncontrolledNavOpen;
|
|
@@ -10117,6 +10182,17 @@ var AppShell = ({
|
|
|
10117
10182
|
style: studioChromeShellStyle,
|
|
10118
10183
|
children: [
|
|
10119
10184
|
sidebar,
|
|
10185
|
+
showFloatingNavTrigger && !navOpen ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
10186
|
+
"button",
|
|
10187
|
+
{
|
|
10188
|
+
type: "button",
|
|
10189
|
+
"aria-label": "Open navigation",
|
|
10190
|
+
"aria-expanded": false,
|
|
10191
|
+
onClick: () => setNavOpen(true),
|
|
10192
|
+
className: floatingNavTriggerClass,
|
|
10193
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react16.MenuIcon, { className: "size-5", "aria-hidden": true })
|
|
10194
|
+
}
|
|
10195
|
+
) : null,
|
|
10120
10196
|
sidebar && navOpen ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
10121
10197
|
"button",
|
|
10122
10198
|
{
|
|
@@ -10201,7 +10277,7 @@ var AppShellChatTrigger = ({
|
|
|
10201
10277
|
};
|
|
10202
10278
|
|
|
10203
10279
|
// src/app/layout/AppShellSidebarTrigger.tsx
|
|
10204
|
-
var
|
|
10280
|
+
var import_lucide_react17 = require("lucide-react");
|
|
10205
10281
|
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
10206
10282
|
var AppShellSidebarTrigger = ({
|
|
10207
10283
|
label = "Open navigation",
|
|
@@ -10220,7 +10296,7 @@ var AppShellSidebarTrigger = ({
|
|
|
10220
10296
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/10",
|
|
10221
10297
|
className
|
|
10222
10298
|
),
|
|
10223
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
10299
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react17.MenuIcon, { className: "size-5", "aria-hidden": true })
|
|
10224
10300
|
}
|
|
10225
10301
|
);
|
|
10226
10302
|
};
|
|
@@ -10372,7 +10448,7 @@ function useAppCopilotContext() {
|
|
|
10372
10448
|
}
|
|
10373
10449
|
|
|
10374
10450
|
// src/app/chat/AppChatPanel.tsx
|
|
10375
|
-
var
|
|
10451
|
+
var import_lucide_react18 = require("lucide-react");
|
|
10376
10452
|
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
10377
10453
|
var shellClass = "aui-app-chat-panel flex h-full min-h-0 flex-col overflow-hidden";
|
|
10378
10454
|
var chromeClass = cn(
|
|
@@ -10426,7 +10502,7 @@ var AppChatPanel = ({
|
|
|
10426
10502
|
className: closeButtonClass,
|
|
10427
10503
|
onClick: () => shellChat.setOpen(false),
|
|
10428
10504
|
"aria-label": "Close assistant",
|
|
10429
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
10505
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react18.XIcon, { className: "size-4", "aria-hidden": true })
|
|
10430
10506
|
}
|
|
10431
10507
|
) }) : null,
|
|
10432
10508
|
/* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: bodyClass, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
@@ -10955,7 +11031,7 @@ var ResourceCard = ({
|
|
|
10955
11031
|
};
|
|
10956
11032
|
|
|
10957
11033
|
// src/app/surfaces/AlertCard.tsx
|
|
10958
|
-
var
|
|
11034
|
+
var import_lucide_react19 = require("lucide-react");
|
|
10959
11035
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
10960
11036
|
var alertCardShellClass = cn(
|
|
10961
11037
|
"flex flex-col rounded-2xl p-4 text-left font-normal border border-border shadow-card",
|
|
@@ -10972,11 +11048,11 @@ var alertCardInteractiveClass = cn(
|
|
|
10972
11048
|
);
|
|
10973
11049
|
|
|
10974
11050
|
// src/app/surfaces/CatalogCard.tsx
|
|
10975
|
-
var
|
|
11051
|
+
var import_lucide_react21 = require("lucide-react");
|
|
10976
11052
|
|
|
10977
11053
|
// src/ui/copy-button.tsx
|
|
10978
11054
|
var React5 = __toESM(require("react"), 1);
|
|
10979
|
-
var
|
|
11055
|
+
var import_lucide_react20 = require("lucide-react");
|
|
10980
11056
|
var import_jsx_runtime83 = require("react/jsx-runtime");
|
|
10981
11057
|
function CopyButton({
|
|
10982
11058
|
value,
|
|
@@ -11002,7 +11078,7 @@ function CopyButton({
|
|
|
11002
11078
|
} catch {
|
|
11003
11079
|
}
|
|
11004
11080
|
};
|
|
11005
|
-
const Icon = copied ?
|
|
11081
|
+
const Icon = copied ? import_lucide_react20.CheckIcon : import_lucide_react20.CopyIcon;
|
|
11006
11082
|
return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
|
|
11007
11083
|
"button",
|
|
11008
11084
|
{
|
|
@@ -11563,7 +11639,7 @@ var FieldTextarea = ({
|
|
|
11563
11639
|
|
|
11564
11640
|
// src/app/forms/FieldSelect.tsx
|
|
11565
11641
|
var import_react71 = require("react");
|
|
11566
|
-
var
|
|
11642
|
+
var import_lucide_react22 = require("lucide-react");
|
|
11567
11643
|
var import_jsx_runtime98 = require("react/jsx-runtime");
|
|
11568
11644
|
var selectWrapClass = "relative";
|
|
11569
11645
|
var selectClass = cn(
|
|
@@ -11602,7 +11678,7 @@ var FieldSelect = ({
|
|
|
11602
11678
|
}
|
|
11603
11679
|
),
|
|
11604
11680
|
/* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
|
|
11605
|
-
|
|
11681
|
+
import_lucide_react22.ChevronDownIcon,
|
|
11606
11682
|
{
|
|
11607
11683
|
className: "pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2 text-muted-foreground",
|
|
11608
11684
|
"aria-hidden": true
|
|
@@ -11669,7 +11745,7 @@ var FieldSwitch = ({
|
|
|
11669
11745
|
};
|
|
11670
11746
|
|
|
11671
11747
|
// src/app/forms/SearchInput.tsx
|
|
11672
|
-
var
|
|
11748
|
+
var import_lucide_react23 = require("lucide-react");
|
|
11673
11749
|
var import_jsx_runtime100 = require("react/jsx-runtime");
|
|
11674
11750
|
var SearchInput = ({
|
|
11675
11751
|
className,
|
|
@@ -11685,7 +11761,7 @@ var SearchInput = ({
|
|
|
11685
11761
|
className
|
|
11686
11762
|
),
|
|
11687
11763
|
children: [
|
|
11688
|
-
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
11764
|
+
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_lucide_react23.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground", "aria-hidden": true }),
|
|
11689
11765
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
11690
11766
|
"input",
|
|
11691
11767
|
{
|
|
@@ -11746,11 +11822,11 @@ var FilterField = ({
|
|
|
11746
11822
|
|
|
11747
11823
|
// src/app/data/FilterDropdown.tsx
|
|
11748
11824
|
var import_react73 = require("react");
|
|
11749
|
-
var
|
|
11825
|
+
var import_lucide_react26 = require("lucide-react");
|
|
11750
11826
|
|
|
11751
11827
|
// src/ui/checkbox.tsx
|
|
11752
11828
|
var import_radix_ui7 = require("radix-ui");
|
|
11753
|
-
var
|
|
11829
|
+
var import_lucide_react24 = require("lucide-react");
|
|
11754
11830
|
var import_jsx_runtime104 = require("react/jsx-runtime");
|
|
11755
11831
|
function Checkbox({
|
|
11756
11832
|
className,
|
|
@@ -11772,7 +11848,7 @@ function Checkbox({
|
|
|
11772
11848
|
{
|
|
11773
11849
|
"data-slot": "checkbox-indicator",
|
|
11774
11850
|
className: "flex items-center justify-center text-current animate-checkbox-pop",
|
|
11775
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
|
|
11851
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(import_lucide_react24.CheckIcon, { className: "size-2.5 stroke-[3.5px]" })
|
|
11776
11852
|
}
|
|
11777
11853
|
)
|
|
11778
11854
|
}
|
|
@@ -11781,7 +11857,7 @@ function Checkbox({
|
|
|
11781
11857
|
|
|
11782
11858
|
// src/ui/select.tsx
|
|
11783
11859
|
var import_radix_ui8 = require("radix-ui");
|
|
11784
|
-
var
|
|
11860
|
+
var import_lucide_react25 = require("lucide-react");
|
|
11785
11861
|
var import_jsx_runtime105 = require("react/jsx-runtime");
|
|
11786
11862
|
function Select({
|
|
11787
11863
|
...props
|
|
@@ -11817,7 +11893,7 @@ function SelectTrigger({
|
|
|
11817
11893
|
...props,
|
|
11818
11894
|
children: [
|
|
11819
11895
|
children,
|
|
11820
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_radix_ui8.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
11896
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_radix_ui8.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react25.ChevronDownIcon, { className: "size-4 opacity-50" }) })
|
|
11821
11897
|
]
|
|
11822
11898
|
}
|
|
11823
11899
|
);
|
|
@@ -11886,7 +11962,7 @@ function SelectItem({
|
|
|
11886
11962
|
),
|
|
11887
11963
|
...props,
|
|
11888
11964
|
children: [
|
|
11889
|
-
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_radix_ui8.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
11965
|
+
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_radix_ui8.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react25.CheckIcon, { className: "size-4" }) }) }),
|
|
11890
11966
|
/* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_radix_ui8.Select.ItemText, { children })
|
|
11891
11967
|
]
|
|
11892
11968
|
}
|
|
@@ -11915,7 +11991,7 @@ function SelectScrollUpButton({
|
|
|
11915
11991
|
"data-slot": "select-scroll-up-button",
|
|
11916
11992
|
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
11917
11993
|
...props,
|
|
11918
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
11994
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react25.ChevronUpIcon, { className: "size-4" })
|
|
11919
11995
|
}
|
|
11920
11996
|
);
|
|
11921
11997
|
}
|
|
@@ -11929,7 +12005,7 @@ function SelectScrollDownButton({
|
|
|
11929
12005
|
"data-slot": "select-scroll-down-button",
|
|
11930
12006
|
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
11931
12007
|
...props,
|
|
11932
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
|
|
12008
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react25.ChevronDownIcon, { className: "size-4" })
|
|
11933
12009
|
}
|
|
11934
12010
|
);
|
|
11935
12011
|
}
|
|
@@ -12102,7 +12178,7 @@ function FilterDropdown({
|
|
|
12102
12178
|
variant: "outline",
|
|
12103
12179
|
size: "sm",
|
|
12104
12180
|
className: "border-dashed font-medium text-muted-foreground hover:text-foreground",
|
|
12105
|
-
iconLeading: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
12181
|
+
iconLeading: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react26.ListFilterIcon, { className: "size-4" }),
|
|
12106
12182
|
children: label
|
|
12107
12183
|
}
|
|
12108
12184
|
) }),
|
|
@@ -12130,7 +12206,7 @@ function FilterDropdown({
|
|
|
12130
12206
|
field.icon,
|
|
12131
12207
|
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)("span", { children: field.label })
|
|
12132
12208
|
] }),
|
|
12133
|
-
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
12209
|
+
/* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react26.ChevronRightIcon, { className: "size-4 text-muted-foreground/50" })
|
|
12134
12210
|
]
|
|
12135
12211
|
},
|
|
12136
12212
|
field.id
|
|
@@ -12178,7 +12254,7 @@ function FilterChip({ label, onRemove }) {
|
|
|
12178
12254
|
onClick: onRemove,
|
|
12179
12255
|
"aria-label": `Remove ${label}`,
|
|
12180
12256
|
className: "flex size-5 items-center justify-center rounded-full text-muted-foreground outline-none transition-colors hover:bg-muted hover:text-foreground",
|
|
12181
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
|
|
12257
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(import_lucide_react26.XIcon, { className: "size-3.5" })
|
|
12182
12258
|
}
|
|
12183
12259
|
)
|
|
12184
12260
|
] });
|
|
@@ -12441,7 +12517,7 @@ function ApplyClear({ onClear, onApply }) {
|
|
|
12441
12517
|
|
|
12442
12518
|
// src/app/data/DataTable.tsx
|
|
12443
12519
|
var import_react74 = require("react");
|
|
12444
|
-
var
|
|
12520
|
+
var import_lucide_react27 = require("lucide-react");
|
|
12445
12521
|
|
|
12446
12522
|
// src/ui/skeleton.tsx
|
|
12447
12523
|
var import_jsx_runtime108 = require("react/jsx-runtime");
|
|
@@ -12500,12 +12576,12 @@ function SortIndicator({
|
|
|
12500
12576
|
}) {
|
|
12501
12577
|
const iconClass = "size-3.5 shrink-0 opacity-60 group-hover:opacity-100";
|
|
12502
12578
|
if (!active) {
|
|
12503
|
-
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
12579
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react27.ArrowUpDownIcon, { className: iconClass, "aria-hidden": true });
|
|
12504
12580
|
}
|
|
12505
12581
|
if (direction === "desc") {
|
|
12506
|
-
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
12582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react27.ArrowDownIcon, { className: iconClass, "aria-hidden": true });
|
|
12507
12583
|
}
|
|
12508
|
-
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
12584
|
+
return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react27.ArrowUpIcon, { className: iconClass, "aria-hidden": true });
|
|
12509
12585
|
}
|
|
12510
12586
|
function DataTable({
|
|
12511
12587
|
columns,
|
|
@@ -12782,7 +12858,7 @@ function DataTable({
|
|
|
12782
12858
|
onClick: () => setPage(pageIndex - 1),
|
|
12783
12859
|
disabled: pageIndex <= 0,
|
|
12784
12860
|
"aria-label": "Previous page",
|
|
12785
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
12861
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react27.ChevronLeftIcon, { className: "size-4", "aria-hidden": true })
|
|
12786
12862
|
}
|
|
12787
12863
|
),
|
|
12788
12864
|
/* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
@@ -12793,7 +12869,7 @@ function DataTable({
|
|
|
12793
12869
|
onClick: () => setPage(pageIndex + 1),
|
|
12794
12870
|
disabled: pageIndex >= pageCount - 1,
|
|
12795
12871
|
"aria-label": "Next page",
|
|
12796
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
|
|
12872
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react27.ChevronRightIcon, { className: "size-4", "aria-hidden": true })
|
|
12797
12873
|
}
|
|
12798
12874
|
)
|
|
12799
12875
|
] })
|
|
@@ -13332,7 +13408,7 @@ function UntitledButton({
|
|
|
13332
13408
|
}
|
|
13333
13409
|
|
|
13334
13410
|
// src/ui/banner.tsx
|
|
13335
|
-
var
|
|
13411
|
+
var import_lucide_react28 = require("lucide-react");
|
|
13336
13412
|
var import_jsx_runtime114 = require("react/jsx-runtime");
|
|
13337
13413
|
var bannerSoftClass = {
|
|
13338
13414
|
default: "border-border/50 bg-muted/30 text-foreground/90 dark:bg-muted/15",
|
|
@@ -13429,7 +13505,7 @@ function Banner({
|
|
|
13429
13505
|
isSingleLine ? "self-center" : "-mt-0.5",
|
|
13430
13506
|
isSolid ? "opacity-80 hover:bg-background/15 hover:opacity-100" : "text-muted-foreground hover:bg-foreground/10 hover:text-foreground"
|
|
13431
13507
|
),
|
|
13432
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
|
|
13508
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(import_lucide_react28.XIcon, { className: "size-4", "aria-hidden": true })
|
|
13433
13509
|
}
|
|
13434
13510
|
) : null
|
|
13435
13511
|
]
|
|
@@ -13528,7 +13604,7 @@ var React6 = __toESM(require("react"), 1);
|
|
|
13528
13604
|
var import_core2 = require("@dnd-kit/core");
|
|
13529
13605
|
var import_sortable = require("@dnd-kit/sortable");
|
|
13530
13606
|
var import_utilities = require("@dnd-kit/utilities");
|
|
13531
|
-
var
|
|
13607
|
+
var import_lucide_react29 = require("lucide-react");
|
|
13532
13608
|
var import_jsx_runtime116 = require("react/jsx-runtime");
|
|
13533
13609
|
var columnTitleToneClass = {
|
|
13534
13610
|
default: "text-foreground",
|
|
@@ -13614,7 +13690,7 @@ function SortableCard({
|
|
|
13614
13690
|
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",
|
|
13615
13691
|
...attributes,
|
|
13616
13692
|
...listeners2,
|
|
13617
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
|
|
13693
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(import_lucide_react29.GripVerticalIcon, { className: "size-4", "aria-hidden": true })
|
|
13618
13694
|
}
|
|
13619
13695
|
) : null,
|
|
13620
13696
|
renderCard(card, { column, isDragging, isOverlay: false, dragHandleProps })
|
|
@@ -14028,7 +14104,7 @@ When you call a tool that returns an artifact (\`make_chart\`, \`ask_question\`,
|
|
|
14028
14104
|
`.trim();
|
|
14029
14105
|
|
|
14030
14106
|
// src/auth/guard.tsx
|
|
14031
|
-
var
|
|
14107
|
+
var import_lucide_react30 = require("lucide-react");
|
|
14032
14108
|
var import_jsx_runtime117 = require("react/jsx-runtime");
|
|
14033
14109
|
var AuthGuard = ({
|
|
14034
14110
|
children,
|
|
@@ -14040,7 +14116,7 @@ var AuthGuard = ({
|
|
|
14040
14116
|
return children;
|
|
14041
14117
|
}
|
|
14042
14118
|
if (loading) {
|
|
14043
|
-
return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "flex items-center justify-center h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
|
|
14119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("div", { className: "flex items-center justify-center h-screen", children: /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(import_lucide_react30.Loader2, { className: "w-8 h-8 animate-spin" }) });
|
|
14044
14120
|
}
|
|
14045
14121
|
if (requireAuth && !isAuthenticated && !isEmbedded) {
|
|
14046
14122
|
const returnTo = encodeURIComponent(
|
|
@@ -14151,7 +14227,7 @@ function Switch({
|
|
|
14151
14227
|
|
|
14152
14228
|
// src/ui/radio-group.tsx
|
|
14153
14229
|
var import_radix_ui13 = require("radix-ui");
|
|
14154
|
-
var
|
|
14230
|
+
var import_lucide_react31 = require("lucide-react");
|
|
14155
14231
|
var import_jsx_runtime122 = require("react/jsx-runtime");
|
|
14156
14232
|
function RadioGroup({
|
|
14157
14233
|
className,
|
|
@@ -14186,7 +14262,7 @@ function RadioGroupItem({
|
|
|
14186
14262
|
{
|
|
14187
14263
|
"data-slot": "radio-group-indicator",
|
|
14188
14264
|
className: "flex items-center justify-center",
|
|
14189
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
|
|
14265
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(import_lucide_react31.CircleIcon, { className: "size-2 fill-foreground text-foreground" })
|
|
14190
14266
|
}
|
|
14191
14267
|
)
|
|
14192
14268
|
}
|
|
@@ -14262,7 +14338,7 @@ function AspectRatio({
|
|
|
14262
14338
|
}
|
|
14263
14339
|
|
|
14264
14340
|
// src/ui/breadcrumb.tsx
|
|
14265
|
-
var
|
|
14341
|
+
var import_lucide_react32 = require("lucide-react");
|
|
14266
14342
|
var import_radix_ui16 = require("radix-ui");
|
|
14267
14343
|
var import_jsx_runtime125 = require("react/jsx-runtime");
|
|
14268
14344
|
function Breadcrumb({ ...props }) {
|
|
@@ -14332,7 +14408,7 @@ function BreadcrumbSeparator({
|
|
|
14332
14408
|
"aria-hidden": "true",
|
|
14333
14409
|
className: cn("[&>svg]:size-3.5", className),
|
|
14334
14410
|
...props,
|
|
14335
|
-
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
14411
|
+
children: children ?? /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_lucide_react32.ChevronRightIcon, {})
|
|
14336
14412
|
}
|
|
14337
14413
|
);
|
|
14338
14414
|
}
|
|
@@ -14349,7 +14425,7 @@ function BreadcrumbEllipsis({
|
|
|
14349
14425
|
className: cn("flex size-8 items-center justify-center", className),
|
|
14350
14426
|
...props,
|
|
14351
14427
|
children: [
|
|
14352
|
-
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
|
|
14428
|
+
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)(import_lucide_react32.MoreHorizontalIcon, { className: "size-4" }),
|
|
14353
14429
|
/* @__PURE__ */ (0, import_jsx_runtime125.jsx)("span", { className: "sr-only", children: "More" })
|
|
14354
14430
|
]
|
|
14355
14431
|
}
|
|
@@ -14357,7 +14433,7 @@ function BreadcrumbEllipsis({
|
|
|
14357
14433
|
}
|
|
14358
14434
|
|
|
14359
14435
|
// src/ui/pagination.tsx
|
|
14360
|
-
var
|
|
14436
|
+
var import_lucide_react33 = require("lucide-react");
|
|
14361
14437
|
var import_jsx_runtime126 = require("react/jsx-runtime");
|
|
14362
14438
|
function Pagination({ className, ...props }) {
|
|
14363
14439
|
return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
@@ -14411,7 +14487,7 @@ function PaginationPrevious({
|
|
|
14411
14487
|
className: cn("gap-1 px-2.5 sm:pl-2.5", className),
|
|
14412
14488
|
...props,
|
|
14413
14489
|
children: [
|
|
14414
|
-
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
14490
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_lucide_react33.ChevronLeftIcon, { className: "size-4" }),
|
|
14415
14491
|
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "hidden sm:block", children: "Previous" })
|
|
14416
14492
|
]
|
|
14417
14493
|
}
|
|
@@ -14430,7 +14506,7 @@ function PaginationNext({
|
|
|
14430
14506
|
...props,
|
|
14431
14507
|
children: [
|
|
14432
14508
|
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "hidden sm:block", children: "Next" }),
|
|
14433
|
-
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
14509
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_lucide_react33.ChevronRightIcon, { className: "size-4" })
|
|
14434
14510
|
]
|
|
14435
14511
|
}
|
|
14436
14512
|
);
|
|
@@ -14447,7 +14523,7 @@ function PaginationEllipsis({
|
|
|
14447
14523
|
className: cn("flex size-9 items-center justify-center", className),
|
|
14448
14524
|
...props,
|
|
14449
14525
|
children: [
|
|
14450
|
-
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
|
|
14526
|
+
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_lucide_react33.MoreHorizontalIcon, { className: "size-4" }),
|
|
14451
14527
|
/* @__PURE__ */ (0, import_jsx_runtime126.jsx)("span", { className: "sr-only", children: "More pages" })
|
|
14452
14528
|
]
|
|
14453
14529
|
}
|
|
@@ -14553,7 +14629,7 @@ function ToolbarLink({
|
|
|
14553
14629
|
|
|
14554
14630
|
// src/ui/menubar.tsx
|
|
14555
14631
|
var import_radix_ui18 = require("radix-ui");
|
|
14556
|
-
var
|
|
14632
|
+
var import_lucide_react34 = require("lucide-react");
|
|
14557
14633
|
var import_jsx_runtime128 = require("react/jsx-runtime");
|
|
14558
14634
|
function Menubar({
|
|
14559
14635
|
className,
|
|
@@ -14651,7 +14727,7 @@ function MenubarCheckboxItem({
|
|
|
14651
14727
|
checked,
|
|
14652
14728
|
...props,
|
|
14653
14729
|
children: [
|
|
14654
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_radix_ui18.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
14730
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_radix_ui18.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react34.CheckIcon, { className: "size-4" }) }) }),
|
|
14655
14731
|
children
|
|
14656
14732
|
]
|
|
14657
14733
|
}
|
|
@@ -14674,7 +14750,7 @@ function MenubarRadioItem({
|
|
|
14674
14750
|
className: cn(overlayItemClass, "py-1 pr-2 pl-8", className),
|
|
14675
14751
|
...props,
|
|
14676
14752
|
children: [
|
|
14677
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_radix_ui18.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
14753
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_radix_ui18.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react34.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
14678
14754
|
children
|
|
14679
14755
|
]
|
|
14680
14756
|
}
|
|
@@ -14751,7 +14827,7 @@ function MenubarSubTrigger({
|
|
|
14751
14827
|
...props,
|
|
14752
14828
|
children: [
|
|
14753
14829
|
children,
|
|
14754
|
-
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
|
|
14830
|
+
/* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_lucide_react34.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
14755
14831
|
]
|
|
14756
14832
|
}
|
|
14757
14833
|
);
|
|
@@ -14776,7 +14852,7 @@ function MenubarSubContent({
|
|
|
14776
14852
|
|
|
14777
14853
|
// src/ui/navigation-menu.tsx
|
|
14778
14854
|
var import_radix_ui19 = require("radix-ui");
|
|
14779
|
-
var
|
|
14855
|
+
var import_lucide_react35 = require("lucide-react");
|
|
14780
14856
|
var import_class_variance_authority3 = require("class-variance-authority");
|
|
14781
14857
|
var import_jsx_runtime129 = require("react/jsx-runtime");
|
|
14782
14858
|
function NavigationMenu({
|
|
@@ -14841,7 +14917,7 @@ function NavigationMenuTrigger({
|
|
|
14841
14917
|
children,
|
|
14842
14918
|
" ",
|
|
14843
14919
|
/* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
|
|
14844
|
-
|
|
14920
|
+
import_lucide_react35.ChevronDownIcon,
|
|
14845
14921
|
{
|
|
14846
14922
|
className: "relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
14847
14923
|
"aria-hidden": "true"
|
|
@@ -14921,7 +14997,7 @@ function NavigationMenuIndicator({
|
|
|
14921
14997
|
|
|
14922
14998
|
// src/ui/command.tsx
|
|
14923
14999
|
var import_cmdk = require("cmdk");
|
|
14924
|
-
var
|
|
15000
|
+
var import_lucide_react36 = require("lucide-react");
|
|
14925
15001
|
var import_jsx_runtime130 = require("react/jsx-runtime");
|
|
14926
15002
|
function Command({
|
|
14927
15003
|
className,
|
|
@@ -14972,7 +15048,7 @@ function CommandInput({
|
|
|
14972
15048
|
"data-slot": "command-input-wrapper",
|
|
14973
15049
|
className: "flex h-9 items-center gap-2 border-b border-border px-2.5",
|
|
14974
15050
|
children: [
|
|
14975
|
-
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
15051
|
+
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_lucide_react36.SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
14976
15052
|
/* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
|
|
14977
15053
|
import_cmdk.Command.Input,
|
|
14978
15054
|
{
|
|
@@ -15078,7 +15154,7 @@ function CommandShortcut({
|
|
|
15078
15154
|
|
|
15079
15155
|
// src/ui/calendar.tsx
|
|
15080
15156
|
var React7 = __toESM(require("react"), 1);
|
|
15081
|
-
var
|
|
15157
|
+
var import_lucide_react37 = require("lucide-react");
|
|
15082
15158
|
var import_react_day_picker = require("react-day-picker");
|
|
15083
15159
|
var import_jsx_runtime131 = require("react/jsx-runtime");
|
|
15084
15160
|
function Calendar({
|
|
@@ -15150,7 +15226,7 @@ function Calendar({
|
|
|
15150
15226
|
},
|
|
15151
15227
|
components: {
|
|
15152
15228
|
Chevron: ({ orientation, className: chevronClass, ...chevronProps }) => {
|
|
15153
|
-
const Icon = orientation === "left" ?
|
|
15229
|
+
const Icon = orientation === "left" ? import_lucide_react37.ChevronLeftIcon : orientation === "right" ? import_lucide_react37.ChevronRightIcon : import_lucide_react37.ChevronDownIcon;
|
|
15154
15230
|
return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(Icon, { className: cn("size-4", chevronClass), ...chevronProps });
|
|
15155
15231
|
},
|
|
15156
15232
|
DayButton: CalendarDayButton
|
|
@@ -15203,7 +15279,7 @@ function CalendarDayButton({
|
|
|
15203
15279
|
}
|
|
15204
15280
|
|
|
15205
15281
|
// src/ui/combobox.tsx
|
|
15206
|
-
var
|
|
15282
|
+
var import_lucide_react38 = require("lucide-react");
|
|
15207
15283
|
var import_jsx_runtime132 = require("react/jsx-runtime");
|
|
15208
15284
|
function Combobox({
|
|
15209
15285
|
...props
|
|
@@ -15229,7 +15305,7 @@ function ComboboxTrigger({
|
|
|
15229
15305
|
...props,
|
|
15230
15306
|
children: [
|
|
15231
15307
|
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)("span", { className: "truncate", children }),
|
|
15232
|
-
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(
|
|
15308
|
+
/* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_lucide_react38.ChevronDownIcon, { className: "size-4 shrink-0 opacity-50" })
|
|
15233
15309
|
]
|
|
15234
15310
|
}
|
|
15235
15311
|
);
|
|
@@ -15308,7 +15384,7 @@ function ComboboxShortcut({
|
|
|
15308
15384
|
}
|
|
15309
15385
|
|
|
15310
15386
|
// src/ui/date-picker.tsx
|
|
15311
|
-
var
|
|
15387
|
+
var import_lucide_react39 = require("lucide-react");
|
|
15312
15388
|
var import_jsx_runtime133 = require("react/jsx-runtime");
|
|
15313
15389
|
function DatePicker({
|
|
15314
15390
|
...props
|
|
@@ -15374,7 +15450,7 @@ function DatePickerButton({
|
|
|
15374
15450
|
),
|
|
15375
15451
|
...props,
|
|
15376
15452
|
children: [
|
|
15377
|
-
/* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
|
|
15453
|
+
/* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_lucide_react39.CalendarIcon, { className: "size-4 shrink-0 opacity-70" }),
|
|
15378
15454
|
date ? formatPickerDate(date) : placeholder
|
|
15379
15455
|
]
|
|
15380
15456
|
}
|
|
@@ -15382,7 +15458,7 @@ function DatePickerButton({
|
|
|
15382
15458
|
}
|
|
15383
15459
|
|
|
15384
15460
|
// src/ui/input-otp.tsx
|
|
15385
|
-
var
|
|
15461
|
+
var import_lucide_react40 = require("lucide-react");
|
|
15386
15462
|
var import_radix_ui20 = require("radix-ui");
|
|
15387
15463
|
var import_jsx_runtime134 = require("react/jsx-runtime");
|
|
15388
15464
|
function InputOTP({
|
|
@@ -15454,7 +15530,7 @@ function InputOTPSeparator({
|
|
|
15454
15530
|
"aria-hidden": true,
|
|
15455
15531
|
className: cn("text-muted-foreground", className),
|
|
15456
15532
|
...props,
|
|
15457
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
|
|
15533
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_lucide_react40.MinusIcon, { className: "size-4" })
|
|
15458
15534
|
}
|
|
15459
15535
|
);
|
|
15460
15536
|
}
|
|
@@ -15599,7 +15675,7 @@ function InputGroupText({
|
|
|
15599
15675
|
|
|
15600
15676
|
// src/ui/accordion.tsx
|
|
15601
15677
|
var import_radix_ui21 = require("radix-ui");
|
|
15602
|
-
var
|
|
15678
|
+
var import_lucide_react41 = require("lucide-react");
|
|
15603
15679
|
var import_jsx_runtime138 = require("react/jsx-runtime");
|
|
15604
15680
|
function Accordion({
|
|
15605
15681
|
...props
|
|
@@ -15637,7 +15713,7 @@ function AccordionTrigger({
|
|
|
15637
15713
|
...props,
|
|
15638
15714
|
children: [
|
|
15639
15715
|
children,
|
|
15640
|
-
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
|
|
15716
|
+
/* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_lucide_react41.ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 text-muted-foreground transition-transform duration-200" })
|
|
15641
15717
|
]
|
|
15642
15718
|
}
|
|
15643
15719
|
) });
|
|
@@ -15808,7 +15884,7 @@ function Badge({
|
|
|
15808
15884
|
}
|
|
15809
15885
|
|
|
15810
15886
|
// src/ui/sheet.tsx
|
|
15811
|
-
var
|
|
15887
|
+
var import_lucide_react42 = require("lucide-react");
|
|
15812
15888
|
var import_radix_ui26 = require("radix-ui");
|
|
15813
15889
|
var import_class_variance_authority5 = require("class-variance-authority");
|
|
15814
15890
|
var import_jsx_runtime143 = require("react/jsx-runtime");
|
|
@@ -15910,7 +15986,7 @@ function SheetContent({
|
|
|
15910
15986
|
children: [
|
|
15911
15987
|
children,
|
|
15912
15988
|
showCloseButton ? /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(import_radix_ui26.Dialog.Close, { className: "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-foreground/10 focus:outline-hidden disabled:pointer-events-none", children: [
|
|
15913
|
-
/* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
|
|
15989
|
+
/* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_lucide_react42.XIcon, { className: "size-4" }),
|
|
15914
15990
|
/* @__PURE__ */ (0, import_jsx_runtime143.jsx)("span", { className: "sr-only", children: "Close" })
|
|
15915
15991
|
] }) : null
|
|
15916
15992
|
]
|
|
@@ -15955,14 +16031,14 @@ function SheetDescription({
|
|
|
15955
16031
|
className,
|
|
15956
16032
|
...props
|
|
15957
16033
|
}) {
|
|
15958
|
-
return /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
|
|
15959
|
-
|
|
16034
|
+
return /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_radix_ui26.Dialog.Description, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
|
|
16035
|
+
"div",
|
|
15960
16036
|
{
|
|
15961
16037
|
"data-slot": "sheet-description",
|
|
15962
16038
|
className: cn("text-sm text-muted-foreground", className),
|
|
15963
16039
|
...props
|
|
15964
16040
|
}
|
|
15965
|
-
);
|
|
16041
|
+
) });
|
|
15966
16042
|
}
|
|
15967
16043
|
|
|
15968
16044
|
// src/ui/alert-dialog.tsx
|
|
@@ -16299,7 +16375,7 @@ function HoverCardContent({
|
|
|
16299
16375
|
|
|
16300
16376
|
// src/ui/context-menu.tsx
|
|
16301
16377
|
var import_radix_ui33 = require("radix-ui");
|
|
16302
|
-
var
|
|
16378
|
+
var import_lucide_react43 = require("lucide-react");
|
|
16303
16379
|
var import_jsx_runtime150 = require("react/jsx-runtime");
|
|
16304
16380
|
function ContextMenu({
|
|
16305
16381
|
...props
|
|
@@ -16368,7 +16444,7 @@ function ContextMenuCheckboxItem({
|
|
|
16368
16444
|
checked,
|
|
16369
16445
|
...props,
|
|
16370
16446
|
children: [
|
|
16371
|
-
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_radix_ui33.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(
|
|
16447
|
+
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_radix_ui33.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_lucide_react43.CheckIcon, { className: "size-4" }) }) }),
|
|
16372
16448
|
children
|
|
16373
16449
|
]
|
|
16374
16450
|
}
|
|
@@ -16397,7 +16473,7 @@ function ContextMenuRadioItem({
|
|
|
16397
16473
|
className: cn(overlayItemClass, "py-1.5 pr-2 pl-8", className),
|
|
16398
16474
|
...props,
|
|
16399
16475
|
children: [
|
|
16400
|
-
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_radix_ui33.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(
|
|
16476
|
+
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_radix_ui33.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_lucide_react43.CircleIcon, { className: "size-2 fill-current" }) }) }),
|
|
16401
16477
|
children
|
|
16402
16478
|
]
|
|
16403
16479
|
}
|
|
@@ -16474,7 +16550,7 @@ function ContextMenuSubTrigger({
|
|
|
16474
16550
|
...props,
|
|
16475
16551
|
children: [
|
|
16476
16552
|
children,
|
|
16477
|
-
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)(
|
|
16553
|
+
/* @__PURE__ */ (0, import_jsx_runtime150.jsx)(import_lucide_react43.ChevronRightIcon, { className: "ml-auto size-4" })
|
|
16478
16554
|
]
|
|
16479
16555
|
}
|
|
16480
16556
|
);
|
|
@@ -16707,7 +16783,7 @@ function TableCaption({ className, ...props }) {
|
|
|
16707
16783
|
|
|
16708
16784
|
// src/ui/toast.tsx
|
|
16709
16785
|
var import_radix_ui34 = require("radix-ui");
|
|
16710
|
-
var
|
|
16786
|
+
var import_lucide_react44 = require("lucide-react");
|
|
16711
16787
|
var import_jsx_runtime154 = require("react/jsx-runtime");
|
|
16712
16788
|
function ToastProvider({
|
|
16713
16789
|
...props
|
|
@@ -16780,7 +16856,7 @@ function ToastClose({
|
|
|
16780
16856
|
),
|
|
16781
16857
|
"toast-close": "",
|
|
16782
16858
|
...props,
|
|
16783
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(
|
|
16859
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime154.jsx)(import_lucide_react44.XIcon, { className: "size-4" })
|
|
16784
16860
|
}
|
|
16785
16861
|
);
|
|
16786
16862
|
}
|
|
@@ -16950,7 +17026,7 @@ function AvatarGroup({
|
|
|
16950
17026
|
}
|
|
16951
17027
|
|
|
16952
17028
|
// src/ui/stepper.tsx
|
|
16953
|
-
var
|
|
17029
|
+
var import_lucide_react45 = require("lucide-react");
|
|
16954
17030
|
var import_jsx_runtime157 = require("react/jsx-runtime");
|
|
16955
17031
|
function Stepper({
|
|
16956
17032
|
steps,
|
|
@@ -16995,7 +17071,7 @@ function Stepper({
|
|
|
16995
17071
|
active && "border-primary text-primary",
|
|
16996
17072
|
!complete && !active && "border-border text-muted-foreground"
|
|
16997
17073
|
),
|
|
16998
|
-
children: complete ? /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
|
|
17074
|
+
children: complete ? /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(import_lucide_react45.CheckIcon, { className: "size-3.5", "aria-hidden": true }) : index + 1
|
|
16999
17075
|
}
|
|
17000
17076
|
),
|
|
17001
17077
|
!last ? /* @__PURE__ */ (0, import_jsx_runtime157.jsx)(
|
|
@@ -17034,7 +17110,7 @@ function Stepper({
|
|
|
17034
17110
|
|
|
17035
17111
|
// src/ui/rating.tsx
|
|
17036
17112
|
var React11 = __toESM(require("react"), 1);
|
|
17037
|
-
var
|
|
17113
|
+
var import_lucide_react46 = require("lucide-react");
|
|
17038
17114
|
var import_jsx_runtime158 = require("react/jsx-runtime");
|
|
17039
17115
|
var sizeClass = { sm: "size-4", md: "size-5", lg: "size-6" };
|
|
17040
17116
|
var ratingFillClass = {
|
|
@@ -17077,7 +17153,7 @@ function Rating({
|
|
|
17077
17153
|
"aria-label": `${label}: ${value} of ${max}`,
|
|
17078
17154
|
className: cn("inline-flex items-center gap-0.5", disabled && "opacity-50", className),
|
|
17079
17155
|
children: Array.from({ length: max }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
|
|
17080
|
-
|
|
17156
|
+
import_lucide_react46.StarIcon,
|
|
17081
17157
|
{
|
|
17082
17158
|
"aria-hidden": true,
|
|
17083
17159
|
className: cn(
|
|
@@ -17114,7 +17190,7 @@ function Rating({
|
|
|
17114
17190
|
onBlur: () => setHover(null),
|
|
17115
17191
|
className: "rounded-sm p-0.5 transition-transform hover:scale-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/15",
|
|
17116
17192
|
children: /* @__PURE__ */ (0, import_jsx_runtime158.jsx)(
|
|
17117
|
-
|
|
17193
|
+
import_lucide_react46.StarIcon,
|
|
17118
17194
|
{
|
|
17119
17195
|
className: cn(
|
|
17120
17196
|
sizeClass[size],
|
|
@@ -17133,7 +17209,7 @@ function Rating({
|
|
|
17133
17209
|
|
|
17134
17210
|
// src/ui/number-field.tsx
|
|
17135
17211
|
var React12 = __toESM(require("react"), 1);
|
|
17136
|
-
var
|
|
17212
|
+
var import_lucide_react47 = require("lucide-react");
|
|
17137
17213
|
var import_jsx_runtime159 = require("react/jsx-runtime");
|
|
17138
17214
|
var heightClass = { sm: "h-9", default: "h-10" };
|
|
17139
17215
|
var stepButtonClass = "inline-flex aspect-square h-full items-center justify-center text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-foreground/15";
|
|
@@ -17184,7 +17260,7 @@ function NumberField({
|
|
|
17184
17260
|
disabled: disabled || typeof min === "number" && value <= min,
|
|
17185
17261
|
onClick: () => commit(value - step),
|
|
17186
17262
|
className: cn(stepButtonClass, "border-r border-border"),
|
|
17187
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
17263
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(import_lucide_react47.MinusIcon, { className: "size-4" })
|
|
17188
17264
|
}
|
|
17189
17265
|
),
|
|
17190
17266
|
/* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
@@ -17220,7 +17296,7 @@ function NumberField({
|
|
|
17220
17296
|
disabled: disabled || typeof max === "number" && value >= max,
|
|
17221
17297
|
onClick: () => commit(value + step),
|
|
17222
17298
|
className: cn(stepButtonClass, "border-l border-border"),
|
|
17223
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(
|
|
17299
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime159.jsx)(import_lucide_react47.PlusIcon, { className: "size-4" })
|
|
17224
17300
|
}
|
|
17225
17301
|
)
|
|
17226
17302
|
]
|
|
@@ -17230,7 +17306,7 @@ function NumberField({
|
|
|
17230
17306
|
|
|
17231
17307
|
// src/ui/tag-input.tsx
|
|
17232
17308
|
var React13 = __toESM(require("react"), 1);
|
|
17233
|
-
var
|
|
17309
|
+
var import_lucide_react48 = require("lucide-react");
|
|
17234
17310
|
var import_jsx_runtime160 = require("react/jsx-runtime");
|
|
17235
17311
|
var tagInputSizeClass = {
|
|
17236
17312
|
sm: "min-h-8 gap-1 px-1.5 py-0.5",
|
|
@@ -17305,7 +17381,7 @@ function TagInput({
|
|
|
17305
17381
|
"aria-label": `Remove ${tag}`,
|
|
17306
17382
|
onClick: () => removeAt(index),
|
|
17307
17383
|
className: "inline-flex size-4 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-foreground/10 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground/20",
|
|
17308
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(
|
|
17384
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime160.jsx)(import_lucide_react48.XIcon, { className: "size-3", "aria-hidden": true })
|
|
17309
17385
|
}
|
|
17310
17386
|
)
|
|
17311
17387
|
]
|