chain table round 3: waypoints icons gone + the alignment staircase (owner refinements)

- chain rows lose the WaypointsIcon (owner: not needed — the chips +
  connectors already read as chains); folders keep their icons.
- THE ALIGNMENT STAIRCASE: every level's checkbox sits directly under
  its parent's expander arrow. The expander now shares the checkbox's
  14px width (h-5 w-3.5), making each nesting step exactly 18px —
  clusters pl-3 (12px) → chains pl-7.5 (30px, the cluster expander) →
  statements pl-12 (48px, the chain expander). Live-measured: 318=318,
  336=336.
This commit is contained in:
amosblomqvist
2026-09-30 00:15:47 +03:00
parent 4fa6e2105a
commit d6a7228b15
4 changed files with 39 additions and 24 deletions
+14 -7
View File
@@ -139,9 +139,9 @@ describe("ChainTableBody — THE shared TopBar + the lines law (owner, round 2)"
const sep = html.split("border-b border-border/60").length - 1;
assert.ok(sep >= 2, "separators between groups");
// chain rows themselves carry NO border — their entire class list is
// the indent law (pl-11 under the cluster folder, owner round 2); the
// chip outlines' border-border/70 is an outline, not a row line
assert.ok(html.includes('class="flex items-center gap-1 py-1 pl-11 pr-3"'), "the chain row: indent, no border");
// the staircase law (pl-7.5 = under the cluster's expander arrow);
// the chip outlines' border-border/70 is an outline, not a row line
assert.ok(html.includes('class="flex items-center gap-1 py-1 pl-7.5 pr-3"'), "the chain row: staircase indent, no border");
});
});
@@ -154,7 +154,9 @@ describe("ChainTableBody — chain rows (chips + connectors)", () => {
assert.ok(html.includes("Premise one"), "chip text");
assert.ok(html.includes('data-testid="chain-arrow-c1-1"'), "the connector");
assert.ok(html.includes("→"), "the arrow glyph");
assert.ok(html.includes("lucide-waypoints"), "the chain icon");
// owner ruling (round 3): the chain waypoints icons are GONE — the
// chips + connectors already read as chains; only folders keep icons
assert.ok(!html.includes("lucide-waypoints"), "no chain icon");
});
it("a singleton renders ONE lonely chip, no connector; the annotation survives only for screen readers", () => {
@@ -184,9 +186,14 @@ describe("ChainTableBody — chain rows (chips + connectors)", () => {
// owner ruling: the derivation is already encoded in the chain line —
// no conclusion marker down here
assert.ok(!html.includes("prop-conclusion"), "no conclusion marker anywhere");
// statements indent DEEPEST (pl-[4.75rem]); chains pl-11 under clusters
assert.ok(html.includes("pl-[4.75rem]"), "the deepest indent");
assert.ok(html.includes("pl-11"), "the chain indent");
// THE ALIGNMENT STAIRCASE (owner ruling, round 3): each level's
// checkbox sits under its parent's expander arrow. The expander
// shares the checkbox's 14px width, so each step is 18px: clusters
// pl-3 (12) → chains pl-7.5 (30 = the cluster expander) →
// statements pl-12 (48 = the chain expander)
assert.ok(html.includes("pl-12"), "statements under the chain's expander");
assert.ok(html.includes("pl-7.5"), "chains under the cluster's expander");
assert.ok(html.includes("h-5 w-3.5"), "the expander shares the checkbox's 14px width");
});
});