@invana/ui 0.0.26 → 0.0.28

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/README.md ADDED
@@ -0,0 +1,101 @@
1
+ # @invana/ui
2
+
3
+ Invana's React component library — shadcn-style primitives over Radix, plus the composed
4
+ components the Invana products share.
5
+
6
+ ```bash
7
+ pnpm add @invana/ui
8
+ ```
9
+
10
+ Peer dependencies: `react` and `react-dom` (18 or 19).
11
+
12
+ ## Styles
13
+
14
+ Two ways in, and the difference matters.
15
+
16
+ **Recommended — compile the tokens yourself.** Your Tailwind v4 build sees `@invana/styling`'s
17
+ `@theme` block, so the design tokens (including the type ladder) are real tokens in your build:
18
+
19
+ ```css
20
+ @import "tailwindcss";
21
+
22
+ /* your own source globs, plus this package's so its classes are generated */
23
+ @source "./src/**/*.{ts,tsx}";
24
+ @source "../../node_modules/@invana/ui/dist/**/*.js";
25
+
26
+ @import "@invana/styling/index.css";
27
+ ```
28
+
29
+ **Or ship the precompiled sheet**, if you are not running Tailwind:
30
+
31
+ ```ts
32
+ import '@invana/ui/styles.css';
33
+ ```
34
+
35
+ The precompiled sheet gives you CSS custom properties but **not** the `@theme` tokens — your own
36
+ Tailwind will regenerate `text-sm` at its stock `0.875rem` rather than the kit's alias. Prefer the
37
+ first form when you have a Tailwind build.
38
+
39
+ ## Usage
40
+
41
+ ```tsx
42
+ import { Button, Card, NavHorizontal, cn } from '@invana/ui';
43
+
44
+ export function Toolbar({ active }: { active: boolean }) {
45
+ return (
46
+ <Card className={cn('p-4', active && 'ring-1 ring-ring')}>
47
+ <Button variant="outline">Run</Button>
48
+ </Card>
49
+ );
50
+ }
51
+ ```
52
+
53
+ `cn` is the class merger used throughout the kit — `clsx` + `tailwind-merge`.
54
+
55
+ ## What's in it
56
+
57
+ **Primitives** (`components/ui`) — accordion, alert, alert-dialog, avatar, badge, breadcrumb,
58
+ button, button-group, card, carousel, command, dialog, dropdown-menu, hover-card, item, kbd,
59
+ menubar, navigation-menu, pagination, popover, progress, resizable, scroll-area, separator, sheet,
60
+ sidebar, skeleton, sonner, spinner, status-dot, table, tabs, toggle, toggle-group, tooltip.
61
+
62
+ **Composed** (`components/ui-extended`) — layout and navigation (`NavHorizontal`, `NavVertical`,
63
+ `TabbedPanel`, `PanelStack`, `PanelBox`, `Toolbar`, `TreeView`, `ContextBar`, `FilterBar`,
64
+ `SectionHeader`, `RecordHeader`, `EmptyState`, `Tour`), charts and readouts (`BarChartH`,
65
+ `BarChartV`, `DivergingBar`, `Sparkline`, `HeatStrip`, `Legend`, `MetricTile`, `TaskGantt`,
66
+ `TimelineList`, `PropertyList`), and the Invana-domain composites (`ChatSession`, `EmissionCard`,
67
+ `CitationList`, `ProposalCard`, `DiagnosisCard`, `ClarifyCard`, `CannotAnswerCard`, `AgentChip`,
68
+ `BoundChip`, `TaskNode`, `Terminal`, `DiffList`, `ClampedText`, `RichSelect`).
69
+
70
+ **Typography** (`components/typography`) — exported both individually as `TypographyH1` …
71
+ `TypographyPre`, and as a `Typography` namespace object:
72
+
73
+ ```tsx
74
+ import { Typography, TypographyH1 } from '@invana/ui';
75
+
76
+ <TypographyH1>Runs</TypographyH1>
77
+ <Typography.Lead>Everything that ran today.</Typography.Lead>
78
+ ```
79
+
80
+ `H1`–`H6`, `P`, `Lead`, `Large`, `Small`, `Muted`, `Blockquote`, `Code`, `List`, `Pre`.
81
+
82
+ Also exported: `cn` and the `useOverflowItems` hook.
83
+
84
+ ## Type scale
85
+
86
+ Components declare no font size. Default text inherits the root, and text that is deliberately
87
+ subordinate — a count, a timing, a row's subtitle — uses `text-meta`. Setting `html` to 13px gives
88
+ you an application; 16px gives you a site, and every component follows. Don't hard-code
89
+ `text-sm` / `text-xs` in consuming code: they are compatibility aliases, not options.
90
+
91
+ ## Documentation
92
+
93
+ Every component has a Storybook story. From the monorepo root:
94
+
95
+ ```bash
96
+ pnpm --filter @invana/stoybook dev
97
+ ```
98
+
99
+ ## License
100
+
101
+ MIT © Ravi Raja Merugu
package/dist/index.cjs CHANGED
@@ -2821,6 +2821,36 @@ var AgentChip = React23__namespace.forwardRef(
2821
2821
  )
