@timbal-ai/timbal-react 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +8 -0
  3. package/dist/app.cjs +167 -75
  4. package/dist/app.d.cts +3 -3
  5. package/dist/app.d.ts +3 -3
  6. package/dist/app.esm.js +5 -5
  7. package/dist/{chart-artifact-VAqgH-My.d.cts → chart-artifact-CuTiCITz.d.cts} +230 -15
  8. package/dist/{chart-artifact-C2pZQsaP.d.ts → chart-artifact-U-x0UNJm.d.ts} +230 -15
  9. package/dist/chat.esm.js +3 -3
  10. package/dist/{chunk-YYEI6XME.esm.js → chunk-22KWC2LS.esm.js} +5 -5
  11. package/dist/{chunk-MBS7XHV2.esm.js → chunk-45NXD3IG.esm.js} +3 -3
  12. package/dist/{chunk-24B4I4XC.esm.js → chunk-64RHAJVG.esm.js} +1 -1
  13. package/dist/{chunk-WQIQW7EM.esm.js → chunk-7AGIAQE6.esm.js} +1 -1
  14. package/dist/{chunk-NO5AWNWT.esm.js → chunk-7WU3IKAN.esm.js} +1 -1
  15. package/dist/{chunk-6SQMTBPL.esm.js → chunk-M5IBJBEY.esm.js} +109 -23
  16. package/dist/{chunk-HSL36SJ4.esm.js → chunk-PMMI7LBV.esm.js} +20 -8
  17. package/dist/{chunk-TMP7RIA7.esm.js → chunk-VKXOHVDE.esm.js} +2 -2
  18. package/dist/{chunk-ELEY66OH.esm.js → chunk-XOCOZU7J.esm.js} +11 -1
  19. package/dist/cli/timbal-ui-lint.mjs +534 -0
  20. package/dist/index.cjs +303 -200
  21. package/dist/index.d.cts +2 -2
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.esm.js +9 -9
  24. package/dist/{kanban-FFBeaZPS.d.cts → kanban-BQxWliCS.d.cts} +17 -0
  25. package/dist/{kanban-FFBeaZPS.d.ts → kanban-BQxWliCS.d.ts} +17 -0
  26. package/dist/studio.cjs +104 -85
  27. package/dist/studio.esm.js +6 -6
  28. package/dist/ui.cjs +6 -6
  29. package/dist/ui.d.cts +1 -1
  30. package/dist/ui.d.ts +1 -1
  31. package/dist/ui.esm.js +4 -4
  32. package/package.json +13 -3
package/dist/studio.cjs CHANGED
@@ -5466,9 +5466,9 @@ var TimbalChatShell = ({
5466
5466
  };
5467
5467
 
5468
5468
  // src/studio/shell/studio-shell.tsx
5469
- var import_react49 = require("react");
5469
+ var import_react50 = require("react");
5470
5470
  var import_lucide_react14 = require("lucide-react");
5471
- var import_react50 = require("motion/react");
5471
+ var import_react51 = require("motion/react");
5472
5472
 
5473
5473
  // src/design/sidebar-motion.ts
5474
5474
  var STUDIO_SIDEBAR_EASE_ENTER = [0, 0, 0.2, 1];
@@ -5651,11 +5651,19 @@ function useStudioSidebarLayout() {
5651
5651
  }
5652
5652
 
5653
5653
  // src/studio/sidebar/sidebar.tsx
5654
- var import_react43 = require("react");
5655
- var import_react44 = require("motion/react");
5654
+ var import_react44 = require("react");
5655
+ var import_react45 = require("motion/react");
5656
+
5657
+ // src/layout/shell-nav-context.tsx
5658
+ var import_react37 = require("react");
5659
+ var ShellNavContext = (0, import_react37.createContext)(null);
5660
+ var ShellNavProvider = ShellNavContext.Provider;
5661
+ function useOptionalShellNav() {
5662
+ return (0, import_react37.useContext)(ShellNavContext);
5663
+ }
5656
5664
 
5657
5665
  // src/studio/sidebar/sidebar-entries.tsx
5658
- var import_react37 = require("motion/react");
5666
+ var import_react38 = require("motion/react");
5659
5667
  var import_jsx_runtime41 = require("react/jsx-runtime");
5660
5668
  var StudioSidebarEntries = ({
5661
5669
  visible,
@@ -5663,12 +5671,12 @@ var StudioSidebarEntries = ({
5663
5671
  children,
5664
5672
  className
5665
5673
  }) => {
5666
- const reducedMotion = (0, import_react37.useReducedMotion)();
5674
+ const reducedMotion = (0, import_react38.useReducedMotion)();
5667
5675
  if (reducedMotion) {
5668
5676
  return visible ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: cn("flex min-h-0 flex-1 flex-col", className), children }) : null;
5669
5677
  }
5670
5678
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5671
- import_react37.motion.div,
5679
+ import_react38.motion.div,
5672
5680
  {
5673
5681
  className: cn("flex min-h-0 flex-1 flex-col", className),
5674
5682
  initial: false,
@@ -5688,15 +5696,15 @@ var StudioSidebarEntries = ({
5688
5696
  };
5689
5697
 
5690
5698
  // src/studio/sidebar/sidebar-footer.tsx
5691
- var import_react40 = require("react");
5699
+ var import_react41 = require("react");
5692
5700
  var import_lucide_react11 = require("lucide-react");
5693
5701
 
5694
5702
  // src/auth/provider.tsx
5695
- var import_react38 = require("react");
5703
+ var import_react39 = require("react");
5696
5704
  var import_jsx_runtime42 = require("react/jsx-runtime");
5697
- var SessionContext = (0, import_react38.createContext)(void 0);
5705
+ var SessionContext = (0, import_react39.createContext)(void 0);
5698
5706
  var useOptionalSession = () => {
5699
- const context = (0, import_react38.useContext)(SessionContext);
5707
+ const context = (0, import_react39.useContext)(SessionContext);
5700
5708
  return context ?? null;
5701
5709
  };
5702
5710
 
@@ -5723,17 +5731,17 @@ function studioSidebarNavItemClasses(iconOnly, isActive) {
5723
5731
  }
5724
5732
 
5725
5733
  // src/studio/sidebar/sidebar-entry-motion.tsx
5726
- var import_react39 = require("motion/react");
5734
+ var import_react40 = require("motion/react");
5727
5735
  var import_jsx_runtime43 = require("react/jsx-runtime");
5728
5736
  var StudioSidebarEntryMotion = ({
5729
5737
  children,
5730
5738
  className
5731
5739
  }) => {
5732
- const reducedMotion = (0, import_react39.useReducedMotion)();
5740
+ const reducedMotion = (0, import_react40.useReducedMotion)();
5733
5741
  if (reducedMotion) {
5734
5742
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className, children });
5735
5743
  }
5736
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react39.motion.div, { variants: studioSidebarEntryItemVariants, className: cn(className), children });
5744
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react40.motion.div, { variants: studioSidebarEntryItemVariants, className: cn(className), children });
5737
5745
  };
