@timbal-ai/timbal-react 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -38,7 +38,7 @@ __export(index_exports, {
38
38
  AccordionContent: () => AccordionContent,
39
39
  AccordionItem: () => AccordionItem,
40
40
  AccordionTrigger: () => AccordionTrigger,
41
- ActionBarPrimitive: () => import_react73.ActionBarPrimitive,
41
+ ActionBarPrimitive: () => import_react77.ActionBarPrimitive,
42
42
  Alert: () => Alert,
43
43
  AlertDescription: () => AlertDescription,
44
44
  AlertDialog: () => AlertDialog,
@@ -64,8 +64,8 @@ __export(index_exports, {
64
64
  ArtifactRegistryProvider: () => ArtifactRegistryProvider,
65
65
  ArtifactView: () => ArtifactView,
66
66
  AspectRatio: () => AspectRatio,
67
- AssistantRuntimeProvider: () => import_react73.AssistantRuntimeProvider,
68
- AuiIf: () => import_react73.AuiIf,
67
+ AssistantRuntimeProvider: () => import_react77.AssistantRuntimeProvider,
68
+ AuiIf: () => import_react77.AuiIf,
69
69
  AuthGuard: () => AuthGuard,
70
70
  Avatar: () => Avatar,
71
71
  AvatarFallback: () => AvatarFallback,
@@ -122,7 +122,7 @@ __export(index_exports, {
122
122
  CommandSeparator: () => CommandSeparator,
123
123
  CommandShortcut: () => CommandShortcut,
124
124
  Composer: () => Composer,
125
- ComposerPrimitive: () => import_react73.ComposerPrimitive,
125
+ ComposerPrimitive: () => import_react77.ComposerPrimitive,
126
126
  ConnectionRow: () => ConnectionRow,
127
127
  ConnectionRowList: () => ConnectionRowList,
128
128
  ContextMenu: () => ContextMenu,
@@ -233,7 +233,7 @@ __export(index_exports, {
233
233
  MenubarSubContent: () => MenubarSubContent,
234
234
  MenubarSubTrigger: () => MenubarSubTrigger,
235
235
  MenubarTrigger: () => MenubarTrigger,
236
- MessagePrimitive: () => import_react73.MessagePrimitive,
236
+ MessagePrimitive: () => import_react77.MessagePrimitive,
237
237
  MetricChartCard: () => MetricChartCard,
238
238
  MetricRow: () => MetricRow,
239
239
  MetricTile: () => MetricTile,
@@ -334,7 +334,7 @@ __export(index_exports, {
334
334
  TagInput: () => TagInput,
335
335
  Textarea: () => Textarea,
336
336
  Thread: () => Thread,
337
- ThreadPrimitive: () => import_react73.ThreadPrimitive,
337
+ ThreadPrimitive: () => import_react77.ThreadPrimitive,
338
338
  TimbalChat: () => TimbalChat,
339
339
  TimbalChatShell: () => TimbalChatShell,
340
340
  TimbalMark: () => TimbalMark,
@@ -431,15 +431,15 @@ __export(index_exports, {
431
431
  useAppShellChat: () => useAppShellChat,
432
432
  useAppShellNav: () => useAppShellNav,
433
433
  useArtifactRegistry: () => useArtifactRegistry,
434
- useComposerRuntime: () => import_react73.useComposerRuntime,
434
+ useComposerRuntime: () => import_react77.useComposerRuntime,
435
435
  useInterval: () => useInterval,
436
436
  useLiveQuery: () => useLiveQuery,
437
- useMessageRuntime: () => import_react73.useMessageRuntime,
437
+ useMessageRuntime: () => import_react77.useMessageRuntime,
438
438
  useOptionalSession: () => useOptionalSession,
439
439
  useResolvedSuggestions: () => useResolvedSuggestions,
440
440
  useSession: () => useSession,
441
- useThread: () => import_react73.useThread,
442
- useThreadRuntime: () => import_react73.useThreadRuntime,
441
+ useThread: () => import_react77.useThread,
442
+ useThreadRuntime: () => import_react77.useThreadRuntime,
443
443
  useTimbalRuntime: () => useTimbalRuntime,
444
444
  useTimbalStream: () => useTimbalStream,
445
445
  useToast: () => useToast,
@@ -7673,6 +7673,40 @@ You are **not** required to copy any example layout, page title, section order,
7673
7673
 
7674
7674
  When in doubt: compose from the **component menu** + **guidelines**, then adapt creatively to the request.
7675
7675
 
7676
+ ### Layout archetypes \u2014 pick the shape that fits (don't default to one)
7677
+
7678
+ The most common failure is shipping the **same** layout every time: sidebar + topbar + \`Page\` + one \`MetricRow\` + one full-width \`DataTable\`. That is *one* archetype, not *the* layout. Choose deliberately \u2014 different domains want different shapes, and varying the shell/page composition is encouraged.
7679
+
7680
+ | Archetype | When | Compose |
7681
+ |-----------|------|---------|
7682
+ | **Sidebar dashboard** | Multi-section product (CRM, billing, ops) with nav | \`StudioSidebar\` in \`AppShell.sidebar\` + \`Page\` \u2192 \`Section\` |
7683
+ | **Focused / no-chrome** | A single tool or one-screen utility | \`AppShell\` (no sidebar) + \`Page\` (optionally just \`AppShellTopbar\`); or a centered narrow column |
7684
+ | **Bento overview** | Home / at-a-glance dashboards | \`Page\` + an **asymmetric grid** of \`SurfaceCard\` / \`ChartPanel\` / \`StatTile\` spanning different widths (not a uniform row + table) |
7685
+ | **Split master\u2013detail** | Inbox, triage queue, record browser, log explorer | \`AppShell contentFill\` + \`Page fill\` + a two-column flex row, each pane \`min-h-0 overflow-y-auto\` |
7686
+ | **Full-page chat / canvas** | Chat-first app, editor, map, single full-bleed surface | \`AppShell contentFill\` + headerless \`Page fill\` + a \`min-h-0 flex-1\` child (e.g. \`TimbalChat\`) |
7687
+ | **Copilot overlay** | A data app that also wants an assistant | any of the above + \`AppShell chat={<AppChatPanel />}\` (floating, never a second column) |
7688
+ | **Section-switcher** | One page, several views | \`SubNav\` / \`PillSegmentedTabs\` (\`trackVariant="flush"\`) switching panels with state/router |
7689
+
7690
+ Mix them: vary the grid columns, density, header placement (\`Page\` actions vs. a global \`AppShellTopbar\`), and whether there's a sidebar at all. Two dashboards for two domains should not look identical.
7691
+
7692
+ ### Full-height pages (chat, canvas, split views)
7693
+
7694
+ The content region is a **padded scroll area** by default \u2014 great for stacked \`Page\` \u2192 \`Section\` content, wrong for a surface that must fill the viewport. For full-bleed pages:
7695
+
7696
+ - Pass **\`contentFill\`** to \`AppShell\` \u2192 the content region becomes a bounded, non-scrolling flex column (clipped, no bottom padding).
7697
+ - Pass **\`fill\`** to \`Page\` \u2192 the page becomes a \`min-h-0 flex-1\` flex column.
7698
+ - Give the filling child **\`min-h-0 flex-1\`** (or \`h-full\`) so its own scroll/footer resolves \u2014 e.g. \`<TimbalChat className="min-h-0 flex-1" />\`, or a two-pane row where each pane is \`min-h-0 overflow-y-auto\`.
7699
+
7700
+ \`\`\`tsx
7701
+ <AppShell contentFill topbar={<AppShellTopbar actions={<ModeToggle />} />}>
7702
+ <Page fill> {/* headerless: omit title */}
7703
+ <TimbalChat workforceId="\u2026" className="min-h-0 flex-1" />
7704
+ </Page>
7705
+ </AppShell>
7706
+ \`\`\`
7707
+
7708
+ **Don't** size full-height content with \`h-[calc(100dvh-\u2026)]\` (guesses chrome height \u2192 spurious scrollbar) or \`min-h-[\u2026]\` (free-growing floor \u2192 a pinned footer like the chat composer rides down on scroll). Let \`contentFill\` + \`fill\` provide the bounded height. \`Page\` with no \`title\` renders **no header** \u2014 you don't need to abandon \`Page\` to drop a heading.
7709
+
7676
7710
  ### Module layout (source folders)
7677
7711
 
7678
7712
  Presentational groups \u2014 import from the package root, not from these paths:
@@ -7731,12 +7765,12 @@ The cause of slop is dropping **below** the curated block layer into raw primiti
7731
7765
 
7732
7766
  | Component | Use for |
7733
7767
  |-----------|---------|
7734
- | \`AppShell\` | Shell: optional \`sidebar\`, \`topbar\`, main \`children\`, optional floating \`chat\`. Props: \`chatTriggerLabel\`, \`chatCollapsible\`, \`chatWidth\`, \`chatHeight\`, controlled \`chatOpen\`. |
7768
+ | \`AppShell\` | Shell: optional \`sidebar\`, \`topbar\`, main \`children\`, optional floating \`chat\`. Props: \`chatTriggerLabel\`, \`chatCollapsible\`, \`chatWidth\`, \`chatHeight\`, controlled \`chatOpen\`, **\`contentFill\`** (bounded non-scrolling content region for full-bleed pages \u2014 chat/canvas/split view). |
7735
7769
  | \`AppShellTopbar\` | Full-width top bar: \`start\`, \`actions\` slots. |
7736
7770
  | \`AppCopilotProvider\` | React context for copilot-aware tools (page, filters, selection, etc.). |
7737
7771
  | \`AppChatPanel\` | Floating thread: \`workforceId\`, \`welcome\`, \`debug\`. |
7738
7772
  | \`useAppShellChat\` | Custom open/close trigger when \`hideChatTrigger\` on shell. |
7739
- | \`Page\` | Page title, description, \`breadcrumbs\`, \`actions\`, \`density\` (\`"default"\` | \`"compact"\`), children. |
7773
+ | \`Page\` | Page title, description, \`breadcrumbs\`, \`actions\`, \`density\` (\`"default"\` | \`"compact"\`), children. **\`title\` is optional** \u2014 omit it for a headerless page (no \`<h1>\`). **\`fill\`** makes it a \`min-h-0 flex-1\` column for full-height content (pair with \`AppShell contentFill\`). |
7740
7774
  | \`Section\` | Titled block inside a page. Optional \`density\` overrides inherited page density. |
7741
7775
  | \`SubNav\` | **Section switcher** (Overview / Reports pill bar): \`items\`, \`activeId\`, \`onChange\`. Never use Radix/shadcn \`Tabs\` \u2014 it is not in this package. Switch panels with state or the router. |
7742
7776
  | **Menus** | **Select** = short list, no search. **Combobox** = searchable (same trigger as Select). **Command** only inside \`PopoverContent variant="list"\` or Combobox \u2014 never padded default Popover. See \`examples/app-kit/src/recipes/primitives-catalog.ts\`. |
@@ -7829,8 +7863,11 @@ Ready-made **section patterns** assembled from the components above. Each is a c
7829
7863
  - **Empty states** \u2014 no-data / no-results / first-run. Compose \`EmptyState\` + \`Card\` + \`Button\`.
7830
7864
  - **Sign-in card** \u2014 centered auth entry. Compose \`Card\` + \`Input\` + \`Label\` + \`Button\`.
7831
7865
 
7832
- **Shells & theming**
7866
+ **Shells & layouts**
7833
7867
  - **Minimal shell** \u2014 \`AppShell\` + \`Page\` (no sidebar/chat).
7868
+ - **Bento dashboard** \u2014 \`Page\` + an asymmetric grid of \`SurfaceCard\` / \`ChartPanel\` / \`StatTile\` (varied spans) for overview/home screens.
7869
+ - **Split view** \u2014 master\u2013detail: \`AppShell contentFill\` + \`Page fill\` + a two-pane flex row (list + detail), each pane \`min-h-0 overflow-y-auto\`.
7870
+ - **Full-page chat** \u2014 \`AppShell contentFill\` + headerless \`Page fill\` + \`TimbalChat className="min-h-0 flex-1"\` (composer pinned; no \`h-[calc(...)]\`).
7834
7871
  - **Copilot overlay** \u2014 \`AppShell\` + floating \`AppChatPanel\`.
7835
7872
  - **Theme presets** \u2014 apply a brand preset programmatically (\`applyThemePreset\` / \`applyTimbalTheme\`); never hand-author OKLCH and don't expose a theme picker to end users.
7836
7873
 
@@ -9038,6 +9075,7 @@ var AppShellBody = ({
9038
9075
  sidebar,
9039
9076
  topbarContent,
9040
9077
  mainClassName,
9078
+ contentFill = false,
9041
9079
  insetPaddingPx,
9042
9080
  insetExpanded,
9043
9081
  children
@@ -9060,7 +9098,10 @@ var AppShellBody = ({
9060
9098
  "div",
9061
9099
  {
9062
9100
  className: cn(
9063
- "aui-app-shell-scroll flex min-h-0 flex-1 flex-col overflow-y-auto",
9101
+ "aui-app-shell-scroll flex min-h-0 flex-1 flex-col",
9102
+ // Padded scroll region by default; a full-bleed page (chat / canvas) owns
9103
+ // its own scroll, so clip here and let the bounded `main` fill exactly.
9104
+ contentFill ? "overflow-hidden" : "overflow-y-auto",
9064
9105
  !topbarContent && appShellInsetTopClass
9065
9106
  ),
9066
9107
  children: [
@@ -9069,8 +9110,11 @@ var AppShellBody = ({
9069
9110
  "main",
9070
9111
  {
9071
9112
  className: cn(
9072
- "aui-app-shell-main min-w-0 flex-1",
9073
- appShellInsetBottomClass,
9113
+ // Bounded flex column by default so `h-full` / `flex-1 min-h-0` children
9114
+ // (full-page chat, canvas) resolve a height without `mainClassName` surgery.
9115
+ "aui-app-shell-main flex min-h-0 min-w-0 flex-1 flex-col",
9116
+ // Bottom breathing room for scrolling content; full-bleed pages skip it.
9117
+ !contentFill && appShellInsetBottomClass,
9074
9118
  mainClassName
9075
9119
  ),
9076
9120
  children
@@ -9100,7 +9144,8 @@ var AppShell = ({
9100
9144
  defaultNavOpen = false,
9101
9145
  onNavOpenChange,
9102
9146
  className,
9103
- mainClassName
9147
+ mainClassName,
9148
+ contentFill = false
9104
9149
  }) => {
9105
9150
  const topbarContent = topbar ?? header;
9106
9151
  const hasChat = Boolean(chat);
@@ -9147,6 +9192,7 @@ var AppShell = ({
9147
9192
  sidebar,
9148
9193
  topbarContent,
9149
9194
  mainClassName,
9195
+ contentFill,
9150
9196
  insetPaddingPx,
9151
9197
  insetExpanded,
9152
9198
  children
@@ -9296,11 +9342,14 @@ var PageHeader = ({
9296
9342
  className
9297
9343
  }) => {
9298
9344
  const pageHeaderClass = useAppDensityClass("pageHeader");
9345
+ if (title == null && description == null && actions == null) {
9346
+ return null;
9347
+ }
9299
9348
  return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("header", { className: cn("aui-app-page-header", pageHeaderClass, className), children: [
9300
- /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "min-w-0", children: [
9301
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h1", { className: "text-2xl font-semibold tracking-tight text-foreground", children: title }),
9349
+ title != null || description != null ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "min-w-0", children: [
9350
+ title != null ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("h1", { className: "text-2xl font-semibold tracking-tight text-foreground", children: title }) : null,
9302
9351
  description ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: "mt-1 text-sm text-muted-foreground", children: description }) : null
9303
- ] }),
9352
+ ] }) : null,
9304
9353
  actions ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "aui-app-page-header-actions flex shrink-0 flex-wrap items-center gap-2", children: actions }) : null
9305
9354
  ] });
9306
9355
  };
@@ -9310,6 +9359,7 @@ var import_jsx_runtime66 = require("react/jsx-runtime");
9310
9359
  var PageFrame = ({
9311
9360
  children,
9312
9361
  breadcrumbs,
9362
+ fill = false,
9313
9363
  className,
9314
9364
  ...headerProps
9315
9365
  }) => {
@@ -9318,7 +9368,11 @@ var PageFrame = ({
9318
9368
  return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
9319
9369
  "div",
9320
9370
  {
9321
- className: cn("aui-app-page", pageColumnClass, className),
9371
+ className: cn(
9372
+ "aui-app-page",
9373
+ fill ? "flex min-h-0 min-w-0 flex-1 flex-col" : pageColumnClass,
9374
+ className
9375
+ ),
9322
9376
  "data-density": density,
9323
9377
  children: [
9324
9378
  breadcrumbs,
@@ -9332,10 +9386,20 @@ var Page = ({
9332
9386
  density = "default",
9333
9387
  children,
9334
9388
  breadcrumbs,
9389
+ fill = false,
9335
9390
  className,
9336
9391
  ...headerProps
9337
9392
  }) => {
9338
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(AppDensityProvider, { density, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PageFrame, { breadcrumbs, className, ...headerProps, children }) });
9393
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(AppDensityProvider, { density, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
9394
+ PageFrame,
9395
+ {
9396
+ breadcrumbs,
9397
+ fill,
9398
+ className,
9399
+ ...headerProps,
9400
+ children
9401
+ }
9402
+ ) });
9339
9403
  };
9340
9404
 
9341
9405
  // src/app/layout/Section.tsx
@@ -10248,6 +10312,7 @@ var Breadcrumbs = ({ items, className }) => {
10248
10312
  };
10249
10313
 
10250
10314
  // src/app/forms/Field.tsx
10315
+ var import_react67 = require("react");
10251
10316
  var import_jsx_runtime91 = require("react/jsx-runtime");
10252
10317
  var Field = ({
10253
10318
  label,
@@ -10273,7 +10338,8 @@ var FieldInput = ({
10273
10338
  id,
10274
10339
  ...inputProps
10275
10340
  }) => {
10276
- const inputId = id ?? inputProps.name;
10341
+ const autoId = (0, import_react67.useId)();
10342
+ const inputId = id ?? inputProps.name ?? autoId;
10277
10343
  return /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
10278
10344
  Field,
10279
10345
  {
@@ -10296,6 +10362,7 @@ var FieldInput = ({
10296
10362
  };
10297
10363
 
10298
10364
  // src/app/forms/FieldTextarea.tsx
10365
+ var import_react68 = require("react");
10299
10366
  var import_jsx_runtime92 = require("react/jsx-runtime");
10300
10367
  var textareaClass = cn(
10301
10368
  appInputClass,
@@ -10310,7 +10377,8 @@ var FieldTextarea = ({
10310
10377
  id,
10311
10378
  ...props
10312
10379
  }) => {
10313
- const textareaId = id ?? props.name;
10380
+ const autoId = (0, import_react68.useId)();
10381
+ const textareaId = id ?? props.name ?? autoId;
10314
10382
  return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
10315
10383
  Field,
10316
10384
  {
@@ -10333,6 +10401,7 @@ var FieldTextarea = ({
10333
10401
  };
10334
10402
 
10335
10403
  // src/app/forms/FieldSelect.tsx
10404
+ var import_react69 = require("react");
10336
10405
  var import_lucide_react17 = require("lucide-react");
10337
10406
  var import_jsx_runtime93 = require("react/jsx-runtime");
10338
10407
  var selectWrapClass = "relative";
@@ -10350,7 +10419,8 @@ var FieldSelect = ({
10350
10419
  id,
10351
10420
  ...props
10352
10421
  }) => {
10353
- const selectId = id ?? props.name;
10422
+ const autoId = (0, import_react69.useId)();
10423
+ const selectId = id ?? props.name ?? autoId;
10354
10424
  return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
10355
10425
  Field,
10356
10426
  {
@@ -10383,6 +10453,7 @@ var FieldSelect = ({
10383
10453
  };
10384
10454
 
10385
10455
  // src/app/forms/FieldSwitch.tsx
10456
+ var import_react70 = require("react");
10386
10457
  var import_jsx_runtime94 = require("react/jsx-runtime");
10387
10458
  var trackClass = cn(
10388
10459
  "relative inline-flex h-5 w-9 shrink-0 items-center rounded-full transition-[background,box-shadow,border-color] duration-200",
@@ -10403,7 +10474,8 @@ var FieldSwitch = ({
10403
10474
  id,
10404
10475
  ...props
10405
10476
  }) => {
10406
- const inputId = id ?? props.name ?? "switch";
10477
+ const autoId = (0, import_react70.useId)();
10478
+ const inputId = id ?? props.name ?? autoId;
10407
10479
  return /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(
10408
10480
  "label",
10409
10481
  {
@@ -10512,7 +10584,7 @@ var FilterField = ({
10512
10584
  };
10513
10585
 
10514
10586
  // src/app/data/DataTable.tsx
10515
- var import_react67 = require("react");
10587
+ var import_react71 = require("react");
10516
10588
  var import_lucide_react20 = require("lucide-react");
10517
10589
 
10518
10590
  // src/ui/checkbox.tsx
@@ -10640,7 +10712,7 @@ function DataTable({
10640
10712
  defaultPageIndex = 0,
10641
10713
  onPageChange
10642
10714
  }) {
10643
- const [uncontrolledSort, setUncontrolledSort] = (0, import_react67.useState)(
10715
+ const [uncontrolledSort, setUncontrolledSort] = (0, import_react71.useState)(
10644
10716
  defaultSort
10645
10717
  );
10646
10718
  const isSortControlled = sortProp !== void 0;
@@ -10651,19 +10723,19 @@ function DataTable({
10651
10723
  }
10652
10724
  onSortChange?.(next);
10653
10725
  };
10654
- const [uncontrolledSelected, setUncontrolledSelected] = (0, import_react67.useState)(
10726
+ const [uncontrolledSelected, setUncontrolledSelected] = (0, import_react71.useState)(
10655
10727
  defaultSelectedKeys ?? []
10656
10728
  );
10657
10729
  const isSelectionControlled = selectedKeysProp !== void 0;
10658
10730
  const selectedKeys = isSelectionControlled ? selectedKeysProp : uncontrolledSelected;
10659
- const selectedSet = (0, import_react67.useMemo)(() => new Set(selectedKeys), [selectedKeys]);
10731
+ const selectedSet = (0, import_react71.useMemo)(() => new Set(selectedKeys), [selectedKeys]);
10660
10732
  const setSelected = (next) => {
10661
10733
  if (!isSelectionControlled) {
10662
10734
  setUncontrolledSelected(next);
10663
10735
  }
10664
10736
  onSelectionChange?.(next);
10665
10737
  };
10666
- const [uncontrolledPage, setUncontrolledPage] = (0, import_react67.useState)(defaultPageIndex);
10738
+ const [uncontrolledPage, setUncontrolledPage] = (0, import_react71.useState)(defaultPageIndex);
10667
10739
  const isPageControlled = pageIndexProp !== void 0;
10668
10740
  const rawPageIndex = isPageControlled ? pageIndexProp : uncontrolledPage;
10669
10741
  const setPage = (next) => {
@@ -10672,7 +10744,7 @@ function DataTable({
10672
10744
  }
10673
10745
  onPageChange?.(next);
10674
10746
  };
10675
- const sortedRows = (0, import_react67.useMemo)(() => {
10747
+ const sortedRows = (0, import_react71.useMemo)(() => {
10676
10748
  if (!sort) return rows;
10677
10749
  const column = columns.find((col) => col.id === sort.columnId);
10678
10750
  if (!column?.sortable) return rows;
@@ -10691,13 +10763,13 @@ function DataTable({
10691
10763
  const paginated = typeof pageSize === "number" && pageSize > 0;
10692
10764
  const pageCount = paginated ? Math.max(1, Math.ceil(sortedRows.length / pageSize)) : 1;
10693
10765
  const pageIndex = Math.min(Math.max(0, rawPageIndex), pageCount - 1);
10694
- (0, import_react67.useEffect)(() => {
10766
+ (0, import_react71.useEffect)(() => {
10695
10767
  if (!paginated || isPageControlled) return;
10696
10768
  if (uncontrolledPage > pageCount - 1) {
10697
10769
  setUncontrolledPage(pageCount - 1);
10698
10770
  }
10699
10771
  }, [paginated, isPageControlled, uncontrolledPage, pageCount]);
10700
- const visibleRows = (0, import_react67.useMemo)(() => {
10772
+ const visibleRows = (0, import_react71.useMemo)(() => {
10701
10773
  if (!paginated) return sortedRows;
10702
10774
  const start = pageIndex * pageSize;
10703
10775
  return sortedRows.slice(start, start + pageSize);
@@ -10908,7 +10980,7 @@ function DataTable({
10908
10980
  }
10909
10981
 
10910
10982
  // src/app/data/ChartPanel.tsx
10911
- var import_react68 = require("react");
10983
+ var import_react72 = require("react");
10912
10984
  var import_jsx_runtime102 = require("react/jsx-runtime");
10913
10985
  var ChartPanel = ({
10914
10986
  title,
@@ -10924,7 +10996,7 @@ var ChartPanel = ({
10924
10996
  const height = heightProp ?? APP_DENSITY_CHART_HEIGHT[density];
10925
10997
  const metricChartPlotRegionClass = useAppDensityClass("metricChartPlotRegion");
10926
10998
  const chartPanelBodyClass = useAppDensityClass("chartPanelBody");
10927
- const titleId = (0, import_react68.useId)();
10999
+ const titleId = (0, import_react72.useId)();
10928
11000
  const resolvedTitle = title ?? artifact?.title;
10929
11001
  const hasHeader = Boolean(resolvedTitle || description || actions);
10930
11002
  const body = loading ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(Skeleton, { className: "w-full rounded-lg", style: { height }, "aria-hidden": true }) : children ?? (artifact ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(ChartArtifactView, { artifact, embedded: true, height }) : null);
@@ -10967,7 +11039,7 @@ var ChartPanel = ({
10967
11039
  };
10968
11040
 
10969
11041
  // src/app/data/MetricRow.tsx
10970
- var import_react69 = require("react");
11042
+ var import_react73 = require("react");
10971
11043
  var import_jsx_runtime103 = require("react/jsx-runtime");
10972
11044
  var MetricRow = ({
10973
11045
  title,
@@ -10982,9 +11054,9 @@ var MetricRow = ({
10982
11054
  className
10983
11055
  }) => {
10984
11056
  const metricTileClass = useAppDensityClass("metricTile");
10985
- const titleId = (0, import_react69.useId)();
11057
+ const titleId = (0, import_react73.useId)();
10986
11058
  const selectable = onMetricChange != null || activeMetricId != null;
10987
- const [internalId, setInternalId] = (0, import_react69.useState)(
11059
+ const [internalId, setInternalId] = (0, import_react73.useState)(
10988
11060
  defaultActiveMetricId ?? metrics[0]?.id
10989
11061
  );
10990
11062
  const activeId = activeMetricId ?? internalId;
@@ -11051,7 +11123,7 @@ var MetricRow = ({
11051
11123
  };
11052
11124
 
11053
11125
  // src/app/data/MetricChartCard.tsx
11054
- var import_react70 = require("react");
11126
+ var import_react74 = require("react");
11055
11127
  var import_jsx_runtime104 = require("react/jsx-runtime");
11056
11128
  var MetricChartCard = ({
11057
11129
  title,
@@ -11075,8 +11147,8 @@ var MetricChartCard = ({
11075
11147
  const height = heightProp ?? APP_DENSITY_CHART_HEIGHT[density];
11076
11148
  const metricChartRegionClass = useAppDensityClass("metricChartRegion");
11077
11149
  const metricTileClass = useAppDensityClass("metricTile");
11078
- const titleId = (0, import_react70.useId)();
11079
- const [internalId, setInternalId] = (0, import_react70.useState)(
11150
+ const titleId = (0, import_react74.useId)();
11151
+ const [internalId, setInternalId] = (0, import_react74.useState)(
11080
11152
  defaultActiveMetricId ?? metrics[0]?.id
11081
11153
  );
11082
11154
  const activeId = activeMetricId ?? internalId;
@@ -11182,13 +11254,13 @@ var MetricChartCard = ({
11182
11254
  };
11183
11255
 
11184
11256
  // src/hooks/use-live-query.ts
11185
- var import_react71 = require("react");
11257
+ var import_react75 = require("react");
11186
11258
  function useInterval(callback, delayMs) {
11187
- const saved = (0, import_react71.useRef)(callback);
11188
- (0, import_react71.useEffect)(() => {
11259
+ const saved = (0, import_react75.useRef)(callback);
11260
+ (0, import_react75.useEffect)(() => {
11189
11261
  saved.current = callback;
11190
11262
  }, [callback]);
11191
- (0, import_react71.useEffect)(() => {
11263
+ (0, import_react75.useEffect)(() => {
11192
11264
  if (delayMs === null) return;
11193
11265
  const id = setInterval(() => saved.current(), delayMs);
11194
11266
  return () => clearInterval(id);
@@ -11201,25 +11273,25 @@ function useLiveQuery(fetcher, options = {}) {
11201
11273
  immediate = true,
11202
11274
  refetchOnFocus = true
11203
11275
  } = options;
11204
- const [data, setData] = (0, import_react71.useState)(void 0);
11205
- const [error, setError] = (0, import_react71.useState)(void 0);
11206
- const [loading, setLoading] = (0, import_react71.useState)(enabled);
11207
- const [refreshing, setRefreshing] = (0, import_react71.useState)(false);
11208
- const [lastUpdated, setLastUpdated] = (0, import_react71.useState)(null);
11209
- const fetcherRef = (0, import_react71.useRef)(fetcher);
11210
- (0, import_react71.useEffect)(() => {
11276
+ const [data, setData] = (0, import_react75.useState)(void 0);
11277
+ const [error, setError] = (0, import_react75.useState)(void 0);
11278
+ const [loading, setLoading] = (0, import_react75.useState)(enabled);
11279
+ const [refreshing, setRefreshing] = (0, import_react75.useState)(false);
11280
+ const [lastUpdated, setLastUpdated] = (0, import_react75.useState)(null);
11281
+ const fetcherRef = (0, import_react75.useRef)(fetcher);
11282
+ (0, import_react75.useEffect)(() => {
11211
11283
  fetcherRef.current = fetcher;
11212
11284
  }, [fetcher]);
11213
- const mounted = (0, import_react71.useRef)(true);
11214
- const requestId = (0, import_react71.useRef)(0);
11215
- const hasData = (0, import_react71.useRef)(false);
11216
- (0, import_react71.useEffect)(() => {
11285
+ const mounted = (0, import_react75.useRef)(true);
11286
+ const requestId = (0, import_react75.useRef)(0);
11287
+ const hasData = (0, import_react75.useRef)(false);
11288
+ (0, import_react75.useEffect)(() => {
11217
11289
  mounted.current = true;
11218
11290
  return () => {
11219
11291
  mounted.current = false;
11220
11292
  };
11221
11293
  }, []);
11222
- const run = (0, import_react71.useCallback)(() => {
11294
+ const run = (0, import_react75.useCallback)(() => {
11223
11295
  const id = ++requestId.current;
11224
11296
  if (hasData.current) {
11225
11297
  setRefreshing(true);
@@ -11241,15 +11313,15 @@ function useLiveQuery(fetcher, options = {}) {
11241
11313
  setRefreshing(false);
11242
11314
  });
11243
11315
  }, []);
11244
- const refetch = (0, import_react71.useCallback)(() => {
11316
+ const refetch = (0, import_react75.useCallback)(() => {
11245
11317
  if (!enabled) return;
11246
11318
  run();
11247
11319
  }, [enabled, run]);
11248
- (0, import_react71.useEffect)(() => {
11320
+ (0, import_react75.useEffect)(() => {
11249
11321
  if (!enabled) return;
11250
11322
  if (immediate) run();
11251
11323
  }, [enabled, immediate, run]);
11252
- (0, import_react71.useEffect)(() => {
11324
+ (0, import_react75.useEffect)(() => {
11253
11325
  if (!enabled || intervalMs === null) return;
11254
11326
  const tick = () => {
11255
11327
  if (refetchOnFocus && typeof document !== "undefined" && document.visibilityState === "hidden") {
@@ -11260,7 +11332,7 @@ function useLiveQuery(fetcher, options = {}) {
11260
11332
  const handle = setInterval(tick, intervalMs);
11261
11333
  return () => clearInterval(handle);
11262
11334
  }, [enabled, intervalMs, refetchOnFocus, run]);
11263
- (0, import_react71.useEffect)(() => {
11335
+ (0, import_react75.useEffect)(() => {
11264
11336
  if (!enabled || !refetchOnFocus || typeof document === "undefined") return;
11265
11337
  const onVisible = () => {
11266
11338
  if (document.visibilityState === "visible") run();
@@ -11272,7 +11344,7 @@ function useLiveQuery(fetcher, options = {}) {
11272
11344
  }
11273
11345
 
11274
11346
  // src/charts/sparkline.tsx
11275
- var import_react72 = require("react");
11347
+ var import_react76 = require("react");
11276
11348
  var import_jsx_runtime105 = require("react/jsx-runtime");
11277
11349
  var Sparkline = ({
11278
11350
  data,
@@ -11285,7 +11357,7 @@ var Sparkline = ({
11285
11357
  className,
11286
11358
  ariaLabel = "Trend"
11287
11359
  }) => {
11288
- const uid = (0, import_react72.useId)();
11360
+ const uid = (0, import_react76.useId)();
11289
11361
  const values = data.map((d) => typeof d === "number" ? d : toNum(d[dataKey]));
11290
11362
  if (values.length === 0) {
11291
11363
  return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("span", { className: cn("inline-block", className), style: { width, height } });
@@ -11486,7 +11558,7 @@ var AuthGuard = ({
11486
11558
  };
11487
11559
 
11488
11560
  // src/index.ts
11489
- var import_react73 = require("@assistant-ui/react");
11561
+ var import_react77 = require("@assistant-ui/react");
11490
11562
 
11491
11563
  // src/ui/dropdown-menu.tsx
11492
11564
  var import_radix_ui6 = require("radix-ui");
package/dist/index.d.cts CHANGED
@@ -6,7 +6,7 @@ import { ToolCallMessagePartComponent } from '@assistant-ui/react';
6
6
  export { ActionBarPrimitive, AssistantRuntimeProvider, AttachmentAdapter, AuiIf, ComposerPrimitive, MessagePrimitive, ThreadPrimitive, useComposerRuntime, useMessageRuntime, useThread, useThreadRuntime } from '@assistant-ui/react';
7
7
  export { M as ModeToggle, a as ModeToggleProps, b as ModeToggleTheme, S as STUDIO_NAV_MODE, c as StudioModeSwitch, d as StudioModeSwitchProps, e as StudioNavMode, f as StudioSidebar, g as StudioSidebarProps, h as StudioWelcome, i as StudioWelcomeProps, T as TimbalChatShell, j as TimbalChatShellProps, k as TimbalMark, l as TimbalMarkProps, m as TimbalStudioShell, n as TimbalStudioShellProps } from './welcome-BFGRoNfK.cjs';
8
8
  export { M as MarkdownText, T as THREAD_DEFAULT_MAX_WIDTH, a as ToolFallback, b as TooltipIconButton, c as TooltipIconButtonProps, W as WorkforceSelector, d as WorkforceSelectorProps, e as assistantMessageContentClass, f as assistantMessageRootClass, t as threadMessageColumnClass, u as useToolRunning, g as userMessageRootClass } from './layout-C2G-FcER.cjs';
9
- export { d as APP_KIT_AGENT_INSTRUCTIONS, v as AppBreadcrumbItem, e as AppChatPanel, f as AppChatPanelProps, g as AppConfirmDialog, h as AppConfirmDialogProps, i as AppCopilotContextValue, j as AppCopilotProvider, k as AppCopilotProviderProps, l as AppShell, m as AppShellChatControls, n as AppShellChatTrigger, o as AppShellChatTriggerProps, p as AppShellNavControls, q as AppShellProps, r as AppShellSidebarTrigger, s as AppShellSidebarTriggerProps, t as AppShellTopbar, u as AppShellTopbarProps, B as BreadcrumbEntry, w as Breadcrumbs, x as BreadcrumbsProps, C as CHART_PALETTE, y as COLOR_UTILITY_PREFIXES, z as ChartArtifactView, F as ChartPanel, G as ChartPanelProps, H as ChartSeries, I as ChartTooltipIndicator, J as ChartVariant, K as ConnectionRow, L as ConnectionRowList, M as ConnectionRowListProps, N as ConnectionRowProps, O as DangerZone, P as DangerZoneAction, Q as DangerZoneActionProps, R as DangerZoneProps, S as DataTable, T as DataTableColumn, U as DataTableProps, V as DataTableSort, W as DataTableSortDirection, X as DescriptionItem, Y as DescriptionList, Z as DescriptionListProps, _ as EmptyState, $ as EmptyStateProps, a0 as ExpandableSection, a1 as ExpandableSectionProps, a2 as Field, a3 as FieldInput, a4 as FieldInputProps, a5 as FieldProps, a6 as FieldRow, a7 as FieldRowProps, a8 as FieldSelect, a9 as FieldSelectProps, aa as FieldSwitch, ab as FieldSwitchProps, ac as FieldTextarea, ad as FieldTextareaProps, ae as FilterBar, af as FilterBarProps, ag as FilterField, ah as FilterFieldProps, ai as FloatingUnsavedChangesBar, aj as FloatingUnsavedChangesBarProps, ak as FormSection, al as FormSectionProps, am as HOUSE_RULES, an as HouseRule, ao as INTEGRATION_CATALOG_CARD_HEIGHT_CLASS, ap as InfoCard, aq as InfoCardProps, ar as InfoCardTone, as as IntegrationCard, at as IntegrationCardProps, au as IntegrationCardStatus, av as IntegrationsEmptyState, aw as IntegrationsEmptyStateProps, ax as LineAreaChart, ay as LineAreaChartProps, az as LintFinding, aA as LintOptions, aB as LintResult, aC as LintSeverity, aD as MetricChartCard, aE as MetricChartCardProps, aF as MetricChartMetric, aG as MetricRow, aH as MetricRowItem, aI as MetricRowProps, aJ as MetricTile, aK as MetricTileProps, aL as Page, aM as PageHeader, aN as PageHeaderProps, aO as PageProps, aP as PieChart, aQ as PieChartProps, aR as PlanBadge, aS as PlanBadgeProps, aT as PlanBadgeTone, aU as RESERVED_GRADIENT_TOKENS, aV as RadarChart, aW as RadarChartProps, aX as RadialChart, aY as RadialChartProps, aZ as ResourceCard, a_ as ResourceCardProps, a$ as ReviewResult, b0 as SEMANTIC_COLOR_TOKENS, b1 as SLOP_BUDGETS, b2 as SearchInput, b3 as SearchInputProps, b4 as Section, b5 as SectionProps, b6 as SemanticColorToken, b7 as SettingsSection, b8 as SettingsSectionHeader, b9 as SettingsSectionHeaderProps, ba as SettingsSectionProps, bb as Sparkline, bc as SparklineProps, bd as StatTile, be as StatTileProps, bf as StatusBadge, bg as StatusBadgeProps, bh as StatusBadgeTone, bi as StatusDot, bj as StatusDotProps, bk as StatusDotTone, bl as SubNav, bm as SubNavItem, bn as SubNavProps, bo as SurfaceCard, bp as SurfaceCardProps, bq as TAILWIND_PALETTE_COLORS, br as THEME_AGENT_INSTRUCTIONS, bs as TIMBAL_THEME_PRESETS, bt as ThemeShadow, bu as ThemeToCssOptions, bv as ThemeTokenMap, bw as TimbalThemeIntent, bx as TimbalThemePreset, by as TimbalThemePresetId, bz as TimbalThemeStyle, bA as TimbalThemeStyleProps, bB as TimbalThemeTokens, bC as TimbalThemeTypography, bD as UI_REVIEW_AGENT_INSTRUCTIONS, bE as UseLiveQueryOptions, bF as UseLiveQueryResult, bH as applyThemePreset, bI as applyTimbalTheme, bJ as clearTimbalTheme, bK as connectionRowListClass, bL as createTimbalTheme, bM as ensureThemeFontLink, bN as flushBarCategoryGap, bO as flushLineAreaEdgeToEdge, bP as formatLintReport, bQ as getStoredThemePreset, bR as getThemePreset, bS as lintGeneratedUi, bT as resolveChartMargin, bU as resolveTooltipCategory, bV as reviewGeneratedUi, bW as themeToCss, bX as useAppCopilotContext, bY as useAppShellChat, bZ as useAppShellNav, b_ as useInterval, b$ as useLiveQuery } from './chart-artifact-WDEW9dHT.cjs';
9
+ export { d as APP_KIT_AGENT_INSTRUCTIONS, v as AppBreadcrumbItem, e as AppChatPanel, f as AppChatPanelProps, g as AppConfirmDialog, h as AppConfirmDialogProps, i as AppCopilotContextValue, j as AppCopilotProvider, k as AppCopilotProviderProps, l as AppShell, m as AppShellChatControls, n as AppShellChatTrigger, o as AppShellChatTriggerProps, p as AppShellNavControls, q as AppShellProps, r as AppShellSidebarTrigger, s as AppShellSidebarTriggerProps, t as AppShellTopbar, u as AppShellTopbarProps, B as BreadcrumbEntry, w as Breadcrumbs, x as BreadcrumbsProps, C as CHART_PALETTE, y as COLOR_UTILITY_PREFIXES, z as ChartArtifactView, F as ChartPanel, G as ChartPanelProps, H as ChartSeries, I as ChartTooltipIndicator, J as ChartVariant, K as ConnectionRow, L as ConnectionRowList, M as ConnectionRowListProps, N as ConnectionRowProps, O as DangerZone, P as DangerZoneAction, Q as DangerZoneActionProps, R as DangerZoneProps, S as DataTable, T as DataTableColumn, U as DataTableProps, V as DataTableSort, W as DataTableSortDirection, X as DescriptionItem, Y as DescriptionList, Z as DescriptionListProps, _ as EmptyState, $ as EmptyStateProps, a0 as ExpandableSection, a1 as ExpandableSectionProps, a2 as Field, a3 as FieldInput, a4 as FieldInputProps, a5 as FieldProps, a6 as FieldRow, a7 as FieldRowProps, a8 as FieldSelect, a9 as FieldSelectProps, aa as FieldSwitch, ab as FieldSwitchProps, ac as FieldTextarea, ad as FieldTextareaProps, ae as FilterBar, af as FilterBarProps, ag as FilterField, ah as FilterFieldProps, ai as FloatingUnsavedChangesBar, aj as FloatingUnsavedChangesBarProps, ak as FormSection, al as FormSectionProps, am as HOUSE_RULES, an as HouseRule, ao as INTEGRATION_CATALOG_CARD_HEIGHT_CLASS, ap as InfoCard, aq as InfoCardProps, ar as InfoCardTone, as as IntegrationCard, at as IntegrationCardProps, au as IntegrationCardStatus, av as IntegrationsEmptyState, aw as IntegrationsEmptyStateProps, ax as LineAreaChart, ay as LineAreaChartProps, az as LintFinding, aA as LintOptions, aB as LintResult, aC as LintSeverity, aD as MetricChartCard, aE as MetricChartCardProps, aF as MetricChartMetric, aG as MetricRow, aH as MetricRowItem, aI as MetricRowProps, aJ as MetricTile, aK as MetricTileProps, aL as Page, aM as PageHeader, aN as PageHeaderProps, aO as PageProps, aP as PieChart, aQ as PieChartProps, aR as PlanBadge, aS as PlanBadgeProps, aT as PlanBadgeTone, aU as RESERVED_GRADIENT_TOKENS, aV as RadarChart, aW as RadarChartProps, aX as RadialChart, aY as RadialChartProps, aZ as ResourceCard, a_ as ResourceCardProps, a$ as ReviewResult, b0 as SEMANTIC_COLOR_TOKENS, b1 as SLOP_BUDGETS, b2 as SearchInput, b3 as SearchInputProps, b4 as Section, b5 as SectionProps, b6 as SemanticColorToken, b7 as SettingsSection, b8 as SettingsSectionHeader, b9 as SettingsSectionHeaderProps, ba as SettingsSectionProps, bb as Sparkline, bc as SparklineProps, bd as StatTile, be as StatTileProps, bf as StatusBadge, bg as StatusBadgeProps, bh as StatusBadgeTone, bi as StatusDot, bj as StatusDotProps, bk as StatusDotTone, bl as SubNav, bm as SubNavItem, bn as SubNavProps, bo as SurfaceCard, bp as SurfaceCardProps, bq as TAILWIND_PALETTE_COLORS, br as THEME_AGENT_INSTRUCTIONS, bs as TIMBAL_THEME_PRESETS, bt as ThemeShadow, bu as ThemeToCssOptions, bv as ThemeTokenMap, bw as TimbalThemeIntent, bx as TimbalThemePreset, by as TimbalThemePresetId, bz as TimbalThemeStyle, bA as TimbalThemeStyleProps, bB as TimbalThemeTokens, bC as TimbalThemeTypography, bD as UI_REVIEW_AGENT_INSTRUCTIONS, bE as UseLiveQueryOptions, bF as UseLiveQueryResult, bH as applyThemePreset, bI as applyTimbalTheme, bJ as clearTimbalTheme, bK as connectionRowListClass, bL as createTimbalTheme, bM as ensureThemeFontLink, bN as flushBarCategoryGap, bO as flushLineAreaEdgeToEdge, bP as formatLintReport, bQ as getStoredThemePreset, bR as getThemePreset, bS as lintGeneratedUi, bT as resolveChartMargin, bU as resolveTooltipCategory, bV as reviewGeneratedUi, bW as themeToCss, bX as useAppCopilotContext, bY as useAppShellChat, bZ as useAppShellNav, b_ as useInterval, b$ as useLiveQuery } from './chart-artifact-C8-Py6lc.cjs';
10
10
  export { B as Button } from './button-BoyX5pM_.cjs';
11
11
  import React__default, { FC, ReactNode } from 'react';
12
12
  export { A as AVATAR_PRIMARY_FALLBACK_CLASS, a as Accordion, b as AccordionContent, c as AccordionItem, d as AccordionTrigger, e as Alert, f as AlertDescription, g as AlertDialog, h as AlertDialogAction, i as AlertDialogCancel, j as AlertDialogContent, k as AlertDialogDescription, l as AlertDialogFooter, m as AlertDialogHeader, n as AlertDialogOverlay, o as AlertDialogPortal, p as AlertDialogTitle, q as AlertDialogTrigger, r as AlertTitle, s as AspectRatio, t as Avatar, u as AvatarFallback, v as AvatarGroup, w as AvatarGroupProps, x as AvatarImage, B as Badge, y as Banner, z as BannerProps, C as Breadcrumb, D as BreadcrumbEllipsis, E as BreadcrumbItem, F as BreadcrumbLink, G as BreadcrumbList, H as BreadcrumbPage, I as BreadcrumbSeparator, J as CONTROL_SIZE, K as Calendar, L as CalendarDayButton, M as Card, N as CardContent, O as CardDescription, P as CardFooter, Q as CardHeader, R as CardTitle, S as Checkbox, T as CircularProgress, U as CircularProgressProps, V as Collapsible, W as CollapsibleContent, X as CollapsibleTrigger, Y as Combobox, Z as ComboboxAnchor, _ as ComboboxCommand, $ as ComboboxContent, a0 as ComboboxEmpty, a1 as ComboboxGroup, a2 as ComboboxInput, a3 as ComboboxItem, a4 as ComboboxList, a5 as ComboboxSeparator, a6 as ComboboxShortcut, a7 as ComboboxTrigger, a8 as Command, a9 as CommandDialog, aa as CommandEmpty, ab as CommandGroup, ac as CommandInput, ad as CommandItem, ae as CommandList, af as CommandSeparator, ag as CommandShortcut, ah as ContextMenu, ai as ContextMenuCheckboxItem, aj as ContextMenuContent, ak as ContextMenuGroup, al as ContextMenuItem, am as ContextMenuLabel, an as ContextMenuRadioGroup, ao as ContextMenuRadioItem, ap as ContextMenuSeparator, aq as ContextMenuShortcut, ar as ContextMenuSub, as as ContextMenuSubContent, at as ContextMenuSubTrigger, au as ContextMenuTrigger, av as ControlClassOptions, aw as ControlShape, ax as ControlSize, ay as CopyButton, az as CopyButtonProps, aA as DatePicker, aB as DatePickerButton, aC as DatePickerCalendar, aD as DatePickerContent, aE as DatePickerTrigger, aF as Dialog, aG as DialogClose, aH as DialogContent, aI as DialogDescription, aJ as DialogFooter, aK as DialogHeader, aL as DialogOverlay, aM as DialogPortal, aN as DialogTitle, aO as DialogTrigger, aP as DropdownMenu, aQ as DropdownMenuCheckboxItem, aR as DropdownMenuContent, aS as DropdownMenuGroup, aT as DropdownMenuItem, aU as DropdownMenuLabel, aV as DropdownMenuRadioGroup, aW as DropdownMenuRadioItem, aX as DropdownMenuSeparator, aY as DropdownMenuShortcut, aZ as DropdownMenuSub, a_ as DropdownMenuSubContent, a$ as DropdownMenuSubTrigger, b0 as DropdownMenuTrigger, b1 as Form, b2 as FormControl, b3 as FormField, b4 as FormItem, b5 as FormLabel, b6 as FormMessage, b7 as FormSubmit, b8 as HoverCard, b9 as HoverCardContent, ba as HoverCardTrigger, bb as Input, bc as InputGroup, bd as InputGroupAddon, be as InputGroupInput, bf as InputGroupText, bg as InputOTP, bh as InputOTPGroup, bi as InputOTPHiddenInput, bj as InputOTPSeparator, bk as InputOTPSlot, bl as Kbd, bm as KbdGroup, bn as Label, bo as MemoPillSegmentedTabs, bp as Menubar, bq as MenubarCheckboxItem, br as MenubarContent, bs as MenubarItem, bt as MenubarLabel, bu as MenubarMenu, bv as MenubarRadioGroup, bw as MenubarRadioItem, bx as MenubarSeparator, by as MenubarShortcut, bz as MenubarSub, bA as MenubarSubContent, bB as MenubarSubTrigger, bC as MenubarTrigger, bD as NavigationMenu, bE as NavigationMenuContent, bF as NavigationMenuIndicator, bG as NavigationMenuItem, bH as NavigationMenuLink, bI as NavigationMenuList, bJ as NavigationMenuTrigger, bK as NavigationMenuViewport, bL as NumberField, bM as NumberFieldProps, bN as Pagination, bO as PaginationContent, bP as PaginationEllipsis, bQ as PaginationItem, bR as PaginationLink, bS as PaginationNext, bT as PaginationPrevious, bU as PillSegmentedTab, bV as PillSegmentedTabs, bW as PillSegmentedTabsProps, bX as Popover, bY as PopoverAnchor, bZ as PopoverContent, b_ as PopoverTrigger, b$ as Progress, c0 as RadioGroup, c1 as RadioGroupItem, c2 as Rating, c3 as RatingProps, c4 as ScrollArea, c5 as ScrollBar, c6 as Select, c7 as SelectContent, c8 as SelectGroup, c9 as SelectItem, ca as SelectLabel, cb as SelectScrollDownButton, cc as SelectScrollUpButton, cd as SelectSeparator, ce as SelectTrigger, cf as SelectValue, cg as Separator, ch as Sheet, ci as SheetClose, cj as SheetContent, ck as SheetDescription, cl as SheetFooter, cm as SheetHeader, cn as SheetTitle, co as SheetTrigger, cp as Shimmer, cq as Skeleton, cr as Slider, cs as Snippet, ct as SnippetProps, cu as Spinner, cv as Stepper, cw as StepperProps, cx as StepperStep, cy as Switch, cz as Table, cA as TableBody, cB as TableCaption, cC as TableCell, cD as TableFooter, cE as TableHead, cF as TableHeader, cG as TableRow, cH as TagInput, cI as TagInputProps, cJ as TextShimmerProps, cK as Textarea, cL as Timeline, cM as TimelineItem, cN as TimelineProps, cO as Toast, cP as ToastAction, cQ as ToastClose, cR as ToastDescription, cS as ToastProps, cT as ToastProvider, cU as ToastTitle, cV as ToastViewport, cW as Toaster, cX as Toggle, cY as ToggleGroup, cZ as ToggleGroupItem, c_ as Toolbar, c$ as ToolbarButton, d0 as ToolbarLink, d1 as ToolbarSeparator, d2 as ToolbarToggleGroup, d3 as ToolbarToggleItem, d4 as Tooltip, d5 as TooltipContent, d6 as TooltipProvider, d7 as TooltipTrigger, d8 as alertVariants, d9 as avatarChartVariantClass, da as badgeVariants, db as controlClass, dc as controlSurfaceClass, dd as formatPickerDate, de as navigationMenuTriggerStyle, df as overlayAnimationClass, dg as overlayItemClass, dh as overlayListPanelClass, di as overlaySurfaceClass, dj as toast, dk as toggleVariants, dl as useToast } from './circular-progress-Ci8L-Hfa.cjs';
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ import { ToolCallMessagePartComponent } from '@assistant-ui/react';
6
6
  export { ActionBarPrimitive, AssistantRuntimeProvider, AttachmentAdapter, AuiIf, ComposerPrimitive, MessagePrimitive, ThreadPrimitive, useComposerRuntime, useMessageRuntime, useThread, useThreadRuntime } from '@assistant-ui/react';
7
7
  export { M as ModeToggle, a as ModeToggleProps, b as ModeToggleTheme, S as STUDIO_NAV_MODE, c as StudioModeSwitch, d as StudioModeSwitchProps, e as StudioNavMode, f as StudioSidebar, g as StudioSidebarProps, h as StudioWelcome, i as StudioWelcomeProps, T as TimbalChatShell, j as TimbalChatShellProps, k as TimbalMark, l as TimbalMarkProps, m as TimbalStudioShell, n as TimbalStudioShellProps } from './welcome-DXqsGTwH.js';
8
8
  export { M as MarkdownText, T as THREAD_DEFAULT_MAX_WIDTH, a as ToolFallback, b as TooltipIconButton, c as TooltipIconButtonProps, W as WorkforceSelector, d as WorkforceSelectorProps, e as assistantMessageContentClass, f as assistantMessageRootClass, t as threadMessageColumnClass, u as useToolRunning, g as userMessageRootClass } from './layout-BTJyU8wd.js';
9
- export { d as APP_KIT_AGENT_INSTRUCTIONS, v as AppBreadcrumbItem, e as AppChatPanel, f as AppChatPanelProps, g as AppConfirmDialog, h as AppConfirmDialogProps, i as AppCopilotContextValue, j as AppCopilotProvider, k as AppCopilotProviderProps, l as AppShell, m as AppShellChatControls, n as AppShellChatTrigger, o as AppShellChatTriggerProps, p as AppShellNavControls, q as AppShellProps, r as AppShellSidebarTrigger, s as AppShellSidebarTriggerProps, t as AppShellTopbar, u as AppShellTopbarProps, B as BreadcrumbEntry, w as Breadcrumbs, x as BreadcrumbsProps, C as CHART_PALETTE, y as COLOR_UTILITY_PREFIXES, z as ChartArtifactView, F as ChartPanel, G as ChartPanelProps, H as ChartSeries, I as ChartTooltipIndicator, J as ChartVariant, K as ConnectionRow, L as ConnectionRowList, M as ConnectionRowListProps, N as ConnectionRowProps, O as DangerZone, P as DangerZoneAction, Q as DangerZoneActionProps, R as DangerZoneProps, S as DataTable, T as DataTableColumn, U as DataTableProps, V as DataTableSort, W as DataTableSortDirection, X as DescriptionItem, Y as DescriptionList, Z as DescriptionListProps, _ as EmptyState, $ as EmptyStateProps, a0 as ExpandableSection, a1 as ExpandableSectionProps, a2 as Field, a3 as FieldInput, a4 as FieldInputProps, a5 as FieldProps, a6 as FieldRow, a7 as FieldRowProps, a8 as FieldSelect, a9 as FieldSelectProps, aa as FieldSwitch, ab as FieldSwitchProps, ac as FieldTextarea, ad as FieldTextareaProps, ae as FilterBar, af as FilterBarProps, ag as FilterField, ah as FilterFieldProps, ai as FloatingUnsavedChangesBar, aj as FloatingUnsavedChangesBarProps, ak as FormSection, al as FormSectionProps, am as HOUSE_RULES, an as HouseRule, ao as INTEGRATION_CATALOG_CARD_HEIGHT_CLASS, ap as InfoCard, aq as InfoCardProps, ar as InfoCardTone, as as IntegrationCard, at as IntegrationCardProps, au as IntegrationCardStatus, av as IntegrationsEmptyState, aw as IntegrationsEmptyStateProps, ax as LineAreaChart, ay as LineAreaChartProps, az as LintFinding, aA as LintOptions, aB as LintResult, aC as LintSeverity, aD as MetricChartCard, aE as MetricChartCardProps, aF as MetricChartMetric, aG as MetricRow, aH as MetricRowItem, aI as MetricRowProps, aJ as MetricTile, aK as MetricTileProps, aL as Page, aM as PageHeader, aN as PageHeaderProps, aO as PageProps, aP as PieChart, aQ as PieChartProps, aR as PlanBadge, aS as PlanBadgeProps, aT as PlanBadgeTone, aU as RESERVED_GRADIENT_TOKENS, aV as RadarChart, aW as RadarChartProps, aX as RadialChart, aY as RadialChartProps, aZ as ResourceCard, a_ as ResourceCardProps, a$ as ReviewResult, b0 as SEMANTIC_COLOR_TOKENS, b1 as SLOP_BUDGETS, b2 as SearchInput, b3 as SearchInputProps, b4 as Section, b5 as SectionProps, b6 as SemanticColorToken, b7 as SettingsSection, b8 as SettingsSectionHeader, b9 as SettingsSectionHeaderProps, ba as SettingsSectionProps, bb as Sparkline, bc as SparklineProps, bd as StatTile, be as StatTileProps, bf as StatusBadge, bg as StatusBadgeProps, bh as StatusBadgeTone, bi as StatusDot, bj as StatusDotProps, bk as StatusDotTone, bl as SubNav, bm as SubNavItem, bn as SubNavProps, bo as SurfaceCard, bp as SurfaceCardProps, bq as TAILWIND_PALETTE_COLORS, br as THEME_AGENT_INSTRUCTIONS, bs as TIMBAL_THEME_PRESETS, bt as ThemeShadow, bu as ThemeToCssOptions, bv as ThemeTokenMap, bw as TimbalThemeIntent, bx as TimbalThemePreset, by as TimbalThemePresetId, bz as TimbalThemeStyle, bA as TimbalThemeStyleProps, bB as TimbalThemeTokens, bC as TimbalThemeTypography, bD as UI_REVIEW_AGENT_INSTRUCTIONS, bE as UseLiveQueryOptions, bF as UseLiveQueryResult, bH as applyThemePreset, bI as applyTimbalTheme, bJ as clearTimbalTheme, bK as connectionRowListClass, bL as createTimbalTheme, bM as ensureThemeFontLink, bN as flushBarCategoryGap, bO as flushLineAreaEdgeToEdge, bP as formatLintReport, bQ as getStoredThemePreset, bR as getThemePreset, bS as lintGeneratedUi, bT as resolveChartMargin, bU as resolveTooltipCategory, bV as reviewGeneratedUi, bW as themeToCss, bX as useAppCopilotContext, bY as useAppShellChat, bZ as useAppShellNav, b_ as useInterval, b$ as useLiveQuery } from './chart-artifact-Q5QgMtbj.js';
9
+ export { d as APP_KIT_AGENT_INSTRUCTIONS, v as AppBreadcrumbItem, e as AppChatPanel, f as AppChatPanelProps, g as AppConfirmDialog, h as AppConfirmDialogProps, i as AppCopilotContextValue, j as AppCopilotProvider, k as AppCopilotProviderProps, l as AppShell, m as AppShellChatControls, n as AppShellChatTrigger, o as AppShellChatTriggerProps, p as AppShellNavControls, q as AppShellProps, r as AppShellSidebarTrigger, s as AppShellSidebarTriggerProps, t as AppShellTopbar, u as AppShellTopbarProps, B as BreadcrumbEntry, w as Breadcrumbs, x as BreadcrumbsProps, C as CHART_PALETTE, y as COLOR_UTILITY_PREFIXES, z as ChartArtifactView, F as ChartPanel, G as ChartPanelProps, H as ChartSeries, I as ChartTooltipIndicator, J as ChartVariant, K as ConnectionRow, L as ConnectionRowList, M as ConnectionRowListProps, N as ConnectionRowProps, O as DangerZone, P as DangerZoneAction, Q as DangerZoneActionProps, R as DangerZoneProps, S as DataTable, T as DataTableColumn, U as DataTableProps, V as DataTableSort, W as DataTableSortDirection, X as DescriptionItem, Y as DescriptionList, Z as DescriptionListProps, _ as EmptyState, $ as EmptyStateProps, a0 as ExpandableSection, a1 as ExpandableSectionProps, a2 as Field, a3 as FieldInput, a4 as FieldInputProps, a5 as FieldProps, a6 as FieldRow, a7 as FieldRowProps, a8 as FieldSelect, a9 as FieldSelectProps, aa as FieldSwitch, ab as FieldSwitchProps, ac as FieldTextarea, ad as FieldTextareaProps, ae as FilterBar, af as FilterBarProps, ag as FilterField, ah as FilterFieldProps, ai as FloatingUnsavedChangesBar, aj as FloatingUnsavedChangesBarProps, ak as FormSection, al as FormSectionProps, am as HOUSE_RULES, an as HouseRule, ao as INTEGRATION_CATALOG_CARD_HEIGHT_CLASS, ap as InfoCard, aq as InfoCardProps, ar as InfoCardTone, as as IntegrationCard, at as IntegrationCardProps, au as IntegrationCardStatus, av as IntegrationsEmptyState, aw as IntegrationsEmptyStateProps, ax as LineAreaChart, ay as LineAreaChartProps, az as LintFinding, aA as LintOptions, aB as LintResult, aC as LintSeverity, aD as MetricChartCard, aE as MetricChartCardProps, aF as MetricChartMetric, aG as MetricRow, aH as MetricRowItem, aI as MetricRowProps, aJ as MetricTile, aK as MetricTileProps, aL as Page, aM as PageHeader, aN as PageHeaderProps, aO as PageProps, aP as PieChart, aQ as PieChartProps, aR as PlanBadge, aS as PlanBadgeProps, aT as PlanBadgeTone, aU as RESERVED_GRADIENT_TOKENS, aV as RadarChart, aW as RadarChartProps, aX as RadialChart, aY as RadialChartProps, aZ as ResourceCard, a_ as ResourceCardProps, a$ as ReviewResult, b0 as SEMANTIC_COLOR_TOKENS, b1 as SLOP_BUDGETS, b2 as SearchInput, b3 as SearchInputProps, b4 as Section, b5 as SectionProps, b6 as SemanticColorToken, b7 as SettingsSection, b8 as SettingsSectionHeader, b9 as SettingsSectionHeaderProps, ba as SettingsSectionProps, bb as Sparkline, bc as SparklineProps, bd as StatTile, be as StatTileProps, bf as StatusBadge, bg as StatusBadgeProps, bh as StatusBadgeTone, bi as StatusDot, bj as StatusDotProps, bk as StatusDotTone, bl as SubNav, bm as SubNavItem, bn as SubNavProps, bo as SurfaceCard, bp as SurfaceCardProps, bq as TAILWIND_PALETTE_COLORS, br as THEME_AGENT_INSTRUCTIONS, bs as TIMBAL_THEME_PRESETS, bt as ThemeShadow, bu as ThemeToCssOptions, bv as ThemeTokenMap, bw as TimbalThemeIntent, bx as TimbalThemePreset, by as TimbalThemePresetId, bz as TimbalThemeStyle, bA as TimbalThemeStyleProps, bB as TimbalThemeTokens, bC as TimbalThemeTypography, bD as UI_REVIEW_AGENT_INSTRUCTIONS, bE as UseLiveQueryOptions, bF as UseLiveQueryResult, bH as applyThemePreset, bI as applyTimbalTheme, bJ as clearTimbalTheme, bK as connectionRowListClass, bL as createTimbalTheme, bM as ensureThemeFontLink, bN as flushBarCategoryGap, bO as flushLineAreaEdgeToEdge, bP as formatLintReport, bQ as getStoredThemePreset, bR as getThemePreset, bS as lintGeneratedUi, bT as resolveChartMargin, bU as resolveTooltipCategory, bV as reviewGeneratedUi, bW as themeToCss, bX as useAppCopilotContext, bY as useAppShellChat, bZ as useAppShellNav, b_ as useInterval, b$ as useLiveQuery } from './chart-artifact-CMnDys2t.js';
10
10
  export { B as Button } from './button-BoyX5pM_.js';
11
11
  import React__default, { FC, ReactNode } from 'react';
12
12
  export { A as AVATAR_PRIMARY_FALLBACK_CLASS, a as Accordion, b as AccordionContent, c as AccordionItem, d as AccordionTrigger, e as Alert, f as AlertDescription, g as AlertDialog, h as AlertDialogAction, i as AlertDialogCancel, j as AlertDialogContent, k as AlertDialogDescription, l as AlertDialogFooter, m as AlertDialogHeader, n as AlertDialogOverlay, o as AlertDialogPortal, p as AlertDialogTitle, q as AlertDialogTrigger, r as AlertTitle, s as AspectRatio, t as Avatar, u as AvatarFallback, v as AvatarGroup, w as AvatarGroupProps, x as AvatarImage, B as Badge, y as Banner, z as BannerProps, C as Breadcrumb, D as BreadcrumbEllipsis, E as BreadcrumbItem, F as BreadcrumbLink, G as BreadcrumbList, H as BreadcrumbPage, I as BreadcrumbSeparator, J as CONTROL_SIZE, K as Calendar, L as CalendarDayButton, M as Card, N as CardContent, O as CardDescription, P as CardFooter, Q as CardHeader, R as CardTitle, S as Checkbox, T as CircularProgress, U as CircularProgressProps, V as Collapsible, W as CollapsibleContent, X as CollapsibleTrigger, Y as Combobox, Z as ComboboxAnchor, _ as ComboboxCommand, $ as ComboboxContent, a0 as ComboboxEmpty, a1 as ComboboxGroup, a2 as ComboboxInput, a3 as ComboboxItem, a4 as ComboboxList, a5 as ComboboxSeparator, a6 as ComboboxShortcut, a7 as ComboboxTrigger, a8 as Command, a9 as CommandDialog, aa as CommandEmpty, ab as CommandGroup, ac as CommandInput, ad as CommandItem, ae as CommandList, af as CommandSeparator, ag as CommandShortcut, ah as ContextMenu, ai as ContextMenuCheckboxItem, aj as ContextMenuContent, ak as ContextMenuGroup, al as ContextMenuItem, am as ContextMenuLabel, an as ContextMenuRadioGroup, ao as ContextMenuRadioItem, ap as ContextMenuSeparator, aq as ContextMenuShortcut, ar as ContextMenuSub, as as ContextMenuSubContent, at as ContextMenuSubTrigger, au as ContextMenuTrigger, av as ControlClassOptions, aw as ControlShape, ax as ControlSize, ay as CopyButton, az as CopyButtonProps, aA as DatePicker, aB as DatePickerButton, aC as DatePickerCalendar, aD as DatePickerContent, aE as DatePickerTrigger, aF as Dialog, aG as DialogClose, aH as DialogContent, aI as DialogDescription, aJ as DialogFooter, aK as DialogHeader, aL as DialogOverlay, aM as DialogPortal, aN as DialogTitle, aO as DialogTrigger, aP as DropdownMenu, aQ as DropdownMenuCheckboxItem, aR as DropdownMenuContent, aS as DropdownMenuGroup, aT as DropdownMenuItem, aU as DropdownMenuLabel, aV as DropdownMenuRadioGroup, aW as DropdownMenuRadioItem, aX as DropdownMenuSeparator, aY as DropdownMenuShortcut, aZ as DropdownMenuSub, a_ as DropdownMenuSubContent, a$ as DropdownMenuSubTrigger, b0 as DropdownMenuTrigger, b1 as Form, b2 as FormControl, b3 as FormField, b4 as FormItem, b5 as FormLabel, b6 as FormMessage, b7 as FormSubmit, b8 as HoverCard, b9 as HoverCardContent, ba as HoverCardTrigger, bb as Input, bc as InputGroup, bd as InputGroupAddon, be as InputGroupInput, bf as InputGroupText, bg as InputOTP, bh as InputOTPGroup, bi as InputOTPHiddenInput, bj as InputOTPSeparator, bk as InputOTPSlot, bl as Kbd, bm as KbdGroup, bn as Label, bo as MemoPillSegmentedTabs, bp as Menubar, bq as MenubarCheckboxItem, br as MenubarContent, bs as MenubarItem, bt as MenubarLabel, bu as MenubarMenu, bv as MenubarRadioGroup, bw as MenubarRadioItem, bx as MenubarSeparator, by as MenubarShortcut, bz as MenubarSub, bA as MenubarSubContent, bB as MenubarSubTrigger, bC as MenubarTrigger, bD as NavigationMenu, bE as NavigationMenuContent, bF as NavigationMenuIndicator, bG as NavigationMenuItem, bH as NavigationMenuLink, bI as NavigationMenuList, bJ as NavigationMenuTrigger, bK as NavigationMenuViewport, bL as NumberField, bM as NumberFieldProps, bN as Pagination, bO as PaginationContent, bP as PaginationEllipsis, bQ as PaginationItem, bR as PaginationLink, bS as PaginationNext, bT as PaginationPrevious, bU as PillSegmentedTab, bV as PillSegmentedTabs, bW as PillSegmentedTabsProps, bX as Popover, bY as PopoverAnchor, bZ as PopoverContent, b_ as PopoverTrigger, b$ as Progress, c0 as RadioGroup, c1 as RadioGroupItem, c2 as Rating, c3 as RatingProps, c4 as ScrollArea, c5 as ScrollBar, c6 as Select, c7 as SelectContent, c8 as SelectGroup, c9 as SelectItem, ca as SelectLabel, cb as SelectScrollDownButton, cc as SelectScrollUpButton, cd as SelectSeparator, ce as SelectTrigger, cf as SelectValue, cg as Separator, ch as Sheet, ci as SheetClose, cj as SheetContent, ck as SheetDescription, cl as SheetFooter, cm as SheetHeader, cn as SheetTitle, co as SheetTrigger, cp as Shimmer, cq as Skeleton, cr as Slider, cs as Snippet, ct as SnippetProps, cu as Spinner, cv as Stepper, cw as StepperProps, cx as StepperStep, cy as Switch, cz as Table, cA as TableBody, cB as TableCaption, cC as TableCell, cD as TableFooter, cE as TableHead, cF as TableHeader, cG as TableRow, cH as TagInput, cI as TagInputProps, cJ as TextShimmerProps, cK as Textarea, cL as Timeline, cM as TimelineItem, cN as TimelineProps, cO as Toast, cP as ToastAction, cQ as ToastClose, cR as ToastDescription, cS as ToastProps, cT as ToastProvider, cU as ToastTitle, cV as ToastViewport, cW as Toaster, cX as Toggle, cY as ToggleGroup, cZ as ToggleGroupItem, c_ as Toolbar, c$ as ToolbarButton, d0 as ToolbarLink, d1 as ToolbarSeparator, d2 as ToolbarToggleGroup, d3 as ToolbarToggleItem, d4 as Tooltip, d5 as TooltipContent, d6 as TooltipProvider, d7 as TooltipTrigger, d8 as alertVariants, d9 as avatarChartVariantClass, da as badgeVariants, db as controlClass, dc as controlSurfaceClass, dd as formatPickerDate, de as navigationMenuTriggerStyle, df as overlayAnimationClass, dg as overlayItemClass, dh as overlayListPanelClass, di as overlaySurfaceClass, dj as toast, dk as toggleVariants, dl as useToast } from './circular-progress-Ci8L-Hfa.js';
package/dist/index.esm.js CHANGED
@@ -75,7 +75,7 @@ import {
75
75
  useAppShellNav,
76
76
  useInterval,
77
77
  useLiveQuery
78
- } from "./chunk-YCXN67SD.esm.js";
78
+ } from "./chunk-VOWNCS3F.esm.js";
79
79
  import {
80
80
  THREAD_DEFAULT_MAX_WIDTH,
81
81
  assistantMessageContentClass,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timbal-ai/timbal-react",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "React components and runtime for building Timbal chat and studio apps",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",