@invana/ui 0.0.32 → 0.0.34
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 +92 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +69 -10
- package/dist/index.d.ts +69 -10
- package/dist/index.js +91 -15
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -3174,6 +3174,14 @@ var stackVariants = classVarianceAuthority.cva("flex min-w-0", {
|
|
|
3174
3174
|
wrap: {
|
|
3175
3175
|
true: "flex-wrap",
|
|
3176
3176
|
false: ""
|
|
3177
|
+
},
|
|
3178
|
+
/**
|
|
3179
|
+
* A page: the stack takes its parent's height and its last child grows
|
|
3180
|
+
* into what the others leave — a header, then a canvas or a split.
|
|
3181
|
+
*/
|
|
3182
|
+
fill: {
|
|
3183
|
+
true: "h-full min-h-0 [&>:last-child]:min-h-0 [&>:last-child]:flex-1",
|
|
3184
|
+
false: ""
|
|
3177
3185
|
}
|
|
3178
3186
|
},
|
|
3179
3187
|
defaultVariants: {
|
|
@@ -3182,7 +3190,7 @@ var stackVariants = classVarianceAuthority.cva("flex min-w-0", {
|
|
|
3182
3190
|
}
|
|
3183
3191
|
});
|
|
3184
3192
|
var Stack = React25__namespace.forwardRef(
|
|
3185
|
-
({ className, direction, gap, align, justify, wrap, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3193
|
+
({ className, direction, gap, align, justify, wrap, fill, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3186
3194
|
"div",
|
|
3187
3195
|
{
|
|
3188
3196
|
ref,
|
|
@@ -3193,7 +3201,8 @@ var Stack = React25__namespace.forwardRef(
|
|
|
3193
3201
|
// A row lines its items up on their centres unless told otherwise.
|
|
3194
3202
|
align: align ?? (direction === "row" ? "center" : void 0),
|
|
3195
3203
|
justify,
|
|
3196
|
-
wrap
|
|
3204
|
+
wrap,
|
|
3205
|
+
fill
|
|
3197
3206
|
}),
|
|
3198
3207
|
className
|
|
3199
3208
|
),
|
|
@@ -3749,7 +3758,7 @@ var Eyebrow = React25__namespace.forwardRef(
|
|
|
3749
3758
|
{
|
|
3750
3759
|
ref,
|
|
3751
3760
|
className: cn(
|
|
3752
|
-
"flex items-
|
|
3761
|
+
"flex items-center gap-2 text-sm font-semibold uppercase tracking-wide",
|
|
3753
3762
|
tone === "muted" && "text-muted-foreground",
|
|
3754
3763
|
tone === "foreground" && "text-foreground",
|
|
3755
3764
|
tone === "accent" && "text-primary",
|
|
@@ -4154,10 +4163,10 @@ var PURPOSE = {
|
|
|
4154
4163
|
embed: "text in, vector out"
|
|
4155
4164
|
};
|
|
4156
4165
|
var CastTable = React25__namespace.forwardRef(
|
|
4157
|
-
({ cast = {}, resolved, readOnly, seamless, className, ...props }, ref) => {
|
|
4166
|
+
({ cast = {}, resolved, readOnly, seamless, bordered, className, ...props }, ref) => {
|
|
4158
4167
|
const byRole = new Map((resolved ?? []).map((r) => [r.role, r]));
|
|
4159
4168
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref, className: cn("min-w-0", className), ...props, children: [
|
|
4160
|
-
/* @__PURE__ */ jsxRuntime.jsxs(Table, { density: "compact", seamless, children: [
|
|
4169
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Table, { density: "compact", seamless, bordered, children: [
|
|
4161
4170
|
/* @__PURE__ */ jsxRuntime.jsx(TableHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs(TableRow, { children: [
|
|
4162
4171
|
/* @__PURE__ */ jsxRuntime.jsx(TableHead, { className: "w-[5.5rem]", children: "role" }),
|
|
4163
4172
|
/* @__PURE__ */ jsxRuntime.jsx(TableHead, { children: "resolves to" }),
|
|
@@ -4445,26 +4454,29 @@ var VARIANT = {
|
|
|
4445
4454
|
item: "h-full rounded-none px-3 py-2",
|
|
4446
4455
|
hover: "hover:text-foreground",
|
|
4447
4456
|
open: "data-[state=open]:text-foreground",
|
|
4448
|
-
active: "bg-primary/10 text-primary border-b-2 border-primary
|
|
4457
|
+
active: "bg-primary/10 text-primary border-b-2 border-primary translate-y-px",
|
|
4449
4458
|
strip: "items-stretch"
|
|
4450
4459
|
},
|
|
4451
4460
|
/**
|
|
4452
4461
|
* The workbook tab: boxed on top / left / right with an *open bottom*, so it
|
|
4453
|
-
* punches through the strip's own rule — the classic folder-tab notch.
|
|
4462
|
+
* punches through the strip's own rule — the classic folder-tab notch. The
|
|
4463
|
+
* box wears the rule's own colour and the body's fill, so the active tab and
|
|
4464
|
+
* its page read as one surface; the accent is the label plus a 2px line on
|
|
4465
|
+
* the tab's outer edge.
|
|
4454
4466
|
*/
|
|
4455
4467
|
folder: {
|
|
4456
4468
|
item: "h-full rounded-none px-3 py-2 gap-1.5",
|
|
4457
4469
|
hover: "hover:text-foreground",
|
|
4458
4470
|
open: "data-[state=open]:text-foreground",
|
|
4459
|
-
active: "
|
|
4471
|
+
active: "z-10 translate-y-px rounded-t-md border border-b-0 border-border bg-card text-primary shadow-[inset_0_2px_0_var(--color-primary)]",
|
|
4460
4472
|
strip: "items-stretch"
|
|
4461
4473
|
},
|
|
4462
|
-
/** The folder tab turned over, for a strip under its pages: open at the top, rounded below. */
|
|
4474
|
+
/** The folder tab turned over, for a strip under its pages: open at the top, rounded below, accent line underneath. */
|
|
4463
4475
|
"folder-bottom": {
|
|
4464
4476
|
item: "h-full rounded-none px-3 py-2 gap-1.5",
|
|
4465
4477
|
hover: "hover:text-foreground",
|
|
4466
4478
|
open: "data-[state=open]:text-foreground",
|
|
4467
|
-
active: "mt-[-1px] rounded-b-md border border-t-0 border-
|
|
4479
|
+
active: "z-10 mt-[-1px] rounded-b-md border border-t-0 border-border bg-card text-primary shadow-[inset_0_-2px_0_var(--color-primary)]",
|
|
4468
4480
|
strip: "items-stretch"
|
|
4469
4481
|
}
|
|
4470
4482
|
};
|
|
@@ -4814,14 +4826,14 @@ var NavBase = ({
|
|
|
4814
4826
|
sections.start?.content && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4815
4827
|
"div",
|
|
4816
4828
|
{
|
|
4817
|
-
className: `${sectionWrapperClass} ${sections.start.className || ""}`,
|
|
4829
|
+
className: `${sectionWrapperClass} ${isVertical ? "" : "min-w-0 shrink"} ${sections.start.className || ""}`,
|
|
4818
4830
|
children: sections.start.content
|
|
4819
4831
|
}
|
|
4820
4832
|
),
|
|
4821
4833
|
sections.center?.content ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4822
4834
|
"div",
|
|
4823
4835
|
{
|
|
4824
|
-
className: `flex-1 ${isVertical ? "" : "flex justify-center items-center gap-1"} ${sections.center.className || ""}`,
|
|
4836
|
+
className: `flex-1 ${isVertical ? "" : "flex min-w-0 justify-center items-center gap-1"} ${sections.center.className || ""}`,
|
|
4825
4837
|
children: sections.center.content
|
|
4826
4838
|
}
|
|
4827
4839
|
) : (
|
|
@@ -4831,7 +4843,7 @@ var NavBase = ({
|
|
|
4831
4843
|
sections.end?.content && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4832
4844
|
"div",
|
|
4833
4845
|
{
|
|
4834
|
-
className: `${sectionWrapperClass} ${isVertical ? "" : "ml-auto"} ${sections.end.className || ""}`,
|
|
4846
|
+
className: `${sectionWrapperClass} ${isVertical ? "" : "ml-auto shrink-0"} ${sections.end.className || ""}`,
|
|
4835
4847
|
children: sections.end.content
|
|
4836
4848
|
}
|
|
4837
4849
|
)
|
|
@@ -6879,7 +6891,7 @@ var NestedMenu = (props) => {
|
|
|
6879
6891
|
);
|
|
6880
6892
|
};
|
|
6881
6893
|
var PanelBox = React25__namespace.forwardRef(
|
|
6882
|
-
({ title, aside, flush, className, headerClassName, bodyClassName, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6894
|
+
({ title, aside, flush, fill, className, headerClassName, bodyClassName, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6883
6895
|
Card,
|
|
6884
6896
|
{
|
|
6885
6897
|
ref,
|
|
@@ -6888,6 +6900,7 @@ var PanelBox = React25__namespace.forwardRef(
|
|
|
6888
6900
|
// these in a column would read as twenty floating things rather than
|
|
6889
6901
|
// one page. Its corner is the surface dial, as a Card's is.
|
|
6890
6902
|
"flex min-w-0 flex-col overflow-hidden rounded-surface shadow-none",
|
|
6903
|
+
fill && "h-full min-h-0",
|
|
6891
6904
|
className
|
|
6892
6905
|
),
|
|
6893
6906
|
...props,
|
|
@@ -6907,6 +6920,7 @@ var PanelBox = React25__namespace.forwardRef(
|
|
|
6907
6920
|
{
|
|
6908
6921
|
className: cn(
|
|
6909
6922
|
"flex min-w-0 flex-col",
|
|
6923
|
+
fill && "min-h-0 flex-1",
|
|
6910
6924
|
flush ? "p-0" : title != null ? "px-2.5 py-2" : "p-2.5",
|
|
6911
6925
|
bodyClassName
|
|
6912
6926
|
),
|
|
@@ -8127,6 +8141,45 @@ var SectionHeader = React25__namespace.forwardRef(({ icon, title, count, actions
|
|
|
8127
8141
|
}
|
|
8128
8142
|
));
|
|
8129
8143
|
SectionHeader.displayName = "SectionHeader";
|
|
8144
|
+
var TONE7 = { done: "success", current: "info", todo: "queued" };
|
|
8145
|
+
var StageTrail = React25__namespace.forwardRef(
|
|
8146
|
+
({ steps, onPick, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
8147
|
+
"nav",
|
|
8148
|
+
{
|
|
8149
|
+
ref,
|
|
8150
|
+
"aria-label": "Stages",
|
|
8151
|
+
className: cn("@container/trail flex w-full min-w-0 justify-center", className),
|
|
8152
|
+
...props,
|
|
8153
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex min-w-0 items-center gap-1", children: steps.map((step, i) => {
|
|
8154
|
+
const current = step.state === "current";
|
|
8155
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex min-w-0 items-center gap-1", children: [
|
|
8156
|
+
i ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "h-px w-3 shrink bg-border @min-[560px]/trail:w-8" }) : null,
|
|
8157
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
8158
|
+
"button",
|
|
8159
|
+
{
|
|
8160
|
+
type: "button",
|
|
8161
|
+
disabled: !onPick,
|
|
8162
|
+
"aria-current": current ? "step" : void 0,
|
|
8163
|
+
"aria-label": `${step.label} \xB7 ${step.state === "todo" ? "not started" : step.state}`,
|
|
8164
|
+
title: step.label,
|
|
8165
|
+
onClick: () => onPick?.(step.id),
|
|
8166
|
+
className: cn(
|
|
8167
|
+
"inline-flex h-control-sm shrink-0 items-center gap-1.5 rounded-control px-2 text-muted-foreground",
|
|
8168
|
+
"enabled:hover:bg-accent enabled:hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-default",
|
|
8169
|
+
current && "bg-secondary text-foreground"
|
|
8170
|
+
),
|
|
8171
|
+
children: [
|
|
8172
|
+
/* @__PURE__ */ jsxRuntime.jsx(StatusDot, { tone: TONE7[step.state] }),
|
|
8173
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("truncate", !current && "@max-[559px]/trail:sr-only"), children: step.label })
|
|
8174
|
+
]
|
|
8175
|
+
}
|
|
8176
|
+
)
|
|
8177
|
+
] }, step.id);
|
|
8178
|
+
}) })
|
|
8179
|
+
}
|
|
8180
|
+
)
|
|
8181
|
+
);
|
|
8182
|
+
StageTrail.displayName = "StageTrail";
|
|
8130
8183
|
function TabbedPanel({
|
|
8131
8184
|
tabs,
|
|
8132
8185
|
defaultTab,
|
|
@@ -8785,6 +8838,29 @@ var Gantt = React25__namespace.forwardRef(
|
|
|
8785
8838
|
}
|
|
8786
8839
|
);
|
|
8787
8840
|
Gantt.displayName = "Gantt";
|
|
8841
|
+
var HeaderTrail = React25__namespace.forwardRef(
|
|
8842
|
+
({ brand, crumbs, className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("nav", { ref, "aria-label": "Breadcrumb", className: cn("flex min-w-0 items-center gap-1", className), ...props, children: [
|
|
8843
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 select-none px-2 text-xl font-bold", children: brand }),
|
|
8844
|
+
/* @__PURE__ */ jsxRuntime.jsx(Separator, { orientation: "vertical", className: "h-4 shrink-0" }),
|
|
8845
|
+
/* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex min-w-0 items-center gap-1.5 px-1.5 font-bold", children: crumbs.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex min-w-0 items-center gap-1.5", i === crumbs.length - 1 ? "shrink" : "shrink-[2]"), children: [
|
|
8846
|
+
i ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "shrink-0 text-muted-foreground", children: "/" }) : null,
|
|
8847
|
+
c.href || c.onClick ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8848
|
+
"a",
|
|
8849
|
+
{
|
|
8850
|
+
href: c.href ?? "#",
|
|
8851
|
+
onClick: c.onClick ? (e) => {
|
|
8852
|
+
e.preventDefault();
|
|
8853
|
+
c.onClick();
|
|
8854
|
+
} : void 0,
|
|
8855
|
+
"aria-current": i === crumbs.length - 1 ? "page" : void 0,
|
|
8856
|
+
className: "min-w-0 truncate rounded-control hover:text-primary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
8857
|
+
children: c.label
|
|
8858
|
+
}
|
|
8859
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", "aria-current": i === crumbs.length - 1 ? "page" : void 0, children: c.label })
|
|
8860
|
+
] }, `${i}-${c.label}`)) })
|
|
8861
|
+
] })
|
|
8862
|
+
);
|
|
8863
|
+
HeaderTrail.displayName = "HeaderTrail";
|
|
8788
8864
|
var TaskNode = React25__namespace.forwardRef(
|
|
8789
8865
|
({
|
|
8790
8866
|
taskKey,
|
|
@@ -10330,6 +10406,7 @@ exports.FilterChip = FilterChip;
|
|
|
10330
10406
|
exports.FloatingPanel = FloatingPanel;
|
|
10331
10407
|
exports.Gantt = Gantt;
|
|
10332
10408
|
exports.GanttDetailCard = GanttDetailCard;
|
|
10409
|
+
exports.HeaderTrail = HeaderTrail;
|
|
10333
10410
|
exports.HoverCard = HoverCard;
|
|
10334
10411
|
exports.HoverCardContent = HoverCardContent;
|
|
10335
10412
|
exports.HoverCardTrigger = HoverCardTrigger;
|
|
@@ -10482,6 +10559,7 @@ exports.Skeleton = Skeleton;
|
|
|
10482
10559
|
exports.SliceSummary = SliceSummary;
|
|
10483
10560
|
exports.Spinner = Spinner;
|
|
10484
10561
|
exports.Stack = Stack;
|
|
10562
|
+
exports.StageTrail = StageTrail;
|
|
10485
10563
|
exports.StatusDot = StatusDot;
|
|
10486
10564
|
exports.StatusIcon = StatusIcon;
|
|
10487
10565
|
exports.TabbedPanel = TabbedPanel;
|