5738
5746
 
5739
5747
  // src/studio/sidebar/sidebar-tooltip.tsx
@@ -5857,8 +5865,8 @@ var StudioSidebarFooter = ({
5857
5865
  }) => {
5858
5866
  const session = useOptionalSession();
5859
5867
  const user = session?.user ?? null;
5860
- const [isDark, setIsDark] = (0, import_react40.useState)(false);
5861
- (0, import_react40.useEffect)(() => {
5868
+ const [isDark, setIsDark] = (0, import_react41.useState)(false);
5869
+ (0, import_react41.useEffect)(() => {
5862
5870
  if (typeof window === "undefined" || typeof document === "undefined") return;
5863
5871
  const stored = window.localStorage.getItem(STORAGE_KEYS.theme);
5864
5872
  if (stored) {
@@ -6210,14 +6218,14 @@ function TimbalMark({
6210
6218
  }
6211
6219
 
6212
6220
  // src/studio/sidebar/shell-inset-bridge-context.tsx
6213
- var import_react42 = require("react");
6221
+ var import_react43 = require("react");
6214
6222
 
6215
6223
  // src/layout/shell-inset-context.tsx
6216
- var import_react41 = require("react");
6217
- var ShellInsetContext = (0, import_react41.createContext)(null);
6224
+ var import_react42 = require("react");
6225
+ var ShellInsetContext = (0, import_react42.createContext)(null);
6218
6226
  var ShellInsetProvider = ShellInsetContext.Provider;
6219
6227
  function useShellInsetReporter() {
6220
- return (0, import_react41.useContext)(ShellInsetContext);
6228
+ return (0, import_react42.useContext)(ShellInsetContext);
6221
6229
  }
6222
6230
 
6223
6231
  // src/studio/sidebar/shell-inset-bridge-context.tsx
@@ -6226,7 +6234,7 @@ var StudioSidebarShellInsetBridge = ({
6226
6234
  }) => {
6227
6235
  const reportInset = useShellInsetReporter();
6228
6236
  const { isMobile, isCollapsedRail } = useStudioSidebarLayout();
6229
- (0, import_react42.useLayoutEffect)(() => {
6237
+ (0, import_react43.useLayoutEffect)(() => {
6230
6238
  const insetPx = isMobile ? 0 : isCollapsedRail ? SIDEBAR_INSET_PX_COLLAPSED : SIDEBAR_INSET_PX_EXPANDED;
6231
6239
  reportInset?.(insetPx);
6232
6240
  onInsetChange?.(insetPx);
@@ -6269,7 +6277,7 @@ var StudioSidebarPanel = ({
6269
6277
  logo,
6270
6278
  emptyCaption = null
6271
6279
  }) => {
6272
- const reducedMotion = (0, import_react44.useReducedMotion)();
6280
+ const reducedMotion = (0, import_react45.useReducedMotion)();
6273
6281
  const isCollapsedRail = widthCollapsed && !isMobile;
6274
6282
  const iconOnlyLayout = studioSidebarIconOnlyLayout(isMobile, isCollapsedRail);
6275
6283
  const isDrawerOpen = isMobile && mobileOpen;
@@ -6291,7 +6299,7 @@ var StudioSidebarPanel = ({
6291
6299
  const brandNode = brand ?? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(TimbalMark, { size: 32 });
6292
6300
  const logoNode = logo ?? (isCustomBrand ? null : brandNode);
6293
6301
  const panel = /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
6294
- import_react44.motion.div,
6302
+ import_react45.motion.div,
6295
6303
  {
6296
6304
  "data-sidebar-collapsed": isCollapsedRail ? "" : void 0,
6297
6305
  className: cn(
@@ -6361,7 +6369,7 @@ var StudioSidebarPanel = ({
6361
6369
  );
6362
6370
  if (isMobile) {
6363
6371
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
6364
- import_react44.motion.aside,
6372
+ import_react45.motion.aside,
6365
6373
  {
6366
6374
  className: "fixed inset-y-0 left-0 z-[60] flex",
6367
6375
  "aria-label": "Studio navigation",
@@ -6399,51 +6407,62 @@ var StudioSidebar = ({
6399
6407
  onMobileOpenChange: onMobileOpenChangeProp,
6400
6408
  onInsetChange
6401
6409
  }) => {
6402
- const reducedMotion = (0, import_react44.useReducedMotion)();
6410
+ const reducedMotion = (0, import_react45.useReducedMotion)();
6403
6411
  const fetched = useWorkforces({ enabled: workforcesProp === void 0 });
6404
6412
  const workforces = workforcesProp ?? fetched.workforces;
6405
- const [internalSelected, setInternalSelected] = (0, import_react43.useState)(
6413
+ const [internalSelected, setInternalSelected] = (0, import_react44.useState)(
6406
6414
  selectedIdProp ?? ""
6407
6415
  );
6408
- (0, import_react43.useEffect)(() => {
6416
+ (0, import_react44.useEffect)(() => {
6409
6417
  if (selectedIdProp !== void 0) return;
6410
6418
  if (internalSelected) return;
6411
6419
  const first = workforces[0]?.id ?? workforces[0]?.uid ?? workforces[0]?.name;
6412
6420
  if (first) setInternalSelected(first);
6413
6421
  }, [workforces, selectedIdProp, internalSelected]);
6414
6422
  const selectedId = selectedIdProp ?? internalSelected ?? workforces[0]?.id ?? workforces[0]?.uid ?? workforces[0]?.name ?? "";
6415
- const [collapsed, setCollapsed] = (0, import_react43.useState)(() => {
6423
+ const [collapsed, setCollapsed] = (0, import_react44.useState)(() => {
6416
6424
  const persisted = readPersistedCollapsed(persistKey);
6417
6425
  return persisted || defaultCollapsed;
6418
6426
  });
6419
- const handleCollapsedChange = (0, import_react43.useCallback)(
6427
+ const handleCollapsedChange = (0, import_react44.useCallback)(
6420
6428
  (next) => {
6421
6429
  setCollapsed(next);
6422
6430
  writePersistedCollapsed(persistKey, next);
6423
6431
  },
6424
6432
  [persistKey]
6425
6433
  );
6426
- const [isMobile, setIsMobile] = (0, import_react43.useState)(() => {
6434
+ const [isMobile, setIsMobile] = (0, import_react44.useState)(() => {
6427
6435
  if (typeof window === "undefined") return false;
6428
6436
  return window.innerWidth < mobileBreakpointPx;
6429
6437
  });
6430
- (0, import_react43.useEffect)(() => {
6438
+ (0, import_react44.useEffect)(() => {
6431
6439
  if (typeof window === "undefined") return;
6432
6440
  const onResize = () => setIsMobile(window.innerWidth < mobileBreakpointPx);
6433
6441
  onResize();
6434
6442
  window.addEventListener("resize", onResize);
6435
6443
  return () => window.removeEventListener("resize", onResize);
6436
6444
  }, [mobileBreakpointPx]);
6437
- const [internalMobileOpen, setInternalMobileOpen] = (0, import_react43.useState)(false);
6438
- const mobileOpen = mobileOpenProp ?? internalMobileOpen;
6439
- const setMobileOpen = (0, import_react43.useCallback)(
6445
+ const shellNav = useOptionalShellNav();
6446
+ const isControlled = mobileOpenProp !== void 0;
6447
+ const usingShellNav = !isControlled && shellNav !== null;
6448
+ const [internalMobileOpen, setInternalMobileOpen] = (0, import_react44.useState)(false);
6449
+ const mobileOpen = isControlled ? mobileOpenProp : usingShellNav ? shellNav.open : internalMobileOpen;
6450
+ const setMobileOpen = (0, import_react44.useCallback)(
6440
6451
  (next) => {
6441
- if (mobileOpenProp === void 0) setInternalMobileOpen(next);
6452
+ if (isControlled) {
6453
+ onMobileOpenChangeProp?.(next);
6454
+ return;
6455
+ }
6456
+ if (usingShellNav) {
6457
+ shellNav.setOpen(next);
6458
+ } else {
6459
+ setInternalMobileOpen(next);
6460
+ }
6442
6461
  onMobileOpenChangeProp?.(next);
6443
6462
  },
6444
- [mobileOpenProp, onMobileOpenChangeProp]
6463
+ [isControlled, usingShellNav, shellNav, onMobileOpenChangeProp]
6445
6464
  );
6446
- const handleSelect = (0, import_react43.useCallback)(
6465
+ const handleSelect = (0, import_react44.useCallback)(
6447
6466
  (id) => {
6448
6467
  if (selectedIdProp === void 0) setInternalSelected(id);
6449
6468
  onSelect?.(id);
@@ -6451,10 +6470,10 @@ var StudioSidebar = ({
6451
6470
  },
6452
6471
  [selectedIdProp, onSelect, isMobile, setMobileOpen]
6453
6472
  );
6454
- (0, import_react43.useEffect)(() => {
6473
+ (0, import_react44.useEffect)(() => {
6455
6474
  if (!isMobile && mobileOpen) setMobileOpen(false);
6456
6475
  }, [isMobile, mobileOpen, setMobileOpen]);
6457
- (0, import_react43.useEffect)(() => {
6476
+ (0, import_react44.useEffect)(() => {
6458
6477
  if (!isMobile || !mobileOpen) return;
6459
6478
  const onKeyDown = (e) => {
6460
6479
  if (e.key === "Escape") setMobileOpen(false);
@@ -6472,7 +6491,7 @@ var StudioSidebar = ({
6472
6491
  const entriesVisible = isMobile || phaseEntriesVisible;
6473
6492
  const isCollapsedRail = widthCollapsed && !isMobile;
6474
6493
  const iconOnlyLayout = studioSidebarIconOnlyLayout(isMobile, isCollapsedRail);
6475
- const contextValue = (0, import_react43.useMemo)(
6494
+ const contextValue = (0, import_react44.useMemo)(
6476
6495
  () => ({
6477
6496
  collapsed: effectiveCollapsed,
6478
6497
  isMobile,
@@ -6508,23 +6527,23 @@ var StudioSidebar = ({
6508
6527
  };
6509
6528
 
6510
6529
  // src/studio/sidebar/sidebar-runtime-portal.tsx
6511
- var import_react45 = require("react");
6530
+ var import_react46 = require("react");
6512
6531
  var import_react_dom = require("react-dom");
6513
6532
  var import_lucide_react13 = require("lucide-react");
6514
- var import_react46 = require("@assistant-ui/react");
6533
+ var import_react47 = require("@assistant-ui/react");
6515
6534
  var import_jsx_runtime51 = require("react/jsx-runtime");
6516
6535
  var StudioSidebarRuntimePortal = ({
6517
6536
  label = "New chat"
6518
6537
  }) => {
6519
6538
  const { iconOnlyLayout, isMobile, closeMobile } = useStudioSidebarLayout();
6520
- const hasMessages = (0, import_react46.useThread)((s) => s.messages.length > 0);
6539
+ const hasMessages = (0, import_react47.useThread)((s) => s.messages.length > 0);
6521
6540
  const { clear } = useTimbalRuntime();
6522
- const [anchor, setAnchor] = (0, import_react45.useState)(null);
6523
- const startNewChat = (0, import_react45.useCallback)(() => {
6541
+ const [anchor, setAnchor] = (0, import_react46.useState)(null);
6542
+ const startNewChat = (0, import_react46.useCallback)(() => {
6524
6543
  clear();
6525
6544
  if (isMobile) closeMobile?.();
6526
6545
  }, [clear, isMobile, closeMobile]);
6527
- (0, import_react45.useLayoutEffect)(() => {
6546
+ (0, import_react46.useLayoutEffect)(() => {
6528
6547
  setAnchor(document.getElementById(DOM_IDS.sidebarRuntimeAnchor));
6529
6548
  }, []);
6530
6549
  if (!anchor || !hasMessages) return null;
@@ -6551,8 +6570,8 @@ var StudioSidebarRuntimePortal = ({
6551
6570
  };
6552
6571
 
6553
6572
  // src/studio/sidebar/welcome.tsx
6554
- var import_react47 = require("motion/react");
6555
- var import_react48 = require("@assistant-ui/react");
6573
+ var import_react48 = require("motion/react");
6574
+ var import_react49 = require("@assistant-ui/react");
6556
6575
  var import_jsx_runtime52 = require("react/jsx-runtime");
6557
6576
  var welcomeStagger2 = {
6558
6577
  initial: {},
@@ -6578,7 +6597,7 @@ var welcomeIcon2 = {
6578
6597
  }
6579
6598
  };
6580
6599
  var StudioWelcome = ({ config, icon }) => {
6581
- const isEmpty = (0, import_react48.useThread)((s) => s.messages.length === 0);
6600
+ const isEmpty = (0, import_react49.useThread)((s) => s.messages.length === 0);
6582
6601
  if (!isEmpty) return null;
6583
6602
  const iconNode = icon ?? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6584
6603
  TimbalMark,
@@ -6588,16 +6607,16 @@ var StudioWelcome = ({ config, icon }) => {
6588
6607
  }
6589
6608
  );
6590
6609
  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)(
6591
- import_react47.motion.div,
6610
+ import_react48.motion.div,
6592
6611
  {
6593
6612
  className: "aui-thread-welcome-message flex flex-col items-center justify-center px-2 text-center sm:px-4",
6594
6613
  variants: welcomeStagger2,
6595
6614
  initial: "initial",
6596
6615
  animate: "animate",
6597
6616
  children: [
6598
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react47.motion.div, { variants: welcomeIcon2, className: "mb-4 md:mb-5", children: iconNode }),
6617
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react48.motion.div, { variants: welcomeIcon2, className: "mb-4 md:mb-5", children: iconNode }),
6599
6618
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6600
- import_react47.motion.h1,
6619
+ import_react48.motion.h1,
6601
6620
  {
6602
6621
  variants: welcomeItem2,
6603
6622
  className: "aui-thread-welcome-message-inner text-xl font-semibold sm:text-2xl",
@@ -6605,7 +6624,7 @@ var StudioWelcome = ({ config, icon }) => {
6605
6624
  }
6606
6625
  ),
6607
6626
  /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6608
- import_react47.motion.p,
6627
+ import_react48.motion.p,
6609
6628
  {
6610
6629
  variants: welcomeItem2,
6611
6630
  className: "aui-thread-welcome-message-inner mt-2 text-muted-foreground",
@@ -6619,7 +6638,7 @@ var StudioWelcome = ({ config, icon }) => {
6619
6638
 
6620
6639
  // src/studio/shell/studio-shell.tsx
6621
6640
  var import_jsx_runtime53 = require("react/jsx-runtime");
6622
- var import_react51 = require("react");
6641
+ var import_react52 = require("react");
6623
6642
  var DEFAULT_BREAKPOINT_PX2 = 768;
6624
6643
  function readPersistedCollapsed2(key) {
6625
6644
  if (!key || typeof window === "undefined") return false;
@@ -6662,7 +6681,7 @@ var TimbalStudioShell = ({
6662
6681
  components,
6663
6682
  ...chatProps
6664
6683
  }) => {
6665
- const reducedMotion = (0, import_react50.useReducedMotion)();
6684
+ const reducedMotion = (0, import_react51.useReducedMotion)();
6666
6685
  const shouldFetchWorkforces = !workforceId && workforcesProp === void 0;
6667
6686
  const fetched = useWorkforces({
6668
6687
  enabled: shouldFetchWorkforces,
@@ -6670,36 +6689,36 @@ var TimbalStudioShell = ({
6670
6689
  baseUrl: workforcesBaseUrl
6671
6690
  });
6672
6691
  const workforces = workforcesProp ?? fetched.workforces;
6673
- const [internalSelected, setInternalSelected] = (0, import_react49.useState)(
6692
+ const [internalSelected, setInternalSelected] = (0, import_react50.useState)(
6674
6693
  workforceId ?? ""
6675
6694
  );
6676
- (0, import_react49.useEffect)(() => {
6695
+ (0, import_react50.useEffect)(() => {
6677
6696
  if (workforceId) return;
6678
6697
  if (internalSelected) return;
6679
6698
  const first = workforces[0]?.id ?? workforces[0]?.uid ?? workforces[0]?.name;
6680
6699
  if (first) setInternalSelected(first);
6681
6700
  }, [workforces, workforceId, internalSelected]);
6682
6701
  const activeWorkforceId = workforceId ?? internalSelected ?? fetched.selectedId ?? "";
6683
- const [collapsed, setCollapsed] = (0, import_react49.useState)(() => {
6702
+ const [collapsed, setCollapsed] = (0, import_react50.useState)(() => {
6684
6703
  const persisted = readPersistedCollapsed2(persistKey);
6685
6704
  return persisted || defaultCollapsed;
6686
6705
  });
6687
- const [isMobile, setIsMobile] = (0, import_react49.useState)(() => {
6706
+ const [isMobile, setIsMobile] = (0, import_react50.useState)(() => {
6688
6707
  if (typeof window === "undefined") return false;
6689
6708
  return window.innerWidth < mobileBreakpointPx;
6690
6709
  });
6691
- const [mobileSidebarOpen, setMobileSidebarOpen] = (0, import_react49.useState)(false);
6692
- (0, import_react49.useEffect)(() => {
6710
+ const [mobileSidebarOpen, setMobileSidebarOpen] = (0, import_react50.useState)(false);
6711
+ (0, import_react50.useEffect)(() => {
6693
6712
  if (typeof window === "undefined") return;
6694
6713
  const onResize = () => setIsMobile(window.innerWidth < mobileBreakpointPx);
6695
6714
  onResize();
6696
6715
  window.addEventListener("resize", onResize);
6697
6716
  return () => window.removeEventListener("resize", onResize);
6698
6717
  }, [mobileBreakpointPx]);
6699
- (0, import_react49.useEffect)(() => {
6718
+ (0, import_react50.useEffect)(() => {
6700
6719
  if (!isMobile) setMobileSidebarOpen(false);
6701
6720
  }, [isMobile]);
6702
- (0, import_react49.useEffect)(() => {
6721
+ (0, import_react50.useEffect)(() => {
6703
6722
  if (!mobileSidebarOpen) return;
6704
6723
  const onKeyDown = (e) => {
6705
6724
  if (e.key === "Escape") setMobileSidebarOpen(false);
@@ -6723,21 +6742,21 @@ var TimbalStudioShell = ({
6723
6742
  layoutDirection
6724
6743
  );
6725
6744
  const desktopInsetPx = widthCollapsed ? SIDEBAR_INSET_PX_COLLAPSED : SIDEBAR_INSET_PX_EXPANDED;
6726
- const onCollapsedChange = (0, import_react49.useCallback)(
6745
+ const onCollapsedChange = (0, import_react50.useCallback)(
6727
6746
  (next) => {
6728
6747
  setCollapsed(next);
6729
6748
  writePersistedCollapsed2(persistKey, next);
6730
6749
  },
6731
6750
  [persistKey]
6732
6751
  );
6733
- const handleSelectWorkforce = (0, import_react49.useCallback)(
6752
+ const handleSelectWorkforce = (0, import_react50.useCallback)(
6734
6753
  (id) => {
6735
6754
  if (!workforceId) setInternalSelected(id);
6736
6755
  if (isMobile) setMobileSidebarOpen(false);
6737
6756
  },
6738
6757
  [workforceId, isMobile]
6739
6758
  );
6740
- const sidebarContext = (0, import_react49.useMemo)(
6759
+ const sidebarContext = (0, import_react50.useMemo)(
6741
6760
  () => ({
6742
6761
  collapsed: effectiveCollapsed,
6743
6762
  isMobile,
@@ -6747,7 +6766,7 @@ var TimbalStudioShell = ({
6747
6766
  }),
6748
6767
  [effectiveCollapsed, isMobile, isCollapsedRail, iconOnlyLayout]
6749
6768
  );
6750
- const resolvedComponents = (0, import_react49.useMemo)(() => {
6769
+ const resolvedComponents = (0, import_react50.useMemo)(() => {
6751
6770
  const next = { Welcome: StudioWelcome, ...components };
6752
6771
  next.Composer = makeComposerWithPortal(components?.Composer);
6753
6772
  return next;
@@ -6806,7 +6825,7 @@ var TimbalStudioShell = ({
6806
6825
  }
6807
6826
  ),
6808
6827
  /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
6809
- import_react50.motion.header,
6828
+ import_react51.motion.header,
6810
6829
  {
6811
6830
  className: cn(
6812
6831
  "absolute top-0 right-0 z-40 flex items-start justify-between gap-2",
@@ -6847,7 +6866,7 @@ var TimbalStudioShell = ({
6847
6866
  }
6848
6867
  ),
6849
6868
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
6850
- import_react50.motion.main,
6869
+ import_react51.motion.main,
6851
6870
  {
6852
6871
  className: cn(
6853
6872
  "relative z-10 flex h-full min-w-0 flex-col",
@@ -6857,7 +6876,7 @@ var TimbalStudioShell = ({
6857
6876
  initial: false,
6858
6877
  animate: { paddingLeft: isMobile ? 12 : desktopInsetPx },
6859
6878
  transition: layoutTransition,
6860
- children: activeWorkforceId ? /* @__PURE__ */ (0, import_react51.createElement)(
6879
+ children: activeWorkforceId ? /* @__PURE__ */ (0, import_react52.createElement)(
6861
6880
  TimbalChat,
6862
6881
  {
6863
6882
  ...chatProps,
@@ -6876,7 +6895,7 @@ var TimbalStudioShell = ({
6876
6895
  };
6877
6896
 
6878
6897
  // src/studio/sidebar/mode-toggle.tsx
6879
- var import_react52 = require("react");
6898
+ var import_react53 = require("react");
6880
6899
  var import_lucide_react15 = require("lucide-react");
6881
6900
  var import_jsx_runtime54 = require("react/jsx-runtime");
6882
6901
  function readStoredTheme() {
@@ -6906,8 +6925,8 @@ var ModeToggle = ({
6906
6925
  label = "Toggle theme"
6907
6926
  }) => {
6908
6927
  const isControlled = theme !== void 0;
6909
- const [internalIsDark, setInternalIsDark] = (0, import_react52.useState)(false);
6910
- (0, import_react52.useLayoutEffect)(() => {
6928
+ const [internalIsDark, setInternalIsDark] = (0, import_react53.useState)(false);
6929
+ (0, import_react53.useLayoutEffect)(() => {
6911
6930
  if (isControlled) return;
6912
6931
  const stored = readStoredTheme();
6913
6932
  if (stored) {
@@ -6919,7 +6938,7 @@ var ModeToggle = ({
6919
6938
  setInternalIsDark(document.documentElement.classList.contains("dark"));
6920
6939
  }, [isControlled]);
6921
6940
  const isDark = isControlled ? theme === "dark" : internalIsDark;
6922
- const onClick = (0, import_react52.useCallback)(() => {
6941
+ const onClick = (0, import_react53.useCallback)(() => {
6923
6942
  const next = isDark ? "light" : "dark";
6924
6943
  if (setTheme) {
6925
6944
  setTheme(next);
@@ -6955,11 +6974,11 @@ var ModeToggle = ({
6955
6974
  };
6956
6975
 
6957
6976
  // src/studio/mode-switch.tsx
6958
- var import_react55 = require("react");
6977
+ var import_react56 = require("react");
6959
6978
 
6960
6979
  // src/ui/pill-segmented-tabs.tsx
6961
- var import_react53 = require("react");
6962
- var import_react54 = require("motion/react");
6980
+ var import_react54 = require("react");
6981
+ var import_react55 = require("motion/react");
6963
6982
 
6964
6983
  // src/design/pill-segmented-classes.ts
6965
6984
  var pillSegmentedTrackBase = "inline-flex w-fit max-w-max shrink-0 self-start items-center rounded-full";
@@ -7003,7 +7022,7 @@ var PillTab = ({
7003
7022
  segmentClassName,
7004
7023
  animateIndicator
7005
7024
  }) => {
7006
- const handlePress = (0, import_react53.useCallback)(() => {
7025
+ const handlePress = (0, import_react54.useCallback)(() => {
7007
7026
  if (!disabled) onSelect(tabKey);
7008
7027
  }, [disabled, onSelect, tabKey]);
7009
7028
  return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
@@ -7020,7 +7039,7 @@ var PillTab = ({
7020
7039
  ),
7021
7040
  children: [
7022
7041
  isActive && animateIndicator ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7023
- import_react54.motion.div,
7042
+ import_react55.motion.div,
7024
7043
  {
7025
7044
  layoutId,
7026
7045
  className: pillSegmentedActiveIndicatorClass,
@@ -7041,9 +7060,9 @@ var PillSegmentedTabs = ({
7041
7060
  layoutId: layoutIdProp,
7042
7061
  "aria-label": ariaLabel
7043
7062
  }) => {
7044
- const reactId = (0, import_react53.useId)();
7063
+ const reactId = (0, import_react54.useId)();
7045
7064
  const layoutId = layoutIdProp ?? `pill-segmented-${reactId.replace(/:/g, "")}`;
7046
- const reducedMotion = (0, import_react54.useReducedMotion)();
7065
+ const reducedMotion = (0, import_react55.useReducedMotion)();
7047
7066
  const isFlush = trackVariant === "flush";
7048
7067
  const trackClass = isFlush ? pillSegmentedTrackFlushClass : pillSegmentedTrackClass;
7049
7068
  const segmentClassName = isFlush ? pillSegmentedFlushSegmentClass : pillSegmentedSegmentClass;
@@ -7062,7 +7081,7 @@ var PillSegmentedTabs = ({
7062
7081
  tab.key
7063
7082
  )) });
7064
7083
  };
7065
- var MemoPillSegmentedTabs = (0, import_react53.memo)(PillSegmentedTabs);
7084
+ var MemoPillSegmentedTabs = (0, import_react54.memo)(PillSegmentedTabs);
7066
7085
 
7067
7086
  // src/studio/mode-switch.tsx
7068
7087
  var import_jsx_runtime56 = require("react/jsx-runtime");
@@ -7070,7 +7089,7 @@ var STUDIO_NAV_MODE = {
7070
7089
  BUILD: "build",
7071
7090
  OPERATE: "operate"
7072
7091
  };
7073
- var StudioModeSwitch = (0, import_react55.memo)(
7092
+ var StudioModeSwitch = (0, import_react56.memo)(
7074
7093
  function StudioModeSwitch2({
7075
7094
  value,
7076
7095
  onChange,
@@ -7079,14 +7098,14 @@ var StudioModeSwitch = (0, import_react55.memo)(
7079
7098
  manageLabel = "Manage",
7080
7099
  "aria-label": ariaLabel = "Studio mode"
7081
7100
  }) {
7082
- const tabs = (0, import_react55.useMemo)(
7101
+ const tabs = (0, import_react56.useMemo)(
7083
7102
  () => [
7084
7103
  { key: STUDIO_NAV_MODE.BUILD, label: buildLabel },
7085
7104
  { key: STUDIO_NAV_MODE.OPERATE, label: manageLabel }
7086
7105
  ],
7087
7106
  [buildLabel, manageLabel]
7088
7107
  );
7089
- const handleChange = (0, import_react55.useCallback)(
7108
+ const handleChange = (0, import_react56.useCallback)(
7090
7109
  (key) => {
7091
7110
  if (key === STUDIO_NAV_MODE.BUILD || key === STUDIO_NAV_MODE.OPERATE) {
7092
7111
  onChange(key);
@@ -8,13 +8,13 @@ import {
8
8
  TimbalChatShell,
9
9
  TimbalMark,
10
10
  TimbalStudioShell
11
- } from "./chunk-HSL36SJ4.esm.js";
12
- import "./chunk-ELEY66OH.esm.js";
13
- import "./chunk-TMP7RIA7.esm.js";
14
- import "./chunk-WQIQW7EM.esm.js";
15
- import "./chunk-24B4I4XC.esm.js";
11
+ } from "./chunk-PMMI7LBV.esm.js";
12
+ import "./chunk-XOCOZU7J.esm.js";
13
+ import "./chunk-VKXOHVDE.esm.js";
14
+ import "./chunk-7AGIAQE6.esm.js";
15
+ import "./chunk-64RHAJVG.esm.js";
16
16
  import "./chunk-R4RQT2XQ.esm.js";
17
- import "./chunk-MBS7XHV2.esm.js";
17
+ import "./chunk-45NXD3IG.esm.js";
18
18
  import "./chunk-EDEKQYSU.esm.js";
19
19
  export {
20
20
  ModeToggle,
package/dist/ui.cjs CHANGED
@@ -1035,14 +1035,14 @@ function DialogDescription({
1035
1035
  className,
1036
1036
  ...props
1037
1037
  }) {
1038
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1039
- import_radix_ui5.Dialog.Description,
1038
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_radix_ui5.Dialog.Description, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1039
+ "div",
1040
1040
  {
1041
1041
  "data-slot": "dialog-description",
1042
1042
  className: cn("text-sm text-muted-foreground", className),
1043
1043
  ...props
1044
1044
  }
1045
- );
1045
+ ) });
1046
1046
  }
1047
1047
  function DialogHeader({ className, ...props }) {
1048
1048
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
@@ -3444,14 +3444,14 @@ function SheetDescription({
3444
3444
  className,
3445
3445
  ...props
3446
3446
  }) {
3447
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3448
- import_radix_ui25.Dialog.Description,
3447
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui25.Dialog.Description, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3448
+ "div",
3449
3449
  {
3450
3450
  "data-slot": "sheet-description",
3451
3451
  className: cn("text-sm text-muted-foreground", className),
3452
3452
  ...props
3453
3453
  }
3454
- );
3454
+ ) });
3455
3455
  }
3456
3456
 
3457
3457
  // src/ui/alert-dialog.tsx
package/dist/ui.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as AVATAR_PRIMARY_FALLBACK_CLASS, a as Avatar, b as AvatarFallback, c as AvatarImage, B as Banner, d as BannerProps, e as BannerSize, f as BannerTone, g as BannerVariant, h as Button, i as ButtonColor, K as Kanban, j as KanbanCardData, k as KanbanCardVariant, l as KanbanColumnData, m as KanbanDensity, n as KanbanDragHandleProps, o as KanbanLocation, p as KanbanMoveEvent, q as KanbanProps, r as KanbanRenderCardContext, s as KanbanTone, T as Timeline, t as TimelineItem, u as TimelineProps, v as TimelineSize, U as UntitledButton, w as UntitledButtonColor, x as UntitledButtonProps, y as UntitledButtonSize, z as avatarChartVariantClass, C as untitledButtonVariants } from './kanban-FFBeaZPS.cjs';
1
+ export { A as AVATAR_PRIMARY_FALLBACK_CLASS, a as Avatar, b as AvatarFallback, c as AvatarImage, B as Banner, d as BannerProps, e as BannerSize, f as BannerTone, g as BannerVariant, h as Button, i as ButtonColor, K as Kanban, j as KanbanCardData, k as KanbanCardVariant, l as KanbanColumnData, m as KanbanDensity, n as KanbanDragHandleProps, o as KanbanLocation, p as KanbanMoveEvent, q as KanbanProps, r as KanbanRenderCardContext, s as KanbanTone, T as Timeline, t as TimelineItem, u as TimelineProps, v as TimelineSize, U as UntitledButton, w as UntitledButtonColor, x as UntitledButtonProps, y as UntitledButtonSize, z as avatarChartVariantClass, C as untitledButtonVariants } from './kanban-BQxWliCS.cjs';
2
2
  export { A as Accordion, a as AccordionContent, b as AccordionItem, c as AccordionTrigger, d as Alert, e as AlertDescription, f as AlertDialog, g as AlertDialogAction, h as AlertDialogCancel, i as AlertDialogContent, j as AlertDialogDescription, k as AlertDialogFooter, l as AlertDialogHeader, m as AlertDialogOverlay, n as AlertDialogPortal, o as AlertDialogTitle, p as AlertDialogTrigger, q as AlertTitle, r as AspectRatio, s as AvatarGroup, t as AvatarGroupProps, B as Badge, u as Breadcrumb, v as BreadcrumbEllipsis, w as BreadcrumbItem, x as BreadcrumbLink, y as BreadcrumbList, z as BreadcrumbPage, C as BreadcrumbSeparator, D as CONTROL_SIZE, E as Calendar, F as CalendarDayButton, G as Card, H as CardContent, I as CardDescription, J as CardFooter, K as CardHeader, L as CardTitle, M as Checkbox, N as CircularProgress, O as CircularProgressProps, P as Collapsible, Q as CollapsibleContent, R as CollapsibleTrigger, S as Combobox, T as ComboboxAnchor, U as ComboboxCommand, V as ComboboxContent, W as ComboboxEmpty, X as ComboboxGroup, Y as ComboboxInput, Z as ComboboxItem, _ as ComboboxList, $ as ComboboxSeparator, a0 as ComboboxShortcut, a1 as ComboboxTrigger, a2 as Command, a3 as CommandDialog, a4 as CommandEmpty, a5 as CommandGroup, a6 as CommandInput, a7 as CommandItem, a8 as CommandList, a9 as CommandSeparator, aa as CommandShortcut, ab as ContextMenu, ac as ContextMenuCheckboxItem, ad as ContextMenuContent, ae as ContextMenuGroup, af as ContextMenuItem, ag as ContextMenuLabel, ah as ContextMenuRadioGroup, ai as ContextMenuRadioItem, aj as ContextMenuSeparator, ak as ContextMenuShortcut, al as ContextMenuSub, am as ContextMenuSubContent, an as ContextMenuSubTrigger, ao as ContextMenuTrigger, ap as ControlClassOptions, aq as ControlShape, ar as ControlSize, as as CopyButton, at as CopyButtonProps, au as DatePicker, av as DatePickerButton, aw as DatePickerCalendar, ax as DatePickerContent, ay as DatePickerTrigger, az as Dialog, aA as DialogClose, aB as DialogContent, aC as DialogDescription, aD as DialogFooter, aE as DialogHeader, aF as DialogOverlay, aG as DialogPortal, aH as DialogTitle, aI as DialogTrigger, aJ as DropdownMenu, aK as DropdownMenuCheckboxItem, aL as DropdownMenuContent, aM as DropdownMenuGroup, aN as DropdownMenuItem, aO as DropdownMenuLabel, aP as DropdownMenuRadioGroup, aQ as DropdownMenuRadioItem, aR as DropdownMenuSeparator, aS as DropdownMenuShortcut, aT as DropdownMenuSub, aU as DropdownMenuSubContent, aV as DropdownMenuSubTrigger, aW as DropdownMenuTrigger, aX as Form, aY as FormControl, aZ as FormField, a_ as FormItem, a$ as FormLabel, b0 as FormMessage, b1 as FormSubmit, b2 as HoverCard, b3 as HoverCardContent, b4 as HoverCardTrigger, b5 as Input, b6 as InputGroup, b7 as InputGroupAddon, b8 as InputGroupInput, b9 as InputGroupText, ba as InputOTP, bb as InputOTPGroup, bc as InputOTPHiddenInput, bd as InputOTPSeparator, be as InputOTPSlot, bf as Kbd, bg as KbdGroup, bh as Label, bi as MemoPillSegmentedTabs, bj as Menubar, bk as MenubarCheckboxItem, bl as MenubarContent, bm as MenubarItem, bn as MenubarLabel, bo as MenubarMenu, bp as MenubarRadioGroup, bq as MenubarRadioItem, br as MenubarSeparator, bs as MenubarShortcut, bt as MenubarSub, bu as MenubarSubContent, bv as MenubarSubTrigger, bw as MenubarTrigger, bx as NavigationMenu, by as NavigationMenuContent, bz as NavigationMenuIndicator, bA as NavigationMenuItem, bB as NavigationMenuLink, bC as NavigationMenuList, bD as NavigationMenuTrigger, bE as NavigationMenuViewport, bF as NumberField, bG as NumberFieldProps, bH as Pagination, bI as PaginationContent, bJ as PaginationEllipsis, bK as PaginationItem, bL as PaginationLink, bM as PaginationNext, bN as PaginationPrevious, bO as PillSegmentedTab, bP as PillSegmentedTabs, bQ as PillSegmentedTabsProps, bR as Popover, bS as PopoverAnchor, bT as PopoverContent, bU as PopoverTrigger, bV as Progress, bW as RadioGroup, bX as RadioGroupItem, bY as Rating, bZ as RatingProps, b_ as RatingTone, b$ as ScrollArea, c0 as ScrollBar, c1 as Select, c2 as SelectContent, c3 as SelectGroup, c4 as SelectItem, c5 as SelectLabel, c6 as SelectScrollDownButton, c7 as SelectScrollUpButton, c8 as SelectSeparator, c9 as SelectTrigger, ca as SelectValue, cb as Separator, cc as Sheet, cd as SheetClose, ce as SheetContent, cf as SheetDescription, cg as SheetFooter, ch as SheetHeader, ci as SheetTitle, cj as SheetTrigger, ck as Shimmer, cl as Skeleton, cm as Slider, cn as Snippet, co as SnippetProps, cp as SnippetSize, cq as SnippetVariant, cr as Spinner, cs as Stepper, ct as StepperProps, cu as StepperStep, cv as Switch, cw as Table, cx as TableBody, cy as TableCaption, cz as TableCell, cA as TableFooter, cB as TableHead, cC as TableHeader, cD as TableRow, cE as TagInput, cF as TagInputProps, cG as TagInputSize, cH as TextShimmerProps, cI as Textarea, cJ as Toast, cK as ToastAction, cL as ToastClose, cM as ToastDescription, cN as ToastProps, cO as ToastProvider, cP as ToastTitle, cQ as ToastViewport, cR as Toaster, cS as Toggle, cT as ToggleGroup, cU as ToggleGroupItem, cV as Toolbar, cW as ToolbarButton, cX as ToolbarLink, cY as ToolbarSeparator, cZ as ToolbarToggleGroup, c_ as ToolbarToggleItem, c$ as Tooltip, d0 as TooltipContent, d1 as TooltipProvider, d2 as TooltipTrigger, d3 as alertVariants, d4 as badgeVariants, d5 as controlClass, d6 as controlSurfaceClass, d7 as formatPickerDate, d8 as navigationMenuTriggerStyle, d9 as overlayAnimationClass, da as overlayItemClass, db as overlayListPanelClass, dc as overlaySurfaceClass, dd as toast, de as toggleVariants, df as useToast } from './circular-progress-B9nnwzCu.cjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as React from 'react';
package/dist/ui.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as AVATAR_PRIMARY_FALLBACK_CLASS, a as Avatar, b as AvatarFallback, c as AvatarImage, B as Banner, d as BannerProps, e as BannerSize, f as BannerTone, g as BannerVariant, h as Button, i as ButtonColor, K as Kanban, j as KanbanCardData, k as KanbanCardVariant, l as KanbanColumnData, m as KanbanDensity, n as KanbanDragHandleProps, o as KanbanLocation, p as KanbanMoveEvent, q as KanbanProps, r as KanbanRenderCardContext, s as KanbanTone, T as Timeline, t as TimelineItem, u as TimelineProps, v as TimelineSize, U as UntitledButton, w as UntitledButtonColor, x as UntitledButtonProps, y as UntitledButtonSize, z as avatarChartVariantClass, C as untitledButtonVariants } from './kanban-FFBeaZPS.js';
1
+ export { A as AVATAR_PRIMARY_FALLBACK_CLASS, a as Avatar, b as AvatarFallback, c as AvatarImage, B as Banner, d as BannerProps, e as BannerSize, f as BannerTone, g as BannerVariant, h as Button, i as ButtonColor, K as Kanban, j as KanbanCardData, k as KanbanCardVariant, l as KanbanColumnData, m as KanbanDensity, n as KanbanDragHandleProps, o as KanbanLocation, p as KanbanMoveEvent, q as KanbanProps, r as KanbanRenderCardContext, s as KanbanTone, T as Timeline, t as TimelineItem, u as TimelineProps, v as TimelineSize, U as UntitledButton, w as UntitledButtonColor, x as UntitledButtonProps, y as UntitledButtonSize, z as avatarChartVariantClass, C as untitledButtonVariants } from './kanban-BQxWliCS.js';
2
2
  export { A as Accordion, a as AccordionContent, b as AccordionItem, c as AccordionTrigger, d as Alert, e as AlertDescription, f as AlertDialog, g as AlertDialogAction, h as AlertDialogCancel, i as AlertDialogContent, j as AlertDialogDescription, k as AlertDialogFooter, l as AlertDialogHeader, m as AlertDialogOverlay, n as AlertDialogPortal, o as AlertDialogTitle, p as AlertDialogTrigger, q as AlertTitle, r as AspectRatio, s as AvatarGroup, t as AvatarGroupProps, B as Badge, u as Breadcrumb, v as BreadcrumbEllipsis, w as BreadcrumbItem, x as BreadcrumbLink, y as BreadcrumbList, z as BreadcrumbPage, C as BreadcrumbSeparator, D as CONTROL_SIZE, E as Calendar, F as CalendarDayButton, G as Card, H as CardContent, I as CardDescription, J as CardFooter, K as CardHeader, L as CardTitle, M as Checkbox, N as CircularProgress, O as CircularProgressProps, P as Collapsible, Q as CollapsibleContent, R as CollapsibleTrigger, S as Combobox, T as ComboboxAnchor, U as ComboboxCommand, V as ComboboxContent, W as ComboboxEmpty, X as ComboboxGroup, Y as ComboboxInput, Z as ComboboxItem, _ as ComboboxList, $ as ComboboxSeparator, a0 as ComboboxShortcut, a1 as ComboboxTrigger, a2 as Command, a3 as CommandDialog, a4 as CommandEmpty, a5 as CommandGroup, a6 as CommandInput, a7 as CommandItem, a8 as CommandList, a9 as CommandSeparator, aa as CommandShortcut, ab as ContextMenu, ac as ContextMenuCheckboxItem, ad as ContextMenuContent, ae as ContextMenuGroup, af as ContextMenuItem, ag as ContextMenuLabel, ah as ContextMenuRadioGroup, ai as ContextMenuRadioItem, aj as ContextMenuSeparator, ak as ContextMenuShortcut, al as ContextMenuSub, am as ContextMenuSubContent, an as ContextMenuSubTrigger, ao as ContextMenuTrigger, ap as ControlClassOptions, aq as ControlShape, ar as ControlSize, as as CopyButton, at as CopyButtonProps, au as DatePicker, av as DatePickerButton, aw as DatePickerCalendar, ax as DatePickerContent, ay as DatePickerTrigger, az as Dialog, aA as DialogClose, aB as DialogContent, aC as DialogDescription, aD as DialogFooter, aE as DialogHeader, aF as DialogOverlay, aG as DialogPortal, aH as DialogTitle, aI as DialogTrigger, aJ as DropdownMenu, aK as DropdownMenuCheckboxItem, aL as DropdownMenuContent, aM as DropdownMenuGroup, aN as DropdownMenuItem, aO as DropdownMenuLabel, aP as DropdownMenuRadioGroup, aQ as DropdownMenuRadioItem, aR as DropdownMenuSeparator, aS as DropdownMenuShortcut, aT as DropdownMenuSub, aU as DropdownMenuSubContent, aV as DropdownMenuSubTrigger, aW as DropdownMenuTrigger, aX as Form, aY as FormControl, aZ as FormField, a_ as FormItem, a$ as FormLabel, b0 as FormMessage, b1 as FormSubmit, b2 as HoverCard, b3 as HoverCardContent, b4 as HoverCardTrigger, b5 as Input, b6 as InputGroup, b7 as InputGroupAddon, b8 as InputGroupInput, b9 as InputGroupText, ba as InputOTP, bb as InputOTPGroup, bc as InputOTPHiddenInput, bd as InputOTPSeparator, be as InputOTPSlot, bf as Kbd, bg as KbdGroup, bh as Label, bi as MemoPillSegmentedTabs, bj as Menubar, bk as MenubarCheckboxItem, bl as MenubarContent, bm as MenubarItem, bn as MenubarLabel, bo as MenubarMenu, bp as MenubarRadioGroup, bq as MenubarRadioItem, br as MenubarSeparator, bs as MenubarShortcut, bt as MenubarSub, bu as MenubarSubContent, bv as MenubarSubTrigger, bw as MenubarTrigger, bx as NavigationMenu, by as NavigationMenuContent, bz as NavigationMenuIndicator, bA as NavigationMenuItem, bB as NavigationMenuLink, bC as NavigationMenuList, bD as NavigationMenuTrigger, bE as NavigationMenuViewport, bF as NumberField, bG as NumberFieldProps, bH as Pagination, bI as PaginationContent, bJ as PaginationEllipsis, bK as PaginationItem, bL as PaginationLink, bM as PaginationNext, bN as PaginationPrevious, bO as PillSegmentedTab, bP as PillSegmentedTabs, bQ as PillSegmentedTabsProps, bR as Popover, bS as PopoverAnchor, bT as PopoverContent, bU as PopoverTrigger, bV as Progress, bW as RadioGroup, bX as RadioGroupItem, bY as Rating, bZ as RatingProps, b_ as RatingTone, b$ as ScrollArea, c0 as ScrollBar, c1 as Select, c2 as SelectContent, c3 as SelectGroup, c4 as SelectItem, c5 as SelectLabel, c6 as SelectScrollDownButton, c7 as SelectScrollUpButton, c8 as SelectSeparator, c9 as SelectTrigger, ca as SelectValue, cb as Separator, cc as Sheet, cd as SheetClose, ce as SheetContent, cf as SheetDescription, cg as SheetFooter, ch as SheetHeader, ci as SheetTitle, cj as SheetTrigger, ck as Shimmer, cl as Skeleton, cm as Slider, cn as Snippet, co as SnippetProps, cp as SnippetSize, cq as SnippetVariant, cr as Spinner, cs as Stepper, ct as StepperProps, cu as StepperStep, cv as Switch, cw as Table, cx as TableBody, cy as TableCaption, cz as TableCell, cA as TableFooter, cB as TableHead, cC as TableHeader, cD as TableRow, cE as TagInput, cF as TagInputProps, cG as TagInputSize, cH as TextShimmerProps, cI as Textarea, cJ as Toast, cK as ToastAction, cL as ToastClose, cM as ToastDescription, cN as ToastProps, cO as ToastProvider, cP as ToastTitle, cQ as ToastViewport, cR as Toaster, cS as Toggle, cT as ToggleGroup, cU as ToggleGroupItem, cV as Toolbar, cW as ToolbarButton, cX as ToolbarLink, cY as ToolbarSeparator, cZ as ToolbarToggleGroup, c_ as ToolbarToggleItem, c$ as Tooltip, d0 as TooltipContent, d1 as TooltipProvider, d2 as TooltipTrigger, d3 as alertVariants, d4 as badgeVariants, d5 as controlClass, d6 as controlSurfaceClass, d7 as formatPickerDate, d8 as navigationMenuTriggerStyle, d9 as overlayAnimationClass, da as overlayItemClass, db as overlayListPanelClass, dc as overlaySurfaceClass, dd as toast, de as toggleVariants, df as useToast } from './circular-progress-B9nnwzCu.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as React from 'react';