@cjlapao/ui-kit 0.2.4 → 0.2.6
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/{CapsuleBlueprint-DwDZ7nii.d.cts → CapsuleBlueprint-BI0jdbTt.d.cts} +16 -1
- package/dist/{CapsuleBlueprint-DwDZ7nii.d.ts → CapsuleBlueprint-BI0jdbTt.d.ts} +16 -1
- package/dist/index.cjs +992 -676
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +36 -0
- package/dist/index.d.cts +160 -13
- package/dist/index.d.ts +160 -13
- package/dist/index.js +923 -614
- package/dist/index.js.map +1 -1
- package/dist/markdown.cjs +14 -2
- package/dist/markdown.cjs.map +1 -1
- package/dist/markdown.d.cts +2 -2
- package/dist/markdown.d.ts +2 -2
- package/dist/markdown.js +14 -2
- package/dist/markdown.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -5338,6 +5338,15 @@ var getSurfacePaddingClass = (padding) => surfacePaddingClasses[padding] ?? surf
|
|
|
5338
5338
|
var getSurfacePaddingClasses = () => ({
|
|
5339
5339
|
...surfacePaddingClasses
|
|
5340
5340
|
});
|
|
5341
|
+
var SURFACE_GUTTER_AXES = ["top", "right", "bottom", "left"];
|
|
5342
|
+
var surfaceGutterClasses = {
|
|
5343
|
+
top: { none: "mt-0", xs: "mt-2", sm: "mt-4", md: "mt-6", lg: "mt-8", xl: "mt-10" },
|
|
5344
|
+
right: { none: "mr-0", xs: "mr-2", sm: "mr-4", md: "mr-6", lg: "mr-8", xl: "mr-10" },
|
|
5345
|
+
bottom: { none: "mb-0", xs: "mb-2", sm: "mb-4", md: "mb-6", lg: "mb-8", xl: "mb-10" },
|
|
5346
|
+
left: { none: "ml-0", xs: "ml-2", sm: "ml-4", md: "ml-6", lg: "ml-8", xl: "ml-10" }
|
|
5347
|
+
};
|
|
5348
|
+
var DEFAULT_SURFACE_GUTTER = "none";
|
|
5349
|
+
var getSurfaceGutterClass = (axis, gutter) => surfaceGutterClasses[axis][gutter] ?? surfaceGutterClasses[axis][DEFAULT_SURFACE_GUTTER];
|
|
5341
5350
|
var NEUTRAL_TONES = [
|
|
5342
5351
|
"neutral",
|
|
5343
5352
|
"slate",
|
|
@@ -15755,12 +15764,23 @@ var ScrollArea = ({
|
|
|
15755
15764
|
mask = false,
|
|
15756
15765
|
tabIndex = 0,
|
|
15757
15766
|
contentClassName,
|
|
15767
|
+
viewportClassName,
|
|
15768
|
+
viewportRef: viewportRefProp,
|
|
15758
15769
|
children,
|
|
15759
15770
|
className = "",
|
|
15760
15771
|
...rest
|
|
15761
15772
|
}) => {
|
|
15762
15773
|
const viewportId = useId7();
|
|
15763
15774
|
const viewportRef = useRef9(null);
|
|
15775
|
+
const setViewportRef = useCallback4(
|
|
15776
|
+
(el) => {
|
|
15777
|
+
viewportRef.current = el;
|
|
15778
|
+
if (typeof viewportRefProp === "function") viewportRefProp(el);
|
|
15779
|
+
else if (viewportRefProp)
|
|
15780
|
+
viewportRefProp.current = el;
|
|
15781
|
+
},
|
|
15782
|
+
[viewportRefProp]
|
|
15783
|
+
);
|
|
15764
15784
|
const contentRef = useRef9(null);
|
|
15765
15785
|
const yTrackRef = useRef9(null);
|
|
15766
15786
|
const xTrackRef = useRef9(null);
|
|
@@ -15902,7 +15922,7 @@ var ScrollArea = ({
|
|
|
15902
15922
|
/* @__PURE__ */ jsx182(
|
|
15903
15923
|
"div",
|
|
15904
15924
|
{
|
|
15905
|
-
ref:
|
|
15925
|
+
ref: setViewportRef,
|
|
15906
15926
|
id: viewportId,
|
|
15907
15927
|
"data-slot": "scrollarea-viewport",
|
|
15908
15928
|
tabIndex: overflow.x || overflow.y ? tabIndex : -1,
|
|
@@ -15917,7 +15937,8 @@ var ScrollArea = ({
|
|
|
15917
15937
|
// and the viewport would simply grow past the frame's cap, get
|
|
15918
15938
|
// clipped by `overflow-hidden` and never learn it was scrollable.
|
|
15919
15939
|
"[scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden",
|
|
15920
|
-
"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-blue-400"
|
|
15940
|
+
"focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-blue-400",
|
|
15941
|
+
viewportClassName
|
|
15921
15942
|
),
|
|
15922
15943
|
children: /* @__PURE__ */ jsx182(
|
|
15923
15944
|
"div",
|
|
@@ -21519,10 +21540,23 @@ var PageHeader = ({
|
|
|
21519
21540
|
children,
|
|
21520
21541
|
variant = "default",
|
|
21521
21542
|
accentColor = "blue",
|
|
21543
|
+
padding,
|
|
21544
|
+
paddingTop,
|
|
21545
|
+
paddingRight,
|
|
21546
|
+
paddingBottom,
|
|
21547
|
+
paddingLeft,
|
|
21548
|
+
corner = DEFAULT_SURFACE_CORNER,
|
|
21522
21549
|
className = "",
|
|
21523
21550
|
...rest
|
|
21524
21551
|
}) => {
|
|
21525
21552
|
const surface = variant === "default" ? null : getSidebarSurfaceTokens(variant, accentColor);
|
|
21553
|
+
const pair = surface ? "xs" : "none";
|
|
21554
|
+
const gutter = {
|
|
21555
|
+
top: paddingTop ?? padding ?? pair,
|
|
21556
|
+
right: paddingRight ?? padding ?? pair,
|
|
21557
|
+
bottom: paddingBottom ?? padding ?? "none",
|
|
21558
|
+
left: paddingLeft ?? padding ?? "none"
|
|
21559
|
+
};
|
|
21526
21560
|
return /* @__PURE__ */ jsxs97(
|
|
21527
21561
|
"header",
|
|
21528
21562
|
{
|
|
@@ -21530,9 +21564,12 @@ var PageHeader = ({
|
|
|
21530
21564
|
className: classNames51(
|
|
21531
21565
|
"flex w-full items-center justify-between gap-4 px-5",
|
|
21532
21566
|
SIDE_MENU_HEADER_HEIGHT,
|
|
21567
|
+
getSurfaceGutterClass("top", gutter.top),
|
|
21568
|
+
getSurfaceGutterClass("right", gutter.right),
|
|
21569
|
+
getSurfaceGutterClass("bottom", gutter.bottom),
|
|
21570
|
+
getSurfaceGutterClass("left", gutter.left),
|
|
21571
|
+
getSurfaceCornerClass(corner),
|
|
21533
21572
|
surface ? classNames51(
|
|
21534
|
-
surface.offset,
|
|
21535
|
-
surface.radius,
|
|
21536
21573
|
"border",
|
|
21537
21574
|
surface.border,
|
|
21538
21575
|
surface.shadow,
|
|
@@ -55697,6 +55734,7 @@ var CONNECTION_FLOW_EDGE_STYLES = [
|
|
|
55697
55734
|
"curved",
|
|
55698
55735
|
"straight"
|
|
55699
55736
|
];
|
|
55737
|
+
var CONNECTION_FLOW_CHILD_LAYOUTS = ["fan", "chain"];
|
|
55700
55738
|
var CONNECTION_FLOW_LOADERS = [
|
|
55701
55739
|
"skeleton",
|
|
55702
55740
|
"spinner",
|
|
@@ -55835,6 +55873,8 @@ var DEFAULT_LAYOUT_OPTIONS = {
|
|
|
55835
55873
|
laneGap: 16,
|
|
55836
55874
|
childGap: 12,
|
|
55837
55875
|
childIndent: 28,
|
|
55876
|
+
rowGap: 12,
|
|
55877
|
+
gridIndent: 28,
|
|
55838
55878
|
edgeStyle: "orthogonal",
|
|
55839
55879
|
cornerRadius: 8,
|
|
55840
55880
|
bypassLift: 18,
|
|
@@ -55860,6 +55900,8 @@ var NODE_CORNER_RADIUS = Object.fromEntries(
|
|
|
55860
55900
|
var nodeTone = (node) => node?.tone ?? (node?.status ? STATUS_TONE[node.status] : "neutral");
|
|
55861
55901
|
var nodeIcon = (node) => node?.icon ?? (node?.status ? STATUS_ICON2[node.status] : void 0);
|
|
55862
55902
|
var nodeIsActive = (node) => node?.active ?? node?.status === "running";
|
|
55903
|
+
var nodeHasFailed = (node) => node?.status === "failed";
|
|
55904
|
+
var toRows = (node) => node.rows ?? (node.children ?? []).map((child) => [child]);
|
|
55863
55905
|
var nodeIsSkipped = (node) => node?.skipped ?? (node?.status === "skipped" ? true : void 0);
|
|
55864
55906
|
|
|
55865
55907
|
// ../common/connectionFlow/measure.ts
|
|
@@ -55940,6 +55982,15 @@ var nodeScrolls = (node, options, expanded) => {
|
|
|
55940
55982
|
};
|
|
55941
55983
|
var measureBranch = (node, options, expanded) => {
|
|
55942
55984
|
const own = measureNode(node, options, expanded);
|
|
55985
|
+
if (node.childLayout === "chain") {
|
|
55986
|
+
const rows = toRows(node);
|
|
55987
|
+
if (rows.length === 0) return own;
|
|
55988
|
+
const rowsHeight = rows.reduce(
|
|
55989
|
+
(sum, row, index) => sum + Math.max(0, ...row.map((c) => measureBranch(c, options, expanded))) + (index > 0 ? options.rowGap : 0),
|
|
55990
|
+
0
|
|
55991
|
+
);
|
|
55992
|
+
return own + options.childGap + rowsHeight;
|
|
55993
|
+
}
|
|
55943
55994
|
const children = node.children ?? [];
|
|
55944
55995
|
if (children.length === 0) return own;
|
|
55945
55996
|
const childHeight = children.reduce(
|
|
@@ -56335,6 +56386,7 @@ var layoutConnectionFlow = (input) => {
|
|
|
56335
56386
|
const skipped = resolveSkipped(columns, input.autoState ?? false);
|
|
56336
56387
|
const laidOut = [];
|
|
56337
56388
|
const byId = /* @__PURE__ */ new Map();
|
|
56389
|
+
const chains = /* @__PURE__ */ new Map();
|
|
56338
56390
|
let x = options.padding;
|
|
56339
56391
|
const columnBounds = [];
|
|
56340
56392
|
columns.forEach((column, columnIndex) => {
|
|
@@ -56385,15 +56437,68 @@ var layoutConnectionFlow = (input) => {
|
|
|
56385
56437
|
placeChildren(child, depth + 1, indentX + options.childIndent);
|
|
56386
56438
|
});
|
|
56387
56439
|
};
|
|
56388
|
-
|
|
56440
|
+
if (node.childLayout === "chain") {
|
|
56441
|
+
const rows = toRows(node);
|
|
56442
|
+
if (rows.length > 0) {
|
|
56443
|
+
const cardWidth = options.metrics.width;
|
|
56444
|
+
const gridX = x + options.gridIndent;
|
|
56445
|
+
let rowY = y + ownHeight + options.childGap;
|
|
56446
|
+
const walk2 = [];
|
|
56447
|
+
let maxCols = 1;
|
|
56448
|
+
rows.forEach((row, rowIdx) => {
|
|
56449
|
+
maxCols = Math.max(maxCols, row.length);
|
|
56450
|
+
let rowBottom = rowY;
|
|
56451
|
+
row.forEach((card, col) => {
|
|
56452
|
+
const cardHeight = measureNode(card, options, input.expanded);
|
|
56453
|
+
const cardEntry = {
|
|
56454
|
+
id: card.id,
|
|
56455
|
+
node: card,
|
|
56456
|
+
outline: "",
|
|
56457
|
+
x: gridX + col * (cardWidth + options.connectorWidth),
|
|
56458
|
+
y: rowY,
|
|
56459
|
+
width: cardWidth,
|
|
56460
|
+
height: cardHeight,
|
|
56461
|
+
anchorY: cardHeight / 2,
|
|
56462
|
+
column: columnIndex,
|
|
56463
|
+
depth: 1,
|
|
56464
|
+
tone: toneOf(card),
|
|
56465
|
+
scrollable: nodeScrolls(card, options, input.expanded)
|
|
56466
|
+
};
|
|
56467
|
+
laidOut.push(cardEntry);
|
|
56468
|
+
byId.set(card.id, cardEntry);
|
|
56469
|
+
walk2.push({ card: cardEntry, row: rowIdx });
|
|
56470
|
+
rowBottom = Math.max(rowBottom, rowY + cardHeight);
|
|
56471
|
+
});
|
|
56472
|
+
rowY = rowBottom + options.rowGap;
|
|
56473
|
+
});
|
|
56474
|
+
const live = walk2.filter((w) => !nodeIsSkipped(w.card.node));
|
|
56475
|
+
const exitCard = live.length > 0 ? live[live.length - 1].card : null;
|
|
56476
|
+
chains.set(node.id, {
|
|
56477
|
+
parentNode: node,
|
|
56478
|
+
walk: walk2,
|
|
56479
|
+
exitCard,
|
|
56480
|
+
exitHasBranch: Boolean(exitCard?.node.success?.to),
|
|
56481
|
+
gridWidth: options.gridIndent + maxCols * cardWidth + (maxCols - 1) * options.connectorWidth
|
|
56482
|
+
});
|
|
56483
|
+
} else {
|
|
56484
|
+
placeChildren(node, 1, x + options.childIndent);
|
|
56485
|
+
}
|
|
56486
|
+
} else {
|
|
56487
|
+
placeChildren(node, 1, x + options.childIndent);
|
|
56488
|
+
}
|
|
56389
56489
|
y += heights[laneIndex] + options.laneGap;
|
|
56390
56490
|
});
|
|
56491
|
+
const chainInfo = column.parallel ? void 0 : chains.get(column.nodes[0].id);
|
|
56492
|
+
const columnWidth = Math.max(
|
|
56493
|
+
options.metrics.width,
|
|
56494
|
+
chainInfo?.gridWidth ?? 0
|
|
56495
|
+
);
|
|
56391
56496
|
columnBounds.push({
|
|
56392
56497
|
start: x,
|
|
56393
|
-
end: x +
|
|
56498
|
+
end: x + columnWidth,
|
|
56394
56499
|
centre: options.padding + stackHeight / 2
|
|
56395
56500
|
});
|
|
56396
|
-
x +=
|
|
56501
|
+
x += columnWidth + options.connectorWidth;
|
|
56397
56502
|
});
|
|
56398
56503
|
const edges = [];
|
|
56399
56504
|
const connectors = /* @__PURE__ */ new Map();
|
|
@@ -56451,7 +56556,10 @@ var layoutConnectionFlow = (input) => {
|
|
|
56451
56556
|
if (columnIsTerminal(sourceIndex)) return;
|
|
56452
56557
|
if (skipped.has(columnIndex)) return;
|
|
56453
56558
|
const isBypass = sourceIndex !== columnIndex - 1;
|
|
56454
|
-
const
|
|
56559
|
+
const chainSrc = columns[sourceIndex].parallel ? void 0 : chains.get(columns[sourceIndex].nodes[0].id);
|
|
56560
|
+
if (chainSrc && (!chainSrc.exitCard || chainSrc.exitHasBranch)) return;
|
|
56561
|
+
if (chainSrc?.exitCard?.node.terminal === true) return;
|
|
56562
|
+
const sourceNodes = chainSrc?.exitCard ? [chainSrc.exitCard.node] : columns[sourceIndex].nodes;
|
|
56455
56563
|
const targetNodes = column.nodes;
|
|
56456
56564
|
const state = (sourceNode, targetNode) => targetNode.connector?.state ?? (input.autoState ? toneOf(sourceNode) !== "neutral" ? nodeIsActive(targetNode) ? "flowing" : "stopped" : "disabled" : input.flowState ?? "flowing");
|
|
56457
56565
|
const animatedFor = (cfg, edgeState) => (cfg?.animated ?? input.animated ?? true) && (edgeState === "flowing" || edgeState === "stopped" && (cfg?.animateCompleted ?? false));
|
|
@@ -56461,7 +56569,7 @@ var layoutConnectionFlow = (input) => {
|
|
|
56461
56569
|
labelUsed = true;
|
|
56462
56570
|
return label;
|
|
56463
56571
|
};
|
|
56464
|
-
const sourceSpan = columnBox(sourceIndex);
|
|
56572
|
+
const sourceSpan = chainSrc?.exitCard ? boxOf(chainSrc.exitCard) : columnBox(sourceIndex);
|
|
56465
56573
|
const targetSpan = columnBox(columnIndex);
|
|
56466
56574
|
if (!sourceSpan || !targetSpan) return;
|
|
56467
56575
|
const sides = selectSides(sourceSpan, targetSpan);
|
|
@@ -56545,6 +56653,7 @@ var layoutConnectionFlow = (input) => {
|
|
|
56545
56653
|
});
|
|
56546
56654
|
});
|
|
56547
56655
|
const childEdges = (parent) => {
|
|
56656
|
+
if (parent.childLayout === "chain") return;
|
|
56548
56657
|
const parentEntry = byId.get(parent.id);
|
|
56549
56658
|
if (!parentEntry) return;
|
|
56550
56659
|
(parent.children ?? []).forEach((child) => {
|
|
@@ -56606,6 +56715,146 @@ var layoutConnectionFlow = (input) => {
|
|
|
56606
56715
|
});
|
|
56607
56716
|
};
|
|
56608
56717
|
input.nodes.forEach(childEdges);
|
|
56718
|
+
const emitFlowEdge = (o) => {
|
|
56719
|
+
const route = routePorts(o.fromPort, o.toPort, {
|
|
56720
|
+
style: o.cfg?.edgeStyle ?? options.edgeStyle,
|
|
56721
|
+
stub: Math.min(18, options.connectorWidth / 3),
|
|
56722
|
+
radius: options.cornerRadius,
|
|
56723
|
+
trim: trimFor(o.cfg),
|
|
56724
|
+
via: o.via
|
|
56725
|
+
});
|
|
56726
|
+
const animated = (o.cfg?.animated ?? input.animated ?? true) && (o.state === "flowing" || o.state === "stopped" && (o.cfg?.animateCompleted ?? false));
|
|
56727
|
+
addConnector(o.fromEntry.id, o.fromPort, o.sourceTone, o.state, animated, o.id, o.cfg);
|
|
56728
|
+
addConnector(o.toEntry.id, o.toPort, o.targetTone, o.state, animated, o.id, o.cfg);
|
|
56729
|
+
edges.push({
|
|
56730
|
+
id: o.id,
|
|
56731
|
+
fromId: o.fromEntry.id,
|
|
56732
|
+
toId: o.toEntry.id,
|
|
56733
|
+
state: o.state,
|
|
56734
|
+
points: route.points,
|
|
56735
|
+
d: route.d,
|
|
56736
|
+
sourceTone: o.sourceTone,
|
|
56737
|
+
targetTone: o.targetTone,
|
|
56738
|
+
bypass: false,
|
|
56739
|
+
emitIndex: 0,
|
|
56740
|
+
emitCount: 1,
|
|
56741
|
+
emitSpan: 0,
|
|
56742
|
+
animated,
|
|
56743
|
+
label: o.label,
|
|
56744
|
+
kind: o.kind,
|
|
56745
|
+
branchKind: o.branchKind
|
|
56746
|
+
});
|
|
56747
|
+
};
|
|
56748
|
+
const sidePort = (entry, side) => port(boxOf(entry), side, entry.anchorY / entry.height);
|
|
56749
|
+
const branchToneOf = (branch, kind) => branch.tone ?? (kind === "success" ? STATUS_TONE.succeeded : STATUS_TONE.failed);
|
|
56750
|
+
const emitBranch = (fromEntry, branch, kind) => {
|
|
56751
|
+
if (!branch.to) return;
|
|
56752
|
+
const target = byId.get(branch.to);
|
|
56753
|
+
if (!target || target.id === fromEntry.id) return;
|
|
56754
|
+
const tone = branchToneOf(branch, kind);
|
|
56755
|
+
const state = kind === "failure" ? nodeHasFailed(fromEntry.node) ? "flowing" : "stopped" : nodeHasFailed(fromEntry.node) ? "stopped" : "flowing";
|
|
56756
|
+
const srcBox = boxOf(fromEntry);
|
|
56757
|
+
const tgtBox = boxOf(target);
|
|
56758
|
+
const upstream = tgtBox.y + tgtBox.height <= srcBox.y + 1 || tgtBox.x + tgtBox.width <= srcBox.x + 1;
|
|
56759
|
+
if (upstream && kind === "failure") {
|
|
56760
|
+
emitFlowEdge({
|
|
56761
|
+
id: `${fromEntry.id}~fail>${target.id}`,
|
|
56762
|
+
fromEntry,
|
|
56763
|
+
toEntry: target,
|
|
56764
|
+
fromPort: port(srcBox, "left", fromEntry.anchorY / fromEntry.height),
|
|
56765
|
+
toPort: port(tgtBox, "top", 0.5),
|
|
56766
|
+
via: { x: Math.min(srcBox.x, tgtBox.x) - options.bypassLift },
|
|
56767
|
+
state,
|
|
56768
|
+
sourceTone: tone,
|
|
56769
|
+
targetTone: tone,
|
|
56770
|
+
label: branch.label,
|
|
56771
|
+
kind: "branch",
|
|
56772
|
+
branchKind: kind
|
|
56773
|
+
});
|
|
56774
|
+
return;
|
|
56775
|
+
}
|
|
56776
|
+
const sides = selectSides(srcBox, tgtBox);
|
|
56777
|
+
emitFlowEdge({
|
|
56778
|
+
id: `${fromEntry.id}~${kind === "failure" ? "fail" : "ok"}>${target.id}`,
|
|
56779
|
+
fromEntry,
|
|
56780
|
+
toEntry: target,
|
|
56781
|
+
fromPort: sidePort(fromEntry, sides.from),
|
|
56782
|
+
toPort: sidePort(target, sides.to),
|
|
56783
|
+
state,
|
|
56784
|
+
sourceTone: tone,
|
|
56785
|
+
targetTone: tone,
|
|
56786
|
+
label: branch.label,
|
|
56787
|
+
kind: "branch",
|
|
56788
|
+
branchKind: kind
|
|
56789
|
+
});
|
|
56790
|
+
};
|
|
56791
|
+
chains.forEach((chain) => {
|
|
56792
|
+
const parentEntry = byId.get(chain.parentNode.id);
|
|
56793
|
+
if (!parentEntry) return;
|
|
56794
|
+
if (nodeIsSkipped(chain.parentNode) === true) return;
|
|
56795
|
+
const live = chain.walk.filter((w) => !nodeIsSkipped(w.card.node));
|
|
56796
|
+
if (live.length === 0) return;
|
|
56797
|
+
const first = live[0].card;
|
|
56798
|
+
const parentBox = boxOf(parentEntry);
|
|
56799
|
+
const firstBox = boxOf(first);
|
|
56800
|
+
emitFlowEdge({
|
|
56801
|
+
id: `${parentEntry.id}~in>${first.id}`,
|
|
56802
|
+
fromEntry: parentEntry,
|
|
56803
|
+
toEntry: first,
|
|
56804
|
+
fromPort: portAt(
|
|
56805
|
+
parentBox,
|
|
56806
|
+
"bottom",
|
|
56807
|
+
firstBox.x + firstBox.width / 2 - parentBox.x
|
|
56808
|
+
),
|
|
56809
|
+
toPort: port(firstBox, "top", 0.5),
|
|
56810
|
+
state: first.node.connector?.state ?? (nodeHasFailed(parentEntry.node) ? "stopped" : nodeIsActive(first.node) ? "flowing" : "stopped"),
|
|
56811
|
+
sourceTone: toneOf(parentEntry.node),
|
|
56812
|
+
targetTone: toneOf(first.node),
|
|
56813
|
+
cfg: first.node.connector,
|
|
56814
|
+
kind: "chain"
|
|
56815
|
+
});
|
|
56816
|
+
live.forEach((w, i) => {
|
|
56817
|
+
const src = w.card;
|
|
56818
|
+
if (src.node.success?.to) {
|
|
56819
|
+
emitBranch(src, src.node.success, "success");
|
|
56820
|
+
return;
|
|
56821
|
+
}
|
|
56822
|
+
const next = live[i + 1];
|
|
56823
|
+
if (!next) return;
|
|
56824
|
+
const tgt = next.card;
|
|
56825
|
+
const srcBox = boxOf(src);
|
|
56826
|
+
const tgtBox = boxOf(tgt);
|
|
56827
|
+
const sameRow = next.row === w.row;
|
|
56828
|
+
const gapStart = srcBox.x + srcBox.width;
|
|
56829
|
+
const gapEnd = tgtBox.x;
|
|
56830
|
+
emitFlowEdge({
|
|
56831
|
+
id: `${src.id}~walk>${tgt.id}`,
|
|
56832
|
+
fromEntry: src,
|
|
56833
|
+
toEntry: tgt,
|
|
56834
|
+
fromPort: sameRow ? port(srcBox, "right", src.anchorY / src.height) : port(srcBox, "bottom", 0.5),
|
|
56835
|
+
toPort: sameRow ? port(tgtBox, "left", tgt.anchorY / tgt.height) : port(tgtBox, "top", 0.5),
|
|
56836
|
+
via: sameRow && gapEnd > gapStart ? { x: (gapStart + gapEnd) / 2 } : void 0,
|
|
56837
|
+
state: tgt.node.connector?.state ?? (nodeHasFailed(src.node) ? "stopped" : nodeIsActive(tgt.node) ? "flowing" : "stopped"),
|
|
56838
|
+
sourceTone: src.node.success ? branchToneOf(src.node.success, "success") : toneOf(src.node),
|
|
56839
|
+
targetTone: toneOf(tgt.node),
|
|
56840
|
+
cfg: tgt.node.connector,
|
|
56841
|
+
label: src.node.success?.label ?? tgt.node.connector?.label,
|
|
56842
|
+
kind: "chain"
|
|
56843
|
+
});
|
|
56844
|
+
});
|
|
56845
|
+
chain.walk.forEach((w) => {
|
|
56846
|
+
if (w.card.node.failure) emitBranch(w.card, w.card.node.failure, "failure");
|
|
56847
|
+
});
|
|
56848
|
+
});
|
|
56849
|
+
const chainCardIds = /* @__PURE__ */ new Set();
|
|
56850
|
+
chains.forEach(
|
|
56851
|
+
(chain) => chain.walk.forEach((w) => chainCardIds.add(w.card.id))
|
|
56852
|
+
);
|
|
56853
|
+
laidOut.forEach((entry) => {
|
|
56854
|
+
if (chainCardIds.has(entry.id)) return;
|
|
56855
|
+
if (entry.node.success?.to) emitBranch(entry, entry.node.success, "success");
|
|
56856
|
+
if (entry.node.failure?.to) emitBranch(entry, entry.node.failure, "failure");
|
|
56857
|
+
});
|
|
56609
56858
|
const emittedBySource = /* @__PURE__ */ new Map();
|
|
56610
56859
|
edges.forEach((edge) => {
|
|
56611
56860
|
if (!edge.animated) return;
|
|
@@ -57134,6 +57383,29 @@ var ConnectionFlowSvg = ({
|
|
|
57134
57383
|
const isLit = (edge) => highlightEdges.size === 0 || highlightEdges.has(edge.id);
|
|
57135
57384
|
const nodeOpacity = (node) => highlightNodes.size === 0 || highlightNodes.has(node.id) ? 1 : 0.22;
|
|
57136
57385
|
const connectorOpacity = (connector) => highlightEdges.size === 0 || connector.edgeIds.some((id) => highlightEdges.has(id)) ? 1 : 0.22;
|
|
57386
|
+
const cardContent = (laid) => {
|
|
57387
|
+
const content = renderNode ? renderNode(laid) : /* @__PURE__ */ jsx289(
|
|
57388
|
+
ConnectionFlowNodeBody_default,
|
|
57389
|
+
{
|
|
57390
|
+
node: laid,
|
|
57391
|
+
metrics,
|
|
57392
|
+
showProgress,
|
|
57393
|
+
options,
|
|
57394
|
+
scrollable: laid.scrollable,
|
|
57395
|
+
expanded,
|
|
57396
|
+
onToggleExpanded
|
|
57397
|
+
}
|
|
57398
|
+
);
|
|
57399
|
+
return laid.scrollable ? /* @__PURE__ */ jsx289(
|
|
57400
|
+
ScrollArea_default,
|
|
57401
|
+
{
|
|
57402
|
+
variant: "auto",
|
|
57403
|
+
className: "h-full w-full",
|
|
57404
|
+
contentClassName: "block w-full",
|
|
57405
|
+
children: content
|
|
57406
|
+
}
|
|
57407
|
+
) : content;
|
|
57408
|
+
};
|
|
57137
57409
|
return /* @__PURE__ */ jsxs172("div", { className: "relative h-full w-full overflow-hidden", children: [
|
|
57138
57410
|
/* @__PURE__ */ jsxs172(
|
|
57139
57411
|
"svg",
|
|
@@ -57297,10 +57569,6 @@ var ConnectionFlowSvg = ({
|
|
|
57297
57569
|
children: /* @__PURE__ */ jsx289(
|
|
57298
57570
|
"div",
|
|
57299
57571
|
{
|
|
57300
|
-
"data-scrolls": laid.scrollable ? "" : void 0,
|
|
57301
|
-
className: classNames101(
|
|
57302
|
-
laid.scrollable && `overflow-y-auto ${THIN_SCROLLBAR_FIELD}`
|
|
57303
|
-
),
|
|
57304
57572
|
style: {
|
|
57305
57573
|
width: laid.width,
|
|
57306
57574
|
height: laid.height,
|
|
@@ -57308,19 +57576,7 @@ var ConnectionFlowSvg = ({
|
|
|
57308
57576
|
transform: `scale(${scale})`,
|
|
57309
57577
|
transformOrigin: "top left"
|
|
57310
57578
|
},
|
|
57311
|
-
|
|
57312
|
-
children: renderNode ? renderNode(laid) : /* @__PURE__ */ jsx289(
|
|
57313
|
-
ConnectionFlowNodeBody_default,
|
|
57314
|
-
{
|
|
57315
|
-
node: laid,
|
|
57316
|
-
metrics,
|
|
57317
|
-
showProgress,
|
|
57318
|
-
options,
|
|
57319
|
-
scrollable: laid.scrollable,
|
|
57320
|
-
expanded,
|
|
57321
|
-
onToggleExpanded
|
|
57322
|
-
}
|
|
57323
|
-
)
|
|
57579
|
+
children: cardContent(laid)
|
|
57324
57580
|
}
|
|
57325
57581
|
)
|
|
57326
57582
|
},
|
|
@@ -57539,6 +57795,21 @@ var ConnectionFlow = React81.forwardRef(function ConnectionFlow2({
|
|
|
57539
57795
|
observer.observe(element);
|
|
57540
57796
|
return () => observer.disconnect();
|
|
57541
57797
|
}, []);
|
|
57798
|
+
useEffect66(() => {
|
|
57799
|
+
const element = viewportRef.current;
|
|
57800
|
+
if (!element || !interactive) return;
|
|
57801
|
+
const onWheel = (event) => {
|
|
57802
|
+
if (!(event.ctrlKey || event.metaKey)) return;
|
|
57803
|
+
event.preventDefault();
|
|
57804
|
+
const rect = element.getBoundingClientRect();
|
|
57805
|
+
setZoom(
|
|
57806
|
+
scale * (event.deltaY < 0 ? 1.1 : 1 / 1.1),
|
|
57807
|
+
{ x: event.clientX - rect.left, y: event.clientY - rect.top }
|
|
57808
|
+
);
|
|
57809
|
+
};
|
|
57810
|
+
element.addEventListener("wheel", onWheel, { passive: false });
|
|
57811
|
+
return () => element.removeEventListener("wheel", onWheel);
|
|
57812
|
+
}, [interactive, scale, setZoom]);
|
|
57542
57813
|
useEffect66(() => {
|
|
57543
57814
|
if (fitOnLoad && viewport.width) fit();
|
|
57544
57815
|
}, [fitOnLoad, nodes, viewport.width, viewport.height]);
|
|
@@ -57652,22 +57923,17 @@ var ConnectionFlow = React81.forwardRef(function ConnectionFlow2({
|
|
|
57652
57923
|
style: { height: typeof height === "number" ? `${height}px` : height },
|
|
57653
57924
|
children: [
|
|
57654
57925
|
/* @__PURE__ */ jsx290(
|
|
57655
|
-
|
|
57926
|
+
ScrollArea_default,
|
|
57656
57927
|
{
|
|
57657
|
-
|
|
57658
|
-
|
|
57928
|
+
variant: "auto",
|
|
57929
|
+
viewportRef,
|
|
57930
|
+
viewportClassName: "overscroll-contain",
|
|
57931
|
+
className: "h-full w-full select-none",
|
|
57659
57932
|
style: { cursor: panning ? "grabbing" : void 0 },
|
|
57660
|
-
onWheel: (event) => {
|
|
57661
|
-
if (!interactive) return;
|
|
57662
|
-
if (event.target.closest("[data-scrolls]")) return;
|
|
57663
|
-
const rect = viewportRef.current?.getBoundingClientRect();
|
|
57664
|
-
const anchor = rect ? { x: event.clientX - rect.left, y: event.clientY - rect.top } : void 0;
|
|
57665
|
-
setZoom(scale * (event.deltaY < 0 ? 1.1 : 1 / 1.1), anchor);
|
|
57666
|
-
},
|
|
57667
57933
|
onPointerDown: (event) => {
|
|
57668
57934
|
if (!interactive || event.button !== 0) return;
|
|
57669
57935
|
if (event.target.closest(
|
|
57670
|
-
|
|
57936
|
+
'button, a, input, select, textarea, [data-no-pan], [data-slot="scrollarea-scrollbar"]'
|
|
57671
57937
|
)) {
|
|
57672
57938
|
return;
|
|
57673
57939
|
}
|
|
@@ -57680,7 +57946,7 @@ var ConnectionFlow = React81.forwardRef(function ConnectionFlow2({
|
|
|
57680
57946
|
scrollLeft: element.scrollLeft,
|
|
57681
57947
|
scrollTop: element.scrollTop
|
|
57682
57948
|
};
|
|
57683
|
-
|
|
57949
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
57684
57950
|
},
|
|
57685
57951
|
onPointerMove: (event) => {
|
|
57686
57952
|
if (!panning) return;
|
|
@@ -59840,14 +60106,97 @@ var TreeView = ({
|
|
|
59840
60106
|
var TreeView_default = TreeView;
|
|
59841
60107
|
|
|
59842
60108
|
// src/components/WorkflowTracker/WorkflowTracker.tsx
|
|
59843
|
-
import { useMemo as
|
|
59844
|
-
import
|
|
60109
|
+
import { useMemo as useMemo56 } from "react";
|
|
60110
|
+
import classNames119 from "classnames";
|
|
59845
60111
|
|
|
59846
|
-
// src/components/WorkflowTracker/
|
|
59847
|
-
import
|
|
60112
|
+
// src/components/WorkflowTracker/WorkflowTrackerRail.tsx
|
|
60113
|
+
import { useMemo as useMemo52 } from "react";
|
|
60114
|
+
import classNames112 from "classnames";
|
|
59848
60115
|
|
|
59849
|
-
// src/components/WorkflowTracker/
|
|
60116
|
+
// src/components/WorkflowTracker/WorkflowTimeline.tsx
|
|
60117
|
+
import React87 from "react";
|
|
60118
|
+
import classNames111 from "classnames";
|
|
60119
|
+
|
|
60120
|
+
// src/components/WorkflowTracker/WorkflowSkeleton.tsx
|
|
59850
60121
|
import classNames107 from "classnames";
|
|
60122
|
+
import { jsx as jsx296, jsxs as jsxs179 } from "react/jsx-runtime";
|
|
60123
|
+
var Bar3 = ({
|
|
60124
|
+
width,
|
|
60125
|
+
className
|
|
60126
|
+
}) => /* @__PURE__ */ jsx296(
|
|
60127
|
+
"span",
|
|
60128
|
+
{
|
|
60129
|
+
className: classNames107(
|
|
60130
|
+
"block h-2.5 rounded-full bg-neutral-200 dark:bg-neutral-800",
|
|
60131
|
+
className
|
|
60132
|
+
),
|
|
60133
|
+
style: { width }
|
|
60134
|
+
}
|
|
60135
|
+
);
|
|
60136
|
+
var Dot = () => /* @__PURE__ */ jsx296("span", { className: "h-5 w-5 shrink-0 rounded-full bg-neutral-200 dark:bg-neutral-800" });
|
|
60137
|
+
var WorkflowHeaderSkeleton = ({ hasIcon = false, iconCorner = DEFAULT_SURFACE_CORNER }) => /* @__PURE__ */ jsxs179("div", { className: "mb-5 flex animate-pulse flex-wrap items-start justify-between gap-3 motion-reduce:animate-none", children: [
|
|
60138
|
+
/* @__PURE__ */ jsxs179("div", { className: "flex items-center gap-3", children: [
|
|
60139
|
+
hasIcon && /* @__PURE__ */ jsx296(
|
|
60140
|
+
Bar3,
|
|
60141
|
+
{
|
|
60142
|
+
width: "3rem",
|
|
60143
|
+
className: classNames107("h-12", getSurfaceCornerClass(iconCorner))
|
|
60144
|
+
}
|
|
60145
|
+
),
|
|
60146
|
+
/* @__PURE__ */ jsxs179("div", { className: "space-y-3", children: [
|
|
60147
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "11rem", className: "h-2" }),
|
|
60148
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "16rem", className: "h-6" })
|
|
60149
|
+
] })
|
|
60150
|
+
] }),
|
|
60151
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "9rem", className: "h-6 rounded-full" })
|
|
60152
|
+
] });
|
|
60153
|
+
var WorkflowRailSkeleton = ({
|
|
60154
|
+
rows = 6
|
|
60155
|
+
}) => /* @__PURE__ */ jsxs179("div", { className: "animate-pulse motion-reduce:animate-none", children: [
|
|
60156
|
+
/* @__PURE__ */ jsxs179("div", { className: "border-b border-neutral-200 px-5 pb-4 pt-5 dark:border-neutral-800", children: [
|
|
60157
|
+
/* @__PURE__ */ jsxs179("div", { className: "flex items-center justify-between", children: [
|
|
60158
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "4.5rem" }),
|
|
60159
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "2rem" })
|
|
60160
|
+
] }),
|
|
60161
|
+
/* @__PURE__ */ jsx296("span", { className: "mt-3 block h-1 w-full rounded-full bg-neutral-200 dark:bg-neutral-800" }),
|
|
60162
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "80%", className: "mt-3" })
|
|
60163
|
+
] }),
|
|
60164
|
+
/* @__PURE__ */ jsx296("div", { className: "space-y-5 px-5 py-5", children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs179("div", { className: "flex items-start gap-3", children: [
|
|
60165
|
+
/* @__PURE__ */ jsx296(Dot, {}),
|
|
60166
|
+
/* @__PURE__ */ jsxs179("div", { className: "flex-1 space-y-2", children: [
|
|
60167
|
+
/* @__PURE__ */ jsx296(Bar3, { width: index % 2 === 0 ? "62%" : "48%" }),
|
|
60168
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "34%", className: "h-2" })
|
|
60169
|
+
] })
|
|
60170
|
+
] }, index)) })
|
|
60171
|
+
] });
|
|
60172
|
+
var WorkflowDetailSkeleton = () => /* @__PURE__ */ jsxs179("div", { className: "animate-pulse motion-reduce:animate-none", children: [
|
|
60173
|
+
/* @__PURE__ */ jsxs179("div", { className: "space-y-4 px-5 pb-6 pt-5 sm:px-6", children: [
|
|
60174
|
+
/* @__PURE__ */ jsxs179("div", { className: "flex items-center justify-between", children: [
|
|
60175
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "6rem" }),
|
|
60176
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "4rem" })
|
|
60177
|
+
] }),
|
|
60178
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "45%", className: "h-5" }),
|
|
60179
|
+
/* @__PURE__ */ jsxs179("div", { className: "space-y-2", children: [
|
|
60180
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "92%", className: "h-2" }),
|
|
60181
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "70%", className: "h-2" })
|
|
60182
|
+
] }),
|
|
60183
|
+
/* @__PURE__ */ jsxs179("div", { className: "flex gap-10 pt-2", children: [
|
|
60184
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "5rem" }),
|
|
60185
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "6rem" }),
|
|
60186
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "4rem" })
|
|
60187
|
+
] })
|
|
60188
|
+
] }),
|
|
60189
|
+
/* @__PURE__ */ jsx296("div", { className: "border-y border-neutral-200 bg-neutral-50 px-5 py-3 dark:border-neutral-800 dark:bg-white/5 sm:px-6", children: /* @__PURE__ */ jsx296(Bar3, { width: "5rem" }) }),
|
|
60190
|
+
/* @__PURE__ */ jsx296("div", { className: "divide-y divide-neutral-200 dark:divide-neutral-800", children: Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ jsxs179("div", { className: "flex items-center gap-3 px-5 py-4 sm:px-6", children: [
|
|
60191
|
+
/* @__PURE__ */ jsx296(Dot, {}),
|
|
60192
|
+
/* @__PURE__ */ jsx296(Bar3, { width: index === 1 ? "38%" : "30%" }),
|
|
60193
|
+
/* @__PURE__ */ jsx296("span", { className: "flex-1" }),
|
|
60194
|
+
/* @__PURE__ */ jsx296(Bar3, { width: "3rem" })
|
|
60195
|
+
] }, index)) })
|
|
60196
|
+
] });
|
|
60197
|
+
|
|
60198
|
+
// src/components/WorkflowTracker/WorkflowStatusNode.tsx
|
|
60199
|
+
import classNames108 from "classnames";
|
|
59851
60200
|
|
|
59852
60201
|
// src/components/WorkflowTracker/surfaces.ts
|
|
59853
60202
|
var isTranslucentVariant = (variant) => getSurfaceTextTokens(variant).translucent;
|
|
@@ -59985,13 +60334,13 @@ var getStatusTokens = (status, palette) => {
|
|
|
59985
60334
|
};
|
|
59986
60335
|
|
|
59987
60336
|
// src/components/WorkflowTracker/WorkflowStatusNode.tsx
|
|
59988
|
-
import { jsx as
|
|
60337
|
+
import { jsx as jsx297, jsxs as jsxs180 } from "react/jsx-runtime";
|
|
59989
60338
|
var sizeTokens11 = {
|
|
59990
60339
|
sm: { node: "h-4 w-4", glyph: "h-2.5 w-2.5" },
|
|
59991
60340
|
md: { node: "h-5 w-5", glyph: "h-3 w-3" },
|
|
59992
60341
|
lg: { node: "h-9 w-9", glyph: "h-5 w-5" }
|
|
59993
60342
|
};
|
|
59994
|
-
var DashedRing = ({ className }) => /* @__PURE__ */
|
|
60343
|
+
var DashedRing = ({ className }) => /* @__PURE__ */ jsx297("svg", { viewBox: "0 0 20 20", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx297(
|
|
59995
60344
|
"circle",
|
|
59996
60345
|
{
|
|
59997
60346
|
cx: "10",
|
|
@@ -60004,7 +60353,7 @@ var DashedRing = ({ className }) => /* @__PURE__ */ jsx296("svg", { viewBox: "0
|
|
|
60004
60353
|
strokeLinecap: "round"
|
|
60005
60354
|
}
|
|
60006
60355
|
) });
|
|
60007
|
-
var AlertGlyph = ({ className }) => /* @__PURE__ */
|
|
60356
|
+
var AlertGlyph = ({ className }) => /* @__PURE__ */ jsx297("svg", { viewBox: "0 0 24 24", fill: "none", "aria-hidden": "true", className, children: /* @__PURE__ */ jsx297(
|
|
60008
60357
|
"path",
|
|
60009
60358
|
{
|
|
60010
60359
|
d: "M12 6.5a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-6a1 1 0 0 1 1-1Zm0 9.25a1.15 1.15 0 1 1 0 2.3 1.15 1.15 0 0 1 0-2.3Z",
|
|
@@ -60019,33 +60368,33 @@ var WorkflowStatusNode = ({
|
|
|
60019
60368
|
}) => {
|
|
60020
60369
|
const tokens = getStatusTokens(status, palette);
|
|
60021
60370
|
const { node, glyph } = sizeTokens11[size];
|
|
60022
|
-
return /* @__PURE__ */
|
|
60371
|
+
return /* @__PURE__ */ jsxs180(
|
|
60023
60372
|
"span",
|
|
60024
60373
|
{
|
|
60025
60374
|
"aria-hidden": "true",
|
|
60026
|
-
className:
|
|
60375
|
+
className: classNames108("relative inline-flex shrink-0", node, className),
|
|
60027
60376
|
children: [
|
|
60028
|
-
tokens.pulse && /* @__PURE__ */
|
|
60377
|
+
tokens.pulse && /* @__PURE__ */ jsx297(
|
|
60029
60378
|
"span",
|
|
60030
60379
|
{
|
|
60031
|
-
className:
|
|
60380
|
+
className: classNames108(
|
|
60032
60381
|
"absolute inset-0 animate-ping rounded-full opacity-60 motion-reduce:hidden",
|
|
60033
60382
|
`bg-${tokens.tone}-300 dark:bg-${tokens.tone}-500`
|
|
60034
60383
|
)
|
|
60035
60384
|
}
|
|
60036
60385
|
),
|
|
60037
|
-
/* @__PURE__ */
|
|
60386
|
+
/* @__PURE__ */ jsxs180(
|
|
60038
60387
|
"span",
|
|
60039
60388
|
{
|
|
60040
|
-
className:
|
|
60389
|
+
className: classNames108(
|
|
60041
60390
|
"relative inline-flex h-full w-full items-center justify-center rounded-full",
|
|
60042
60391
|
tokens.node
|
|
60043
60392
|
),
|
|
60044
60393
|
children: [
|
|
60045
|
-
tokens.glyph === "check" && /* @__PURE__ */
|
|
60046
|
-
tokens.glyph === "pause" && /* @__PURE__ */
|
|
60047
|
-
tokens.glyph === "alert" && /* @__PURE__ */
|
|
60048
|
-
tokens.glyph === "dashed" && /* @__PURE__ */
|
|
60394
|
+
tokens.glyph === "check" && /* @__PURE__ */ jsx297(Check, { className: classNames108(glyph, tokens.glyphClass) }),
|
|
60395
|
+
tokens.glyph === "pause" && /* @__PURE__ */ jsx297(Pause, { className: classNames108(glyph, tokens.glyphClass) }),
|
|
60396
|
+
tokens.glyph === "alert" && /* @__PURE__ */ jsx297(AlertGlyph, { className: classNames108(glyph, tokens.glyphClass) }),
|
|
60397
|
+
tokens.glyph === "dashed" && /* @__PURE__ */ jsx297(DashedRing, { className: classNames108("h-full w-full", tokens.glyphClass) })
|
|
60049
60398
|
]
|
|
60050
60399
|
}
|
|
60051
60400
|
)
|
|
@@ -60055,34 +60404,73 @@ var WorkflowStatusNode = ({
|
|
|
60055
60404
|
};
|
|
60056
60405
|
var WorkflowStatusNode_default = WorkflowStatusNode;
|
|
60057
60406
|
|
|
60407
|
+
// src/components/WorkflowTracker/WorkflowQuickActions.tsx
|
|
60408
|
+
import classNames109 from "classnames";
|
|
60409
|
+
import { jsx as jsx298 } from "react/jsx-runtime";
|
|
60410
|
+
var WorkflowQuickActions = ({
|
|
60411
|
+
stepId,
|
|
60412
|
+
actions,
|
|
60413
|
+
palette,
|
|
60414
|
+
groupLabel,
|
|
60415
|
+
onAction,
|
|
60416
|
+
className,
|
|
60417
|
+
style
|
|
60418
|
+
}) => {
|
|
60419
|
+
if (!onAction || actions.length === 0) return null;
|
|
60420
|
+
return /* @__PURE__ */ jsx298(
|
|
60421
|
+
"div",
|
|
60422
|
+
{
|
|
60423
|
+
role: "group",
|
|
60424
|
+
"aria-label": groupLabel,
|
|
60425
|
+
className: classNames109("flex flex-wrap gap-1.5", className),
|
|
60426
|
+
style,
|
|
60427
|
+
children: actions.map((action) => /* @__PURE__ */ jsx298(
|
|
60428
|
+
Button_default,
|
|
60429
|
+
{
|
|
60430
|
+
size: "xs",
|
|
60431
|
+
weight: "medium",
|
|
60432
|
+
variant: action.variant ?? "soft",
|
|
60433
|
+
color: action.tone ?? palette.accent,
|
|
60434
|
+
leadingIcon: action.leadingIcon,
|
|
60435
|
+
disabled: action.disabled,
|
|
60436
|
+
onClick: () => onAction(stepId, action.id),
|
|
60437
|
+
children: action.label
|
|
60438
|
+
},
|
|
60439
|
+
action.id
|
|
60440
|
+
))
|
|
60441
|
+
}
|
|
60442
|
+
);
|
|
60443
|
+
};
|
|
60444
|
+
var WorkflowQuickActions_default = WorkflowQuickActions;
|
|
60445
|
+
|
|
60058
60446
|
// src/components/WorkflowTracker/parts.tsx
|
|
60059
|
-
import
|
|
60060
|
-
import { jsx as
|
|
60447
|
+
import classNames110 from "classnames";
|
|
60448
|
+
import { jsx as jsx299, jsxs as jsxs181 } from "react/jsx-runtime";
|
|
60061
60449
|
var resolve = (surfaces) => surfaces ?? getSurfaceTokens(false);
|
|
60062
|
-
var WorkflowPlaceholder = ({ title, subtitle, palette, surfaces, className }) => /* @__PURE__ */
|
|
60450
|
+
var WorkflowPlaceholder = ({ title, subtitle, palette, surfaces, className }) => /* @__PURE__ */ jsxs181(
|
|
60063
60451
|
"div",
|
|
60064
60452
|
{
|
|
60065
|
-
className:
|
|
60453
|
+
className: classNames110(
|
|
60066
60454
|
"flex flex-col items-center justify-center gap-3 px-6 py-10 text-center",
|
|
60067
60455
|
className
|
|
60068
60456
|
),
|
|
60069
60457
|
children: [
|
|
60070
|
-
/* @__PURE__ */
|
|
60071
|
-
/* @__PURE__ */
|
|
60072
|
-
/* @__PURE__ */
|
|
60458
|
+
/* @__PURE__ */ jsx299(WorkflowStatusNode_default, { status: "not_started", palette, size: "lg" }),
|
|
60459
|
+
/* @__PURE__ */ jsxs181("div", { className: "space-y-1", children: [
|
|
60460
|
+
/* @__PURE__ */ jsx299(
|
|
60073
60461
|
"p",
|
|
60074
60462
|
{
|
|
60075
|
-
className:
|
|
60463
|
+
className: classNames110(
|
|
60076
60464
|
"text-sm font-semibold",
|
|
60077
60465
|
resolve(surfaces).mutedText
|
|
60078
60466
|
),
|
|
60079
60467
|
children: title
|
|
60080
60468
|
}
|
|
60081
60469
|
),
|
|
60082
|
-
subtitle && /* @__PURE__ */
|
|
60470
|
+
subtitle && /* @__PURE__ */ jsx299(
|
|
60083
60471
|
"p",
|
|
60084
60472
|
{
|
|
60085
|
-
className:
|
|
60473
|
+
className: classNames110(
|
|
60086
60474
|
"max-w-xs text-xs leading-5",
|
|
60087
60475
|
resolve(surfaces).faintText
|
|
60088
60476
|
),
|
|
@@ -60093,10 +60481,10 @@ var WorkflowPlaceholder = ({ title, subtitle, palette, surfaces, className }) =>
|
|
|
60093
60481
|
]
|
|
60094
60482
|
}
|
|
60095
60483
|
);
|
|
60096
|
-
var SectionTitle = ({ children, surfaces, className }) => /* @__PURE__ */
|
|
60484
|
+
var SectionTitle = ({ children, surfaces, className }) => /* @__PURE__ */ jsx299(
|
|
60097
60485
|
"span",
|
|
60098
60486
|
{
|
|
60099
|
-
className:
|
|
60487
|
+
className: classNames110(
|
|
60100
60488
|
"text-[10px] font-semibold uppercase tracking-widest",
|
|
60101
60489
|
resolve(surfaces).faintText,
|
|
60102
60490
|
className
|
|
@@ -60104,7 +60492,7 @@ var SectionTitle = ({ children, surfaces, className }) => /* @__PURE__ */ jsx297
|
|
|
60104
60492
|
children
|
|
60105
60493
|
}
|
|
60106
60494
|
);
|
|
60107
|
-
var SectionMeta = ({ children, surfaces, className }) => /* @__PURE__ */
|
|
60495
|
+
var SectionMeta = ({ children, surfaces, className }) => /* @__PURE__ */ jsx299("span", { className: classNames110("text-xs", resolve(surfaces).mutedText, className), children });
|
|
60108
60496
|
var WorkflowBadge = ({
|
|
60109
60497
|
children,
|
|
60110
60498
|
status,
|
|
@@ -60112,14 +60500,14 @@ var WorkflowBadge = ({
|
|
|
60112
60500
|
tone
|
|
60113
60501
|
}) => {
|
|
60114
60502
|
const tokens = getStatusTokens(status, palette);
|
|
60115
|
-
return /* @__PURE__ */
|
|
60503
|
+
return /* @__PURE__ */ jsx299(
|
|
60116
60504
|
Pill_default,
|
|
60117
60505
|
{
|
|
60118
60506
|
size: "xs",
|
|
60119
60507
|
uppercase: true,
|
|
60120
60508
|
tone: tone ?? tokens.pillTone,
|
|
60121
60509
|
variant: "outline",
|
|
60122
|
-
className:
|
|
60510
|
+
className: classNames110(
|
|
60123
60511
|
"shrink-0 font-medium",
|
|
60124
60512
|
tone ? `bg-${tone}-100 dark:bg-${tone}-900` : tokens.pillFill
|
|
60125
60513
|
),
|
|
@@ -60127,177 +60515,17 @@ var WorkflowBadge = ({
|
|
|
60127
60515
|
}
|
|
60128
60516
|
);
|
|
60129
60517
|
};
|
|
60130
|
-
var MetaField = ({ label, value, surfaces }) => /* @__PURE__ */
|
|
60131
|
-
/* @__PURE__ */
|
|
60132
|
-
/* @__PURE__ */
|
|
60133
|
-
] });
|
|
60134
|
-
var Tally = ({ count, label, surfaces }) => /* @__PURE__ */ jsxs180("span", { className: "inline-flex items-center gap-1", children: [
|
|
60135
|
-
/* @__PURE__ */ jsx297("span", { className: "font-semibold text-neutral-900 dark:text-white", children: count }),
|
|
60136
|
-
/* @__PURE__ */ jsx297("span", { className: resolve(surfaces).mutedText, children: label })
|
|
60137
|
-
] });
|
|
60138
|
-
|
|
60139
|
-
// src/components/WorkflowTracker/WorkflowSummaryCard.tsx
|
|
60140
|
-
import { jsx as jsx298, jsxs as jsxs181 } from "react/jsx-runtime";
|
|
60141
|
-
var WorkflowSummaryCard = ({
|
|
60142
|
-
title,
|
|
60143
|
-
steps,
|
|
60144
|
-
palette,
|
|
60145
|
-
surfaces
|
|
60146
|
-
}) => /* @__PURE__ */ jsxs181("div", { className: "px-5 py-4", children: [
|
|
60147
|
-
/* @__PURE__ */ jsx298(SectionTitle, { surfaces, children: title }),
|
|
60148
|
-
/* @__PURE__ */ jsx298("ul", { className: "mt-3 space-y-3", children: steps.map((step) => /* @__PURE__ */ jsxs181("li", { className: "flex items-start gap-3", children: [
|
|
60149
|
-
/* @__PURE__ */ jsx298(
|
|
60150
|
-
WorkflowStatusNode_default,
|
|
60151
|
-
{
|
|
60152
|
-
status: normalizeStatus(step.status),
|
|
60153
|
-
palette,
|
|
60154
|
-
className: "mt-0.5"
|
|
60155
|
-
}
|
|
60156
|
-
),
|
|
60157
|
-
/* @__PURE__ */ jsxs181("div", { className: "min-w-0 flex-1", children: [
|
|
60158
|
-
/* @__PURE__ */ jsx298("p", { className: "text-sm font-medium text-neutral-800 dark:text-neutral-100", children: step.label }),
|
|
60159
|
-
step.meta && /* @__PURE__ */ jsx298(
|
|
60160
|
-
"p",
|
|
60161
|
-
{
|
|
60162
|
-
className: classNames109(
|
|
60163
|
-
"mt-0.5 text-xs leading-5",
|
|
60164
|
-
surfaces.mutedText
|
|
60165
|
-
),
|
|
60166
|
-
children: step.meta
|
|
60167
|
-
}
|
|
60168
|
-
)
|
|
60169
|
-
] })
|
|
60170
|
-
] }, step.id)) })
|
|
60171
|
-
] });
|
|
60172
|
-
var WorkflowSummaryCard_default = WorkflowSummaryCard;
|
|
60173
|
-
|
|
60174
|
-
// src/components/WorkflowTracker/WorkflowTrackerRail.tsx
|
|
60175
|
-
import { useMemo as useMemo52 } from "react";
|
|
60176
|
-
import classNames113 from "classnames";
|
|
60177
|
-
|
|
60178
|
-
// src/components/WorkflowTracker/WorkflowTimeline.tsx
|
|
60179
|
-
import React87 from "react";
|
|
60180
|
-
import classNames112 from "classnames";
|
|
60181
|
-
|
|
60182
|
-
// src/components/WorkflowTracker/WorkflowSkeleton.tsx
|
|
60183
|
-
import classNames110 from "classnames";
|
|
60184
|
-
import { jsx as jsx299, jsxs as jsxs182 } from "react/jsx-runtime";
|
|
60185
|
-
var Bar3 = ({
|
|
60186
|
-
width,
|
|
60187
|
-
className
|
|
60188
|
-
}) => /* @__PURE__ */ jsx299(
|
|
60189
|
-
"span",
|
|
60190
|
-
{
|
|
60191
|
-
className: classNames110(
|
|
60192
|
-
"block h-2.5 rounded-full bg-neutral-200 dark:bg-neutral-800",
|
|
60193
|
-
className
|
|
60194
|
-
),
|
|
60195
|
-
style: { width }
|
|
60196
|
-
}
|
|
60197
|
-
);
|
|
60198
|
-
var Dot = () => /* @__PURE__ */ jsx299("span", { className: "h-5 w-5 shrink-0 rounded-full bg-neutral-200 dark:bg-neutral-800" });
|
|
60199
|
-
var WorkflowHeaderSkeleton = ({ hasIcon = false, iconCorner = DEFAULT_SURFACE_CORNER }) => /* @__PURE__ */ jsxs182("div", { className: "mb-5 flex animate-pulse flex-wrap items-start justify-between gap-3 motion-reduce:animate-none", children: [
|
|
60200
|
-
/* @__PURE__ */ jsxs182("div", { className: "flex items-center gap-3", children: [
|
|
60201
|
-
hasIcon && /* @__PURE__ */ jsx299(
|
|
60202
|
-
Bar3,
|
|
60203
|
-
{
|
|
60204
|
-
width: "3rem",
|
|
60205
|
-
className: classNames110("h-12", getSurfaceCornerClass(iconCorner))
|
|
60206
|
-
}
|
|
60207
|
-
),
|
|
60208
|
-
/* @__PURE__ */ jsxs182("div", { className: "space-y-3", children: [
|
|
60209
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "11rem", className: "h-2" }),
|
|
60210
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "16rem", className: "h-6" })
|
|
60211
|
-
] })
|
|
60212
|
-
] }),
|
|
60213
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "9rem", className: "h-6 rounded-full" })
|
|
60518
|
+
var MetaField = ({ label, value, surfaces }) => /* @__PURE__ */ jsxs181("div", { className: "min-w-0", children: [
|
|
60519
|
+
/* @__PURE__ */ jsx299(SectionTitle, { surfaces, children: label }),
|
|
60520
|
+
/* @__PURE__ */ jsx299("p", { className: "mt-1 text-sm font-medium text-neutral-800 dark:text-neutral-100", children: value })
|
|
60214
60521
|
] });
|
|
60215
|
-
var
|
|
60216
|
-
|
|
60217
|
-
|
|
60218
|
-
/* @__PURE__ */ jsxs182("div", { className: "border-b border-neutral-200 px-5 pb-4 pt-5 dark:border-neutral-800", children: [
|
|
60219
|
-
/* @__PURE__ */ jsxs182("div", { className: "flex items-center justify-between", children: [
|
|
60220
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "4.5rem" }),
|
|
60221
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "2rem" })
|
|
60222
|
-
] }),
|
|
60223
|
-
/* @__PURE__ */ jsx299("span", { className: "mt-3 block h-1 w-full rounded-full bg-neutral-200 dark:bg-neutral-800" }),
|
|
60224
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "80%", className: "mt-3" })
|
|
60225
|
-
] }),
|
|
60226
|
-
/* @__PURE__ */ jsx299("div", { className: "space-y-5 px-5 py-5", children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs182("div", { className: "flex items-start gap-3", children: [
|
|
60227
|
-
/* @__PURE__ */ jsx299(Dot, {}),
|
|
60228
|
-
/* @__PURE__ */ jsxs182("div", { className: "flex-1 space-y-2", children: [
|
|
60229
|
-
/* @__PURE__ */ jsx299(Bar3, { width: index % 2 === 0 ? "62%" : "48%" }),
|
|
60230
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "34%", className: "h-2" })
|
|
60231
|
-
] })
|
|
60232
|
-
] }, index)) })
|
|
60522
|
+
var Tally = ({ count, label, surfaces }) => /* @__PURE__ */ jsxs181("span", { className: "inline-flex items-center gap-1", children: [
|
|
60523
|
+
/* @__PURE__ */ jsx299("span", { className: "font-semibold text-neutral-900 dark:text-white", children: count }),
|
|
60524
|
+
/* @__PURE__ */ jsx299("span", { className: resolve(surfaces).mutedText, children: label })
|
|
60233
60525
|
] });
|
|
60234
|
-
var WorkflowDetailSkeleton = () => /* @__PURE__ */ jsxs182("div", { className: "animate-pulse motion-reduce:animate-none", children: [
|
|
60235
|
-
/* @__PURE__ */ jsxs182("div", { className: "space-y-4 px-5 pb-6 pt-5 sm:px-6", children: [
|
|
60236
|
-
/* @__PURE__ */ jsxs182("div", { className: "flex items-center justify-between", children: [
|
|
60237
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "6rem" }),
|
|
60238
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "4rem" })
|
|
60239
|
-
] }),
|
|
60240
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "45%", className: "h-5" }),
|
|
60241
|
-
/* @__PURE__ */ jsxs182("div", { className: "space-y-2", children: [
|
|
60242
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "92%", className: "h-2" }),
|
|
60243
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "70%", className: "h-2" })
|
|
60244
|
-
] }),
|
|
60245
|
-
/* @__PURE__ */ jsxs182("div", { className: "flex gap-10 pt-2", children: [
|
|
60246
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "5rem" }),
|
|
60247
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "6rem" }),
|
|
60248
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "4rem" })
|
|
60249
|
-
] })
|
|
60250
|
-
] }),
|
|
60251
|
-
/* @__PURE__ */ jsx299("div", { className: "border-y border-neutral-200 bg-neutral-50 px-5 py-3 dark:border-neutral-800 dark:bg-white/5 sm:px-6", children: /* @__PURE__ */ jsx299(Bar3, { width: "5rem" }) }),
|
|
60252
|
-
/* @__PURE__ */ jsx299("div", { className: "divide-y divide-neutral-200 dark:divide-neutral-800", children: Array.from({ length: 3 }).map((_, index) => /* @__PURE__ */ jsxs182("div", { className: "flex items-center gap-3 px-5 py-4 sm:px-6", children: [
|
|
60253
|
-
/* @__PURE__ */ jsx299(Dot, {}),
|
|
60254
|
-
/* @__PURE__ */ jsx299(Bar3, { width: index === 1 ? "38%" : "30%" }),
|
|
60255
|
-
/* @__PURE__ */ jsx299("span", { className: "flex-1" }),
|
|
60256
|
-
/* @__PURE__ */ jsx299(Bar3, { width: "3rem" })
|
|
60257
|
-
] }, index)) })
|
|
60258
|
-
] });
|
|
60259
|
-
|
|
60260
|
-
// src/components/WorkflowTracker/WorkflowQuickActions.tsx
|
|
60261
|
-
import classNames111 from "classnames";
|
|
60262
|
-
import { jsx as jsx300 } from "react/jsx-runtime";
|
|
60263
|
-
var WorkflowQuickActions = ({
|
|
60264
|
-
stepId,
|
|
60265
|
-
actions,
|
|
60266
|
-
palette,
|
|
60267
|
-
groupLabel,
|
|
60268
|
-
onAction,
|
|
60269
|
-
className,
|
|
60270
|
-
style
|
|
60271
|
-
}) => {
|
|
60272
|
-
if (!onAction || actions.length === 0) return null;
|
|
60273
|
-
return /* @__PURE__ */ jsx300(
|
|
60274
|
-
"div",
|
|
60275
|
-
{
|
|
60276
|
-
role: "group",
|
|
60277
|
-
"aria-label": groupLabel,
|
|
60278
|
-
className: classNames111("flex flex-wrap gap-1.5", className),
|
|
60279
|
-
style,
|
|
60280
|
-
children: actions.map((action) => /* @__PURE__ */ jsx300(
|
|
60281
|
-
Button_default,
|
|
60282
|
-
{
|
|
60283
|
-
size: "xs",
|
|
60284
|
-
weight: "medium",
|
|
60285
|
-
variant: action.variant ?? "soft",
|
|
60286
|
-
color: action.tone ?? palette.accent,
|
|
60287
|
-
leadingIcon: action.leadingIcon,
|
|
60288
|
-
disabled: action.disabled,
|
|
60289
|
-
onClick: () => onAction(stepId, action.id),
|
|
60290
|
-
children: action.label
|
|
60291
|
-
},
|
|
60292
|
-
action.id
|
|
60293
|
-
))
|
|
60294
|
-
}
|
|
60295
|
-
);
|
|
60296
|
-
};
|
|
60297
|
-
var WorkflowQuickActions_default = WorkflowQuickActions;
|
|
60298
60526
|
|
|
60299
60527
|
// src/components/WorkflowTracker/WorkflowTimeline.tsx
|
|
60300
|
-
import { Fragment as Fragment46, jsx as
|
|
60528
|
+
import { Fragment as Fragment46, jsx as jsx300, jsxs as jsxs182 } from "react/jsx-runtime";
|
|
60301
60529
|
var CONNECTOR_LEFT = 9;
|
|
60302
60530
|
var CONNECTOR_TOP = 24;
|
|
60303
60531
|
var NESTED_INDENT = 32;
|
|
@@ -60315,16 +60543,16 @@ var NestedSubSteps = ({
|
|
|
60315
60543
|
palette,
|
|
60316
60544
|
surfaces,
|
|
60317
60545
|
onSubStepSelect
|
|
60318
|
-
}) => /* @__PURE__ */
|
|
60546
|
+
}) => /* @__PURE__ */ jsx300(
|
|
60319
60547
|
"div",
|
|
60320
60548
|
{
|
|
60321
|
-
className:
|
|
60549
|
+
className: classNames111("mt-3 rounded-lg p-3", surfaces.nestedBox),
|
|
60322
60550
|
style: { marginLeft: NESTED_INDENT },
|
|
60323
|
-
children: /* @__PURE__ */
|
|
60551
|
+
children: /* @__PURE__ */ jsx300("ul", { className: "space-y-2.5", children: subSteps.map((subStep) => {
|
|
60324
60552
|
const status = normalizeStatus(subStep.status);
|
|
60325
60553
|
const isActive = status === "running" || status === "in_progress";
|
|
60326
|
-
const content = /* @__PURE__ */
|
|
60327
|
-
/* @__PURE__ */
|
|
60554
|
+
const content = /* @__PURE__ */ jsxs182(Fragment46, { children: [
|
|
60555
|
+
/* @__PURE__ */ jsx300(
|
|
60328
60556
|
WorkflowStatusNode_default,
|
|
60329
60557
|
{
|
|
60330
60558
|
status,
|
|
@@ -60332,10 +60560,10 @@ var NestedSubSteps = ({
|
|
|
60332
60560
|
size: "sm"
|
|
60333
60561
|
}
|
|
60334
60562
|
),
|
|
60335
|
-
/* @__PURE__ */
|
|
60563
|
+
/* @__PURE__ */ jsx300(
|
|
60336
60564
|
"span",
|
|
60337
60565
|
{
|
|
60338
|
-
className:
|
|
60566
|
+
className: classNames111(
|
|
60339
60567
|
"text-sm",
|
|
60340
60568
|
isActive ? "font-semibold text-neutral-900 dark:text-white" : "text-neutral-600 dark:text-neutral-300"
|
|
60341
60569
|
),
|
|
@@ -60343,7 +60571,7 @@ var NestedSubSteps = ({
|
|
|
60343
60571
|
}
|
|
60344
60572
|
)
|
|
60345
60573
|
] });
|
|
60346
|
-
return /* @__PURE__ */
|
|
60574
|
+
return /* @__PURE__ */ jsx300("li", { children: onSubStepSelect ? /* @__PURE__ */ jsx300(
|
|
60347
60575
|
"button",
|
|
60348
60576
|
{
|
|
60349
60577
|
type: "button",
|
|
@@ -60351,7 +60579,7 @@ var NestedSubSteps = ({
|
|
|
60351
60579
|
className: "flex w-full items-center gap-2.5 rounded-sm text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-neutral-400 focus-visible:ring-offset-2 dark:focus-visible:ring-neutral-500",
|
|
60352
60580
|
children: content
|
|
60353
60581
|
}
|
|
60354
|
-
) : /* @__PURE__ */
|
|
60582
|
+
) : /* @__PURE__ */ jsx300("div", { className: "flex items-center gap-2.5", children: content }) }, subStep.id);
|
|
60355
60583
|
}) })
|
|
60356
60584
|
}
|
|
60357
60585
|
);
|
|
@@ -60372,7 +60600,7 @@ var WorkflowTimeline = ({
|
|
|
60372
60600
|
onStepAction
|
|
60373
60601
|
}) => {
|
|
60374
60602
|
if (loading) {
|
|
60375
|
-
return /* @__PURE__ */
|
|
60603
|
+
return /* @__PURE__ */ jsx300(WorkflowRailSkeleton, { rows: loadingRows });
|
|
60376
60604
|
}
|
|
60377
60605
|
const isEmpty2 = steps.length === 0;
|
|
60378
60606
|
const tallyEntries = [
|
|
@@ -60381,19 +60609,19 @@ var WorkflowTimeline = ({
|
|
|
60381
60609
|
{ count: tallies.flagged, label: labels.flagged },
|
|
60382
60610
|
{ count: tallies.remaining, label: labels.remaining }
|
|
60383
60611
|
].filter((entry) => entry.count > 0);
|
|
60384
|
-
return /* @__PURE__ */
|
|
60385
|
-
!isEmpty2 && /* @__PURE__ */
|
|
60386
|
-
/* @__PURE__ */
|
|
60387
|
-
/* @__PURE__ */
|
|
60388
|
-
/* @__PURE__ */
|
|
60612
|
+
return /* @__PURE__ */ jsxs182("div", { className: "flex flex-col", children: [
|
|
60613
|
+
!isEmpty2 && /* @__PURE__ */ jsxs182("div", { className: classNames111("border-b px-5 pb-4 pt-5", surfaces.border), children: [
|
|
60614
|
+
/* @__PURE__ */ jsxs182("div", { className: "flex items-baseline justify-between gap-3", children: [
|
|
60615
|
+
/* @__PURE__ */ jsx300(SectionTitle, { surfaces, children: labels.progress }),
|
|
60616
|
+
/* @__PURE__ */ jsxs182("span", { className: "text-sm font-semibold text-neutral-900 dark:text-white", children: [
|
|
60389
60617
|
progress,
|
|
60390
60618
|
"%"
|
|
60391
60619
|
] })
|
|
60392
60620
|
] }),
|
|
60393
|
-
/* @__PURE__ */
|
|
60621
|
+
/* @__PURE__ */ jsx300(
|
|
60394
60622
|
Progress_default,
|
|
60395
60623
|
{
|
|
60396
|
-
className:
|
|
60624
|
+
className: classNames111(
|
|
60397
60625
|
"mt-2",
|
|
60398
60626
|
surfaces.translucent ? "bg-white/40 dark:bg-white/15" : "bg-neutral-200 dark:bg-neutral-700"
|
|
60399
60627
|
),
|
|
@@ -60403,8 +60631,8 @@ var WorkflowTimeline = ({
|
|
|
60403
60631
|
motion: "none"
|
|
60404
60632
|
}
|
|
60405
60633
|
),
|
|
60406
|
-
tallyEntries.length > 0 && /* @__PURE__ */
|
|
60407
|
-
index > 0 && /* @__PURE__ */
|
|
60634
|
+
tallyEntries.length > 0 && /* @__PURE__ */ jsx300("div", { className: "mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs", children: tallyEntries.map((entry, index) => /* @__PURE__ */ jsxs182(React87.Fragment, { children: [
|
|
60635
|
+
index > 0 && /* @__PURE__ */ jsx300(
|
|
60408
60636
|
"span",
|
|
60409
60637
|
{
|
|
60410
60638
|
"aria-hidden": "true",
|
|
@@ -60412,7 +60640,7 @@ var WorkflowTimeline = ({
|
|
|
60412
60640
|
children: "\xB7"
|
|
60413
60641
|
}
|
|
60414
60642
|
),
|
|
60415
|
-
/* @__PURE__ */
|
|
60643
|
+
/* @__PURE__ */ jsx300(
|
|
60416
60644
|
Tally,
|
|
60417
60645
|
{
|
|
60418
60646
|
count: entry.count,
|
|
@@ -60422,7 +60650,7 @@ var WorkflowTimeline = ({
|
|
|
60422
60650
|
)
|
|
60423
60651
|
] }, entry.label)) })
|
|
60424
60652
|
] }),
|
|
60425
|
-
/* @__PURE__ */
|
|
60653
|
+
/* @__PURE__ */ jsx300("div", { className: classNames111(isEmpty2 ? "" : "px-5 py-5"), children: isEmpty2 ? emptyState ?? /* @__PURE__ */ jsx300(
|
|
60426
60654
|
WorkflowPlaceholder,
|
|
60427
60655
|
{
|
|
60428
60656
|
title: labels.empty,
|
|
@@ -60430,14 +60658,14 @@ var WorkflowTimeline = ({
|
|
|
60430
60658
|
palette,
|
|
60431
60659
|
surfaces
|
|
60432
60660
|
}
|
|
60433
|
-
) : /* @__PURE__ */
|
|
60661
|
+
) : /* @__PURE__ */ jsx300("ol", { className: "m-0 list-none p-0", children: steps.map((step, index) => {
|
|
60434
60662
|
const status = normalizeStatus(step.status);
|
|
60435
60663
|
const tokens = getStatusTokens(status, palette);
|
|
60436
60664
|
const isActive = step.id === activeStepId;
|
|
60437
60665
|
const isLast = index === steps.length - 1;
|
|
60438
60666
|
const nested = isActive && step.subSteps && step.subSteps.length > 0 ? step.subSteps : void 0;
|
|
60439
|
-
const rowContent = /* @__PURE__ */
|
|
60440
|
-
/* @__PURE__ */
|
|
60667
|
+
const rowContent = /* @__PURE__ */ jsxs182(Fragment46, { children: [
|
|
60668
|
+
/* @__PURE__ */ jsx300(
|
|
60441
60669
|
WorkflowStatusNode_default,
|
|
60442
60670
|
{
|
|
60443
60671
|
status,
|
|
@@ -60445,19 +60673,19 @@ var WorkflowTimeline = ({
|
|
|
60445
60673
|
className: "mt-0.5"
|
|
60446
60674
|
}
|
|
60447
60675
|
),
|
|
60448
|
-
/* @__PURE__ */
|
|
60449
|
-
/* @__PURE__ */
|
|
60450
|
-
/* @__PURE__ */
|
|
60676
|
+
/* @__PURE__ */ jsxs182("div", { className: "min-w-0 flex-1", children: [
|
|
60677
|
+
/* @__PURE__ */ jsxs182("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
60678
|
+
/* @__PURE__ */ jsx300(
|
|
60451
60679
|
"span",
|
|
60452
60680
|
{
|
|
60453
|
-
className:
|
|
60681
|
+
className: classNames111(
|
|
60454
60682
|
"text-sm",
|
|
60455
60683
|
isActive ? "font-semibold text-neutral-900 dark:text-white" : "font-medium text-neutral-700 dark:text-neutral-200"
|
|
60456
60684
|
),
|
|
60457
60685
|
children: step.label
|
|
60458
60686
|
}
|
|
60459
60687
|
),
|
|
60460
|
-
step.badge && /* @__PURE__ */
|
|
60688
|
+
step.badge && /* @__PURE__ */ jsx300(
|
|
60461
60689
|
WorkflowBadge,
|
|
60462
60690
|
{
|
|
60463
60691
|
status,
|
|
@@ -60467,10 +60695,10 @@ var WorkflowTimeline = ({
|
|
|
60467
60695
|
}
|
|
60468
60696
|
)
|
|
60469
60697
|
] }),
|
|
60470
|
-
step.meta && /* @__PURE__ */
|
|
60698
|
+
step.meta && /* @__PURE__ */ jsx300(
|
|
60471
60699
|
"p",
|
|
60472
60700
|
{
|
|
60473
|
-
className:
|
|
60701
|
+
className: classNames111(
|
|
60474
60702
|
"mt-1 text-xs leading-5",
|
|
60475
60703
|
surfaces.mutedText
|
|
60476
60704
|
),
|
|
@@ -60479,24 +60707,24 @@ var WorkflowTimeline = ({
|
|
|
60479
60707
|
)
|
|
60480
60708
|
] })
|
|
60481
60709
|
] });
|
|
60482
|
-
return /* @__PURE__ */
|
|
60710
|
+
return /* @__PURE__ */ jsxs182(
|
|
60483
60711
|
"li",
|
|
60484
60712
|
{
|
|
60485
|
-
className:
|
|
60713
|
+
className: classNames111("relative", !isLast && "pb-5"),
|
|
60486
60714
|
"aria-current": isActive ? "step" : void 0,
|
|
60487
60715
|
children: [
|
|
60488
|
-
!isLast && /* @__PURE__ */
|
|
60716
|
+
!isLast && /* @__PURE__ */ jsx300(
|
|
60489
60717
|
"span",
|
|
60490
60718
|
{
|
|
60491
60719
|
"aria-hidden": "true",
|
|
60492
|
-
className:
|
|
60720
|
+
className: classNames111(
|
|
60493
60721
|
"absolute bottom-0",
|
|
60494
60722
|
tokens.connectorDashed ? `border-l-2 border-dashed ${tokens.connector}` : `w-0.5 rounded-full ${tokens.connector}`
|
|
60495
60723
|
),
|
|
60496
60724
|
style: { left: CONNECTOR_LEFT, top: CONNECTOR_TOP }
|
|
60497
60725
|
}
|
|
60498
60726
|
),
|
|
60499
|
-
onStepSelect ? /* @__PURE__ */
|
|
60727
|
+
onStepSelect ? /* @__PURE__ */ jsx300(
|
|
60500
60728
|
"button",
|
|
60501
60729
|
{
|
|
60502
60730
|
type: "button",
|
|
@@ -60504,8 +60732,8 @@ var WorkflowTimeline = ({
|
|
|
60504
60732
|
className: "flex w-full items-start gap-3 rounded-sm text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-neutral-400 focus-visible:ring-offset-2 dark:focus-visible:ring-neutral-500",
|
|
60505
60733
|
children: rowContent
|
|
60506
60734
|
}
|
|
60507
|
-
) : /* @__PURE__ */
|
|
60508
|
-
/* @__PURE__ */
|
|
60735
|
+
) : /* @__PURE__ */ jsx300("div", { className: "flex items-start gap-3", children: rowContent }),
|
|
60736
|
+
/* @__PURE__ */ jsx300(
|
|
60509
60737
|
WorkflowQuickActions_default,
|
|
60510
60738
|
{
|
|
60511
60739
|
stepId: step.id,
|
|
@@ -60516,7 +60744,7 @@ var WorkflowTimeline = ({
|
|
|
60516
60744
|
className: "ml-8 mt-2"
|
|
60517
60745
|
}
|
|
60518
60746
|
),
|
|
60519
|
-
nested && /* @__PURE__ */
|
|
60747
|
+
nested && /* @__PURE__ */ jsx300(
|
|
60520
60748
|
NestedSubSteps,
|
|
60521
60749
|
{
|
|
60522
60750
|
stepId: step.id,
|
|
@@ -60531,8 +60759,8 @@ var WorkflowTimeline = ({
|
|
|
60531
60759
|
step.id
|
|
60532
60760
|
);
|
|
60533
60761
|
}) }) }),
|
|
60534
|
-
showLegend && !isEmpty2 && /* @__PURE__ */
|
|
60535
|
-
/* @__PURE__ */
|
|
60762
|
+
showLegend && !isEmpty2 && /* @__PURE__ */ jsx300("div", { className: classNames111("mt-auto border-t px-5 py-4", surfaces.border), children: /* @__PURE__ */ jsx300("ul", { className: "flex flex-wrap gap-x-4 gap-y-2", children: LEGEND_ORDER.map((status) => /* @__PURE__ */ jsxs182("li", { className: "flex items-center gap-2", children: [
|
|
60763
|
+
/* @__PURE__ */ jsx300(
|
|
60536
60764
|
WorkflowStatusNode_default,
|
|
60537
60765
|
{
|
|
60538
60766
|
status,
|
|
@@ -60540,7 +60768,7 @@ var WorkflowTimeline = ({
|
|
|
60540
60768
|
size: "sm"
|
|
60541
60769
|
}
|
|
60542
60770
|
),
|
|
60543
|
-
/* @__PURE__ */
|
|
60771
|
+
/* @__PURE__ */ jsx300("span", { className: classNames111("text-xs", surfaces.mutedText), children: labels.statuses[status] })
|
|
60544
60772
|
] }, status)) }) })
|
|
60545
60773
|
] });
|
|
60546
60774
|
};
|
|
@@ -60701,7 +60929,7 @@ var resolveActiveStep = (steps, activeStepId) => {
|
|
|
60701
60929
|
};
|
|
60702
60930
|
|
|
60703
60931
|
// src/components/WorkflowTracker/sampleWorkflow.tsx
|
|
60704
|
-
import { jsx as
|
|
60932
|
+
import { jsx as jsx301, jsxs as jsxs183 } from "react/jsx-runtime";
|
|
60705
60933
|
var sampleWorkflow = {
|
|
60706
60934
|
eyebrow: "VENDOR ONBOARDING \xB7 REQ-4128",
|
|
60707
60935
|
title: "Northwind Logistics GmbH",
|
|
@@ -60746,9 +60974,9 @@ var sampleWorkflow = {
|
|
|
60746
60974
|
status: "attention",
|
|
60747
60975
|
badge: "Needs attention",
|
|
60748
60976
|
meta: "1h 06m \xB7 Liability certificate expired 12 Aug",
|
|
60749
|
-
details: /* @__PURE__ */
|
|
60750
|
-
/* @__PURE__ */
|
|
60751
|
-
/* @__PURE__ */
|
|
60977
|
+
details: /* @__PURE__ */ jsxs183("div", { className: "space-y-3 px-5 py-4 sm:px-6", children: [
|
|
60978
|
+
/* @__PURE__ */ jsx301("p", { className: "text-sm leading-6 text-neutral-600 dark:text-neutral-300", children: "The liability certificate expired on 12 Aug. A reminder went to the vendor\u2019s compliance contact; the underwriter quote is still pending." }),
|
|
60979
|
+
/* @__PURE__ */ jsx301("ul", { className: "flex flex-wrap gap-2", children: ["reminder-12-aug.pdf", "underwriter-quote.pdf"].map((file) => /* @__PURE__ */ jsx301(
|
|
60752
60980
|
"li",
|
|
60753
60981
|
{
|
|
60754
60982
|
className: "rounded-full border border-neutral-200 px-2.5 py-0.5 text-xs text-neutral-500 dark:border-neutral-700 dark:text-neutral-400",
|
|
@@ -60779,18 +61007,18 @@ var sampleWorkflow = {
|
|
|
60779
61007
|
owner: "D. Okafor",
|
|
60780
61008
|
startedAt: "19 Aug \xB7 09:12",
|
|
60781
61009
|
sla: "Due in 6h",
|
|
60782
|
-
details: /* @__PURE__ */
|
|
60783
|
-
/* @__PURE__ */
|
|
60784
|
-
/* @__PURE__ */
|
|
60785
|
-
/* @__PURE__ */
|
|
61010
|
+
details: /* @__PURE__ */ jsxs183("div", { className: "space-y-5 px-5 py-4 sm:px-6", children: [
|
|
61011
|
+
/* @__PURE__ */ jsxs183("div", { children: [
|
|
61012
|
+
/* @__PURE__ */ jsx301("p", { className: "text-[11px] font-semibold uppercase tracking-widest text-neutral-400 dark:text-neutral-500", children: "Review activity" }),
|
|
61013
|
+
/* @__PURE__ */ jsx301("p", { className: "mt-2 text-sm leading-6 text-neutral-600 dark:text-neutral-300", children: "Reviewer A. Lindqvist is cross-checking the subprocessor list against the master agreement. Uploads appear here as the vendor submits them." })
|
|
60786
61014
|
] }),
|
|
60787
|
-
/* @__PURE__ */
|
|
60788
|
-
/* @__PURE__ */
|
|
60789
|
-
/* @__PURE__ */
|
|
61015
|
+
/* @__PURE__ */ jsxs183("div", { children: [
|
|
61016
|
+
/* @__PURE__ */ jsx301("p", { className: "text-[11px] font-semibold uppercase tracking-widest text-neutral-400 dark:text-neutral-500", children: "Files received" }),
|
|
61017
|
+
/* @__PURE__ */ jsx301("ul", { className: "mt-2 flex flex-wrap gap-2", children: [
|
|
60790
61018
|
"data-handling-v3.pdf",
|
|
60791
61019
|
"pentest-2026.pdf",
|
|
60792
61020
|
"soc2-typeii.pdf"
|
|
60793
|
-
].map((file) => /* @__PURE__ */
|
|
61021
|
+
].map((file) => /* @__PURE__ */ jsx301(
|
|
60794
61022
|
"li",
|
|
60795
61023
|
{
|
|
60796
61024
|
className: "rounded-full border border-neutral-200 px-2.5 py-0.5 text-xs text-neutral-500 dark:border-neutral-700 dark:text-neutral-400",
|
|
@@ -60799,11 +61027,11 @@ var sampleWorkflow = {
|
|
|
60799
61027
|
file
|
|
60800
61028
|
)) })
|
|
60801
61029
|
] }),
|
|
60802
|
-
/* @__PURE__ */
|
|
60803
|
-
/* @__PURE__ */
|
|
60804
|
-
/* @__PURE__ */
|
|
60805
|
-
/* @__PURE__ */
|
|
60806
|
-
/* @__PURE__ */
|
|
61030
|
+
/* @__PURE__ */ jsxs183("div", { children: [
|
|
61031
|
+
/* @__PURE__ */ jsx301("p", { className: "text-[11px] font-semibold uppercase tracking-widest text-neutral-400 dark:text-neutral-500", children: "Open findings" }),
|
|
61032
|
+
/* @__PURE__ */ jsxs183("ul", { className: "mt-2 space-y-2", children: [
|
|
61033
|
+
/* @__PURE__ */ jsxs183("li", { className: "flex items-start gap-2 text-sm leading-6 text-neutral-600 dark:text-neutral-300", children: [
|
|
61034
|
+
/* @__PURE__ */ jsx301(
|
|
60807
61035
|
"span",
|
|
60808
61036
|
{
|
|
60809
61037
|
"aria-hidden": "true",
|
|
@@ -60812,8 +61040,8 @@ var sampleWorkflow = {
|
|
|
60812
61040
|
),
|
|
60813
61041
|
"Subprocessor \u201CCloudDot BV\u201D is not covered by the DPA yet"
|
|
60814
61042
|
] }),
|
|
60815
|
-
/* @__PURE__ */
|
|
60816
|
-
/* @__PURE__ */
|
|
61043
|
+
/* @__PURE__ */ jsxs183("li", { className: "flex items-start gap-2 text-sm leading-6 text-neutral-600 dark:text-neutral-300", children: [
|
|
61044
|
+
/* @__PURE__ */ jsx301(
|
|
60817
61045
|
"span",
|
|
60818
61046
|
{
|
|
60819
61047
|
"aria-hidden": "true",
|
|
@@ -60891,7 +61119,7 @@ var sampleWorkflow = {
|
|
|
60891
61119
|
};
|
|
60892
61120
|
|
|
60893
61121
|
// src/components/WorkflowTracker/WorkflowTrackerRail.tsx
|
|
60894
|
-
import { jsx as
|
|
61122
|
+
import { jsx as jsx302 } from "react/jsx-runtime";
|
|
60895
61123
|
var WorkflowTrackerRail = ({
|
|
60896
61124
|
data = sampleWorkflow,
|
|
60897
61125
|
loading = false,
|
|
@@ -60918,14 +61146,14 @@ var WorkflowTrackerRail = ({
|
|
|
60918
61146
|
);
|
|
60919
61147
|
const progress = useMemo52(() => computeProgress(steps), [steps]);
|
|
60920
61148
|
const tallies = useMemo52(() => computeTallies(steps), [steps]);
|
|
60921
|
-
return /* @__PURE__ */
|
|
61149
|
+
return /* @__PURE__ */ jsx302(
|
|
60922
61150
|
Panel_default,
|
|
60923
61151
|
{
|
|
60924
61152
|
...cardProps,
|
|
60925
61153
|
scrollable: cardScrollable ?? false,
|
|
60926
|
-
className:
|
|
61154
|
+
className: classNames112(className, cardClassName),
|
|
60927
61155
|
style,
|
|
60928
|
-
children: /* @__PURE__ */
|
|
61156
|
+
children: /* @__PURE__ */ jsx302(
|
|
60929
61157
|
WorkflowTimeline_default,
|
|
60930
61158
|
{
|
|
60931
61159
|
steps,
|
|
@@ -60951,11 +61179,11 @@ var WorkflowTrackerRail_default = WorkflowTrackerRail;
|
|
|
60951
61179
|
|
|
60952
61180
|
// src/components/WorkflowTracker/WorkflowTrackerStepDetails.tsx
|
|
60953
61181
|
import { useMemo as useMemo53 } from "react";
|
|
60954
|
-
import
|
|
61182
|
+
import classNames114 from "classnames";
|
|
60955
61183
|
|
|
60956
61184
|
// src/components/WorkflowTracker/WorkflowDetailPanel.tsx
|
|
60957
|
-
import
|
|
60958
|
-
import { Fragment as Fragment47, jsx as
|
|
61185
|
+
import classNames113 from "classnames";
|
|
61186
|
+
import { Fragment as Fragment47, jsx as jsx303, jsxs as jsxs184 } from "react/jsx-runtime";
|
|
60959
61187
|
var WorkflowDetailPanel = ({
|
|
60960
61188
|
active,
|
|
60961
61189
|
totalSteps,
|
|
@@ -60967,10 +61195,10 @@ var WorkflowDetailPanel = ({
|
|
|
60967
61195
|
onStepAction
|
|
60968
61196
|
}) => {
|
|
60969
61197
|
if (loading) {
|
|
60970
|
-
return /* @__PURE__ */
|
|
61198
|
+
return /* @__PURE__ */ jsx303(WorkflowDetailSkeleton, {});
|
|
60971
61199
|
}
|
|
60972
61200
|
if (!active) {
|
|
60973
|
-
return /* @__PURE__ */
|
|
61201
|
+
return /* @__PURE__ */ jsx303(
|
|
60974
61202
|
WorkflowPlaceholder,
|
|
60975
61203
|
{
|
|
60976
61204
|
title: labels.noActiveStep,
|
|
@@ -60988,11 +61216,11 @@ var WorkflowDetailPanel = ({
|
|
|
60988
61216
|
step.startedAt ? { label: labels.started, value: step.startedAt } : void 0,
|
|
60989
61217
|
step.sla ? { label: labels.sla, value: step.sla } : void 0
|
|
60990
61218
|
].filter(Boolean);
|
|
60991
|
-
return /* @__PURE__ */
|
|
60992
|
-
/* @__PURE__ */
|
|
60993
|
-
/* @__PURE__ */
|
|
60994
|
-
/* @__PURE__ */
|
|
60995
|
-
/* @__PURE__ */
|
|
61219
|
+
return /* @__PURE__ */ jsxs184("div", { className: "flex flex-col", children: [
|
|
61220
|
+
/* @__PURE__ */ jsxs184("div", { className: "px-5 pb-6 pt-5 sm:px-6", children: [
|
|
61221
|
+
/* @__PURE__ */ jsxs184("div", { className: "flex flex-wrap items-center justify-between gap-x-4 gap-y-2", children: [
|
|
61222
|
+
/* @__PURE__ */ jsxs184("div", { className: "flex flex-wrap items-center gap-3", children: [
|
|
61223
|
+
/* @__PURE__ */ jsxs184(SectionTitle, { surfaces, children: [
|
|
60996
61224
|
labels.step,
|
|
60997
61225
|
" ",
|
|
60998
61226
|
index,
|
|
@@ -61001,7 +61229,7 @@ var WorkflowDetailPanel = ({
|
|
|
61001
61229
|
" ",
|
|
61002
61230
|
totalSteps
|
|
61003
61231
|
] }),
|
|
61004
|
-
step.badge && /* @__PURE__ */
|
|
61232
|
+
step.badge && /* @__PURE__ */ jsx303(
|
|
61005
61233
|
WorkflowBadge,
|
|
61006
61234
|
{
|
|
61007
61235
|
status,
|
|
@@ -61011,13 +61239,13 @@ var WorkflowDetailPanel = ({
|
|
|
61011
61239
|
}
|
|
61012
61240
|
)
|
|
61013
61241
|
] }),
|
|
61014
|
-
/* @__PURE__ */
|
|
61015
|
-
step.elapsed && /* @__PURE__ */
|
|
61242
|
+
/* @__PURE__ */ jsxs184("div", { className: "flex flex-wrap items-center justify-end gap-x-4 gap-y-2", children: [
|
|
61243
|
+
step.elapsed && /* @__PURE__ */ jsxs184(SectionMeta, { surfaces, children: [
|
|
61016
61244
|
labels.elapsed,
|
|
61017
61245
|
" ",
|
|
61018
61246
|
step.elapsed
|
|
61019
61247
|
] }),
|
|
61020
|
-
/* @__PURE__ */
|
|
61248
|
+
/* @__PURE__ */ jsx303(
|
|
61021
61249
|
WorkflowQuickActions_default,
|
|
61022
61250
|
{
|
|
61023
61251
|
stepId: step.id,
|
|
@@ -61029,18 +61257,18 @@ var WorkflowDetailPanel = ({
|
|
|
61029
61257
|
)
|
|
61030
61258
|
] })
|
|
61031
61259
|
] }),
|
|
61032
|
-
/* @__PURE__ */
|
|
61033
|
-
step.description && /* @__PURE__ */
|
|
61260
|
+
/* @__PURE__ */ jsx303("h3", { className: "mt-3 text-xl font-semibold tracking-tight text-neutral-900 dark:text-white sm:text-2xl", children: step.label }),
|
|
61261
|
+
step.description && /* @__PURE__ */ jsx303(
|
|
61034
61262
|
"p",
|
|
61035
61263
|
{
|
|
61036
|
-
className:
|
|
61264
|
+
className: classNames113(
|
|
61037
61265
|
"mt-2 max-w-3xl text-sm leading-6",
|
|
61038
61266
|
surfaces.mutedText
|
|
61039
61267
|
),
|
|
61040
61268
|
children: step.description
|
|
61041
61269
|
}
|
|
61042
61270
|
),
|
|
61043
|
-
metaFields.length > 0 && /* @__PURE__ */
|
|
61271
|
+
metaFields.length > 0 && /* @__PURE__ */ jsx303("div", { className: "mt-5 flex flex-wrap gap-x-10 gap-y-4", children: metaFields.map((field) => /* @__PURE__ */ jsx303(
|
|
61044
61272
|
MetaField,
|
|
61045
61273
|
{
|
|
61046
61274
|
label: field.label,
|
|
@@ -61050,18 +61278,18 @@ var WorkflowDetailPanel = ({
|
|
|
61050
61278
|
field.label
|
|
61051
61279
|
)) })
|
|
61052
61280
|
] }),
|
|
61053
|
-
subSteps.length > 0 && /* @__PURE__ */
|
|
61054
|
-
/* @__PURE__ */
|
|
61281
|
+
subSteps.length > 0 && /* @__PURE__ */ jsxs184(Fragment47, { children: [
|
|
61282
|
+
/* @__PURE__ */ jsxs184(
|
|
61055
61283
|
"div",
|
|
61056
61284
|
{
|
|
61057
|
-
className:
|
|
61285
|
+
className: classNames113(
|
|
61058
61286
|
"flex flex-wrap items-center justify-between gap-2 border-y px-5 py-2.5 sm:px-6",
|
|
61059
61287
|
surfaces.border,
|
|
61060
61288
|
surfaces.strip
|
|
61061
61289
|
),
|
|
61062
61290
|
children: [
|
|
61063
|
-
/* @__PURE__ */
|
|
61064
|
-
/* @__PURE__ */
|
|
61291
|
+
/* @__PURE__ */ jsx303(SectionTitle, { surfaces, children: labels.subSteps }),
|
|
61292
|
+
/* @__PURE__ */ jsxs184(SectionMeta, { surfaces, children: [
|
|
61065
61293
|
summary.accepted,
|
|
61066
61294
|
" ",
|
|
61067
61295
|
labels.accepted,
|
|
@@ -61077,24 +61305,24 @@ var WorkflowDetailPanel = ({
|
|
|
61077
61305
|
]
|
|
61078
61306
|
}
|
|
61079
61307
|
),
|
|
61080
|
-
/* @__PURE__ */
|
|
61308
|
+
/* @__PURE__ */ jsx303(
|
|
61081
61309
|
"ul",
|
|
61082
61310
|
{
|
|
61083
|
-
className:
|
|
61311
|
+
className: classNames113(
|
|
61084
61312
|
"m-0 list-none divide-y p-0",
|
|
61085
61313
|
surfaces.divider
|
|
61086
61314
|
),
|
|
61087
61315
|
children: subSteps.map((subStep) => {
|
|
61088
61316
|
const subStatus = normalizeStatus(subStep.status);
|
|
61089
61317
|
const isRunning = subStatus === "running";
|
|
61090
|
-
const rowContent = /* @__PURE__ */
|
|
61091
|
-
/* @__PURE__ */
|
|
61092
|
-
/* @__PURE__ */
|
|
61093
|
-
/* @__PURE__ */
|
|
61094
|
-
subStep.note && /* @__PURE__ */
|
|
61318
|
+
const rowContent = /* @__PURE__ */ jsxs184(Fragment47, { children: [
|
|
61319
|
+
/* @__PURE__ */ jsx303(WorkflowStatusNode_default, { status: subStatus, palette }),
|
|
61320
|
+
/* @__PURE__ */ jsxs184("div", { className: "min-w-0 flex-1", children: [
|
|
61321
|
+
/* @__PURE__ */ jsx303("p", { className: "text-sm font-medium text-neutral-800 dark:text-neutral-100", children: subStep.label }),
|
|
61322
|
+
subStep.note && /* @__PURE__ */ jsx303(
|
|
61095
61323
|
"p",
|
|
61096
61324
|
{
|
|
61097
|
-
className:
|
|
61325
|
+
className: classNames113(
|
|
61098
61326
|
"mt-0.5 text-xs leading-5",
|
|
61099
61327
|
surfaces.mutedText
|
|
61100
61328
|
),
|
|
@@ -61102,7 +61330,7 @@ var WorkflowDetailPanel = ({
|
|
|
61102
61330
|
}
|
|
61103
61331
|
)
|
|
61104
61332
|
] }),
|
|
61105
|
-
subStep.badge && /* @__PURE__ */
|
|
61333
|
+
subStep.badge && /* @__PURE__ */ jsx303(
|
|
61106
61334
|
WorkflowBadge,
|
|
61107
61335
|
{
|
|
61108
61336
|
status: subStatus,
|
|
@@ -61111,10 +61339,10 @@ var WorkflowDetailPanel = ({
|
|
|
61111
61339
|
children: subStep.badge
|
|
61112
61340
|
}
|
|
61113
61341
|
),
|
|
61114
|
-
/* @__PURE__ */
|
|
61342
|
+
/* @__PURE__ */ jsx303(
|
|
61115
61343
|
"span",
|
|
61116
61344
|
{
|
|
61117
|
-
className:
|
|
61345
|
+
className: classNames113(
|
|
61118
61346
|
"w-10 shrink-0 text-right text-xs tabular-nums",
|
|
61119
61347
|
surfaces.faintText
|
|
61120
61348
|
),
|
|
@@ -61122,22 +61350,22 @@ var WorkflowDetailPanel = ({
|
|
|
61122
61350
|
}
|
|
61123
61351
|
)
|
|
61124
61352
|
] });
|
|
61125
|
-
const rowClasses =
|
|
61353
|
+
const rowClasses = classNames113(
|
|
61126
61354
|
"flex w-full items-center gap-3 px-5 py-3 text-left sm:px-6",
|
|
61127
61355
|
isRunning && getRowHighlight(palette.accent, surfaces.translucent)
|
|
61128
61356
|
);
|
|
61129
|
-
return /* @__PURE__ */
|
|
61357
|
+
return /* @__PURE__ */ jsx303("li", { children: onSubStepSelect ? /* @__PURE__ */ jsx303(
|
|
61130
61358
|
"button",
|
|
61131
61359
|
{
|
|
61132
61360
|
type: "button",
|
|
61133
61361
|
onClick: () => onSubStepSelect(step.id, subStep.id),
|
|
61134
|
-
className:
|
|
61362
|
+
className: classNames113(
|
|
61135
61363
|
rowClasses,
|
|
61136
61364
|
"focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-neutral-400 dark:focus-visible:ring-neutral-500"
|
|
61137
61365
|
),
|
|
61138
61366
|
children: rowContent
|
|
61139
61367
|
}
|
|
61140
|
-
) : /* @__PURE__ */
|
|
61368
|
+
) : /* @__PURE__ */ jsx303("div", { className: rowClasses, children: rowContent }) }, subStep.id);
|
|
61141
61369
|
})
|
|
61142
61370
|
}
|
|
61143
61371
|
)
|
|
@@ -61147,7 +61375,7 @@ var WorkflowDetailPanel = ({
|
|
|
61147
61375
|
var WorkflowDetailPanel_default = WorkflowDetailPanel;
|
|
61148
61376
|
|
|
61149
61377
|
// src/components/WorkflowTracker/WorkflowTrackerStepDetails.tsx
|
|
61150
|
-
import { jsx as
|
|
61378
|
+
import { jsx as jsx304 } from "react/jsx-runtime";
|
|
61151
61379
|
var WorkflowTrackerStepDetails = ({
|
|
61152
61380
|
data = sampleWorkflow,
|
|
61153
61381
|
loading = false,
|
|
@@ -61170,13 +61398,13 @@ var WorkflowTrackerStepDetails = ({
|
|
|
61170
61398
|
() => resolveActiveStep(steps, data?.activeStepId),
|
|
61171
61399
|
[steps, data?.activeStepId]
|
|
61172
61400
|
);
|
|
61173
|
-
return /* @__PURE__ */
|
|
61401
|
+
return /* @__PURE__ */ jsx304(
|
|
61174
61402
|
Panel_default,
|
|
61175
61403
|
{
|
|
61176
61404
|
...cardProps,
|
|
61177
|
-
className:
|
|
61405
|
+
className: classNames114(className, cardClassName),
|
|
61178
61406
|
style,
|
|
61179
|
-
children: /* @__PURE__ */
|
|
61407
|
+
children: /* @__PURE__ */ jsx304(
|
|
61180
61408
|
WorkflowDetailPanel_default,
|
|
61181
61409
|
{
|
|
61182
61410
|
active,
|
|
@@ -61196,31 +61424,31 @@ var WorkflowTrackerStepDetails_default = WorkflowTrackerStepDetails;
|
|
|
61196
61424
|
|
|
61197
61425
|
// src/components/WorkflowTracker/WorkflowTrackerDetails.tsx
|
|
61198
61426
|
import { useMemo as useMemo54 } from "react";
|
|
61199
|
-
import
|
|
61427
|
+
import classNames116 from "classnames";
|
|
61200
61428
|
|
|
61201
61429
|
// src/components/WorkflowTracker/WorkflowDetailsCard.tsx
|
|
61202
|
-
import
|
|
61203
|
-
import { jsx as
|
|
61430
|
+
import classNames115 from "classnames";
|
|
61431
|
+
import { jsx as jsx305 } from "react/jsx-runtime";
|
|
61204
61432
|
var WorkflowDetailsCard = ({
|
|
61205
61433
|
details,
|
|
61206
61434
|
ariaLabel,
|
|
61207
61435
|
cardProps,
|
|
61208
61436
|
className,
|
|
61209
61437
|
style
|
|
61210
|
-
}) => /* @__PURE__ */
|
|
61438
|
+
}) => /* @__PURE__ */ jsx305(
|
|
61211
61439
|
Panel_default,
|
|
61212
61440
|
{
|
|
61213
61441
|
...cardProps,
|
|
61214
61442
|
flexBody: true,
|
|
61215
|
-
className:
|
|
61443
|
+
className: classNames115("flex-1", className),
|
|
61216
61444
|
style,
|
|
61217
|
-
children: /* @__PURE__ */
|
|
61445
|
+
children: /* @__PURE__ */ jsx305(ScrollArea_default, { className: "h-full", mask: true, role: "region", "aria-label": ariaLabel, children: details })
|
|
61218
61446
|
}
|
|
61219
61447
|
);
|
|
61220
61448
|
var WorkflowDetailsCard_default = WorkflowDetailsCard;
|
|
61221
61449
|
|
|
61222
61450
|
// src/components/WorkflowTracker/WorkflowTrackerDetails.tsx
|
|
61223
|
-
import { jsx as
|
|
61451
|
+
import { jsx as jsx306 } from "react/jsx-runtime";
|
|
61224
61452
|
var WorkflowTrackerDetails = ({
|
|
61225
61453
|
data = sampleWorkflow,
|
|
61226
61454
|
loading = false,
|
|
@@ -61239,21 +61467,110 @@ var WorkflowTrackerDetails = ({
|
|
|
61239
61467
|
);
|
|
61240
61468
|
const details = active?.step.details;
|
|
61241
61469
|
if (loading || details == null || details === "") return null;
|
|
61242
|
-
return /* @__PURE__ */
|
|
61470
|
+
return /* @__PURE__ */ jsx306(
|
|
61243
61471
|
WorkflowDetailsCard_default,
|
|
61244
61472
|
{
|
|
61245
61473
|
details,
|
|
61246
61474
|
ariaLabel: labels.details,
|
|
61247
61475
|
cardProps,
|
|
61248
|
-
className:
|
|
61476
|
+
className: classNames116(className, cardClassName),
|
|
61249
61477
|
style
|
|
61250
61478
|
}
|
|
61251
61479
|
);
|
|
61252
61480
|
};
|
|
61253
61481
|
var WorkflowTrackerDetails_default = WorkflowTrackerDetails;
|
|
61254
61482
|
|
|
61255
|
-
// src/components/WorkflowTracker/
|
|
61483
|
+
// src/components/WorkflowTracker/WorkflowTrackerRollups.tsx
|
|
61484
|
+
import { useMemo as useMemo55 } from "react";
|
|
61485
|
+
import classNames118 from "classnames";
|
|
61486
|
+
|
|
61487
|
+
// src/components/WorkflowTracker/WorkflowSummaryCard.tsx
|
|
61488
|
+
import classNames117 from "classnames";
|
|
61489
|
+
import { jsx as jsx307, jsxs as jsxs185 } from "react/jsx-runtime";
|
|
61490
|
+
var WorkflowSummaryCard = ({
|
|
61491
|
+
title,
|
|
61492
|
+
steps,
|
|
61493
|
+
palette,
|
|
61494
|
+
surfaces
|
|
61495
|
+
}) => /* @__PURE__ */ jsxs185("div", { className: "px-5 py-4", children: [
|
|
61496
|
+
/* @__PURE__ */ jsx307(SectionTitle, { surfaces, children: title }),
|
|
61497
|
+
/* @__PURE__ */ jsx307("ul", { className: "mt-3 space-y-3", children: steps.map((step) => /* @__PURE__ */ jsxs185("li", { className: "flex items-start gap-3", children: [
|
|
61498
|
+
/* @__PURE__ */ jsx307(
|
|
61499
|
+
WorkflowStatusNode_default,
|
|
61500
|
+
{
|
|
61501
|
+
status: normalizeStatus(step.status),
|
|
61502
|
+
palette,
|
|
61503
|
+
className: "mt-0.5"
|
|
61504
|
+
}
|
|
61505
|
+
),
|
|
61506
|
+
/* @__PURE__ */ jsxs185("div", { className: "min-w-0 flex-1", children: [
|
|
61507
|
+
/* @__PURE__ */ jsx307("p", { className: "text-sm font-medium text-neutral-800 dark:text-neutral-100", children: step.label }),
|
|
61508
|
+
step.meta && /* @__PURE__ */ jsx307(
|
|
61509
|
+
"p",
|
|
61510
|
+
{
|
|
61511
|
+
className: classNames117(
|
|
61512
|
+
"mt-0.5 text-xs leading-5",
|
|
61513
|
+
surfaces.mutedText
|
|
61514
|
+
),
|
|
61515
|
+
children: step.meta
|
|
61516
|
+
}
|
|
61517
|
+
)
|
|
61518
|
+
] })
|
|
61519
|
+
] }, step.id)) })
|
|
61520
|
+
] });
|
|
61521
|
+
var WorkflowSummaryCard_default = WorkflowSummaryCard;
|
|
61522
|
+
|
|
61523
|
+
// src/components/WorkflowTracker/WorkflowTrackerRollups.tsx
|
|
61256
61524
|
import { jsx as jsx308, jsxs as jsxs186 } from "react/jsx-runtime";
|
|
61525
|
+
var WorkflowTrackerRollups = ({
|
|
61526
|
+
data = sampleWorkflow,
|
|
61527
|
+
loading = false,
|
|
61528
|
+
labels: labelOverrides,
|
|
61529
|
+
className,
|
|
61530
|
+
style,
|
|
61531
|
+
...styleProps
|
|
61532
|
+
}) => {
|
|
61533
|
+
const steps = data?.steps ?? [];
|
|
61534
|
+
const { palette, surfaces } = useWorkflowChrome(styleProps);
|
|
61535
|
+
const labels = useMemo55(() => resolveLabels(labelOverrides), [labelOverrides]);
|
|
61536
|
+
const cardProps = buildCardProps(styleProps);
|
|
61537
|
+
const attentionSteps = useMemo55(() => getAttentionSteps(steps), [steps]);
|
|
61538
|
+
const skippedSteps = useMemo55(() => getSkippedSteps(steps), [steps]);
|
|
61539
|
+
if (loading || attentionSteps.length === 0 && skippedSteps.length === 0) {
|
|
61540
|
+
return null;
|
|
61541
|
+
}
|
|
61542
|
+
return /* @__PURE__ */ jsxs186(
|
|
61543
|
+
"div",
|
|
61544
|
+
{
|
|
61545
|
+
className: classNames118("grid grid-cols-1 gap-5 @xl:grid-cols-2", className),
|
|
61546
|
+
style,
|
|
61547
|
+
children: [
|
|
61548
|
+
attentionSteps.length > 0 && /* @__PURE__ */ jsx308(Panel_default, { ...cardProps, children: /* @__PURE__ */ jsx308(
|
|
61549
|
+
WorkflowSummaryCard_default,
|
|
61550
|
+
{
|
|
61551
|
+
title: labels.needsAttention,
|
|
61552
|
+
steps: attentionSteps,
|
|
61553
|
+
palette,
|
|
61554
|
+
surfaces
|
|
61555
|
+
}
|
|
61556
|
+
) }),
|
|
61557
|
+
skippedSteps.length > 0 && /* @__PURE__ */ jsx308(Panel_default, { ...cardProps, children: /* @__PURE__ */ jsx308(
|
|
61558
|
+
WorkflowSummaryCard_default,
|
|
61559
|
+
{
|
|
61560
|
+
title: labels.skippedSteps,
|
|
61561
|
+
steps: skippedSteps,
|
|
61562
|
+
palette,
|
|
61563
|
+
surfaces
|
|
61564
|
+
}
|
|
61565
|
+
) })
|
|
61566
|
+
]
|
|
61567
|
+
}
|
|
61568
|
+
);
|
|
61569
|
+
};
|
|
61570
|
+
var WorkflowTrackerRollups_default = WorkflowTrackerRollups;
|
|
61571
|
+
|
|
61572
|
+
// src/components/WorkflowTracker/WorkflowTracker.tsx
|
|
61573
|
+
import { jsx as jsx309, jsxs as jsxs187 } from "react/jsx-runtime";
|
|
61257
61574
|
var WorkflowTracker = ({
|
|
61258
61575
|
data = sampleWorkflow,
|
|
61259
61576
|
accentColor = "blue",
|
|
@@ -61287,7 +61604,6 @@ var WorkflowTracker = ({
|
|
|
61287
61604
|
style,
|
|
61288
61605
|
...rest
|
|
61289
61606
|
}) => {
|
|
61290
|
-
const steps = data?.steps ?? [];
|
|
61291
61607
|
const styleProps = {
|
|
61292
61608
|
accentColor,
|
|
61293
61609
|
attentionColor,
|
|
@@ -61302,38 +61618,35 @@ var WorkflowTracker = ({
|
|
|
61302
61618
|
padding,
|
|
61303
61619
|
translucentSurfaces
|
|
61304
61620
|
};
|
|
61305
|
-
const {
|
|
61306
|
-
const labels =
|
|
61307
|
-
const cardProps = buildCardProps(styleProps);
|
|
61308
|
-
const attentionSteps = useMemo55(() => getAttentionSteps(steps), [steps]);
|
|
61309
|
-
const skippedSteps = useMemo55(() => getSkippedSteps(steps), [steps]);
|
|
61621
|
+
const { surfaces } = useWorkflowChrome(styleProps);
|
|
61622
|
+
const labels = useMemo56(() => resolveLabels(labelOverrides), [labelOverrides]);
|
|
61310
61623
|
const railStyle = {
|
|
61311
61624
|
"--wt-rail-width": typeof railWidth === "number" ? `${railWidth}px` : railWidth,
|
|
61312
61625
|
"--wt-fill-offset": typeof fillHeightOffset === "number" ? `${fillHeightOffset}px` : fillHeightOffset
|
|
61313
61626
|
};
|
|
61314
|
-
return /* @__PURE__ */
|
|
61627
|
+
return /* @__PURE__ */ jsxs187(
|
|
61315
61628
|
"div",
|
|
61316
61629
|
{
|
|
61317
|
-
className:
|
|
61630
|
+
className: classNames119("@container w-full", className),
|
|
61318
61631
|
style: { maxWidth, ...railStyle, ...style },
|
|
61319
61632
|
"aria-busy": loading || void 0,
|
|
61320
61633
|
...rest,
|
|
61321
61634
|
children: [
|
|
61322
|
-
showHeader && loading && /* @__PURE__ */
|
|
61635
|
+
showHeader && loading && /* @__PURE__ */ jsx309(
|
|
61323
61636
|
WorkflowHeaderSkeleton,
|
|
61324
61637
|
{
|
|
61325
61638
|
hasIcon: Boolean(data?.icon),
|
|
61326
61639
|
iconCorner
|
|
61327
61640
|
}
|
|
61328
61641
|
),
|
|
61329
|
-
showHeader && !loading && /* @__PURE__ */
|
|
61330
|
-
/* @__PURE__ */
|
|
61642
|
+
showHeader && !loading && /* @__PURE__ */ jsxs187("header", { className: "mb-5 flex flex-wrap items-start justify-between gap-3", children: [
|
|
61643
|
+
/* @__PURE__ */ jsxs187("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
61331
61644
|
data?.icon && // `overflow-hidden` plus the shared corner class clips whatever
|
|
61332
61645
|
// the caller passes, so an <img> needs no rounding of its own.
|
|
61333
|
-
/* @__PURE__ */
|
|
61646
|
+
/* @__PURE__ */ jsx309(
|
|
61334
61647
|
"span",
|
|
61335
61648
|
{
|
|
61336
|
-
className:
|
|
61649
|
+
className: classNames119(
|
|
61337
61650
|
"flex h-12 w-12 shrink-0 items-center justify-center overflow-hidden [&>img]:h-full [&>img]:w-full [&>img]:object-cover",
|
|
61338
61651
|
getSurfaceCornerClass(iconCorner),
|
|
61339
61652
|
surfaces.chip
|
|
@@ -61341,33 +61654,33 @@ var WorkflowTracker = ({
|
|
|
61341
61654
|
children: data.icon
|
|
61342
61655
|
}
|
|
61343
61656
|
),
|
|
61344
|
-
/* @__PURE__ */
|
|
61345
|
-
data?.eyebrow && /* @__PURE__ */
|
|
61657
|
+
/* @__PURE__ */ jsxs187("div", { className: "min-w-0", children: [
|
|
61658
|
+
data?.eyebrow && /* @__PURE__ */ jsx309(
|
|
61346
61659
|
"p",
|
|
61347
61660
|
{
|
|
61348
|
-
className:
|
|
61661
|
+
className: classNames119(
|
|
61349
61662
|
"text-[11px] font-semibold uppercase tracking-widest",
|
|
61350
61663
|
surfaces.faintText
|
|
61351
61664
|
),
|
|
61352
61665
|
children: data.eyebrow
|
|
61353
61666
|
}
|
|
61354
61667
|
),
|
|
61355
|
-
/* @__PURE__ */
|
|
61668
|
+
/* @__PURE__ */ jsx309("h2", { className: "mt-1 text-2xl font-semibold tracking-tight text-neutral-900 dark:text-white sm:text-3xl", children: data?.title })
|
|
61356
61669
|
] })
|
|
61357
61670
|
] }),
|
|
61358
|
-
data?.live && /* @__PURE__ */
|
|
61671
|
+
data?.live && /* @__PURE__ */ jsxs187(
|
|
61359
61672
|
Pill_default,
|
|
61360
61673
|
{
|
|
61361
61674
|
size: "md",
|
|
61362
61675
|
tone: mutedColor,
|
|
61363
61676
|
variant: "outline",
|
|
61364
|
-
className:
|
|
61677
|
+
className: classNames119("tracking-wide", surfaces.chip),
|
|
61365
61678
|
children: [
|
|
61366
|
-
/* @__PURE__ */
|
|
61679
|
+
/* @__PURE__ */ jsx309(
|
|
61367
61680
|
"span",
|
|
61368
61681
|
{
|
|
61369
61682
|
"aria-hidden": "true",
|
|
61370
|
-
className:
|
|
61683
|
+
className: classNames119(
|
|
61371
61684
|
"mr-2 inline-block h-1.5 w-1.5 rounded-full",
|
|
61372
61685
|
`bg-${accentColor}-500 dark:bg-${accentColor}-400`
|
|
61373
61686
|
)
|
|
@@ -61378,15 +61691,15 @@ var WorkflowTracker = ({
|
|
|
61378
61691
|
}
|
|
61379
61692
|
)
|
|
61380
61693
|
] }),
|
|
61381
|
-
/* @__PURE__ */
|
|
61694
|
+
/* @__PURE__ */ jsxs187(
|
|
61382
61695
|
"div",
|
|
61383
61696
|
{
|
|
61384
|
-
className:
|
|
61697
|
+
className: classNames119(
|
|
61385
61698
|
"grid grid-cols-1 items-start gap-5 @4xl:grid-cols-[var(--wt-rail-width)_minmax(0,1fr)]",
|
|
61386
61699
|
fillHeight && "@4xl:h-[calc(100dvh-var(--wt-fill-offset))]"
|
|
61387
61700
|
),
|
|
61388
61701
|
children: [
|
|
61389
|
-
/* @__PURE__ */
|
|
61702
|
+
/* @__PURE__ */ jsx309(
|
|
61390
61703
|
WorkflowTrackerRail_default,
|
|
61391
61704
|
{
|
|
61392
61705
|
...styleProps,
|
|
@@ -61397,7 +61710,7 @@ var WorkflowTracker = ({
|
|
|
61397
61710
|
emptyState,
|
|
61398
61711
|
labels: labelOverrides,
|
|
61399
61712
|
cardScrollable: fillHeight,
|
|
61400
|
-
cardClassName:
|
|
61713
|
+
cardClassName: classNames119(
|
|
61401
61714
|
stickyRail && !fillHeight && "@4xl:sticky @4xl:top-6",
|
|
61402
61715
|
fillHeight && "@4xl:min-h-0 @4xl:self-stretch"
|
|
61403
61716
|
),
|
|
@@ -61406,15 +61719,15 @@ var WorkflowTracker = ({
|
|
|
61406
61719
|
onStepAction
|
|
61407
61720
|
}
|
|
61408
61721
|
),
|
|
61409
|
-
/* @__PURE__ */
|
|
61722
|
+
/* @__PURE__ */ jsxs187(
|
|
61410
61723
|
"div",
|
|
61411
61724
|
{
|
|
61412
|
-
className:
|
|
61725
|
+
className: classNames119(
|
|
61413
61726
|
"@container flex min-w-0 flex-col gap-5",
|
|
61414
61727
|
fillHeight && "@4xl:min-h-0 @4xl:self-stretch"
|
|
61415
61728
|
),
|
|
61416
61729
|
children: [
|
|
61417
|
-
/* @__PURE__ */
|
|
61730
|
+
/* @__PURE__ */ jsx309(
|
|
61418
61731
|
WorkflowTrackerStepDetails_default,
|
|
61419
61732
|
{
|
|
61420
61733
|
...styleProps,
|
|
@@ -61425,7 +61738,7 @@ var WorkflowTracker = ({
|
|
|
61425
61738
|
onStepAction
|
|
61426
61739
|
}
|
|
61427
61740
|
),
|
|
61428
|
-
/* @__PURE__ */
|
|
61741
|
+
/* @__PURE__ */ jsx309(
|
|
61429
61742
|
WorkflowTrackerDetails_default,
|
|
61430
61743
|
{
|
|
61431
61744
|
...styleProps,
|
|
@@ -61434,26 +61747,15 @@ var WorkflowTracker = ({
|
|
|
61434
61747
|
labels: labelOverrides
|
|
61435
61748
|
}
|
|
61436
61749
|
),
|
|
61437
|
-
|
|
61438
|
-
|
|
61439
|
-
|
|
61440
|
-
|
|
61441
|
-
|
|
61442
|
-
|
|
61443
|
-
|
|
61444
|
-
|
|
61445
|
-
|
|
61446
|
-
) }),
|
|
61447
|
-
skippedSteps.length > 0 && /* @__PURE__ */ jsx308(Panel_default, { ...cardProps, children: /* @__PURE__ */ jsx308(
|
|
61448
|
-
WorkflowSummaryCard_default,
|
|
61449
|
-
{
|
|
61450
|
-
title: labels.skippedSteps,
|
|
61451
|
-
steps: skippedSteps,
|
|
61452
|
-
palette,
|
|
61453
|
-
surfaces
|
|
61454
|
-
}
|
|
61455
|
-
) })
|
|
61456
|
-
] })
|
|
61750
|
+
/* @__PURE__ */ jsx309(
|
|
61751
|
+
WorkflowTrackerRollups_default,
|
|
61752
|
+
{
|
|
61753
|
+
...styleProps,
|
|
61754
|
+
data,
|
|
61755
|
+
loading,
|
|
61756
|
+
labels: labelOverrides
|
|
61757
|
+
}
|
|
61758
|
+
)
|
|
61457
61759
|
]
|
|
61458
61760
|
}
|
|
61459
61761
|
)
|
|
@@ -61467,9 +61769,9 @@ var WorkflowTracker = ({
|
|
|
61467
61769
|
var WorkflowTracker_default = WorkflowTracker;
|
|
61468
61770
|
|
|
61469
61771
|
// src/components/Gantt/Gantt.tsx
|
|
61470
|
-
import { useCallback as useCallback42, useEffect as useEffect71, useMemo as
|
|
61772
|
+
import { useCallback as useCallback42, useEffect as useEffect71, useMemo as useMemo60, useRef as useRef68, useState as useState79 } from "react";
|
|
61471
61773
|
import { createPortal as createPortal15 } from "react-dom";
|
|
61472
|
-
import
|
|
61774
|
+
import classNames123 from "classnames";
|
|
61473
61775
|
|
|
61474
61776
|
// ../common/gantt/types.ts
|
|
61475
61777
|
var GANTT_ZOOM_PRESETS = [
|
|
@@ -62815,38 +63117,38 @@ var sampleGantt = {
|
|
|
62815
63117
|
};
|
|
62816
63118
|
|
|
62817
63119
|
// src/components/Gantt/GanttScale.tsx
|
|
62818
|
-
import
|
|
62819
|
-
import { jsx as
|
|
63120
|
+
import classNames120 from "classnames";
|
|
63121
|
+
import { jsx as jsx310, jsxs as jsxs188 } from "react/jsx-runtime";
|
|
62820
63122
|
var GanttScale = ({ levels, height }) => {
|
|
62821
63123
|
if (levels.length === 0) {
|
|
62822
|
-
return /* @__PURE__ */
|
|
63124
|
+
return /* @__PURE__ */ jsx310("div", { style: { height } });
|
|
62823
63125
|
}
|
|
62824
63126
|
const coarseHeight = levels.length > 1 ? 24 : height;
|
|
62825
|
-
return /* @__PURE__ */
|
|
63127
|
+
return /* @__PURE__ */ jsx310("div", { className: "flex h-full w-full flex-col", children: levels.map((level, li) => /* @__PURE__ */ jsx310(
|
|
62826
63128
|
"div",
|
|
62827
63129
|
{
|
|
62828
|
-
className:
|
|
63130
|
+
className: classNames120("flex w-full", li === 0 ? "shrink-0" : "min-h-0 flex-1"),
|
|
62829
63131
|
style: li === 0 ? { height: coarseHeight } : void 0,
|
|
62830
|
-
children: level.columns.map((col) => /* @__PURE__ */
|
|
63132
|
+
children: level.columns.map((col) => /* @__PURE__ */ jsxs188(
|
|
62831
63133
|
"div",
|
|
62832
63134
|
{
|
|
62833
|
-
className:
|
|
63135
|
+
className: classNames120(
|
|
62834
63136
|
"flex shrink-0 flex-col items-center justify-center overflow-hidden border-r border-neutral-200/70 dark:border-neutral-800/70",
|
|
62835
63137
|
li === 0 ? "bg-neutral-50/60 dark:bg-neutral-800/40" : "bg-white dark:bg-neutral-900"
|
|
62836
63138
|
),
|
|
62837
63139
|
style: { width: col.width },
|
|
62838
63140
|
children: [
|
|
62839
|
-
/* @__PURE__ */
|
|
63141
|
+
/* @__PURE__ */ jsx310(
|
|
62840
63142
|
"span",
|
|
62841
63143
|
{
|
|
62842
|
-
className:
|
|
63144
|
+
className: classNames120(
|
|
62843
63145
|
"max-w-full truncate px-1 text-[10px] font-semibold uppercase leading-none tracking-wide",
|
|
62844
63146
|
li === 0 ? "text-neutral-700 dark:text-neutral-200" : "text-neutral-500 dark:text-neutral-400"
|
|
62845
63147
|
),
|
|
62846
63148
|
children: col.label
|
|
62847
63149
|
}
|
|
62848
63150
|
),
|
|
62849
|
-
col.subLabel != null && /* @__PURE__ */
|
|
63151
|
+
col.subLabel != null && /* @__PURE__ */ jsx310("span", { className: "max-w-full truncate px-1 text-[9px] font-medium leading-none text-neutral-400 dark:text-neutral-500", children: col.subLabel })
|
|
62850
63152
|
]
|
|
62851
63153
|
},
|
|
62852
63154
|
col.id
|
|
@@ -62859,7 +63161,7 @@ GanttScale.displayName = "GanttScale";
|
|
|
62859
63161
|
|
|
62860
63162
|
// src/components/Gantt/GanttLinkLayer.tsx
|
|
62861
63163
|
import { forwardRef as forwardRef160, useRef as useRef66 } from "react";
|
|
62862
|
-
import { jsx as
|
|
63164
|
+
import { jsx as jsx311, jsxs as jsxs189 } from "react/jsx-runtime";
|
|
62863
63165
|
var GanttLinkLayer = forwardRef160(
|
|
62864
63166
|
function GanttLinkLayer2({
|
|
62865
63167
|
width,
|
|
@@ -62895,24 +63197,24 @@ var GanttLinkLayer = forwardRef160(
|
|
|
62895
63197
|
const pick = pickFromEvent(e) ?? clicked;
|
|
62896
63198
|
if (interactive && onDeleteLink) onDeleteLink(pick.link);
|
|
62897
63199
|
};
|
|
62898
|
-
return /* @__PURE__ */
|
|
63200
|
+
return /* @__PURE__ */ jsxs189(
|
|
62899
63201
|
"div",
|
|
62900
63202
|
{
|
|
62901
63203
|
ref,
|
|
62902
63204
|
className: "pointer-events-none absolute top-0 z-10",
|
|
62903
63205
|
style: { left: offsetLeft, width, height },
|
|
62904
63206
|
children: [
|
|
62905
|
-
/* @__PURE__ */
|
|
63207
|
+
/* @__PURE__ */ jsxs189("svg", { ref: svgRef, width, height, className: "block overflow-visible", children: [
|
|
62906
63208
|
paths.map((p, i) => {
|
|
62907
63209
|
const tokens = getGanttLinkTokens(p.color ?? color);
|
|
62908
63210
|
const sel = selected != null && p.link === selected;
|
|
62909
63211
|
const nodeR = sel ? 4.5 : 3.5;
|
|
62910
|
-
return /* @__PURE__ */
|
|
63212
|
+
return /* @__PURE__ */ jsxs189(
|
|
62911
63213
|
"g",
|
|
62912
63214
|
{
|
|
62913
63215
|
style: sel ? { filter: `drop-shadow(0 0 3px var(--color-${p.color ?? color}-500))` } : void 0,
|
|
62914
63216
|
children: [
|
|
62915
|
-
/* @__PURE__ */
|
|
63217
|
+
/* @__PURE__ */ jsx311(
|
|
62916
63218
|
"path",
|
|
62917
63219
|
{
|
|
62918
63220
|
d: p.d,
|
|
@@ -62928,10 +63230,10 @@ var GanttLinkLayer = forwardRef160(
|
|
|
62928
63230
|
},
|
|
62929
63231
|
onClick: (e) => handlePick(e, p),
|
|
62930
63232
|
onDoubleClick: (e) => handleDelete(e, p),
|
|
62931
|
-
children: /* @__PURE__ */
|
|
63233
|
+
children: /* @__PURE__ */ jsx311("title", { children: `${p.link.source} \u2192 ${p.link.target} (${p.type.toUpperCase()})` })
|
|
62932
63234
|
}
|
|
62933
63235
|
),
|
|
62934
|
-
/* @__PURE__ */
|
|
63236
|
+
/* @__PURE__ */ jsx311(
|
|
62935
63237
|
"path",
|
|
62936
63238
|
{
|
|
62937
63239
|
d: p.d,
|
|
@@ -62947,14 +63249,14 @@ var GanttLinkLayer = forwardRef160(
|
|
|
62947
63249
|
},
|
|
62948
63250
|
onClick: (e) => handlePick(e, p),
|
|
62949
63251
|
onDoubleClick: (e) => handleDelete(e, p),
|
|
62950
|
-
children: /* @__PURE__ */
|
|
63252
|
+
children: /* @__PURE__ */ jsx311("title", { children: `${p.link.source} \u2192 ${p.link.target} (${p.type.toUpperCase()})` })
|
|
62951
63253
|
}
|
|
62952
63254
|
),
|
|
62953
|
-
p.arrow && /* @__PURE__ */
|
|
62954
|
-
/* @__PURE__ */
|
|
62955
|
-
/* @__PURE__ */
|
|
62956
|
-
/* @__PURE__ */
|
|
62957
|
-
/* @__PURE__ */
|
|
63255
|
+
p.arrow && /* @__PURE__ */ jsx311("polygon", { points: p.arrow, className: tokens.fill }),
|
|
63256
|
+
/* @__PURE__ */ jsx311("circle", { cx: p.from.x, cy: p.from.y, r: nodeR + 2.5, className: tokens.halo }),
|
|
63257
|
+
/* @__PURE__ */ jsx311("circle", { cx: p.from.x, cy: p.from.y, r: nodeR, className: tokens.fill }),
|
|
63258
|
+
/* @__PURE__ */ jsx311("circle", { cx: p.to.x, cy: p.to.y, r: nodeR + 2.5, className: tokens.halo }),
|
|
63259
|
+
/* @__PURE__ */ jsx311("circle", { cx: p.to.x, cy: p.to.y, r: nodeR, className: tokens.fill })
|
|
62958
63260
|
]
|
|
62959
63261
|
},
|
|
62960
63262
|
`${p.link.source}->${p.link.target}-${p.type}-${i}`
|
|
@@ -62962,8 +63264,8 @@ var GanttLinkLayer = forwardRef160(
|
|
|
62962
63264
|
}),
|
|
62963
63265
|
rubber && (() => {
|
|
62964
63266
|
const tokens = getGanttLinkTokens(rubber.color);
|
|
62965
|
-
return /* @__PURE__ */
|
|
62966
|
-
/* @__PURE__ */
|
|
63267
|
+
return /* @__PURE__ */ jsxs189("g", { children: [
|
|
63268
|
+
/* @__PURE__ */ jsx311(
|
|
62967
63269
|
"path",
|
|
62968
63270
|
{
|
|
62969
63271
|
d: rubber.d,
|
|
@@ -62974,15 +63276,15 @@ var GanttLinkLayer = forwardRef160(
|
|
|
62974
63276
|
strokeDasharray: "5 3"
|
|
62975
63277
|
}
|
|
62976
63278
|
),
|
|
62977
|
-
rubber.arrow && /* @__PURE__ */
|
|
62978
|
-
/* @__PURE__ */
|
|
62979
|
-
/* @__PURE__ */
|
|
62980
|
-
/* @__PURE__ */
|
|
62981
|
-
/* @__PURE__ */
|
|
63279
|
+
rubber.arrow && /* @__PURE__ */ jsx311("polygon", { points: rubber.arrow, className: tokens.fill }),
|
|
63280
|
+
/* @__PURE__ */ jsx311("circle", { cx: rubber.from.x, cy: rubber.from.y, r: 6, className: tokens.halo }),
|
|
63281
|
+
/* @__PURE__ */ jsx311("circle", { cx: rubber.from.x, cy: rubber.from.y, r: 3.5, className: tokens.fill }),
|
|
63282
|
+
/* @__PURE__ */ jsx311("circle", { cx: rubber.to.x, cy: rubber.to.y, r: 6, className: tokens.halo }),
|
|
63283
|
+
/* @__PURE__ */ jsx311("circle", { cx: rubber.to.x, cy: rubber.to.y, r: 3.5, className: tokens.fill })
|
|
62982
63284
|
] });
|
|
62983
63285
|
})()
|
|
62984
63286
|
] }),
|
|
62985
|
-
canDelete && selMid && /* @__PURE__ */
|
|
63287
|
+
canDelete && selMid && /* @__PURE__ */ jsxs189(
|
|
62986
63288
|
"button",
|
|
62987
63289
|
{
|
|
62988
63290
|
type: "button",
|
|
@@ -63000,7 +63302,7 @@ var GanttLinkLayer = forwardRef160(
|
|
|
63000
63302
|
onClick: () => onDeleteLink(selected),
|
|
63001
63303
|
title: t("kit.gantt.removeDependency"),
|
|
63002
63304
|
children: [
|
|
63003
|
-
/* @__PURE__ */
|
|
63305
|
+
/* @__PURE__ */ jsx311("span", { "aria-hidden": true, children: "\u2715" }),
|
|
63004
63306
|
" ",
|
|
63005
63307
|
t("kit.gantt.delete")
|
|
63006
63308
|
]
|
|
@@ -63014,9 +63316,9 @@ var GanttLinkLayer = forwardRef160(
|
|
|
63014
63316
|
GanttLinkLayer.displayName = "GanttLinkLayer";
|
|
63015
63317
|
|
|
63016
63318
|
// src/components/Gantt/GanttBodyRow.tsx
|
|
63017
|
-
import { useMemo as
|
|
63018
|
-
import
|
|
63019
|
-
import { Fragment as Fragment48, jsx as
|
|
63319
|
+
import { useMemo as useMemo57 } from "react";
|
|
63320
|
+
import classNames121 from "classnames";
|
|
63321
|
+
import { Fragment as Fragment48, jsx as jsx312, jsxs as jsxs190 } from "react/jsx-runtime";
|
|
63020
63322
|
var BAR_HEIGHT = 24;
|
|
63021
63323
|
var MILESTONE_SIZE = 14;
|
|
63022
63324
|
var GanttBodyRow = ({
|
|
@@ -63055,11 +63357,11 @@ var GanttBodyRow = ({
|
|
|
63055
63357
|
const t = useKitT();
|
|
63056
63358
|
const isDraggingThis = row.task != null && drag?.taskId === row.task.id;
|
|
63057
63359
|
const reorderDragging = isDraggingThis && drag?.kind === "reorder";
|
|
63058
|
-
return /* @__PURE__ */
|
|
63360
|
+
return /* @__PURE__ */ jsx312(
|
|
63059
63361
|
"div",
|
|
63060
63362
|
{
|
|
63061
63363
|
"data-row-key": row.key,
|
|
63062
|
-
className:
|
|
63364
|
+
className: classNames121(
|
|
63063
63365
|
// No overflow here: an overflow-hidden row root would become the
|
|
63064
63366
|
// sticky halves' (non-scrolling) scrollport and stop them pinning to
|
|
63065
63367
|
// the left edge while the timeline scrolls. The halves pin the
|
|
@@ -63076,7 +63378,7 @@ var GanttBodyRow = ({
|
|
|
63076
63378
|
boxShadow: `inset 2px 0 0 var(--color-${color}-500)`
|
|
63077
63379
|
} : {}
|
|
63078
63380
|
},
|
|
63079
|
-
children: row.task == null ? /* @__PURE__ */
|
|
63381
|
+
children: row.task == null ? /* @__PURE__ */ jsx312(
|
|
63080
63382
|
LaneHeader,
|
|
63081
63383
|
{
|
|
63082
63384
|
row,
|
|
@@ -63087,20 +63389,20 @@ var GanttBodyRow = ({
|
|
|
63087
63389
|
dividerClass,
|
|
63088
63390
|
liveProgress: liveLane
|
|
63089
63391
|
}
|
|
63090
|
-
) : /* @__PURE__ */
|
|
63091
|
-
/* @__PURE__ */
|
|
63392
|
+
) : /* @__PURE__ */ jsxs190(Fragment48, { children: [
|
|
63393
|
+
/* @__PURE__ */ jsxs190(
|
|
63092
63394
|
"div",
|
|
63093
63395
|
{
|
|
63094
|
-
className:
|
|
63396
|
+
className: classNames121(
|
|
63095
63397
|
"sticky left-0 z-20 flex items-stretch overflow-hidden border-r border-b bg-white dark:bg-neutral-900",
|
|
63096
63398
|
dividerClass
|
|
63097
63399
|
),
|
|
63098
63400
|
style: { width: leftWidth },
|
|
63099
63401
|
children: [
|
|
63100
|
-
/* @__PURE__ */
|
|
63402
|
+
/* @__PURE__ */ jsx312("div", { className: "flex w-9 shrink-0 items-center justify-center", children: interactive && !row.task.locked && /* @__PURE__ */ jsx312(
|
|
63101
63403
|
"span",
|
|
63102
63404
|
{
|
|
63103
|
-
className:
|
|
63405
|
+
className: classNames121(
|
|
63104
63406
|
"flex cursor-grab touch-none items-center text-neutral-300 transition-opacity active:cursor-grabbing dark:text-neutral-600",
|
|
63105
63407
|
reorderDragging ? "opacity-100" : "opacity-0 group-hover/row:opacity-100"
|
|
63106
63408
|
),
|
|
@@ -63108,10 +63410,10 @@ var GanttBodyRow = ({
|
|
|
63108
63410
|
onPointerDown: (e) => onGripPointerDown(row.key, row.task, e),
|
|
63109
63411
|
title: t("kit.gantt.dragReorder"),
|
|
63110
63412
|
"aria-hidden": "true",
|
|
63111
|
-
children: /* @__PURE__ */
|
|
63413
|
+
children: /* @__PURE__ */ jsx312(Drag, { className: "h-3.5 w-3.5" })
|
|
63112
63414
|
}
|
|
63113
63415
|
) }),
|
|
63114
|
-
columns.map((col, i) => /* @__PURE__ */
|
|
63416
|
+
columns.map((col, i) => /* @__PURE__ */ jsx312(
|
|
63115
63417
|
Cell,
|
|
63116
63418
|
{
|
|
63117
63419
|
col,
|
|
@@ -63132,12 +63434,12 @@ var GanttBodyRow = ({
|
|
|
63132
63434
|
]
|
|
63133
63435
|
}
|
|
63134
63436
|
),
|
|
63135
|
-
/* @__PURE__ */
|
|
63437
|
+
/* @__PURE__ */ jsx312(
|
|
63136
63438
|
"div",
|
|
63137
63439
|
{
|
|
63138
|
-
className:
|
|
63440
|
+
className: classNames121("relative shrink-0 border-b", dividerClass),
|
|
63139
63441
|
style: { width: timelineWidth },
|
|
63140
|
-
children: /* @__PURE__ */
|
|
63442
|
+
children: /* @__PURE__ */ jsx312(
|
|
63141
63443
|
TaskBar,
|
|
63142
63444
|
{
|
|
63143
63445
|
task: row.task,
|
|
@@ -63178,57 +63480,57 @@ var LaneHeader = ({ row, columns, leftWidth, color, onCaretClick, dividerClass =
|
|
|
63178
63480
|
const laneColor = lane.color ?? color;
|
|
63179
63481
|
const tokens = getGanttLaneTokens(laneColor);
|
|
63180
63482
|
const isOpen = lane.open !== false;
|
|
63181
|
-
return /* @__PURE__ */
|
|
63182
|
-
/* @__PURE__ */
|
|
63483
|
+
return /* @__PURE__ */ jsxs190(Fragment48, { children: [
|
|
63484
|
+
/* @__PURE__ */ jsxs190(
|
|
63183
63485
|
"div",
|
|
63184
63486
|
{
|
|
63185
|
-
className:
|
|
63487
|
+
className: classNames121(
|
|
63186
63488
|
"sticky left-0 z-20 flex items-stretch overflow-hidden border-r border-b bg-white dark:bg-neutral-900",
|
|
63187
63489
|
dividerClass
|
|
63188
63490
|
),
|
|
63189
63491
|
style: { width: leftWidth },
|
|
63190
63492
|
children: [
|
|
63191
|
-
/* @__PURE__ */
|
|
63192
|
-
/* @__PURE__ */
|
|
63493
|
+
/* @__PURE__ */ jsx312("div", { className: classNames121("pointer-events-none absolute inset-0", tokens.band) }),
|
|
63494
|
+
/* @__PURE__ */ jsx312("div", { className: "relative flex w-9 shrink-0 items-center justify-center", children: /* @__PURE__ */ jsx312(
|
|
63193
63495
|
"button",
|
|
63194
63496
|
{
|
|
63195
63497
|
type: "button",
|
|
63196
63498
|
className: "flex h-5 w-5 shrink-0 items-center justify-center rounded text-neutral-500 hover:bg-white/60 focus-visible:ring-2 focus-visible:ring-neutral-400 dark:text-neutral-400 dark:hover:bg-white/10",
|
|
63197
63499
|
onClick: () => onCaretClick(lane.id, isOpen),
|
|
63198
63500
|
"aria-label": t(isOpen ? "kit.gantt.collapse" : "kit.gantt.expand", { name: lane.label }),
|
|
63199
|
-
children: /* @__PURE__ */
|
|
63501
|
+
children: /* @__PURE__ */ jsx312(ChevronRight, { className: classNames121("h-3 w-3 transition-transform", isOpen && "rotate-90") })
|
|
63200
63502
|
}
|
|
63201
63503
|
) }),
|
|
63202
|
-
columns.map((col, i) => /* @__PURE__ */
|
|
63504
|
+
columns.map((col, i) => /* @__PURE__ */ jsx312(
|
|
63203
63505
|
"div",
|
|
63204
63506
|
{
|
|
63205
|
-
className:
|
|
63507
|
+
className: classNames121(
|
|
63206
63508
|
"relative flex shrink-0 items-center gap-2 overflow-hidden border-r px-2 last:border-r-0",
|
|
63207
63509
|
dividerClass
|
|
63208
63510
|
),
|
|
63209
63511
|
style: { width: col.width ?? "160px" },
|
|
63210
|
-
children: i === 0 ? /* @__PURE__ */
|
|
63211
|
-
/* @__PURE__ */
|
|
63212
|
-
lane.description && /* @__PURE__ */
|
|
63213
|
-
row.childCount > 0 && /* @__PURE__ */
|
|
63214
|
-
] }) : col.key === "progress" ? /* @__PURE__ */
|
|
63512
|
+
children: i === 0 ? /* @__PURE__ */ jsxs190(Fragment48, { children: [
|
|
63513
|
+
/* @__PURE__ */ jsx312("span", { className: classNames121("truncate text-[13px] font-semibold", tokens.label), children: lane.label }),
|
|
63514
|
+
lane.description && /* @__PURE__ */ jsx312("span", { className: "hidden truncate text-[11px] text-neutral-500 dark:text-neutral-400 lg:inline", children: lane.description }),
|
|
63515
|
+
row.childCount > 0 && /* @__PURE__ */ jsx312("span", { className: "shrink-0 rounded-full bg-white/70 px-1.5 py-0.5 text-[10px] font-semibold text-neutral-600 dark:bg-white/10 dark:text-neutral-300", children: row.childCount })
|
|
63516
|
+
] }) : col.key === "progress" ? /* @__PURE__ */ jsx312(ProgressCell, { value: liveProgress ?? row.progress ?? 0, barClass: tokens.chip }) : null
|
|
63215
63517
|
},
|
|
63216
63518
|
col.key
|
|
63217
63519
|
))
|
|
63218
63520
|
]
|
|
63219
63521
|
}
|
|
63220
63522
|
),
|
|
63221
|
-
/* @__PURE__ */
|
|
63523
|
+
/* @__PURE__ */ jsx312("div", { className: classNames121("relative min-w-0 flex-1 border-b", dividerClass), children: /* @__PURE__ */ jsx312("div", { className: classNames121("absolute inset-0", tokens.band) }) })
|
|
63222
63524
|
] });
|
|
63223
63525
|
};
|
|
63224
63526
|
var Cell = ({ col, task, depth, isGroup, childCount, first, onCaretClick, renderCell, liveProgress, liveRollup, rowProgress, dividerClass = "border-neutral-100 dark:border-neutral-800" }) => {
|
|
63225
63527
|
const t = useKitT();
|
|
63226
63528
|
const value = col.key === "name" ? task.name : col.key === "owner" ? task.owner : col.key === "progress" ? isGroup ? liveRollup ?? rowProgress ?? 0 : liveProgress ?? task.progress ?? 0 : task.values?.[col.key] ?? null;
|
|
63227
63529
|
const custom = col.key !== "name" && renderCell ? renderCell(value, task, col) : null;
|
|
63228
|
-
return /* @__PURE__ */
|
|
63530
|
+
return /* @__PURE__ */ jsx312(
|
|
63229
63531
|
"div",
|
|
63230
63532
|
{
|
|
63231
|
-
className:
|
|
63533
|
+
className: classNames121(
|
|
63232
63534
|
"flex shrink-0 items-center gap-1.5 overflow-hidden border-r px-2 text-[12.5px] last:border-r-0",
|
|
63233
63535
|
dividerClass
|
|
63234
63536
|
),
|
|
@@ -63236,50 +63538,50 @@ var Cell = ({ col, task, depth, isGroup, childCount, first, onCaretClick, render
|
|
|
63236
63538
|
width: col.width ?? "160px",
|
|
63237
63539
|
justifyContent: col.align === "center" ? "center" : col.align === "right" ? "flex-end" : "flex-start"
|
|
63238
63540
|
},
|
|
63239
|
-
children: first ? /* @__PURE__ */
|
|
63240
|
-
/* @__PURE__ */
|
|
63541
|
+
children: first ? /* @__PURE__ */ jsxs190(Fragment48, { children: [
|
|
63542
|
+
/* @__PURE__ */ jsx312("span", { className: "shrink-0", style: { width: depth * 14 + 18 }, children: isGroup && /* @__PURE__ */ jsx312(
|
|
63241
63543
|
"button",
|
|
63242
63544
|
{
|
|
63243
63545
|
type: "button",
|
|
63244
63546
|
className: "flex h-4 w-4 items-center justify-center rounded text-neutral-400 hover:bg-neutral-100 hover:text-neutral-600 focus-visible:ring-2 focus-visible:ring-neutral-400 dark:hover:bg-white/10 dark:hover:text-neutral-300",
|
|
63245
63547
|
onClick: () => onCaretClick(task.id, task.open !== false),
|
|
63246
63548
|
"aria-label": t(task.open === false ? "kit.gantt.expand" : "kit.gantt.collapse", { name: task.name }),
|
|
63247
|
-
children: /* @__PURE__ */
|
|
63549
|
+
children: /* @__PURE__ */ jsx312(ChevronRight, { className: classNames121("h-3 w-3 transition-transform", task.open !== false && "rotate-90") })
|
|
63248
63550
|
}
|
|
63249
63551
|
) }),
|
|
63250
|
-
isGroup && childCount > 0 ? /* @__PURE__ */
|
|
63251
|
-
/* @__PURE__ */
|
|
63252
|
-
/* @__PURE__ */
|
|
63253
|
-
] }) : /* @__PURE__ */
|
|
63254
|
-
] }) : col.kind === "owner" ? value != null ? /* @__PURE__ */
|
|
63255
|
-
/* @__PURE__ */
|
|
63552
|
+
isGroup && childCount > 0 ? /* @__PURE__ */ jsxs190("span", { className: "flex min-w-0 items-center gap-1 font-semibold text-neutral-800 dark:text-neutral-100", children: [
|
|
63553
|
+
/* @__PURE__ */ jsx312("span", { className: "truncate", children: task.name }),
|
|
63554
|
+
/* @__PURE__ */ jsx312("span", { className: "shrink-0 rounded-full bg-neutral-100 px-1 text-[10px] font-semibold text-neutral-500 dark:bg-white/10 dark:text-neutral-400", children: childCount })
|
|
63555
|
+
] }) : /* @__PURE__ */ jsx312("span", { className: "truncate font-medium text-neutral-700 dark:text-neutral-300", children: task.name })
|
|
63556
|
+
] }) : col.kind === "owner" ? value != null ? /* @__PURE__ */ jsxs190("span", { className: "flex min-w-0 items-center gap-1.5 text-neutral-600 dark:text-neutral-400", children: [
|
|
63557
|
+
/* @__PURE__ */ jsx312(
|
|
63256
63558
|
"span",
|
|
63257
63559
|
{
|
|
63258
|
-
className:
|
|
63560
|
+
className: classNames121(
|
|
63259
63561
|
"flex h-4 w-4 shrink-0 items-center justify-center rounded-full text-[8px] font-bold uppercase text-white",
|
|
63260
63562
|
getGanttBarTokens(task.color ?? "blue").fill
|
|
63261
63563
|
),
|
|
63262
63564
|
children: String(value).slice(0, 1)
|
|
63263
63565
|
}
|
|
63264
63566
|
),
|
|
63265
|
-
/* @__PURE__ */
|
|
63266
|
-
] }) : /* @__PURE__ */
|
|
63567
|
+
/* @__PURE__ */ jsx312("span", { className: "truncate", children: String(value) })
|
|
63568
|
+
] }) : /* @__PURE__ */ jsx312("span", { className: "text-neutral-400 dark:text-neutral-600", children: "\u2014" }) : col.kind === "progress" ? /* @__PURE__ */ jsx312(ProgressCell, { value: typeof value === "number" ? value : 0 }) : col.kind === "badge" ? task.badge != null ? /* @__PURE__ */ jsx312(
|
|
63267
63569
|
"span",
|
|
63268
63570
|
{
|
|
63269
|
-
className:
|
|
63571
|
+
className: classNames121(
|
|
63270
63572
|
"rounded-full px-1.5 py-0.5 text-[10px] font-semibold",
|
|
63271
63573
|
getGanttBarTokens(task.badgeColor ?? "neutral").fill,
|
|
63272
63574
|
"text-white"
|
|
63273
63575
|
),
|
|
63274
63576
|
children: task.badge
|
|
63275
63577
|
}
|
|
63276
|
-
) : /* @__PURE__ */
|
|
63578
|
+
) : /* @__PURE__ */ jsx312("span", { className: "text-neutral-400 dark:text-neutral-600", children: "\u2014" }) : custom != null ? custom : /* @__PURE__ */ jsx312("span", { className: "truncate text-neutral-600 dark:text-neutral-400", children: value == null || value === "" ? "\u2014" : String(value) })
|
|
63277
63579
|
}
|
|
63278
63580
|
);
|
|
63279
63581
|
};
|
|
63280
|
-
var ProgressCell = ({ value, barClass = "bg-emerald-500" }) => /* @__PURE__ */
|
|
63281
|
-
/* @__PURE__ */
|
|
63282
|
-
/* @__PURE__ */
|
|
63582
|
+
var ProgressCell = ({ value, barClass = "bg-emerald-500" }) => /* @__PURE__ */ jsxs190("span", { className: "flex w-full items-center gap-1.5", children: [
|
|
63583
|
+
/* @__PURE__ */ jsx312("span", { className: "h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-neutral-200/80 dark:bg-white/10", children: /* @__PURE__ */ jsx312("span", { className: classNames121("block h-full rounded-full", barClass), style: { width: `${Math.round(value * 100)}%` } }) }),
|
|
63584
|
+
/* @__PURE__ */ jsxs190("span", { className: "w-7 shrink-0 text-right text-[10px] font-semibold tabular-nums text-neutral-500 dark:text-neutral-400", children: [
|
|
63283
63585
|
Math.round(value * 100),
|
|
63284
63586
|
"%"
|
|
63285
63587
|
] })
|
|
@@ -63311,7 +63613,7 @@ var TaskBar = ({
|
|
|
63311
63613
|
const t = useKitT();
|
|
63312
63614
|
const milestone = task.type === "milestone";
|
|
63313
63615
|
const barColor = task.color ?? color;
|
|
63314
|
-
const tokens =
|
|
63616
|
+
const tokens = useMemo57(() => getGanttBarTokens(barColor), [barColor]);
|
|
63315
63617
|
const startMs = liveDates ? liveDates.start : toMs(task.start);
|
|
63316
63618
|
const endMs = liveDates ? liveDates.end : toMs(task.end);
|
|
63317
63619
|
const left = dateToX(startMs, rangeStart, zoom);
|
|
@@ -63336,7 +63638,7 @@ var TaskBar = ({
|
|
|
63336
63638
|
pct: progressPct
|
|
63337
63639
|
});
|
|
63338
63640
|
if (milestone) {
|
|
63339
|
-
return /* @__PURE__ */
|
|
63641
|
+
return /* @__PURE__ */ jsxs190(
|
|
63340
63642
|
"div",
|
|
63341
63643
|
{
|
|
63342
63644
|
role: "button",
|
|
@@ -63344,7 +63646,7 @@ var TaskBar = ({
|
|
|
63344
63646
|
"aria-label": ariaLabel,
|
|
63345
63647
|
title: ariaLabel,
|
|
63346
63648
|
"data-gantt-bar": task.id,
|
|
63347
|
-
className:
|
|
63649
|
+
className: classNames121(
|
|
63348
63650
|
"absolute z-10 flex cursor-pointer items-center gap-1.5 outline-none",
|
|
63349
63651
|
selected && selectionTokens.ring,
|
|
63350
63652
|
"rounded"
|
|
@@ -63354,13 +63656,13 @@ var TaskBar = ({
|
|
|
63354
63656
|
onClick: () => onSelect(task.id),
|
|
63355
63657
|
onKeyDown: (e) => onBarKeyDown(e, task),
|
|
63356
63658
|
children: [
|
|
63357
|
-
/* @__PURE__ */
|
|
63358
|
-
/* @__PURE__ */
|
|
63659
|
+
/* @__PURE__ */ jsx312("span", { className: classNames121("h-3.5 w-3.5 shrink-0 rotate-45 rounded-[2px] shadow-sm", tokens.milestone) }),
|
|
63660
|
+
/* @__PURE__ */ jsx312("span", { className: "truncate text-[11px] font-semibold text-neutral-700 dark:text-neutral-300", children: task.name })
|
|
63359
63661
|
]
|
|
63360
63662
|
}
|
|
63361
63663
|
);
|
|
63362
63664
|
}
|
|
63363
|
-
return /* @__PURE__ */
|
|
63665
|
+
return /* @__PURE__ */ jsxs190(
|
|
63364
63666
|
"div",
|
|
63365
63667
|
{
|
|
63366
63668
|
role: "button",
|
|
@@ -63368,7 +63670,7 @@ var TaskBar = ({
|
|
|
63368
63670
|
"aria-label": ariaLabel,
|
|
63369
63671
|
title: `${task.name} \xB7 ${formatDateTime(startMs, locale)} \u2192 ${formatDateTime(endMs, locale)} \xB7 ${progressPct}%`,
|
|
63370
63672
|
"data-gantt-bar": task.id,
|
|
63371
|
-
className:
|
|
63673
|
+
className: classNames121(
|
|
63372
63674
|
"group/bar absolute z-10 cursor-grab touch-none rounded-md shadow-sm outline-none transition-shadow active:cursor-grabbing",
|
|
63373
63675
|
tokens.base,
|
|
63374
63676
|
tokens.rim,
|
|
@@ -63385,17 +63687,17 @@ var TaskBar = ({
|
|
|
63385
63687
|
onClick: () => onSelect(task.id),
|
|
63386
63688
|
onKeyDown: (e) => onBarKeyDown(e, task),
|
|
63387
63689
|
children: [
|
|
63388
|
-
progress > 0 && /* @__PURE__ */
|
|
63690
|
+
progress > 0 && /* @__PURE__ */ jsx312(
|
|
63389
63691
|
"div",
|
|
63390
63692
|
{
|
|
63391
|
-
className:
|
|
63693
|
+
className: classNames121("absolute inset-y-0 left-0 rounded-l-md", tokens.progress),
|
|
63392
63694
|
style: { width: `${progress * 100}%` }
|
|
63393
63695
|
}
|
|
63394
63696
|
),
|
|
63395
|
-
canEdit && !row.isGroup && progress > 0 && progress < 1 && /* @__PURE__ */
|
|
63697
|
+
canEdit && !row.isGroup && progress > 0 && progress < 1 && /* @__PURE__ */ jsx312(
|
|
63396
63698
|
"div",
|
|
63397
63699
|
{
|
|
63398
|
-
className:
|
|
63700
|
+
className: classNames121(
|
|
63399
63701
|
"absolute inset-y-0 z-20 w-2 cursor-ew-resize touch-none opacity-0 transition-opacity group-hover/bar:opacity-100",
|
|
63400
63702
|
liveProgress != null && "opacity-100"
|
|
63401
63703
|
),
|
|
@@ -63403,10 +63705,10 @@ var TaskBar = ({
|
|
|
63403
63705
|
onPointerDown: (e) => onProgressPointerDown(task, e),
|
|
63404
63706
|
title: labels.progress,
|
|
63405
63707
|
"aria-hidden": "true",
|
|
63406
|
-
children: /* @__PURE__ */
|
|
63708
|
+
children: /* @__PURE__ */ jsx312("div", { className: "mx-auto h-full w-0.5 rounded-full bg-white/90" })
|
|
63407
63709
|
}
|
|
63408
63710
|
),
|
|
63409
|
-
liveProgress != null && /* @__PURE__ */
|
|
63711
|
+
liveProgress != null && /* @__PURE__ */ jsxs190(
|
|
63410
63712
|
"div",
|
|
63411
63713
|
{
|
|
63412
63714
|
className: "pointer-events-none absolute -top-5 z-30 -translate-x-1/2 rounded-full bg-neutral-900/90 px-1.5 py-px text-[10px] font-semibold tabular-nums text-white shadow-md",
|
|
@@ -63417,31 +63719,31 @@ var TaskBar = ({
|
|
|
63417
63719
|
]
|
|
63418
63720
|
}
|
|
63419
63721
|
),
|
|
63420
|
-
showName && (renderBar != null ? /* @__PURE__ */
|
|
63421
|
-
canEdit && /* @__PURE__ */
|
|
63422
|
-
/* @__PURE__ */
|
|
63722
|
+
showName && (renderBar != null ? /* @__PURE__ */ jsx312("div", { className: classNames121("pointer-events-none absolute inset-0 flex items-center px-1.5 text-[11px] font-medium", labelText), children: renderBar(task, { taskId: task.id, left, width, top, height: row.height, milestone: false }) }) : /* @__PURE__ */ jsx312("span", { className: classNames121("pointer-events-none absolute inset-0 flex items-center truncate px-1.5 text-[11px] font-medium", labelText), children: task.name })),
|
|
63723
|
+
canEdit && /* @__PURE__ */ jsxs190(Fragment48, { children: [
|
|
63724
|
+
/* @__PURE__ */ jsx312(
|
|
63423
63725
|
"div",
|
|
63424
63726
|
{
|
|
63425
63727
|
className: "absolute inset-y-0 -left-1 z-20 w-2 cursor-ew-resize touch-none",
|
|
63426
63728
|
onPointerDown: (e) => onResizePointerDown(task, "start", e),
|
|
63427
63729
|
title: t("kit.gantt.resizeStart"),
|
|
63428
63730
|
"aria-hidden": "true",
|
|
63429
|
-
children: /* @__PURE__ */
|
|
63731
|
+
children: /* @__PURE__ */ jsx312("div", { className: "mx-auto h-full w-1 rounded-full bg-white/0 opacity-0 transition-opacity group-hover/bar:opacity-100" })
|
|
63430
63732
|
}
|
|
63431
63733
|
),
|
|
63432
|
-
/* @__PURE__ */
|
|
63734
|
+
/* @__PURE__ */ jsx312(
|
|
63433
63735
|
"div",
|
|
63434
63736
|
{
|
|
63435
63737
|
className: "absolute inset-y-0 -right-1 z-20 w-2 cursor-ew-resize touch-none",
|
|
63436
63738
|
onPointerDown: (e) => onResizePointerDown(task, "end", e),
|
|
63437
63739
|
title: t("kit.gantt.resizeEnd"),
|
|
63438
63740
|
"aria-hidden": "true",
|
|
63439
|
-
children: /* @__PURE__ */
|
|
63741
|
+
children: /* @__PURE__ */ jsx312("div", { className: "mx-auto h-full w-1 rounded-full bg-white/0 opacity-0 transition-opacity group-hover/bar:opacity-100" })
|
|
63440
63742
|
}
|
|
63441
63743
|
)
|
|
63442
63744
|
] }),
|
|
63443
|
-
canEdit && /* @__PURE__ */
|
|
63444
|
-
/* @__PURE__ */
|
|
63745
|
+
canEdit && /* @__PURE__ */ jsxs190(Fragment48, { children: [
|
|
63746
|
+
/* @__PURE__ */ jsx312(
|
|
63445
63747
|
"button",
|
|
63446
63748
|
{
|
|
63447
63749
|
type: "button",
|
|
@@ -63452,7 +63754,7 @@ var TaskBar = ({
|
|
|
63452
63754
|
"aria-label": t("kit.gantt.linkFromStart", { task: task.name })
|
|
63453
63755
|
}
|
|
63454
63756
|
),
|
|
63455
|
-
/* @__PURE__ */
|
|
63757
|
+
/* @__PURE__ */ jsx312(
|
|
63456
63758
|
"button",
|
|
63457
63759
|
{
|
|
63458
63760
|
type: "button",
|
|
@@ -63470,9 +63772,9 @@ var TaskBar = ({
|
|
|
63470
63772
|
};
|
|
63471
63773
|
|
|
63472
63774
|
// src/components/Gantt/GanttToolbar.tsx
|
|
63473
|
-
import { useMemo as
|
|
63474
|
-
import
|
|
63475
|
-
import { jsx as
|
|
63775
|
+
import { useMemo as useMemo58 } from "react";
|
|
63776
|
+
import classNames122 from "classnames";
|
|
63777
|
+
import { jsx as jsx313, jsxs as jsxs191 } from "react/jsx-runtime";
|
|
63476
63778
|
function nearestPreset(zoom, presets) {
|
|
63477
63779
|
let best = null;
|
|
63478
63780
|
let bestDist = Infinity;
|
|
@@ -63499,25 +63801,25 @@ var GanttToolbar = ({
|
|
|
63499
63801
|
Month: t("kit.gantt.zoomMonth"),
|
|
63500
63802
|
Quarter: t("kit.gantt.zoomQuarter")
|
|
63501
63803
|
};
|
|
63502
|
-
const active =
|
|
63503
|
-
const chrome =
|
|
63804
|
+
const active = useMemo58(() => nearestPreset(zoom, presets), [zoom, presets]);
|
|
63805
|
+
const chrome = useMemo58(
|
|
63504
63806
|
() => getSurfaceVariantClasses(variant, "neutral"),
|
|
63505
63807
|
[variant]
|
|
63506
63808
|
);
|
|
63507
|
-
return /* @__PURE__ */
|
|
63809
|
+
return /* @__PURE__ */ jsxs191(
|
|
63508
63810
|
"div",
|
|
63509
63811
|
{
|
|
63510
|
-
className:
|
|
63812
|
+
className: classNames122(
|
|
63511
63813
|
"pointer-events-auto flex items-center gap-1 rounded-lg p-1",
|
|
63512
63814
|
chrome
|
|
63513
63815
|
),
|
|
63514
63816
|
children: [
|
|
63515
|
-
/* @__PURE__ */
|
|
63817
|
+
/* @__PURE__ */ jsx313("div", { className: "flex items-center rounded-md bg-neutral-100 p-0.5 dark:bg-neutral-800", children: presets.map((p) => /* @__PURE__ */ jsx313(
|
|
63516
63818
|
"button",
|
|
63517
63819
|
{
|
|
63518
63820
|
type: "button",
|
|
63519
63821
|
onClick: () => onZoomTo(p.value),
|
|
63520
|
-
className:
|
|
63822
|
+
className: classNames122(
|
|
63521
63823
|
"rounded px-1.5 py-0.5 text-[10.5px] font-semibold transition-colors",
|
|
63522
63824
|
active === p.value ? "bg-white text-neutral-900 shadow-sm dark:bg-neutral-600 dark:text-white" : "text-neutral-500 hover:text-neutral-800 dark:text-neutral-400 dark:hover:text-neutral-200"
|
|
63523
63825
|
),
|
|
@@ -63525,9 +63827,9 @@ var GanttToolbar = ({
|
|
|
63525
63827
|
},
|
|
63526
63828
|
p.label
|
|
63527
63829
|
)) }),
|
|
63528
|
-
/* @__PURE__ */
|
|
63529
|
-
/* @__PURE__ */
|
|
63530
|
-
/* @__PURE__ */
|
|
63830
|
+
/* @__PURE__ */ jsx313("div", { className: "mx-0.5 h-4 w-px bg-neutral-200 dark:bg-neutral-700" }),
|
|
63831
|
+
/* @__PURE__ */ jsx313(Button_default, { variant: "ghost", size: "xs", onClick: () => onZoomBy(1 / 1.25), "aria-label": t("kit.gantt.zoomOut"), children: /* @__PURE__ */ jsx313("span", { className: "text-xs font-semibold leading-none", children: "\u2212" }) }),
|
|
63832
|
+
/* @__PURE__ */ jsx313(Button_default, { variant: "ghost", size: "xs", onClick: () => onZoomBy(1.25), "aria-label": t("kit.gantt.zoomIn"), children: /* @__PURE__ */ jsx313("span", { className: "text-xs font-semibold leading-none", children: "+" }) })
|
|
63531
63833
|
]
|
|
63532
63834
|
}
|
|
63533
63835
|
);
|
|
@@ -63535,7 +63837,7 @@ var GanttToolbar = ({
|
|
|
63535
63837
|
GanttToolbar.displayName = "GanttToolbar";
|
|
63536
63838
|
|
|
63537
63839
|
// src/components/Gantt/useGanttDrag.ts
|
|
63538
|
-
import { useCallback as useCallback41, useEffect as useEffect70, useMemo as
|
|
63840
|
+
import { useCallback as useCallback41, useEffect as useEffect70, useMemo as useMemo59, useRef as useRef67, useState as useState78 } from "react";
|
|
63539
63841
|
function useGanttDrag(opts) {
|
|
63540
63842
|
const [drag, setDrag] = useState78(null);
|
|
63541
63843
|
const [linkSelected, setLinkSelected] = useState78(null);
|
|
@@ -63853,7 +64155,7 @@ function useGanttDrag(opts) {
|
|
|
63853
64155
|
},
|
|
63854
64156
|
[beginDrag, timelineX, rowY]
|
|
63855
64157
|
);
|
|
63856
|
-
const rubber =
|
|
64158
|
+
const rubber = useMemo59(() => {
|
|
63857
64159
|
if (!drag || drag.kind !== "link") return null;
|
|
63858
64160
|
const source = barGeom(drag.taskId);
|
|
63859
64161
|
if (!source) return null;
|
|
@@ -63885,7 +64187,7 @@ function useGanttDrag(opts) {
|
|
|
63885
64187
|
}
|
|
63886
64188
|
|
|
63887
64189
|
// src/components/Gantt/Gantt.tsx
|
|
63888
|
-
import { jsx as
|
|
64190
|
+
import { jsx as jsx314, jsxs as jsxs192 } from "react/jsx-runtime";
|
|
63889
64191
|
var HEADER_HEIGHT = 52;
|
|
63890
64192
|
var GRIP_WIDTH = 36;
|
|
63891
64193
|
var DEFAULT_COLUMNS = [
|
|
@@ -63944,7 +64246,7 @@ var Gantt = ({
|
|
|
63944
64246
|
const t = useKitT();
|
|
63945
64247
|
const kitEngine = useKitEngine();
|
|
63946
64248
|
const dateLocale = locale ?? kitEngine.locale;
|
|
63947
|
-
const allLabels =
|
|
64249
|
+
const allLabels = useMemo60(
|
|
63948
64250
|
() => ({
|
|
63949
64251
|
loading: t("kit.gantt.loading"),
|
|
63950
64252
|
empty: t("kit.gantt.empty"),
|
|
@@ -63967,7 +64269,7 @@ var Gantt = ({
|
|
|
63967
64269
|
title: c.key === "name" ? allLabels.task : c.key === "owner" ? t("kit.gantt.colOwner") : t("kit.gantt.colProgress")
|
|
63968
64270
|
}));
|
|
63969
64271
|
const interactive = editable ?? Boolean(onTasksChange || onLinksChange || onReorder);
|
|
63970
|
-
const surfaceText =
|
|
64272
|
+
const surfaceText = useMemo60(() => getSurfaceTextTokens(variant), [variant]);
|
|
63971
64273
|
const [internalZoom, setInternalZoom] = useState79(initialZoom);
|
|
63972
64274
|
const zoom = zoomProp ?? internalZoom;
|
|
63973
64275
|
const setZoom = useCallback42(
|
|
@@ -64030,30 +64332,30 @@ var Gantt = ({
|
|
|
64030
64332
|
return next;
|
|
64031
64333
|
});
|
|
64032
64334
|
}, []);
|
|
64033
|
-
const effectiveTasks =
|
|
64335
|
+
const effectiveTasks = useMemo60(() => {
|
|
64034
64336
|
let out = tasks;
|
|
64035
64337
|
if (collapsed.size > 0) {
|
|
64036
64338
|
out = out.map((t2) => collapsed.has(t2.id) ? { ...t2, open: false } : t2);
|
|
64037
64339
|
}
|
|
64038
64340
|
return out;
|
|
64039
64341
|
}, [tasks, collapsed]);
|
|
64040
|
-
const effectiveLanes =
|
|
64342
|
+
const effectiveLanes = useMemo60(() => {
|
|
64041
64343
|
if (closedLanes.size === 0) return lanes;
|
|
64042
64344
|
return (lanes ?? []).map(
|
|
64043
64345
|
(l) => closedLanes.has(l.id) ? { ...l, open: false } : l
|
|
64044
64346
|
);
|
|
64045
64347
|
}, [lanes, closedLanes]);
|
|
64046
|
-
const committedModel =
|
|
64348
|
+
const committedModel = useMemo60(
|
|
64047
64349
|
() => buildRows(effectiveTasks, effectiveLanes, rowOrder, rowHeight2),
|
|
64048
64350
|
[effectiveTasks, effectiveLanes, rowOrder, rowHeight2]
|
|
64049
64351
|
);
|
|
64050
|
-
const range =
|
|
64352
|
+
const range = useMemo60(() => {
|
|
64051
64353
|
const starts = tasks.map((t2) => toMs(t2.start));
|
|
64052
64354
|
const ends = tasks.map((t2) => toMs(t2.end));
|
|
64053
64355
|
return computeViewRange(starts, ends);
|
|
64054
64356
|
}, [tasks]);
|
|
64055
64357
|
const timelineWidth = rangeWidth(range.start, range.end, zoom);
|
|
64056
|
-
const scaleLevels =
|
|
64358
|
+
const scaleLevels = useMemo60(
|
|
64057
64359
|
() => buildTimeScale(range.start, range.end, zoom, dateLocale),
|
|
64058
64360
|
[range, zoom, dateLocale]
|
|
64059
64361
|
);
|
|
@@ -64070,7 +64372,7 @@ var Gantt = ({
|
|
|
64070
64372
|
const m = /^(\d+(?:\.\d+)?)px$/.exec(col.width ?? "");
|
|
64071
64373
|
return m ? Number(m[1]) : 160;
|
|
64072
64374
|
};
|
|
64073
|
-
const sizedColumns =
|
|
64375
|
+
const sizedColumns = useMemo60(
|
|
64074
64376
|
() => resolvedColumns.map((c) => ({ ...c, width: `${effectiveColWidth(c)}px` })),
|
|
64075
64377
|
[resolvedColumns, colWidths]
|
|
64076
64378
|
);
|
|
@@ -64078,7 +64380,7 @@ var Gantt = ({
|
|
|
64078
64380
|
effectiveWidthsRef.current = Object.fromEntries(
|
|
64079
64381
|
sizedColumns.map((c) => [c.key, effectiveColWidth(c)])
|
|
64080
64382
|
);
|
|
64081
|
-
const leftWidth =
|
|
64383
|
+
const leftWidth = useMemo60(
|
|
64082
64384
|
() => GRIP_WIDTH + resolvedColumns.reduce((sum, c) => sum + effectiveColWidth(c), 0),
|
|
64083
64385
|
[resolvedColumns, colWidths]
|
|
64084
64386
|
);
|
|
@@ -64187,12 +64489,12 @@ var Gantt = ({
|
|
|
64187
64489
|
rowOrder,
|
|
64188
64490
|
setSelected
|
|
64189
64491
|
});
|
|
64190
|
-
const liveReorder =
|
|
64492
|
+
const liveReorder = useMemo60(() => {
|
|
64191
64493
|
const d = dragApi.drag;
|
|
64192
64494
|
if (d?.kind !== "reorder" || d.beforeId === void 0) return null;
|
|
64193
64495
|
return applyRowReorder(effectiveTasks, d.taskId, d.beforeId, rowOrder);
|
|
64194
64496
|
}, [dragApi.drag, effectiveTasks, rowOrder]);
|
|
64195
|
-
const liveModel =
|
|
64497
|
+
const liveModel = useMemo60(
|
|
64196
64498
|
() => liveReorder ? buildRows(
|
|
64197
64499
|
liveReorder.tasks,
|
|
64198
64500
|
effectiveLanes,
|
|
@@ -64202,7 +64504,7 @@ var Gantt = ({
|
|
|
64202
64504
|
[liveReorder, effectiveLanes, rowHeight2, committedModel]
|
|
64203
64505
|
);
|
|
64204
64506
|
liveRowsRef.current = liveModel.rows;
|
|
64205
|
-
const bars =
|
|
64507
|
+
const bars = useMemo60(() => {
|
|
64206
64508
|
const map = /* @__PURE__ */ new Map();
|
|
64207
64509
|
for (const row of liveModel.rows) {
|
|
64208
64510
|
if (!row.task) continue;
|
|
@@ -64358,22 +64660,22 @@ var Gantt = ({
|
|
|
64358
64660
|
const drag = dragApi.drag;
|
|
64359
64661
|
const dragTask = drag?.taskId ? committedModel.tasksById.get(drag.taskId) : void 0;
|
|
64360
64662
|
const reorderLineY = drag?.kind === "reorder" && drag.beforeId !== void 0 ? reorderPreviewTop(liveModel.rows, `task:${drag.taskId}`, drag.beforeId) : null;
|
|
64361
|
-
const dragSubtree =
|
|
64663
|
+
const dragSubtree = useMemo60(() => {
|
|
64362
64664
|
if (dragApi.drag?.kind !== "reorder") return null;
|
|
64363
64665
|
return reorderDragSubtree(
|
|
64364
64666
|
liveModel.rows,
|
|
64365
64667
|
`task:${dragApi.drag.taskId}`
|
|
64366
64668
|
);
|
|
64367
64669
|
}, [dragApi.drag, liveModel.rows]);
|
|
64368
|
-
const dragSubtreeKeys =
|
|
64670
|
+
const dragSubtreeKeys = useMemo60(
|
|
64369
64671
|
() => new Set((dragSubtree ?? []).map((r) => r.key)),
|
|
64370
64672
|
[dragSubtree]
|
|
64371
64673
|
);
|
|
64372
|
-
const dragSubtreeHeight =
|
|
64674
|
+
const dragSubtreeHeight = useMemo60(
|
|
64373
64675
|
() => (dragSubtree ?? []).reduce((sum, r) => sum + r.height, 0),
|
|
64374
64676
|
[dragSubtree]
|
|
64375
64677
|
);
|
|
64376
|
-
const liveDragDates =
|
|
64678
|
+
const liveDragDates = useMemo60(() => {
|
|
64377
64679
|
if (!drag || !dragTask) return null;
|
|
64378
64680
|
if (drag.kind !== "move" && drag.kind !== "resize-start" && drag.kind !== "resize-end") return null;
|
|
64379
64681
|
return applyDragDates(
|
|
@@ -64384,7 +64686,7 @@ var Gantt = ({
|
|
|
64384
64686
|
);
|
|
64385
64687
|
}, [drag, dragTask, zoom, snap2]);
|
|
64386
64688
|
const liveDragProgress = drag?.kind === "progress" && drag.liveProgress != null ? drag.liveProgress : null;
|
|
64387
|
-
const dragOverride =
|
|
64689
|
+
const dragOverride = useMemo60(() => {
|
|
64388
64690
|
if (!drag || !dragTask) return null;
|
|
64389
64691
|
if (drag.kind === "progress" && drag.liveProgress != null) {
|
|
64390
64692
|
return { ...dragTask, progress: drag.liveProgress };
|
|
@@ -64394,11 +64696,11 @@ var Gantt = ({
|
|
|
64394
64696
|
}
|
|
64395
64697
|
return null;
|
|
64396
64698
|
}, [drag, dragTask, liveDragDates]);
|
|
64397
|
-
const liveLaneProgress =
|
|
64699
|
+
const liveLaneProgress = useMemo60(
|
|
64398
64700
|
() => dragOverride && dragTask ? laneRollupProgress(effectiveTasks, dragTask.id, dragOverride) : null,
|
|
64399
64701
|
[dragOverride, dragTask, effectiveTasks]
|
|
64400
64702
|
);
|
|
64401
|
-
const liveGroupProgress =
|
|
64703
|
+
const liveGroupProgress = useMemo60(() => {
|
|
64402
64704
|
if (!dragOverride || !dragTask) return null;
|
|
64403
64705
|
const byId = new Map(effectiveTasks.map((t2) => [t2.id, t2]));
|
|
64404
64706
|
const m = /* @__PURE__ */ new Map();
|
|
@@ -64410,7 +64712,7 @@ var Gantt = ({
|
|
|
64410
64712
|
}
|
|
64411
64713
|
return m.size > 0 ? m : null;
|
|
64412
64714
|
}, [dragOverride, dragTask, effectiveTasks]);
|
|
64413
|
-
const liveLinkBars =
|
|
64715
|
+
const liveLinkBars = useMemo60(() => {
|
|
64414
64716
|
if (!liveDragDates || !dragTask) return bars;
|
|
64415
64717
|
const g = bars.get(dragTask.id);
|
|
64416
64718
|
if (!g) return bars;
|
|
@@ -64419,12 +64721,12 @@ var Gantt = ({
|
|
|
64419
64721
|
if (left === g.left && width === g.width) return bars;
|
|
64420
64722
|
return new Map(bars).set(dragTask.id, { ...g, left, width });
|
|
64421
64723
|
}, [bars, liveDragDates, dragTask, range, zoom]);
|
|
64422
|
-
const linkPaths =
|
|
64724
|
+
const linkPaths = useMemo60(
|
|
64423
64725
|
() => computeLinkPaths(links, liveLinkBars, color),
|
|
64424
64726
|
[links, liveLinkBars, color]
|
|
64425
64727
|
);
|
|
64426
|
-
const linkFan =
|
|
64427
|
-
return /* @__PURE__ */
|
|
64728
|
+
const linkFan = useMemo60(() => computeLinkFanOffsets(links, bars), [links, bars]);
|
|
64729
|
+
return /* @__PURE__ */ jsx314(
|
|
64428
64730
|
Panel_default,
|
|
64429
64731
|
{
|
|
64430
64732
|
ref: rootRef,
|
|
@@ -64442,31 +64744,31 @@ var Gantt = ({
|
|
|
64442
64744
|
"aria-label": t("kit.gantt.root"),
|
|
64443
64745
|
onKeyDown: onRootKeyDown,
|
|
64444
64746
|
onPointerDown: handleRootPointerDown,
|
|
64445
|
-
children: /* @__PURE__ */
|
|
64446
|
-
/* @__PURE__ */
|
|
64747
|
+
children: /* @__PURE__ */ jsxs192("div", { className: "flex h-full min-h-0 flex-col", children: [
|
|
64748
|
+
/* @__PURE__ */ jsxs192(
|
|
64447
64749
|
"div",
|
|
64448
64750
|
{
|
|
64449
|
-
className:
|
|
64751
|
+
className: classNames123(
|
|
64450
64752
|
"flex shrink-0 items-center gap-3 border-b px-4 py-3",
|
|
64451
64753
|
surfaceText.divider
|
|
64452
64754
|
),
|
|
64453
64755
|
children: [
|
|
64454
|
-
hasNode(icon) && /* @__PURE__ */
|
|
64756
|
+
hasNode(icon) && /* @__PURE__ */ jsx314(
|
|
64455
64757
|
"div",
|
|
64456
64758
|
{
|
|
64457
|
-
className:
|
|
64759
|
+
className: classNames123(
|
|
64458
64760
|
"flex h-10 w-10 shrink-0 items-center justify-center rounded-xl",
|
|
64459
64761
|
getSurfaceVariantClasses(variant, "neutral")
|
|
64460
64762
|
),
|
|
64461
64763
|
children: icon
|
|
64462
64764
|
}
|
|
64463
64765
|
),
|
|
64464
|
-
(title != null || subtitle != null) && /* @__PURE__ */
|
|
64465
|
-
subtitle != null && /* @__PURE__ */
|
|
64466
|
-
title != null && /* @__PURE__ */
|
|
64766
|
+
(title != null || subtitle != null) && /* @__PURE__ */ jsxs192("div", { className: "min-w-0 flex-1", children: [
|
|
64767
|
+
subtitle != null && /* @__PURE__ */ jsx314("div", { className: "truncate text-[11px] font-semibold uppercase tracking-wider text-neutral-500 dark:text-neutral-400", children: subtitle }),
|
|
64768
|
+
title != null && /* @__PURE__ */ jsx314("div", { className: "truncate text-lg font-semibold text-neutral-900 dark:text-white", children: title })
|
|
64467
64769
|
] }),
|
|
64468
|
-
hasNode(actions) && /* @__PURE__ */
|
|
64469
|
-
/* @__PURE__ */
|
|
64770
|
+
hasNode(actions) && /* @__PURE__ */ jsx314("div", { className: "flex shrink-0 items-center gap-2", children: actions }),
|
|
64771
|
+
/* @__PURE__ */ jsx314("div", { className: "ml-auto shrink-0", children: /* @__PURE__ */ jsx314(
|
|
64470
64772
|
GanttToolbar,
|
|
64471
64773
|
{
|
|
64472
64774
|
variant,
|
|
@@ -64479,31 +64781,31 @@ var Gantt = ({
|
|
|
64479
64781
|
]
|
|
64480
64782
|
}
|
|
64481
64783
|
),
|
|
64482
|
-
/* @__PURE__ */
|
|
64784
|
+
/* @__PURE__ */ jsxs192(
|
|
64483
64785
|
"div",
|
|
64484
64786
|
{
|
|
64485
|
-
className:
|
|
64787
|
+
className: classNames123(
|
|
64486
64788
|
"relative flex shrink-0 items-stretch border-b",
|
|
64487
64789
|
surfaceText.divider
|
|
64488
64790
|
),
|
|
64489
64791
|
style: { height: HEADER_HEIGHT },
|
|
64490
64792
|
children: [
|
|
64491
|
-
/* @__PURE__ */
|
|
64793
|
+
/* @__PURE__ */ jsxs192(
|
|
64492
64794
|
"div",
|
|
64493
64795
|
{
|
|
64494
|
-
className:
|
|
64796
|
+
className: classNames123(
|
|
64495
64797
|
"flex items-stretch border-r bg-white dark:bg-neutral-900",
|
|
64496
64798
|
surfaceText.divider
|
|
64497
64799
|
),
|
|
64498
64800
|
style: { width: leftWidth },
|
|
64499
64801
|
children: [
|
|
64500
|
-
/* @__PURE__ */
|
|
64802
|
+
/* @__PURE__ */ jsx314("div", { className: "w-9 shrink-0" }),
|
|
64501
64803
|
sizedColumns.map((col) => {
|
|
64502
64804
|
const resizable = resizableColumns && col.resizable !== false;
|
|
64503
|
-
return /* @__PURE__ */
|
|
64805
|
+
return /* @__PURE__ */ jsxs192(
|
|
64504
64806
|
"div",
|
|
64505
64807
|
{
|
|
64506
|
-
className:
|
|
64808
|
+
className: classNames123(
|
|
64507
64809
|
"relative flex shrink-0 items-center border-r px-2 text-[11px] font-semibold uppercase tracking-wide text-neutral-600 last:border-r-0 dark:text-neutral-400",
|
|
64508
64810
|
surfaceText.divider
|
|
64509
64811
|
),
|
|
@@ -64512,7 +64814,7 @@ var Gantt = ({
|
|
|
64512
64814
|
justifyContent: col.align === "center" ? "center" : col.align === "right" ? "flex-end" : "flex-start"
|
|
64513
64815
|
},
|
|
64514
64816
|
children: [
|
|
64515
|
-
/* @__PURE__ */
|
|
64817
|
+
/* @__PURE__ */ jsx314("span", { className: "truncate", children: col.title }),
|
|
64516
64818
|
resizable && /* Resize handle — Table's header-edge pattern: an 8px hit
|
|
64517
64819
|
area whose 1px line sits exactly on the column border.
|
|
64518
64820
|
Absolute insets stop at the padding edge (1px inside
|
|
@@ -64521,7 +64823,7 @@ var Gantt = ({
|
|
|
64521
64823
|
the border's own pixel. The cell carries no
|
|
64522
64824
|
overflow-hidden so the line can paint over the border
|
|
64523
64825
|
(the title span truncates itself). */
|
|
64524
|
-
/* @__PURE__ */
|
|
64826
|
+
/* @__PURE__ */ jsx314(
|
|
64525
64827
|
"div",
|
|
64526
64828
|
{
|
|
64527
64829
|
role: "separator",
|
|
@@ -64530,7 +64832,7 @@ var Gantt = ({
|
|
|
64530
64832
|
className: "group/rh absolute inset-y-0 -right-px z-10 flex w-2 cursor-col-resize select-none items-stretch justify-end",
|
|
64531
64833
|
onPointerDown: (e) => startColumnResize(e, col.key),
|
|
64532
64834
|
title: t("kit.gantt.resizeColumn", { column: col.title }),
|
|
64533
|
-
children: /* @__PURE__ */
|
|
64835
|
+
children: /* @__PURE__ */ jsx314(
|
|
64534
64836
|
"div",
|
|
64535
64837
|
{
|
|
64536
64838
|
className: "h-full w-px bg-neutral-300 transition-colors group-hover/rh:bg-neutral-400 dark:bg-neutral-600 dark:group-hover/rh:bg-neutral-500",
|
|
@@ -64547,30 +64849,30 @@ var Gantt = ({
|
|
|
64547
64849
|
]
|
|
64548
64850
|
}
|
|
64549
64851
|
),
|
|
64550
|
-
/* @__PURE__ */
|
|
64852
|
+
/* @__PURE__ */ jsx314("div", { className: "relative min-w-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxs192(
|
|
64551
64853
|
"div",
|
|
64552
64854
|
{
|
|
64553
64855
|
ref: headerScaleRef,
|
|
64554
64856
|
className: "relative h-full",
|
|
64555
64857
|
style: { width: timelineWidth },
|
|
64556
64858
|
children: [
|
|
64557
|
-
/* @__PURE__ */
|
|
64558
|
-
todayVisible && !loading && !isEmpty2 && /* @__PURE__ */
|
|
64859
|
+
/* @__PURE__ */ jsx314(GanttScale, { levels: scaleLevels, height: HEADER_HEIGHT }),
|
|
64860
|
+
todayVisible && !loading && !isEmpty2 && /* @__PURE__ */ jsx314(
|
|
64559
64861
|
"div",
|
|
64560
64862
|
{
|
|
64561
|
-
className:
|
|
64863
|
+
className: classNames123(
|
|
64562
64864
|
"pointer-events-none absolute inset-y-0 z-[1] border-l-2",
|
|
64563
64865
|
todayTokens.line
|
|
64564
64866
|
),
|
|
64565
64867
|
style: { left: todayX }
|
|
64566
64868
|
}
|
|
64567
64869
|
),
|
|
64568
|
-
todayVisible && !loading && !isEmpty2 && /* @__PURE__ */
|
|
64870
|
+
todayVisible && !loading && !isEmpty2 && /* @__PURE__ */ jsx314(
|
|
64569
64871
|
"div",
|
|
64570
64872
|
{
|
|
64571
64873
|
className: "pointer-events-none absolute top-1 z-10 -translate-x-1/2",
|
|
64572
64874
|
style: { left: todayX },
|
|
64573
|
-
children: /* @__PURE__ */
|
|
64875
|
+
children: /* @__PURE__ */ jsx314("span", { className: classNames123("rounded-full px-2 py-0.5 text-[10px] font-semibold text-white shadow-sm", todayTokens.chip), children: allLabels.today })
|
|
64574
64876
|
}
|
|
64575
64877
|
)
|
|
64576
64878
|
]
|
|
@@ -64579,20 +64881,20 @@ var Gantt = ({
|
|
|
64579
64881
|
]
|
|
64580
64882
|
}
|
|
64581
64883
|
),
|
|
64582
|
-
/* @__PURE__ */
|
|
64884
|
+
/* @__PURE__ */ jsx314(
|
|
64583
64885
|
"div",
|
|
64584
64886
|
{
|
|
64585
64887
|
ref: scrollRef,
|
|
64586
64888
|
className: `gantt-scroller min-h-0 flex-1 overflow-auto overscroll-contain [&::-webkit-scrollbar]:h-1.5 ${THIN_SCROLLBAR}`,
|
|
64587
64889
|
onScroll: syncHeaderScale,
|
|
64588
|
-
children: /* @__PURE__ */
|
|
64589
|
-
/* @__PURE__ */
|
|
64890
|
+
children: /* @__PURE__ */ jsx314("div", { style: { width: leftWidth + timelineWidth + LINK_RIGHT_GUTTER, minWidth: "100%" }, children: loading ? /* @__PURE__ */ jsx314(GanttSkeleton, { rows: 12, rowHeight: rowHeight2, leftWidth }) : isEmpty2 ? /* @__PURE__ */ jsx314("div", { className: "flex items-center justify-center text-sm text-neutral-500", style: { height: bodyHeight || 160, width: leftWidth + timelineWidth }, children: emptyState ?? allLabels.empty }) : /* @__PURE__ */ jsxs192("div", { className: "relative", style: { height: bodyHeight }, children: [
|
|
64891
|
+
/* @__PURE__ */ jsxs192(
|
|
64590
64892
|
"div",
|
|
64591
64893
|
{
|
|
64592
64894
|
className: "pointer-events-none absolute inset-y-0 z-0",
|
|
64593
64895
|
style: { left: leftWidth, width: timelineWidth },
|
|
64594
64896
|
children: [
|
|
64595
|
-
scaleLevels.length > 0 && scaleLevels[scaleLevels.length - 1].columns.map((c) => /* @__PURE__ */
|
|
64897
|
+
scaleLevels.length > 0 && scaleLevels[scaleLevels.length - 1].columns.map((c) => /* @__PURE__ */ jsx314(
|
|
64596
64898
|
"div",
|
|
64597
64899
|
{
|
|
64598
64900
|
className: "absolute inset-y-0 border-r border-neutral-100 dark:border-neutral-800",
|
|
@@ -64600,10 +64902,10 @@ var Gantt = ({
|
|
|
64600
64902
|
},
|
|
64601
64903
|
c.id
|
|
64602
64904
|
)),
|
|
64603
|
-
todayVisible && /* @__PURE__ */
|
|
64905
|
+
todayVisible && /* @__PURE__ */ jsx314(
|
|
64604
64906
|
"div",
|
|
64605
64907
|
{
|
|
64606
|
-
className:
|
|
64908
|
+
className: classNames123("absolute inset-y-0 border-l-2", todayTokens.line),
|
|
64607
64909
|
style: { left: todayX }
|
|
64608
64910
|
}
|
|
64609
64911
|
)
|
|
@@ -64613,7 +64915,7 @@ var Gantt = ({
|
|
|
64613
64915
|
liveModel.rows.map((row) => {
|
|
64614
64916
|
const isDragSource = drag?.kind === "reorder" && row.task != null && row.task.id === drag.taskId;
|
|
64615
64917
|
if (isDragSource) {
|
|
64616
|
-
return /* @__PURE__ */
|
|
64918
|
+
return /* @__PURE__ */ jsx314(
|
|
64617
64919
|
"div",
|
|
64618
64920
|
{
|
|
64619
64921
|
"data-row-key": row.key,
|
|
@@ -64621,7 +64923,7 @@ var Gantt = ({
|
|
|
64621
64923
|
"aria-hidden": "true",
|
|
64622
64924
|
className: "pointer-events-none flex border-b",
|
|
64623
64925
|
style: { height: dragSubtreeHeight || row.height },
|
|
64624
|
-
children: /* @__PURE__ */
|
|
64926
|
+
children: /* @__PURE__ */ jsx314(
|
|
64625
64927
|
"div",
|
|
64626
64928
|
{
|
|
64627
64929
|
className: "m-1 flex-1 rounded-md border-2 border-dashed",
|
|
@@ -64638,7 +64940,7 @@ var Gantt = ({
|
|
|
64638
64940
|
if (drag?.kind === "reorder" && dragSubtreeKeys.has(row.key)) {
|
|
64639
64941
|
return null;
|
|
64640
64942
|
}
|
|
64641
|
-
return /* @__PURE__ */
|
|
64943
|
+
return /* @__PURE__ */ jsx314(
|
|
64642
64944
|
GanttBodyRow,
|
|
64643
64945
|
{
|
|
64644
64946
|
row,
|
|
@@ -64676,7 +64978,7 @@ var Gantt = ({
|
|
|
64676
64978
|
row.key
|
|
64677
64979
|
);
|
|
64678
64980
|
}),
|
|
64679
|
-
/* @__PURE__ */
|
|
64981
|
+
/* @__PURE__ */ jsx314(
|
|
64680
64982
|
GanttLinkLayer,
|
|
64681
64983
|
{
|
|
64682
64984
|
ref: overlayRef,
|
|
@@ -64692,7 +64994,7 @@ var Gantt = ({
|
|
|
64692
64994
|
onDeleteLink: interactive && onLinksChange ? deleteSelectedLink : void 0
|
|
64693
64995
|
}
|
|
64694
64996
|
),
|
|
64695
|
-
drag?.kind === "reorder" && reorderLineY != null && /* @__PURE__ */
|
|
64997
|
+
drag?.kind === "reorder" && reorderLineY != null && /* @__PURE__ */ jsx314(
|
|
64696
64998
|
"div",
|
|
64697
64999
|
{
|
|
64698
65000
|
className: "pointer-events-none absolute z-30 h-0.5 rounded-full",
|
|
@@ -64712,7 +65014,7 @@ var Gantt = ({
|
|
|
64712
65014
|
// there is no filtered/overflowing ancestor and the fixed
|
|
64713
65015
|
// clone always tracks the viewport pointer.
|
|
64714
65016
|
createPortal15(
|
|
64715
|
-
/* @__PURE__ */
|
|
65017
|
+
/* @__PURE__ */ jsx314(
|
|
64716
65018
|
"div",
|
|
64717
65019
|
{
|
|
64718
65020
|
"data-gantt-drag-clone": "true",
|
|
@@ -64723,14 +65025,14 @@ var Gantt = ({
|
|
|
64723
65025
|
top: drag.clientY - (drag.grabOffset?.y ?? 0),
|
|
64724
65026
|
width: leftWidth + timelineWidth + LINK_RIGHT_GUTTER
|
|
64725
65027
|
},
|
|
64726
|
-
children: /* @__PURE__ */
|
|
65028
|
+
children: /* @__PURE__ */ jsx314(
|
|
64727
65029
|
"div",
|
|
64728
65030
|
{
|
|
64729
65031
|
className: "overflow-hidden rounded-lg bg-white/95 shadow-2xl backdrop-blur-sm dark:bg-neutral-900/95",
|
|
64730
65032
|
style: {
|
|
64731
65033
|
boxShadow: `0 8px 32px rgba(0, 0, 0, 0.28), inset 2px 0 0 var(--color-${color}-500)`
|
|
64732
65034
|
},
|
|
64733
|
-
children: dragSubtree.map((row) => /* @__PURE__ */
|
|
65035
|
+
children: dragSubtree.map((row) => /* @__PURE__ */ jsx314(
|
|
64734
65036
|
GanttBodyRow,
|
|
64735
65037
|
{
|
|
64736
65038
|
row,
|
|
@@ -64773,7 +65075,7 @@ var Gantt = ({
|
|
|
64773
65075
|
),
|
|
64774
65076
|
document.body
|
|
64775
65077
|
),
|
|
64776
|
-
drag && drag.kind !== "reorder" && dragTask && liveDragDates && /* @__PURE__ */
|
|
65078
|
+
drag && drag.kind !== "reorder" && dragTask && liveDragDates && /* @__PURE__ */ jsx314(
|
|
64777
65079
|
"div",
|
|
64778
65080
|
{
|
|
64779
65081
|
className: "pointer-events-none absolute z-50 rounded-md bg-neutral-900/90 px-2 py-1 text-[11px] font-medium text-white shadow-lg dark:bg-neutral-700/95",
|
|
@@ -64804,13 +65106,13 @@ var GanttSkeleton = ({
|
|
|
64804
65106
|
rows,
|
|
64805
65107
|
rowHeight: rowHeight2,
|
|
64806
65108
|
leftWidth
|
|
64807
|
-
}) => /* @__PURE__ */
|
|
64808
|
-
/* @__PURE__ */
|
|
65109
|
+
}) => /* @__PURE__ */ jsx314("div", { className: "animate-pulse", "aria-busy": "true", children: Array.from({ length: rows }).map((_, i) => /* @__PURE__ */ jsxs192("div", { className: "flex", style: { height: rowHeight2 }, children: [
|
|
65110
|
+
/* @__PURE__ */ jsx314(
|
|
64809
65111
|
"div",
|
|
64810
65112
|
{
|
|
64811
65113
|
className: "sticky left-0 flex items-center border-b border-neutral-100 bg-white px-3 dark:border-neutral-800 dark:bg-neutral-900",
|
|
64812
65114
|
style: { width: leftWidth },
|
|
64813
|
-
children: /* @__PURE__ */
|
|
65115
|
+
children: /* @__PURE__ */ jsx314(
|
|
64814
65116
|
"div",
|
|
64815
65117
|
{
|
|
64816
65118
|
className: "h-3 rounded-full bg-neutral-200 dark:bg-neutral-700",
|
|
@@ -64819,7 +65121,7 @@ var GanttSkeleton = ({
|
|
|
64819
65121
|
)
|
|
64820
65122
|
}
|
|
64821
65123
|
),
|
|
64822
|
-
/* @__PURE__ */
|
|
65124
|
+
/* @__PURE__ */ jsx314("div", { className: "relative flex-1", children: /* @__PURE__ */ jsx314(
|
|
64823
65125
|
"div",
|
|
64824
65126
|
{
|
|
64825
65127
|
className: "absolute top-1/2 h-4 -translate-y-1/2 rounded-md bg-neutral-200/80 dark:bg-neutral-700/60",
|
|
@@ -64837,13 +65139,13 @@ import {
|
|
|
64837
65139
|
useCallback as useCallback43,
|
|
64838
65140
|
useContext as useContext8,
|
|
64839
65141
|
useEffect as useEffect72,
|
|
64840
|
-
useMemo as
|
|
65142
|
+
useMemo as useMemo61,
|
|
64841
65143
|
useRef as useRef69,
|
|
64842
65144
|
useState as useState80
|
|
64843
65145
|
} from "react";
|
|
64844
65146
|
import { createPortal as createPortal16 } from "react-dom";
|
|
64845
|
-
import
|
|
64846
|
-
import { jsx as
|
|
65147
|
+
import classNames124 from "classnames";
|
|
65148
|
+
import { jsx as jsx315, jsxs as jsxs193 } from "react/jsx-runtime";
|
|
64847
65149
|
var BottomSheetContext = createContext8(null);
|
|
64848
65150
|
var TRANSITION_MS2 = 260;
|
|
64849
65151
|
var renderSlot = (slot, controls) => {
|
|
@@ -64897,13 +65199,13 @@ var BottomSheetProvider = ({
|
|
|
64897
65199
|
},
|
|
64898
65200
|
[]
|
|
64899
65201
|
);
|
|
64900
|
-
const controls =
|
|
65202
|
+
const controls = useMemo61(
|
|
64901
65203
|
() => ({
|
|
64902
65204
|
dismiss: dismissSheet
|
|
64903
65205
|
}),
|
|
64904
65206
|
[dismissSheet]
|
|
64905
65207
|
);
|
|
64906
|
-
const contextValue =
|
|
65208
|
+
const contextValue = useMemo61(
|
|
64907
65209
|
() => ({
|
|
64908
65210
|
presentSheet,
|
|
64909
65211
|
dismissSheet,
|
|
@@ -64913,11 +65215,11 @@ var BottomSheetProvider = ({
|
|
|
64913
65215
|
[presentSheet, dismissSheet, sheet, isVisible]
|
|
64914
65216
|
);
|
|
64915
65217
|
const overlayNode = typeof document !== "undefined" && sheet ? createPortal16(
|
|
64916
|
-
/* @__PURE__ */
|
|
64917
|
-
/* @__PURE__ */
|
|
65218
|
+
/* @__PURE__ */ jsxs193("div", { className: "pointer-events-none fixed inset-0 z-[70] flex items-end justify-center", children: [
|
|
65219
|
+
/* @__PURE__ */ jsx315(
|
|
64918
65220
|
"div",
|
|
64919
65221
|
{
|
|
64920
|
-
className:
|
|
65222
|
+
className: classNames124(
|
|
64921
65223
|
"absolute inset-0 bg-neutral-900/40 transition-opacity duration-300",
|
|
64922
65224
|
isVisible ? "opacity-100 pointer-events-auto" : "opacity-0"
|
|
64923
65225
|
),
|
|
@@ -64927,24 +65229,24 @@ var BottomSheetProvider = ({
|
|
|
64927
65229
|
}
|
|
64928
65230
|
}
|
|
64929
65231
|
),
|
|
64930
|
-
/* @__PURE__ */
|
|
65232
|
+
/* @__PURE__ */ jsx315("div", { className: "relative w-full max-w-4xl px-4 pb-4 sm:px-8", children: /* @__PURE__ */ jsxs193(
|
|
64931
65233
|
"section",
|
|
64932
65234
|
{
|
|
64933
65235
|
role: "dialog",
|
|
64934
65236
|
"aria-modal": "true",
|
|
64935
|
-
className:
|
|
65237
|
+
className: classNames124(
|
|
64936
65238
|
"pointer-events-auto ml-auto flex w-full flex-col rounded-t-3xl border border-slate-200 bg-white shadow-2xl transition-transform duration-300 dark:border-slate-700 dark:bg-slate-900",
|
|
64937
65239
|
sheet.className,
|
|
64938
65240
|
isVisible ? "translate-y-0" : "translate-y-full"
|
|
64939
65241
|
),
|
|
64940
65242
|
style: { minHeight: "25vh", maxHeight: "85vh" },
|
|
64941
65243
|
children: [
|
|
64942
|
-
/* @__PURE__ */
|
|
64943
|
-
/* @__PURE__ */
|
|
64944
|
-
sheet.title && /* @__PURE__ */
|
|
64945
|
-
sheet.description && /* @__PURE__ */
|
|
65244
|
+
/* @__PURE__ */ jsxs193("header", { className: "flex items-start justify-between gap-3 border-b border-slate-200 px-6 py-4 dark:border-slate-800", children: [
|
|
65245
|
+
/* @__PURE__ */ jsxs193("div", { className: "space-y-1", children: [
|
|
65246
|
+
sheet.title && /* @__PURE__ */ jsx315("div", { className: "text-base font-semibold text-slate-900 dark:text-slate-100", children: sheet.title }),
|
|
65247
|
+
sheet.description && /* @__PURE__ */ jsx315("p", { className: "text-sm text-slate-500 dark:text-slate-300", children: sheet.description })
|
|
64946
65248
|
] }),
|
|
64947
|
-
(sheet.showCloseButton ?? true) && /* @__PURE__ */
|
|
65249
|
+
(sheet.showCloseButton ?? true) && /* @__PURE__ */ jsx315(
|
|
64948
65250
|
IconButton_default,
|
|
64949
65251
|
{
|
|
64950
65252
|
icon: "Close",
|
|
@@ -64956,15 +65258,15 @@ var BottomSheetProvider = ({
|
|
|
64956
65258
|
}
|
|
64957
65259
|
)
|
|
64958
65260
|
] }),
|
|
64959
|
-
/* @__PURE__ */
|
|
64960
|
-
sheet.actions && /* @__PURE__ */
|
|
65261
|
+
/* @__PURE__ */ jsx315("div", { className: "flex-1 overflow-y-auto px-6 py-4", children: renderSlot(sheet.content, controls) ?? /* @__PURE__ */ jsx315("p", { className: "text-sm text-slate-500", children: "No content provided." }) }),
|
|
65262
|
+
sheet.actions && /* @__PURE__ */ jsx315("div", { className: "flex flex-wrap items-center justify-end gap-3 border-t border-slate-200 px-6 py-4 dark:border-slate-800", children: renderSlot(sheet.actions, controls) })
|
|
64961
65263
|
]
|
|
64962
65264
|
}
|
|
64963
65265
|
) })
|
|
64964
65266
|
] }),
|
|
64965
65267
|
document.body
|
|
64966
65268
|
) : null;
|
|
64967
|
-
return /* @__PURE__ */
|
|
65269
|
+
return /* @__PURE__ */ jsxs193(BottomSheetContext.Provider, { value: contextValue, children: [
|
|
64968
65270
|
children,
|
|
64969
65271
|
overlayNode
|
|
64970
65272
|
] });
|
|
@@ -65604,8 +65906,8 @@ var SYSTEM_VARIABLES = [
|
|
|
65604
65906
|
];
|
|
65605
65907
|
|
|
65606
65908
|
// src/components/MetricBar.tsx
|
|
65607
|
-
import
|
|
65608
|
-
import { jsx as
|
|
65909
|
+
import classNames125 from "classnames";
|
|
65910
|
+
import { jsx as jsx316 } from "react/jsx-runtime";
|
|
65609
65911
|
var MetricBar = ({
|
|
65610
65912
|
label,
|
|
65611
65913
|
value,
|
|
@@ -65615,7 +65917,7 @@ var MetricBar = ({
|
|
|
65615
65917
|
size = "sm",
|
|
65616
65918
|
className,
|
|
65617
65919
|
...rest
|
|
65618
|
-
}) => /* @__PURE__ */
|
|
65920
|
+
}) => /* @__PURE__ */ jsx316(
|
|
65619
65921
|
Progress_default,
|
|
65620
65922
|
{
|
|
65621
65923
|
...rest,
|
|
@@ -65625,7 +65927,7 @@ var MetricBar = ({
|
|
|
65625
65927
|
formatValue: value !== void 0 ? () => String(value) : void 0,
|
|
65626
65928
|
size,
|
|
65627
65929
|
color: tone ?? color ?? "blue",
|
|
65628
|
-
className:
|
|
65930
|
+
className: classNames125("w-full", className)
|
|
65629
65931
|
}
|
|
65630
65932
|
);
|
|
65631
65933
|
MetricBar.displayName = "MetricBar";
|
|
@@ -65666,6 +65968,7 @@ export {
|
|
|
65666
65968
|
COLLAPSIBLE_HELP_VARIANTS,
|
|
65667
65969
|
COMBOBOX_TONE_CLASSES,
|
|
65668
65970
|
COMBOBOX_VALIDATION_STATUSES,
|
|
65971
|
+
CONNECTION_FLOW_CHILD_LAYOUTS,
|
|
65669
65972
|
CONNECTION_FLOW_EDGE_STYLES,
|
|
65670
65973
|
CONNECTION_FLOW_ITEM_PROGRESS,
|
|
65671
65974
|
CONNECTION_FLOW_LOADERS,
|
|
@@ -65704,6 +66007,7 @@ export {
|
|
|
65704
66007
|
DEFAULT_LAYOUT_OPTIONS,
|
|
65705
66008
|
DEFAULT_SERIES_PALETTE,
|
|
65706
66009
|
DEFAULT_SURFACE_CORNER,
|
|
66010
|
+
DEFAULT_SURFACE_GUTTER,
|
|
65707
66011
|
DEFAULT_SURFACE_PADDING,
|
|
65708
66012
|
DEFAULT_SURFACE_TONE,
|
|
65709
66013
|
DEFAULT_TOAST_GAP_PX,
|
|
@@ -65854,6 +66158,7 @@ export {
|
|
|
65854
66158
|
STAT_PAGER_PLACEMENTS,
|
|
65855
66159
|
SURFACE_CORNERS,
|
|
65856
66160
|
SURFACE_GLASS_RIM,
|
|
66161
|
+
SURFACE_GUTTER_AXES,
|
|
65857
66162
|
SURFACE_PADDINGS,
|
|
65858
66163
|
SURFACE_TO_BUTTON_VARIANT,
|
|
65859
66164
|
SURFACE_VARIANTS,
|
|
@@ -65948,6 +66253,7 @@ export {
|
|
|
65948
66253
|
WorkflowTracker_default as WorkflowTracker,
|
|
65949
66254
|
WorkflowTrackerDetails_default as WorkflowTrackerDetails,
|
|
65950
66255
|
WorkflowTrackerRail_default as WorkflowTrackerRail,
|
|
66256
|
+
WorkflowTrackerRollups_default as WorkflowTrackerRollups,
|
|
65951
66257
|
WorkflowTrackerStepDetails_default as WorkflowTrackerStepDetails,
|
|
65952
66258
|
areaPathFromPoints,
|
|
65953
66259
|
bandAreaPath,
|
|
@@ -66086,6 +66392,7 @@ export {
|
|
|
66086
66392
|
getStepperTonePalette,
|
|
66087
66393
|
getSurfaceCornerClass,
|
|
66088
66394
|
getSurfaceCornerRem,
|
|
66395
|
+
getSurfaceGutterClass,
|
|
66089
66396
|
getSurfacePaddingClass,
|
|
66090
66397
|
getSurfacePaddingClasses,
|
|
66091
66398
|
getSurfaceTextTokens,
|
|
@@ -66150,6 +66457,7 @@ export {
|
|
|
66150
66457
|
mixHex,
|
|
66151
66458
|
nicePolarMax,
|
|
66152
66459
|
niceRadarMax,
|
|
66460
|
+
nodeHasFailed,
|
|
66153
66461
|
nodeIcon,
|
|
66154
66462
|
nodeIsActive,
|
|
66155
66463
|
nodeIsSkipped,
|
|
@@ -66205,6 +66513,7 @@ export {
|
|
|
66205
66513
|
tintColor,
|
|
66206
66514
|
toBoolean,
|
|
66207
66515
|
toDate,
|
|
66516
|
+
toRows,
|
|
66208
66517
|
toSmartVariable,
|
|
66209
66518
|
tracePathTo,
|
|
66210
66519
|
usageTotals,
|