2822
2822
  );
2823
2823
  AgentChip.displayName = "AgentChip";
2824
+ var SWATCH = {
2825
+ none: "bg-muted-foreground",
2826
+ network: "bg-warning",
2827
+ graph_read: "bg-success",
2828
+ graph_write: "bg-data-2",
2829
+ schema_write: "bg-data-4",
2830
+ ingest: "bg-info",
2831
+ llm: "bg-data-7",
2832
+ plan_write: "bg-data-5",
2833
+ work_write: "bg-destructive"
2834
+ };
2835
+ var BoundChip = React23__namespace.forwardRef(
2836
+ ({ bound, swatchOnly, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
2837
+ "span",
2838
+ {
2839
+ ref,
2840
+ className: cn(
2841
+ "inline-flex max-w-full shrink-0 items-center gap-1.5 font-mono text-meta text-muted-foreground",
2842
+ className
2843
+ ),
2844
+ "aria-label": swatchOnly ? `bound: ${bound}` : void 0,
2845
+ ...props,
2846
+ children: [
2847
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: cn("size-1.5 shrink-0", SWATCH[bound]) }),
2848
+ swatchOnly ? null : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: bound })
2849
+ ]
2850
+ }
2851
+ )
2852
+ );
2853
+ BoundChip.displayName = "BoundChip";
2824
2854
  var stateVariants = classVarianceAuthority.cva("inline-flex shrink-0 items-center gap-1.5 font-medium", {
2825
2855
  variants: {
2826
2856
  tone: {
@@ -4601,17 +4631,59 @@ var MenuItem = ({
4601
4631
  )
4602
4632
  ] });
4603
4633
  };
4634
+ var TONE = {
4635
+ running: "text-info",
4636
+ success: "text-success",
4637
+ warning: "text-warning",
4638
+ error: "text-destructive",
4639
+ info: "text-info"
4640
+ };
4604
4641
  var MetricTile = React23__namespace.forwardRef(
4605
- ({ label, value, caption, className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
4642
+ ({ label, value, caption, tone, meter, className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
4606
4643
  "div",
4607
4644
  {
4608
4645
  ref,
4609
- className: cn("flex flex-col gap-0.5 border border-border bg-card p-2", className),
4646
+ className: cn(
4647
+ "flex flex-col gap-px border border-border bg-card px-3 py-2.5",
4648
+ className
4649
+ ),
4610
4650
  ...props,
4611
4651
  children: [
4612
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-meta text-muted-foreground", children: label }),
4613
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-medium leading-tight", children: value }),
4652
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-meta font-semibold uppercase tracking-wide text-muted-foreground", children: label }),
4653
+ /* @__PURE__ */ jsxRuntime.jsx(
4654
+ "span",
4655
+ {
4656
+ className: cn(
4657
+ // Mono, because a metric is a figure: proportional digits make
4658
+ // `1,880` and `2 / 5` in adjacent tiles sit at different widths, and
4659
+ // a strip of six stops reading as one row of numbers.
4660
+ "font-mono text-lg font-semibold leading-tight",
4661
+ tone ? TONE[tone] : void 0
4662
+ ),
4663
+ children: value
4664
+ }
4665
+ ),
4614
4666
  caption != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-meta text-muted-foreground", children: caption }) : null,
4667
+ meter != null ? (
4668
+ // Not a <Progress>: that is a control-sized, rounded, animated bar for
4669
+ // work in flight. This is a 4px rule that says how much of a ceiling is
4670
+ // gone, and it must not read as a second value in the tile.
4671
+ /* @__PURE__ */ jsxRuntime.jsx(
4672
+ "div",
4673
+ {
4674
+ className: "mt-1 h-1 w-full bg-muted",
4675
+ role: "img",
4676
+ "aria-label": `${Math.round(Math.min(Math.max(meter, 0), 1) * 100)}% of the ceiling`,
4677
+ children: /* @__PURE__ */ jsxRuntime.jsx(
4678
+ "div",
4679
+ {
4680
+ className: cn("h-full", tone ? TONE[tone] : "text-primary", "bg-current"),
4681
+ style: { width: `${Math.min(Math.max(meter, 0), 1) * 100}%` }
4682
+ }
4683
+ )
4684
+ }
4685
+ )
4686
+ ) : null,
4615
4687
  children
4616
4688
  ]
4617
4689
  }
@@ -4619,12 +4691,13 @@ var MetricTile = React23__namespace.forwardRef(
4619
4691
  );
4620
4692
  MetricTile.displayName = "MetricTile";
4621
4693
  var MetricGrid = React23__namespace.forwardRef(
4622
- ({ minTileWidth = 120, className, style, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4694
+ ({ minTileWidth = 120, gap = 6, className, style, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
4623
4695
  "div",
4624
4696
  {
4625
4697
  ref,
4626
- className: cn("grid gap-1.5", className),
4698
+ className: cn("grid", className),
4627
4699
  style: {
4700
+ gap,
4628
4701
  gridTemplateColumns: `repeat(auto-fit, minmax(${minTileWidth}px, 1fr))`,
4629
4702
  ...style
4630
4703
  },
@@ -4676,6 +4749,67 @@ var NestedMenu = (props) => {
4676
4749
  }
4677
4750
  );
4678
4751
  };
4752
+ var Eyebrow = React23__namespace.forwardRef(
4753
+ ({ aside, tone = "muted", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
4754
+ "div",
4755
+ {
4756
+ ref,
4757
+ className: cn(
4758
+ "flex items-baseline gap-2 text-meta font-semibold uppercase tracking-wide",
4759
+ tone === "muted" && "text-muted-foreground",
4760
+ tone === "foreground" && "text-foreground",
4761
+ tone === "accent" && "text-primary",
4762
+ className
4763
+ ),
4764
+ ...props,
4765
+ children: [
4766
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children }),
4767
+ aside != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto shrink-0 font-normal normal-case tracking-normal text-muted-foreground", children: aside }) : null
4768
+ ]
4769
+ }
4770
+ )
4771
+ );
4772
+ Eyebrow.displayName = "Eyebrow";
4773
+ var PanelBox = React23__namespace.forwardRef(
4774
+ ({ title, aside, flush, className, headerClassName, bodyClassName, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
4775
+ Card,
4776
+ {
4777
+ ref,
4778
+ className: cn(
4779
+ // A band is square and flat: the radius and the lift belong to cards
4780
+ // that float, and twenty of these in a column would read as twenty
4781
+ // floating things rather than one page.
4782
+ "flex min-w-0 flex-col overflow-hidden rounded-control shadow-none",
4783
+ className
4784
+ ),
4785
+ ...props,
4786
+ children: [
4787
+ /* @__PURE__ */ jsxRuntime.jsx(
4788
+ "div",
4789
+ {
4790
+ className: cn(
4791
+ "flex h-[31px] shrink-0 items-center border-b border-border px-2.5",
4792
+ headerClassName
4793
+ ),
4794
+ children: /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { aside, className: "w-full", children: title })
4795
+ }
4796
+ ),
4797
+ /* @__PURE__ */ jsxRuntime.jsx(
4798
+ "div",
4799
+ {
4800
+ className: cn(
4801
+ "flex min-w-0 flex-col",
4802
+ flush ? "p-0" : "px-2.5 py-2",
4803
+ bodyClassName
4804
+ ),
4805
+ children
4806
+ }
4807
+ )
4808
+ ]
4809
+ }
4810
+ )
4811
+ );
4812
+ PanelBox.displayName = "PanelBox";
4679
4813
  function PanelContent({
4680
4814
  title,
4681
4815
  titleText,
@@ -4954,6 +5088,47 @@ var PropertyRow = React23__namespace.forwardRef(
4954
5088
  )
4955
5089
  );
4956
5090
  PropertyRow.displayName = "PropertyRow";
5091
+ var RecordHeader = React23__namespace.forwardRef(
5092
+ ({ tone, crumbs, chips, actions, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5093
+ "div",
5094
+ {
5095
+ ref,
5096
+ className: cn(
5097
+ "flex shrink-0 items-center gap-2.5 border-b border-border bg-card px-4 py-2.5",
5098
+ className
5099
+ ),
5100
+ ...props,
5101
+ children: [
5102
+ tone ? /* @__PURE__ */ jsxRuntime.jsx(StatusDot, { tone, size: "lg" }) : null,
5103
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 items-center gap-1.5", children: crumbs.map((crumb, i) => {
5104
+ const last = i === crumbs.length - 1;
5105
+ return /* @__PURE__ */ jsxRuntime.jsxs(React23__namespace.Fragment, { children: [
5106
+ i > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
5107
+ lucideReact.ChevronRight,
5108
+ {
5109
+ "aria-hidden": true,
5110
+ className: "size-3.5 shrink-0 text-muted-foreground/60"
5111
+ }
5112
+ ) : null,
5113
+ /* @__PURE__ */ jsxRuntime.jsx(
5114
+ "span",
5115
+ {
5116
+ className: cn(
5117
+ "min-w-0 truncate font-mono",
5118
+ last ? "text-base font-semibold text-foreground" : "text-muted-foreground"
5119
+ ),
5120
+ children: crumb
5121
+ }
5122
+ )
5123
+ ] }, i);
5124
+ }) }),
5125
+ chips ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex shrink-0 items-center gap-1.5", children: chips }) : null,
5126
+ actions ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: actions }) : null
5127
+ ]
5128
+ }
5129
+ )
5130
+ );
5131
+ RecordHeader.displayName = "RecordHeader";
4957
5132
  var ProposalCard = React23__namespace.forwardRef(
4958
5133
  ({
4959
5134
  title,
@@ -5273,27 +5448,6 @@ var SearchInput = ({
5273
5448
  }
5274
5449
  );
5275
5450
  };
5276
- var Eyebrow = React23__namespace.forwardRef(
5277
- ({ aside, tone = "muted", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5278
- "div",
5279
- {
5280
- ref,
5281
- className: cn(
5282
- "flex items-baseline gap-2 text-meta font-semibold uppercase tracking-wide",
5283
- tone === "muted" && "text-muted-foreground",
5284
- tone === "foreground" && "text-foreground",
5285
- tone === "accent" && "text-primary",
5286
- className
5287
- ),
5288
- ...props,
5289
- children: [
5290
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children }),
5291
- aside != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto shrink-0 font-normal normal-case tracking-normal text-muted-foreground", children: aside }) : null
5292
- ]
5293
- }
5294
- )
5295
- );
5296
- Eyebrow.displayName = "Eyebrow";
5297
5451
  var SectionHeader = React23__namespace.forwardRef(({ icon, title, count, actions, bare, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5298
5452
  "div",
5299
5453
  {
@@ -5760,6 +5914,85 @@ var TaskGantt = React23__namespace.forwardRef(
5760
5914
  }
5761
5915
  );
5762
5916
  TaskGantt.displayName = "TaskGantt";
5917
+ var TaskNode = React23__namespace.forwardRef(
5918
+ ({ taskKey, bound, status, tags, meta, selected, gate, dim, ghost, className, ...props }, ref) => {
5919
+ if (ghost) {
5920
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5921
+ "div",
5922
+ {
5923
+ ref,
5924
+ className: cn(
5925
+ "flex w-[146px] flex-col gap-1 border border-dashed border-border p-2",
5926
+ "text-meta text-muted-foreground",
5927
+ className
5928
+ ),
5929
+ ...props,
5930
+ children: [
5931
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate font-mono", children: taskKey }),
5932
+ meta != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: meta }) : null
5933
+ ]
5934
+ }
5935
+ );
5936
+ }
5937
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5938
+ "div",
5939
+ {
5940
+ ref,
5941
+ "data-selected": selected || void 0,
5942
+ className: cn(
5943
+ "relative flex w-[146px] flex-col gap-1 border bg-card p-2 shadow-xs",
5944
+ // The ring says one thing at a time, in this order: you picked it,
5945
+ // it is held for approval, it failed. A node cannot be two of those.
5946
+ selected ? "border-primary ring-2 ring-primary/25" : gate ? "border-warning" : status === "error" ? "border-destructive" : "border-border",
5947
+ dim && "opacity-45",
5948
+ className
5949
+ ),
5950
+ ...props,
5951
+ children: [
5952
+ selected ? ["-left-1 -top-1", "-right-1 -top-1", "-bottom-1 -left-1", "-bottom-1 -right-1"].map(
5953
+ (pos) => /* @__PURE__ */ jsxRuntime.jsx(
5954
+ "span",
5955
+ {
5956
+ "aria-hidden": true,
5957
+ className: cn("absolute size-[7px] border-[1.5px] border-primary bg-card", pos)
5958
+ },
5959
+ pos
5960
+ )
5961
+ ) : null,
5962
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
5963
+ status ? /* @__PURE__ */ jsxRuntime.jsx(StatusDot, { tone: status, size: "sm" }) : null,
5964
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate font-mono", children: taskKey })
5965
+ ] }),
5966
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [
5967
+ /* @__PURE__ */ jsxRuntime.jsx(BoundChip, { bound }),
5968
+ tags?.map((tag, i) => /* @__PURE__ */ jsxRuntime.jsx(
5969
+ "span",
5970
+ {
5971
+ className: cn(
5972
+ "shrink-0 border px-1 text-meta",
5973
+ tag.tone === "warning" ? "border-warning/40 text-warning" : "border-border text-muted-foreground"
5974
+ ),
5975
+ children: tag.label
5976
+ },
5977
+ i
5978
+ ))
5979
+ ] }),
5980
+ meta != null ? /* @__PURE__ */ jsxRuntime.jsx(
5981
+ "div",
5982
+ {
5983
+ className: cn(
5984
+ "truncate text-meta",
5985
+ gate ? "text-warning" : "text-muted-foreground"
5986
+ ),
5987
+ children: meta
5988
+ }
5989
+ ) : null
5990
+ ]
5991
+ }
5992
+ );
5993
+ }
5994
+ );
5995
+ TaskNode.displayName = "TaskNode";
5763
5996
  var TemplatePicker = React23__namespace.forwardRef(({ heading, options, value, onSelect, footnote, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5764
5997
  "div",
5765
5998
  {
@@ -5800,6 +6033,12 @@ var TemplatePicker = React23__namespace.forwardRef(({ heading, options, value, o
5800
6033
  }
5801
6034
  ));
5802
6035
  TemplatePicker.displayName = "TemplatePicker";
6036
+ var LEVEL = {
6037
+ info: "text-success",
6038
+ warn: "text-warning",
6039
+ error: "text-destructive",
6040
+ debug: "text-muted-foreground"
6041
+ };
5803
6042
  var MARKER = {
5804
6043
  prompt: "$",
5805
6044
  output: "\u2192",
@@ -5831,19 +6070,19 @@ var Terminal = React23__namespace.forwardRef(
5831
6070
  );
5832
6071
  Terminal.displayName = "Terminal";
5833
6072
  var TerminalLine = React23__namespace.forwardRef(
5834
- ({ kind = "output", columns, className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
6073
+ ({ kind = "output", level, levelColumn = 1, columns, className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5835
6074
  "div",
5836
6075
  {
5837
6076
  ref,
5838
6077
  className: cn(
5839
6078
  "items-baseline gap-2 whitespace-pre",
5840
- columns ? "grid [grid-template-columns:auto_var(--terminal-cols)]" : "flex",
6079
+ columns ? level ? "grid [grid-template-columns:var(--terminal-cols)]" : "grid [grid-template-columns:auto_var(--terminal-cols)]" : "flex",
5841
6080
  kind === "comment" && "text-muted-foreground",
5842
6081
  className
5843
6082
  ),
5844
6083
  ...props,
5845
6084
  children: [
5846
- /* @__PURE__ */ jsxRuntime.jsx(
6085
+ level ? null : /* @__PURE__ */ jsxRuntime.jsx(
5847
6086
  "span",
5848
6087
  {
5849
6088
  "aria-hidden": true,
@@ -5859,7 +6098,9 @@ var TerminalLine = React23__namespace.forwardRef(
5859
6098
  {
5860
6099
  className: cn(
5861
6100
  "min-w-0 truncate",
5862
- i === columns.length - 1 && "text-muted-foreground"
6101
+ // A log tints its level cell and greys everything that is not the
6102
+ // message; a transcript greys only its trailing cell.
6103
+ level ? i === levelColumn ? LEVEL[level] : i === columns.length - 1 ? void 0 : "text-muted-foreground" : i === columns.length - 1 && "text-muted-foreground"
5863
6104
  ),
5864
6105
  children: c
5865
6106
  },
@@ -6569,6 +6810,7 @@ exports.AvatarImage = AvatarImage;
6569
6810
  exports.Badge = Badge;
6570
6811
  exports.BarChartH = BarChartH;
6571
6812
  exports.BarChartV = BarChartV;
6813
+ exports.BoundChip = BoundChip;
6572
6814
  exports.Breadcrumb = Breadcrumb;
6573
6815
  exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
6574
6816
  exports.BreadcrumbItem = BreadcrumbItem;
@@ -6719,6 +6961,7 @@ exports.PaginationItem = PaginationItem;
6719
6961
  exports.PaginationLink = PaginationLink;
6720
6962
  exports.PaginationNext = PaginationNext;
6721
6963
  exports.PaginationPrevious = PaginationPrevious;
6964
+ exports.PanelBox = PanelBox;
6722
6965
  exports.PanelContent = PanelContent;
6723
6966
  exports.PanelStack = PanelStack;
6724
6967
  exports.Popover = Popover;
@@ -6729,6 +6972,7 @@ exports.PropertyList = PropertyList;
6729
6972
  exports.PropertyRow = PropertyRow;
6730
6973
  exports.ProposalCard = ProposalCard;
6731
6974
  exports.RatingControl = RatingControl;
6975
+ exports.RecordHeader = RecordHeader;
6732
6976
  exports.RepairNote = RepairNote;
6733
6977
  exports.ResizableHandle = ResizableHandle;
6734
6978
  exports.ResizablePanel = ResizablePanel;
@@ -6792,6 +7036,7 @@ exports.TabsList = TabsList;
6792
7036
  exports.TabsTrigger = TabsTrigger;
6793
7037
  exports.TaskGantt = TaskGantt;
6794
7038
  exports.TaskGanttDetailCard = TaskGanttDetailCard;
7039
+ exports.TaskNode = TaskNode;
6795
7040
  exports.TemplatePicker = TemplatePicker;
6796
7041
  exports.Terminal = Terminal;
6797
7042
  exports.TerminalLine = TerminalLine;
@@ -6829,6 +7074,7 @@ exports.TypographySmall = TypographySmall;
6829
7074
  exports.UnderDevelopment = UnderDevelopment;
6830
7075
  exports.agentChipVariants = agentChipVariants;
6831
7076
  exports.badgeVariants = badgeVariants;
7077
+ exports.boundSwatch = SWATCH;
6832
7078
  exports.buttonGroupVariants = buttonGroupVariants;
6833
7079
  exports.buttonVariants = buttonVariants;
6834
7080
  exports.chatSessionGutterClass = chatSessionGutterClass;