@invana/ui 0.0.25 → 0.0.27
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 +319 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +265 -3
- package/dist/index.d.ts +265 -3
- package/dist/index.js +315 -43
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
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(
|
|
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(
|
|
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
|
|
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,
|
|
@@ -4719,6 +4853,8 @@ function PanelContent({
|
|
|
4719
4853
|
}
|
|
4720
4854
|
function PanelStack({
|
|
4721
4855
|
sections,
|
|
4856
|
+
stackRef,
|
|
4857
|
+
onCollapsedChange,
|
|
4722
4858
|
headerHeight = 35,
|
|
4723
4859
|
withHandle = false,
|
|
4724
4860
|
className,
|
|
@@ -4763,19 +4899,26 @@ function PanelStack({
|
|
|
4763
4899
|
for (const s of targets) refs.current[s.id]?.collapse();
|
|
4764
4900
|
group.setLayout(next);
|
|
4765
4901
|
}, []);
|
|
4766
|
-
const
|
|
4902
|
+
const notify = React23__namespace.useRef(onCollapsedChange);
|
|
4903
|
+
React23__namespace.useEffect(() => {
|
|
4904
|
+
notify.current = onCollapsedChange;
|
|
4905
|
+
}, [onCollapsedChange]);
|
|
4906
|
+
const collapsedRef = React23__namespace.useRef(collapsed);
|
|
4907
|
+
collapsedRef.current = collapsed;
|
|
4908
|
+
const collapsePanel = React23__namespace.useCallback((id) => {
|
|
4767
4909
|
const ref = refs.current[id];
|
|
4768
|
-
if (!ref) return;
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4910
|
+
if (!ref || ref.isCollapsed()) return;
|
|
4911
|
+
ref.collapse();
|
|
4912
|
+
}, []);
|
|
4913
|
+
const expandPanel = React23__namespace.useCallback((id) => {
|
|
4914
|
+
const ref = refs.current[id];
|
|
4915
|
+
if (!ref || !ref.isCollapsed()) return;
|
|
4773
4916
|
ref.expand();
|
|
4774
4917
|
if (!ref.isCollapsed()) return;
|
|
4775
4918
|
const group = groupRef.current;
|
|
4776
4919
|
if (!group) return;
|
|
4777
4920
|
const layout = group.getLayout();
|
|
4778
|
-
const donor = Object.entries(layout).filter(([panelId]) => panelId !== id && !
|
|
4921
|
+
const donor = Object.entries(layout).filter(([panelId]) => panelId !== id && !collapsedRef.current[panelId]).sort((a, b) => b[1] - a[1])[0];
|
|
4779
4922
|
if (!donor) return;
|
|
4780
4923
|
const [donorId, donorPct] = donor;
|
|
4781
4924
|
const share = donorPct / 2;
|
|
@@ -4784,7 +4927,26 @@ function PanelStack({
|
|
|
4784
4927
|
[id]: (layout[id] ?? 0) + share,
|
|
4785
4928
|
[donorId]: donorPct - share
|
|
4786
4929
|
});
|
|
4787
|
-
};
|
|
4930
|
+
}, []);
|
|
4931
|
+
const toggle = React23__namespace.useCallback(
|
|
4932
|
+
(id) => {
|
|
4933
|
+
const ref = refs.current[id];
|
|
4934
|
+
if (!ref) return;
|
|
4935
|
+
if (ref.isCollapsed()) expandPanel(id);
|
|
4936
|
+
else collapsePanel(id);
|
|
4937
|
+
},
|
|
4938
|
+
[expandPanel, collapsePanel]
|
|
4939
|
+
);
|
|
4940
|
+
React23__namespace.useImperativeHandle(
|
|
4941
|
+
stackRef,
|
|
4942
|
+
() => ({
|
|
4943
|
+
expand: expandPanel,
|
|
4944
|
+
collapse: collapsePanel,
|
|
4945
|
+
toggle,
|
|
4946
|
+
isCollapsed: (id) => !!collapsedRef.current[id]
|
|
4947
|
+
}),
|
|
4948
|
+
[expandPanel, collapsePanel, toggle]
|
|
4949
|
+
);
|
|
4788
4950
|
return (
|
|
4789
4951
|
// Header actions are nav items, and those carry tooltips — provide the
|
|
4790
4952
|
// context here so a `PanelStack` works outside an app shell too. Nesting
|
|
@@ -4822,9 +4984,12 @@ function PanelStack({
|
|
|
4822
4984
|
},
|
|
4823
4985
|
onResize: (size) => {
|
|
4824
4986
|
const next = size.inPixels <= headerHeight + 1;
|
|
4825
|
-
setCollapsed(
|
|
4826
|
-
(prev
|
|
4827
|
-
|
|
4987
|
+
setCollapsed((prev) => {
|
|
4988
|
+
if (prev[section.id] === next) return prev;
|
|
4989
|
+
const map = { ...prev, [section.id]: next };
|
|
4990
|
+
notify.current?.(map);
|
|
4991
|
+
return map;
|
|
4992
|
+
});
|
|
4828
4993
|
},
|
|
4829
4994
|
className: "flex flex-col overflow-hidden",
|
|
4830
4995
|
children: [
|
|
@@ -4923,6 +5088,47 @@ var PropertyRow = React23__namespace.forwardRef(
|
|
|
4923
5088
|
)
|
|
4924
5089
|
);
|
|
4925
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";
|
|
4926
5132
|
var ProposalCard = React23__namespace.forwardRef(
|
|
4927
5133
|
({
|
|
4928
5134
|
title,
|
|
@@ -5242,27 +5448,6 @@ var SearchInput = ({
|
|
|
5242
5448
|
}
|
|
5243
5449
|
);
|
|
5244
5450
|
};
|
|
5245
|
-
var Eyebrow = React23__namespace.forwardRef(
|
|
5246
|
-
({ aside, tone = "muted", className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5247
|
-
"div",
|
|
5248
|
-
{
|
|
5249
|
-
ref,
|
|
5250
|
-
className: cn(
|
|
5251
|
-
"flex items-baseline gap-2 text-meta font-semibold uppercase tracking-wide",
|
|
5252
|
-
tone === "muted" && "text-muted-foreground",
|
|
5253
|
-
tone === "foreground" && "text-foreground",
|
|
5254
|
-
tone === "accent" && "text-primary",
|
|
5255
|
-
className
|
|
5256
|
-
),
|
|
5257
|
-
...props,
|
|
5258
|
-
children: [
|
|
5259
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children }),
|
|
5260
|
-
aside != null ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto shrink-0 font-normal normal-case tracking-normal text-muted-foreground", children: aside }) : null
|
|
5261
|
-
]
|
|
5262
|
-
}
|
|
5263
|
-
)
|
|
5264
|
-
);
|
|
5265
|
-
Eyebrow.displayName = "Eyebrow";
|
|
5266
5451
|
var SectionHeader = React23__namespace.forwardRef(({ icon, title, count, actions, bare, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5267
5452
|
"div",
|
|
5268
5453
|
{
|
|
@@ -5729,6 +5914,85 @@ var TaskGantt = React23__namespace.forwardRef(
|
|
|
5729
5914
|
}
|
|
5730
5915
|
);
|
|
5731
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";
|
|
5732
5996
|
var TemplatePicker = React23__namespace.forwardRef(({ heading, options, value, onSelect, footnote, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5733
5997
|
"div",
|
|
5734
5998
|
{
|
|
@@ -5769,6 +6033,12 @@ var TemplatePicker = React23__namespace.forwardRef(({ heading, options, value, o
|
|
|
5769
6033
|
}
|
|
5770
6034
|
));
|
|
5771
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
|
+
};
|
|
5772
6042
|
var MARKER = {
|
|
5773
6043
|
prompt: "$",
|
|
5774
6044
|
output: "\u2192",
|
|
@@ -5800,19 +6070,19 @@ var Terminal = React23__namespace.forwardRef(
|
|
|
5800
6070
|
);
|
|
5801
6071
|
Terminal.displayName = "Terminal";
|
|
5802
6072
|
var TerminalLine = React23__namespace.forwardRef(
|
|
5803
|
-
({ kind = "output", columns, className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6073
|
+
({ kind = "output", level, levelColumn = 1, columns, className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5804
6074
|
"div",
|
|
5805
6075
|
{
|
|
5806
6076
|
ref,
|
|
5807
6077
|
className: cn(
|
|
5808
6078
|
"items-baseline gap-2 whitespace-pre",
|
|
5809
|
-
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",
|
|
5810
6080
|
kind === "comment" && "text-muted-foreground",
|
|
5811
6081
|
className
|
|
5812
6082
|
),
|
|
5813
6083
|
...props,
|
|
5814
6084
|
children: [
|
|
5815
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6085
|
+
level ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
5816
6086
|
"span",
|
|
5817
6087
|
{
|
|
5818
6088
|
"aria-hidden": true,
|
|
@@ -5828,7 +6098,9 @@ var TerminalLine = React23__namespace.forwardRef(
|
|
|
5828
6098
|
{
|
|
5829
6099
|
className: cn(
|
|
5830
6100
|
"min-w-0 truncate",
|
|
5831
|
-
|
|
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"
|
|
5832
6104
|
),
|
|
5833
6105
|
children: c
|
|
5834
6106
|
},
|
|
@@ -6538,6 +6810,7 @@ exports.AvatarImage = AvatarImage;
|
|
|
6538
6810
|
exports.Badge = Badge;
|
|
6539
6811
|
exports.BarChartH = BarChartH;
|
|
6540
6812
|
exports.BarChartV = BarChartV;
|
|
6813
|
+
exports.BoundChip = BoundChip;
|
|
6541
6814
|
exports.Breadcrumb = Breadcrumb;
|
|
6542
6815
|
exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
|
|
6543
6816
|
exports.BreadcrumbItem = BreadcrumbItem;
|
|
@@ -6688,6 +6961,7 @@ exports.PaginationItem = PaginationItem;
|
|
|
6688
6961
|
exports.PaginationLink = PaginationLink;
|
|
6689
6962
|
exports.PaginationNext = PaginationNext;
|
|
6690
6963
|
exports.PaginationPrevious = PaginationPrevious;
|
|
6964
|
+
exports.PanelBox = PanelBox;
|
|
6691
6965
|
exports.PanelContent = PanelContent;
|
|
6692
6966
|
exports.PanelStack = PanelStack;
|
|
6693
6967
|
exports.Popover = Popover;
|
|
@@ -6698,6 +6972,7 @@ exports.PropertyList = PropertyList;
|
|
|
6698
6972
|
exports.PropertyRow = PropertyRow;
|
|
6699
6973
|
exports.ProposalCard = ProposalCard;
|
|
6700
6974
|
exports.RatingControl = RatingControl;
|
|
6975
|
+
exports.RecordHeader = RecordHeader;
|
|
6701
6976
|
exports.RepairNote = RepairNote;
|
|
6702
6977
|
exports.ResizableHandle = ResizableHandle;
|
|
6703
6978
|
exports.ResizablePanel = ResizablePanel;
|
|
@@ -6761,6 +7036,7 @@ exports.TabsList = TabsList;
|
|
|
6761
7036
|
exports.TabsTrigger = TabsTrigger;
|
|
6762
7037
|
exports.TaskGantt = TaskGantt;
|
|
6763
7038
|
exports.TaskGanttDetailCard = TaskGanttDetailCard;
|
|
7039
|
+
exports.TaskNode = TaskNode;
|
|
6764
7040
|
exports.TemplatePicker = TemplatePicker;
|
|
6765
7041
|
exports.Terminal = Terminal;
|
|
6766
7042
|
exports.TerminalLine = TerminalLine;
|
|
@@ -6798,6 +7074,7 @@ exports.TypographySmall = TypographySmall;
|
|
|
6798
7074
|
exports.UnderDevelopment = UnderDevelopment;
|
|
6799
7075
|
exports.agentChipVariants = agentChipVariants;
|
|
6800
7076
|
exports.badgeVariants = badgeVariants;
|
|
7077
|
+
exports.boundSwatch = SWATCH;
|
|
6801
7078
|
exports.buttonGroupVariants = buttonGroupVariants;
|
|
6802
7079
|
exports.buttonVariants = buttonVariants;
|
|
6803
7080
|
exports.chatSessionGutterClass = chatSessionGutterClass;
|