@booboo-brain/panel 0.5.5 → 0.5.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/index.js +70 -14
- package/dist-app/assets/{index-DuaKsKpo.js → index-CMTXU3r8.js} +53 -13
- package/dist-app/index.html +22 -22
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -433,7 +433,8 @@ var PANEL_CSS = String.raw`
|
|
|
433
433
|
.pending-item:hover i { background: var(--warn); color: var(--bg-1); }
|
|
434
434
|
|
|
435
435
|
/* the lane lights up as a drop target, so a near-miss is impossible */
|
|
436
|
-
.oc-row.lanes > .oc-child.lane-over
|
|
436
|
+
.oc-row.lanes > .oc-child.lane-over,
|
|
437
|
+
.oc-row.solo-pack > .oc-child.lane-over {
|
|
437
438
|
border-color: var(--accent); background: var(--accent-dim);
|
|
438
439
|
box-shadow: 0 0 0 3px var(--accent-dim), var(--sh-2);
|
|
439
440
|
}
|
|
@@ -596,12 +597,21 @@ var PANEL_CSS = String.raw`
|
|
|
596
597
|
row — 2,400px natural width, which fit-to-width then scaled to 52% and made
|
|
597
598
|
every plate unreadable. Rank IV wraps; the board stays legible. */
|
|
598
599
|
grid-template-columns: max-content var(--rail-w, 56px) minmax(420px, 940px);
|
|
599
|
-
|
|
600
|
+
/* Row 2 carries the PACK (childless rank-III units). It is a second row and
|
|
601
|
+
not a second area on row 1 because two items cannot share one named area
|
|
602
|
+
without overlapping — and the gm/rail cells are deliberately left EMPTY on
|
|
603
|
+
row 2 so the GM stays in row 1 rather than stretching down the whole board
|
|
604
|
+
(the C18 defect, in reverse: there the lanes spanned two rows and pinned
|
|
605
|
+
the GM to the top of the first). */
|
|
606
|
+
grid-template-areas:
|
|
607
|
+
"gm rail lanes"
|
|
608
|
+
". . pack";
|
|
600
609
|
align-items: start;
|
|
601
610
|
}
|
|
602
611
|
.cascade > .ocn > .casc-head { grid-area: gm; display: flex; flex-direction: column; align-items: stretch; }
|
|
603
612
|
.cascade > .ocn > .oc-down { grid-area: rail; }
|
|
604
613
|
.cascade > .ocn > .oc-row.lanes { grid-area: lanes; }
|
|
614
|
+
.cascade > .ocn > .oc-row.solo-pack { grid-area: pack; }
|
|
605
615
|
|
|
606
616
|
/* the SVG rail plane — sits under the plates, never intercepts a click */
|
|
607
617
|
.rails { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: visible; width: 100%; height: 100%; }
|
|
@@ -642,6 +652,36 @@ var PANEL_CSS = String.raw`
|
|
|
642
652
|
transition: border-color .25s ease, box-shadow .35s var(--ease);
|
|
643
653
|
}
|
|
644
654
|
.oc-row.lanes > .oc-child:hover { border-color: var(--line-2, #d9d3c9); box-shadow: var(--sh-2); }
|
|
655
|
+
|
|
656
|
+
/* ── THE PACK: rank-III units that have no staff ───────────────────────────
|
|
657
|
+
A lane is a shelf for a department AND ITS PEOPLE. A unit with nobody under
|
|
658
|
+
it has no shelf to fill — it is a card, and 43 cards each claiming a
|
|
659
|
+
940px-wide tray is what turned the live fleet into a 12,000px queue
|
|
660
|
+
(GAPS C34). They pack instead: same tray material, sized to the card, wrapped
|
|
661
|
+
into rows. Still drop targets, still railed. */
|
|
662
|
+
.oc-row.solo-pack {
|
|
663
|
+
display: grid;
|
|
664
|
+
grid-template-columns: repeat(auto-fill, minmax(278px, 1fr));
|
|
665
|
+
gap: 14px;
|
|
666
|
+
width: 100%;
|
|
667
|
+
margin-top: 14px;
|
|
668
|
+
align-items: stretch;
|
|
669
|
+
}
|
|
670
|
+
.oc-row.solo-pack > .oc-child {
|
|
671
|
+
position: relative;
|
|
672
|
+
border: 1px solid var(--line);
|
|
673
|
+
border-radius: 18px;
|
|
674
|
+
background: var(--surface-tray);
|
|
675
|
+
padding: 14px;
|
|
676
|
+
transition: border-color .25s ease, box-shadow .35s var(--ease);
|
|
677
|
+
}
|
|
678
|
+
.oc-row.solo-pack > .oc-child:hover { border-color: var(--line-2, #d9d3c9); box-shadow: var(--sh-2); }
|
|
679
|
+
/* the pack owns its connectors, exactly as the lanes do */
|
|
680
|
+
.oc-row.solo-pack > .oc-child::before,
|
|
681
|
+
.oc-row.solo-pack > .oc-child::after { display: none; }
|
|
682
|
+
.oc-row.solo-pack > .oc-child > .ocn > .oc-down { display: none; }
|
|
683
|
+
.oc-row.solo-pack > .oc-child > .ocn { display: block; }
|
|
684
|
+
.oc-row.solo-pack > .oc-child > .ocn > .ag { width: 100%; }
|
|
645
685
|
@media (prefers-reduced-motion: reduce) {
|
|
646
686
|
.oc-row.lanes > .oc-child:hover { transform: none; }
|
|
647
687
|
}
|
|
@@ -1539,6 +1579,9 @@ function ChartNode({
|
|
|
1539
1579
|
}) {
|
|
1540
1580
|
const kidsRaw = org.agents.filter((c) => c.parent === a.id && c.kind !== "automation");
|
|
1541
1581
|
const kids = depth === 0 ? [...kidsRaw].sort((x, y) => x.id.localeCompare(y.id)) : kidsRaw;
|
|
1582
|
+
const hasStaff = (k) => org.agents.some((x) => x.parent === k.id && x.kind !== "automation");
|
|
1583
|
+
const laneKids = depth === 0 ? kids.filter(hasStaff) : kids;
|
|
1584
|
+
const soloKids = depth === 0 ? kids.filter((k) => !hasStaff(k)) : [];
|
|
1542
1585
|
const machines = (() => {
|
|
1543
1586
|
const out = [];
|
|
1544
1587
|
const walk = (pid) => {
|
|
@@ -1664,17 +1707,30 @@ function ChartNode({
|
|
|
1664
1707
|
" staff \xB7 folded to department level \u2014 click to expand"
|
|
1665
1708
|
]
|
|
1666
1709
|
}
|
|
1667
|
-
) : /* @__PURE__ */
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1710
|
+
) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1711
|
+
/* @__PURE__ */ jsx("div", { className: `oc-row${depth > 0 && kids.length > 3 ? " wrap" : ""}${depth === 0 ? " lanes" : ""}`, children: laneKids.map((k, i) => /* @__PURE__ */ jsx(
|
|
1712
|
+
Lane,
|
|
1713
|
+
{
|
|
1714
|
+
laneId: k.id,
|
|
1715
|
+
isLane: depth === 0,
|
|
1716
|
+
dragId: cardProps.dragId,
|
|
1717
|
+
onDropOn: cardProps.onDropOn,
|
|
1718
|
+
children: /* @__PURE__ */ jsx(ChartNode, { org, a: k, depth: depth + 1, order: i, ...cardProps })
|
|
1719
|
+
},
|
|
1720
|
+
k.id
|
|
1721
|
+
)) }),
|
|
1722
|
+
soloKids.length > 0 && /* @__PURE__ */ jsx("div", { className: "oc-row solo-pack", children: soloKids.map((k, i) => /* @__PURE__ */ jsx(
|
|
1723
|
+
Lane,
|
|
1724
|
+
{
|
|
1725
|
+
laneId: k.id,
|
|
1726
|
+
isLane: true,
|
|
1727
|
+
dragId: cardProps.dragId,
|
|
1728
|
+
onDropOn: cardProps.onDropOn,
|
|
1729
|
+
children: /* @__PURE__ */ jsx(ChartNode, { org, a: k, depth: depth + 1, order: laneKids.length + i, ...cardProps })
|
|
1730
|
+
},
|
|
1731
|
+
k.id
|
|
1732
|
+
)) })
|
|
1733
|
+
] })
|
|
1678
1734
|
] })
|
|
1679
1735
|
] });
|
|
1680
1736
|
}
|
|
@@ -2675,7 +2731,7 @@ function Panel({ api = defaultApi, theme } = {}) {
|
|
|
2675
2731
|
// package.json
|
|
2676
2732
|
var package_default = {
|
|
2677
2733
|
name: "@booboo-brain/panel",
|
|
2678
|
-
version: "0.5.
|
|
2734
|
+
version: "0.5.6",
|
|
2679
2735
|
description: "Booboo panel \u2014 the organigram. Run your agents like a company: a drag-drop hierarchy your agents boot from, with buckets, reports, rules and the 3D graph, over one org file + snapshot.",
|
|
2680
2736
|
license: "MIT",
|
|
2681
2737
|
repository: {
|