@issuegraph/viewer 0.5.0 → 0.9.1

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.
Files changed (47) hide show
  1. package/dist/clusters.d.ts +116 -0
  2. package/dist/clusters.d.ts.map +1 -1
  3. package/dist/clusters.js +85 -2
  4. package/dist/clusters.js.map +1 -1
  5. package/dist/document.d.ts +76 -5
  6. package/dist/document.d.ts.map +1 -1
  7. package/dist/document.js +19 -1
  8. package/dist/document.js.map +1 -1
  9. package/dist/index.d.ts +14 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/layout.d.ts +28 -0
  14. package/dist/layout.d.ts.map +1 -1
  15. package/dist/layout.js +7 -2
  16. package/dist/layout.js.map +1 -1
  17. package/dist/marks.d.ts +105 -0
  18. package/dist/marks.d.ts.map +1 -0
  19. package/dist/marks.js +430 -0
  20. package/dist/marks.js.map +1 -0
  21. package/dist/navigation.d.ts.map +1 -1
  22. package/dist/navigation.js +31 -0
  23. package/dist/navigation.js.map +1 -1
  24. package/dist/parts.d.ts +23 -0
  25. package/dist/parts.d.ts.map +1 -1
  26. package/dist/parts.js +64 -2
  27. package/dist/parts.js.map +1 -1
  28. package/dist/projections/graph.d.ts +15 -0
  29. package/dist/projections/graph.d.ts.map +1 -1
  30. package/dist/projections/graph.js +68 -14
  31. package/dist/projections/graph.js.map +1 -1
  32. package/dist/projections/linear.d.ts +45 -0
  33. package/dist/projections/linear.d.ts.map +1 -1
  34. package/dist/projections/linear.js +65 -12
  35. package/dist/projections/linear.js.map +1 -1
  36. package/dist/projections/tree.d.ts.map +1 -1
  37. package/dist/projections/tree.js +3 -0
  38. package/dist/projections/tree.js.map +1 -1
  39. package/dist/styles.d.ts +1 -1
  40. package/dist/styles.d.ts.map +1 -1
  41. package/dist/styles.js +472 -0
  42. package/dist/styles.js.map +1 -1
  43. package/dist/theme.d.ts +1 -1
  44. package/dist/theme.d.ts.map +1 -1
  45. package/dist/theme.js +47 -0
  46. package/dist/theme.js.map +1 -1
  47. package/package.json +1 -1
package/dist/styles.js CHANGED
@@ -22,6 +22,285 @@
22
22
  * hairlines — and a host that wants the panel suppressed overrides the four
23
23
  * properties on `.ig-viewer`.
24
24
  */
25
+ /**
26
+ * §17j's rail density, written once and emitted under two keys.
27
+ *
28
+ * ## Why this is a function and not a block
29
+ *
30
+ * The density has to be reachable two ways — by the container's width, which is
31
+ * §17j's own rule, and by a consumer who disagrees with the crossover this
32
+ * package picked. CSS cannot express "this condition OR that selector" across
33
+ * an `@container` boundary: a rule inside the query cannot also be a rule
34
+ * outside it, so the declarations would have to be written twice. The
35
+ * stylesheet is already a template literal, so they are written once here and
36
+ * interpolated twice instead.
37
+ *
38
+ * `scope` is a selector the whole block hangs off, and every rule below is
39
+ * RELATIVE to it. The original block carried its own `.ig-viewer` prefixes on
40
+ * about half its rules; those are gone, because the scope supplies one and two
41
+ * would never match.
42
+ *
43
+ * ## What it does to specificity, which is a gain rather than a risk
44
+ *
45
+ * Every selector here gains the scope's two compound units, so each dense rule
46
+ * beats the base rule it overrides by SPECIFICITY rather than by source order.
47
+ * One of these already had to be hand-scoped for exactly that reason — the
48
+ * together-unit row, where a container query adds no specificity and the base
49
+ * rule further down the file won, leaving the unit row drawn with nothing in
50
+ * it. That hazard is now closed for the whole block rather than at one site.
51
+ */
52
+ function railDensity(scope) {
53
+ return `
54
+ ${scope} .ig-slot {
55
+ align-items: center;
56
+ grid-template-columns: var(--ig-rank-column-dense) 1fr auto;
57
+ min-height: var(--ig-row-height-dense);
58
+ padding-block: var(--ig-row-padding-block-dense);
59
+ }
60
+
61
+ /* TWO LINES, AND NEITHER WRAPS. A wrapping title is what turns a 53px row
62
+ into a 106px one, so the truncation is not cosmetic — it is what makes the
63
+ height a property of the row rather than of its longest title. */
64
+ ${scope} .ig-slot .ig-row-head {
65
+ gap: 0;
66
+ }
67
+
68
+ ${scope} .ig-slot .ig-title {
69
+ line-height: var(--ig-row-title-line);
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ white-space: nowrap;
73
+ }
74
+
75
+ /* STEP 5 OF THE DROP ORDER, AND IT IS LAST FOR A REASON '17j' STATES:
76
+ *"A row without a title is not a row."* Everything above leaves first. */
77
+ ${scope} .ig-slot .ig-row-body {
78
+ gap: var(--ig-row-line-gap);
79
+ min-width: 0;
80
+ }
81
+
82
+ /* LINE 2, AND IT DOES NOT WRAP. '17j' draws it as one mono run —
83
+ '#512 . P0 . blocked-by #488' — so the chips sit ON the identity's line
84
+ rather than under it. 'nowrap' is what makes the 53px a property of the
85
+ ROW: one long title or one extra badge would otherwise buy a second line
86
+ and double the height, which is exactly how this rail reached 408px. */
87
+ ${scope} .ig-slot .ig-row-meta {
88
+ align-items: center;
89
+ display: flex;
90
+ flex-wrap: nowrap;
91
+ gap: var(--ig-space-tight);
92
+ line-height: var(--ig-row-meta-line);
93
+ min-width: 0;
94
+ overflow: hidden;
95
+ }
96
+
97
+ /* The chips keep their own row semantics and stop wrapping, so what does not
98
+ fit is clipped rather than stacked. The drop order above decides WHICH
99
+ chips are there to clip; this only decides they stay on the line. */
100
+ ${scope} .ig-slot .ig-row-meta .ig-badges {
101
+ flex-wrap: nowrap;
102
+ min-width: 0;
103
+ }
104
+
105
+ /* The issue number never shrinks away — '17j' lists it among the five things
106
+ never dropped at any width. The title truncates first and the chips clip;
107
+ the number holds its ground. */
108
+ ${scope} .ig-slot .ig-row-meta .ig-id {
109
+ flex: none;
110
+ }
111
+
112
+ /* AT RAIL DENSITY LINE 2 IS TEXT, NOT PILLS — and this is read off the frame
113
+ rather than inferred from the height. '17j' draws the meta line as a single
114
+ mono run, '#512 . P0 . blocked-by #488': no outlines, no fills, just the
115
+ glyph and the words. §16a's wider panel is where they are chips.
116
+
117
+ IT IS ALSO WHAT MAKES 53px REACHABLE. A bordered chip is its padding plus
118
+ its stroke plus its line box, so a line of them cannot be 15px however the
119
+ line-height is set — the flex row grows to its tallest item and the row
120
+ followed it to 74px. Removing the chrome removes the reason.
121
+
122
+ THE FOUR REDUNDANT CHANNELS SURVIVE THIS, which is the thing worth
123
+ checking before doing it: dash, terminal and glyph are untouched, and hue
124
+ moves from the border to the text it was outlining. '17j' names the hold
125
+ GLYPH among the five things never dropped, and it is still drawn. */
126
+ ${scope} .ig-slot .ig-row-meta .ig-badge {
127
+ background: none;
128
+ border: 0;
129
+ border-radius: 0;
130
+ padding: 0;
131
+ /* AND THE TEXT INSIDE A CHIP DOES NOT WRAP EITHER. Stopping the ROW from
132
+ wrapping is not enough: a chip squeezed by its neighbours wraps its own
133
+ label instead, and 'signals disagree' at 84px became two 15px lines and
134
+ took the row to 67px while every sibling sat at 53. One row in seven,
135
+ which is exactly the kind of thing that survives a review and does not
136
+ survive a measurement. What does not fit is clipped, per the drop
137
+ order. */
138
+ white-space: nowrap;
139
+ }
140
+
141
+ /* AND THE SWAP, AT RAIL DENSITY. '17j' draws a together unit here as a
142
+ marker inline with an ordinary title at the ordinary 53px, so the head
143
+ comes back and the enclosure stands down. One row, one rank, in both
144
+ densities - RULINGS.md section 1 - drawn the way each width can afford. */
145
+ /* SCOPED WITH '.ig-viewer' SO ORDER CANNOT DECIDE THIS. A container query
146
+ adds no specificity, so this rule and the wide-density one it overrides
147
+ were an even 0,3,0 and the LATER of the two won — which put the base rule,
148
+ written further down the file, in charge of both densities and left the
149
+ unit row showing nothing but its em dash. Measured, not spotted: every row
150
+ was 53px and one of them was empty. The extra class makes the override win
151
+ on specificity, where it does not depend on where anyone adds a rule
152
+ later. */
153
+ ${scope} .ig-slot[data-unit='true'] > .ig-row-body > .ig-row-head {
154
+ display: flex;
155
+ }
156
+
157
+ ${scope} .ig-slot[data-unit='true'] .ig-unit-mark,
158
+ ${scope} .ig-slot[data-unit='true'] .ig-unit {
159
+ display: none;
160
+ }
161
+
162
+ /* The marker itself: the glyph and the count, on the title's line. It is a
163
+ COUNT and not a pill here because 53px has no room for one, and because
164
+ the pill's words are already the accessible name's. */
165
+ ${scope} .ig-unit-count {
166
+ color: var(--ig-edge-together-with);
167
+ display: inline;
168
+ font-family: var(--ig-font-mono);
169
+ margin-right: var(--ig-space-tight);
170
+ }
171
+
172
+ /* THE FOOTER ROWS TOO, AND THIS IS THE POPULATION THE ROW FIX MISSED.
173
+ A footer entry is deliberately ONE LINE and shorter than a ranked row -
174
+ 16a gives it no rank, no station and no explanation block, because it is
175
+ not a fact about the work. That part was right. What was not governed is
176
+ its TITLE: it wrapped, and the excluded row carrying a canonical reference
177
+ ran to 73px while its siblings sat at 36. A footer row taller than a
178
+ ranked row inverts the whole point of the group.
179
+
180
+ THE DEFECT IS THE ONE ALREADY FIXED ON .ig-slot, ONE ROW KIND OVER: a
181
+ title with nothing stopping it wrapping takes the row with it. Fixed at
182
+ the class this time rather than at the site - the rail renders three row
183
+ kinds and the first pass governed two. */
184
+ ${scope} .ig-footer-row .ig-title {
185
+ line-height: var(--ig-row-title-line);
186
+ min-width: 0;
187
+ overflow: hidden;
188
+ text-overflow: ellipsis;
189
+ white-space: nowrap;
190
+ }
191
+
192
+ ${scope} .ig-footer-row .ig-badges {
193
+ flex-wrap: nowrap;
194
+ min-width: 0;
195
+ overflow: hidden;
196
+ }
197
+
198
+ /* AND THE CHIPS LOSE THEIR CHROME HERE TOO, which is what actually makes a
199
+ footer entry ONE LINE. 16a draws it as "a label chip, a title and an
200
+ identity, on one line"; a bordered chip is padding plus stroke plus line
201
+ box, so a row carrying any relationship badge stood at 36px against 22px
202
+ for one carrying none - and the badge block, not the title, was the last
203
+ thing driving it.
204
+
205
+ MEASURED IN TWO PASSES, WHICH IS THE POINT. Stopping after the title fix
206
+ left the footer group at two heights and looked finished: the row that had
207
+ been 73px was down to 36 and matched its siblings, so the obvious check
208
+ passed. It was the SECOND measurement - why 22 and why 36 - that found the
209
+ badges. A class is not fixed until nothing in it varies for a reason you
210
+ have not named. */
211
+ ${scope} .ig-footer-row .ig-badge {
212
+ background: none;
213
+ border: 0;
214
+ border-radius: 0;
215
+ padding: 0;
216
+ white-space: nowrap;
217
+ }
218
+
219
+ /* THE THIRD AND LAST MEMBER OF THE CLASS: the identity. An excluded row
220
+ carries TWO - its own, and the canonical it defers to ('455 -> 512') - and
221
+ the second wrapped, which is why that row alone stood at 30px when the
222
+ others reached 17. Same defect as the title and the chips, third element,
223
+ found by asking the same question a third time rather than by stopping at
224
+ the first uniform-looking answer. */
225
+ ${scope} .ig-footer-row .ig-id {
226
+ white-space: nowrap;
227
+ }
228
+
229
+ /* THE NOW STRIP AT RAIL DENSITY. '17j' draws it as the first row of the rail
230
+ at all three backlog sizes, in the same rhythm as the rows beneath it -
231
+ RULINGS.md section 4: "a single now strip as the first row of the rail,
232
+ above rank 1, on a raised surface, carrying no rank number".
233
+
234
+ THE RANK SLOT IS ALREADY RIGHT AND IS NOT TOUCHED HERE: the strip carries a
235
+ 'now' mark where a rank would be, never a number, which is the half of
236
+ section 4 the build already had. What was wrong was only its height. */
237
+ ${scope} .ig-now-row {
238
+ min-height: var(--ig-row-height-dense);
239
+ padding-block: var(--ig-row-padding-block-dense);
240
+ }
241
+
242
+ ${scope} .ig-now-row .ig-row-head {
243
+ gap: 0;
244
+ min-width: 0;
245
+ }
246
+
247
+ ${scope} .ig-now-row .ig-title {
248
+ line-height: var(--ig-row-title-line);
249
+ overflow: hidden;
250
+ text-overflow: ellipsis;
251
+ white-space: nowrap;
252
+ }
253
+
254
+ ${scope} .ig-now-row .ig-id {
255
+ line-height: var(--ig-row-meta-line);
256
+ overflow: hidden;
257
+ text-overflow: ellipsis;
258
+ white-space: nowrap;
259
+ }
260
+
261
+ /* HIDDEN HERE, AND NOT YET EXPANDABLE — WHICH IS HALF OF WHAT 17j ASKS FOR.
262
+ The tile says: "The provenance line never renders inline here. In the rail
263
+ it is expand-on-demand; in 16a's wider panel it is inline. Same row, two
264
+ densities."
265
+
266
+ THE INLINE HALF IS DONE AND THE ON-DEMAND HALF IS NOT. There is no
267
+ row-level expand affordance at this density — 16f's right-arrow "expand
268
+ provenance" does not exist — so a rail reader reaches the explanation
269
+ through the inspector's WHY RANK block rather than through the row. The
270
+ information is one selection away, not lost, but this comment previously
271
+ claimed "expand-on-demand" and that was an overclaim about a control
272
+ nothing draws.
273
+
274
+ The markup stays whole so the wider container still renders it inline and
275
+ so the accessible name is unchanged; what the rail declines is spending
276
+ 53px of every row on it. The missing affordance is filed, not forgotten. */
277
+ ${scope} .ig-slot .ig-provenance,
278
+ ${scope} .ig-slot .ig-hold,
279
+ ${scope} .ig-slot .ig-caveat {
280
+ display: none;
281
+ }
282
+
283
+ /* AND THE ON-DEMAND HALF, WHICH IS WHAT 17j ACTUALLY ASKED FOR. A row the
284
+ reader opened with 16f's right-arrow draws its provenance again.
285
+
286
+ THE 53px IS NOT BROKEN BY THIS, it is spent deliberately: an open row is
287
+ taller because the reader asked it to be, and closing it returns the row to
288
+ the rhythm. That is the difference between a row that grows because nothing
289
+ governs it - the defect this sweep removed - and one that grows because
290
+ somebody pressed a key.
291
+
292
+ ONLY THE PROVENANCE COMES BACK. Holds and caveats stay down: 17j names the
293
+ provenance line and nothing else, and the holds are already in the
294
+ inspector's WHY RANK block as controls rather than prose. */
295
+ ${scope} .ig-slot[aria-expanded='true'] {
296
+ min-height: var(--ig-row-height-dense);
297
+ }
298
+
299
+ ${scope} .ig-slot[aria-expanded='true'] .ig-provenance {
300
+ display: block;
301
+ }
302
+ `;
303
+ }
25
304
  export const viewerStylesheet = `
26
305
  .ig-viewer {
27
306
  background: var(--ig-bg);
@@ -46,7 +325,33 @@ export const viewerStylesheet = `
46
325
  outline-offset: calc(var(--ig-focus-ring) * -1);
47
326
  }
48
327
 
328
+ /* THE ROW'S DENSITY IS READ FROM THIS BOX, AND THAT IS §17j's CLOSING RULE
329
+ RATHER THAN A PREFERENCE. The same row renders at 390px in the workspace
330
+ rail and at 330px in §18's settings rail, so it *"must take its width from
331
+ its container and pick its drop step from that — not from a viewport media
332
+ query, and not from a prop the host sets. A package that reads the window
333
+ cannot be dropped into someone else's settings page, which is the whole BYO
334
+ premise."*
335
+
336
+ A viewport query would have been the obvious reach and it is precisely
337
+ wrong: it answers a question about the WINDOW when the row's question is
338
+ about the COLUMN it was given. Two rails of different widths on one screen
339
+ is not an edge case here — §17a's rail and §18's settings rail are that
340
+ screen.
341
+
342
+ "NOT FROM A PROP THE HOST SETS" IS ABOUT THE DEFAULT, AND data-density DOES
343
+ NOT BREAK IT. What §17j refuses is a package that CANNOT work out its own
344
+ density — one that draws a wrong row until a host wires something up, which
345
+ is how a drop-in stops being a drop-in. This box still answers that question
346
+ on its own and nothing has to be passed for it to be right. What the
347
+ attribute adds is the ability to DISAGREE, which is a different thing: the
348
+ crossover this package picked is a default, the host is the only party that
349
+ knows about print, a user preference or its own breakpoints, and an override
350
+ nobody uses costs the drop-in case nothing. See the crossover comment below
351
+ for why the number needs no ruling once it is a default. */
49
352
  .ig-list {
353
+ container-name: ig-rail;
354
+ container-type: inline-size;
50
355
  list-style: none;
51
356
  margin: 0;
52
357
  padding: 0;
@@ -323,6 +628,13 @@ export const viewerStylesheet = `
323
628
  /* ── working now ───────────────────────────────────────────────────────── */
324
629
 
325
630
  .ig-now {
631
+ /* THE NOW STRIP IS PART OF THE RAIL'S RHYTHM, so it reads the same container
632
+ the rows do. It is its own list element, so without this the density rules
633
+ scoped to 'ig-rail' simply did not reach it and the strip stood 83px tall
634
+ beside 53px rows - 57% taller than everything under it, in the one slot
635
+ 17j gives the top of the rail. */
636
+ container-name: ig-rail;
637
+ container-type: inline-size;
326
638
  list-style: none;
327
639
  margin: 0;
328
640
  padding: 0;
@@ -391,6 +703,113 @@ export const viewerStylesheet = `
391
703
  padding: var(--ig-row-padding-block) var(--ig-space-wide);
392
704
  }
393
705
 
706
+ /* ── §17j's RAIL DENSITY ───────────────────────────────────────────────────
707
+
708
+ THE 53px ROW, AND THE ORDER THINGS LEAVE IT. '17j' fixes both, and the
709
+ reason it fixes the second is that the build *"showed everything because
710
+ nothing told it what to give up"*. This is that instruction.
711
+
712
+ 9 pad + 17 title + 3 gap + 15 meta + 9 pad = 53px, divider inclusive
713
+ tracks: 30px rank · 1fr issue · auto delta
714
+
715
+ THE FINDING THIS ENCODES, which is the one to keep: at 6, 60 and 312 issues
716
+ the rail is IDENTICAL. What changes is around it — virtualisation appears,
717
+ the runner-hold footer grows, filter chips stop being optional, the canvas
718
+ starts refusing. *"If you are making the rail denser as the backlog grows,
719
+ you are compressing the surface that was never the problem."* So nothing
720
+ here keys off the backlog size, and nothing ever should.
721
+
722
+ 430 IS THIS PACKAGE'S DEFAULT, NOT A CLAIM ABOUT THE DESIGN, AND A CONSUMER
723
+ CAN TAKE IT OVER. That is the whole posture of this package — sensible
724
+ defaults, everything overridable — and it is why this number needed no
725
+ ruling in the end. '17j' gives two anchors and no crossover: the workspace
726
+ rail is 390, §18's settings rail is 330 where steps 1-3 apply "by default",
727
+ and §16a's panel, which keeps provenance inline, is wider than either and
728
+ carries no published figure anywhere. 430 sits above the rail and below that
729
+ panel. A host that does nothing gets it and gets correct behaviour; a host
730
+ that disagrees sets data-density on the viewer root and this condition stops
731
+ deciding for them.
732
+
733
+ SO THE OPEN QUESTION IS CLOSED RATHER THAN WAITING. An earlier revision of
734
+ this comment filed the distance between 390 and 430 as needing a width for
735
+ §16a's panel. It does not: a DEFAULT only has to be reasonable, and the
736
+ figure would only have mattered if this were the single crossover every
737
+ consumer had to live with. It is not, so it is not blocking.
738
+
739
+ IT CANNOT BE A TOKEN, AND THE NEXT PERSON WILL TRY. Making the threshold a
740
+ theme property is the obvious reach, and it does not work: a container
741
+ condition takes a length and only a length. Measured in a browser — a
742
+ max-width condition written as a literal applies, and the same condition
743
+ naming a custom property PARSES INTO A RULE THAT MATCHES AT NO WIDTH AT ALL,
744
+ while CSS.supports() reports that same condition as supported. It fails
745
+ silently in both directions: the rule is not dropped, it is simply never
746
+ satisfied, and the one API that could have warned agrees it is fine. That is
747
+ a CSS limitation rather than a decision, and it is why the escape hatch below
748
+ is a selector rather than a property.
749
+
750
+ '17k' MAKES THE LOWER ANCHOR EXACT, which is worth keeping. It fixes the
751
+ three workspace layouts under one rule — "the rail never yields" — so the
752
+ workspace draws its rail at 390 at every width it supports and no amount of
753
+ resizing moves it across this threshold. Before that it fell to 312 below
754
+ 1360, so 430 had to clear two numbers and only one was '17j's. The editor's
755
+ sheet pins that relationship rather than restating it: see its test "keeps
756
+ the workspace rail on the dense side of layer 1's crossover". */
757
+ @container ig-rail (max-width: 430px) {
758
+ ${railDensity('.ig-viewer:not([data-density])')}
759
+ }
760
+
761
+ /* THE ESCAPE HATCH ITSELF, AND IT IS THE SAME BLOCK WITH A DIFFERENT KEY.
762
+ Emitted a second time under an attribute that carries no width at all, so
763
+ a consumer who sets it gets the dense row wherever they want it. The
764
+ scopes above and below are mutually exclusive by construction — one is
765
+ :not([data-density]) and the other names a value — so nothing here
766
+ depends on which of them a browser reads first.
767
+
768
+ THE OTHER DIRECTION NEEDS NO RULES. data-density='wide' matches neither
769
+ scope, so the row falls back to the base density this sheet declares
770
+ above, at any container width. */
771
+ ${railDensity(".ig-viewer[data-density='dense']")}
772
+
773
+ /* STEPS 1-3 OF THE DROP ORDER, AT §18's 330px SETTINGS RAIL, which '17j'
774
+ names as the width where they apply by default.
775
+
776
+ THE SELECTORS ARE THE MARKUP'S OWN ATTRIBUTES, not class guesses: evidence
777
+ is 'data-evidence', a relationship is 'data-edge', a priority is
778
+ 'data-priority' with 'query' / 'tier' / 'promoted'. Three of these were
779
+ written from memory first and two were wrong — the parts publish
780
+ 'data-evidence="verified"', never a 'data-ig-badge'. */
781
+
782
+ /* STEP 1 — evidence and verification chips. '17j': *"Reassurance, not an
783
+ answer to any question the rail is asked."* */
784
+ @container ig-rail (max-width: 360px) {
785
+ .ig-slot .ig-badge[data-evidence] {
786
+ display: none;
787
+ }
788
+ }
789
+
790
+ /* STEP 2 — relationship badges past the FIRST, which is kept because it is
791
+ the one causing the hold. Scoped to 'data-edge' so it counts relationships
792
+ and not the priority, evidence and readiness chips that share '.ig-badge';
793
+ a positional 'nth-of-type' would have hidden whichever chip happened to sit
794
+ second, which is not what the rule says at all. The '+n more' chip carries
795
+ what left, and it already exists — 'data-omitted'. */
796
+ @container ig-rail (max-width: 345px) {
797
+ .ig-slot .ig-badge[data-edge] ~ .ig-badge[data-edge] {
798
+ display: none;
799
+ }
800
+ }
801
+
802
+ /* STEP 3 — the priority token. A DECLARED TIER goes, because '17j' says it is
803
+ *"recoverable from the rank itself"*. A PROMOTION stays: 'P3 → 0' is the
804
+ one form the rank cannot give back, and it is rank provenance rather than a
805
+ restatement. A matched query stays for the same reason — it names WHICH
806
+ query, which no rank encodes. */
807
+ @container ig-rail (max-width: 335px) {
808
+ .ig-slot .ig-badge[data-priority='tier'] {
809
+ display: none;
810
+ }
811
+ }
812
+
394
813
  /* THE ONE ROW GROUND THE FRAME DRAWS, and it is not a stripe. A together unit
395
814
  is the compound station, and the tint says so; the other ranked rows carry
396
815
  no background at all. */
@@ -464,6 +883,30 @@ export const viewerStylesheet = `
464
883
  min-width: 0;
465
884
  }
466
885
 
886
+ /* A UNIT AT THE WIDE DENSITY IS ITS ENCLOSURE, which is what §16a draws: the
887
+ pill, the note, and a member list. The ordinary head the row also carries is
888
+ the RAIL's way of drawing the same unit, so it stands down here rather than
889
+ printing the lead's title above a box that already opens with it. */
890
+ .ig-slot[data-unit='true'] > .ig-row-body > .ig-row-head {
891
+ display: none;
892
+ }
893
+
894
+ .ig-unit-count {
895
+ display: none;
896
+ }
897
+
898
+ /* LINE 2 AT THE WIDE DENSITY. §16a's panel draws the same sequence — identity
899
+ then chips — and simply has room, so here it WRAPS rather than clipping and
900
+ the provenance turnstile stays inline beneath it. Same markup, two
901
+ densities; the rail's rules are in the container query above. */
902
+ .ig-row-meta {
903
+ align-items: center;
904
+ display: flex;
905
+ flex-wrap: wrap;
906
+ gap: var(--ig-space-tight);
907
+ min-width: 0;
908
+ }
909
+
467
910
  /* ── readiness stations ────────────────────────────────────────────────── */
468
911
 
469
912
  .ig-station {
@@ -1033,6 +1476,35 @@ export const viewerStylesheet = `
1033
1476
  stroke-width: var(--ig-stroke);
1034
1477
  }
1035
1478
 
1479
+ /* A MARK IS HIT-TESTABLE, AND THAT IS THE OPPOSITE OF WHAT IT FIRST SAID.
1480
+
1481
+ It carried a pointer-events none rule, reasoning from the halo: a decoration
1482
+ over a line must not swallow the click aimed at the line. That reasoning does
1483
+ not transfer, because a halo IS the line again and a mark is NOT — every one
1484
+ of these is deliberately offset AWAY from the path, so a click on it does not
1485
+ fall through onto the edge. It falls through onto the canvas, and the viewer's
1486
+ walk climbs to the canvas group and reports a click on nothing, clearing the
1487
+ very selection the reader was making. A conflict's companion is the clearest
1488
+ case: a visibly separate line that could not be pointed at.
1489
+
1490
+ That is a defect this package has already paid for once. The overlay module
1491
+ keeps its pointer identity on the dash clone for exactly this reason, and says
1492
+ so: dropping the identity makes a clone a dead zone over its own edge. Every
1493
+ mark here publishes the same identity, so making it unhittable spent the
1494
+ identity it had just been given.
1495
+
1496
+ Colour is set per element, from the token name the caller supplied, for the
1497
+ reason the edge hues are set per element: one source for a channel. Nothing
1498
+ here paints a state, because nothing here knows what a state is. */
1499
+ .ig-edge-mark {
1500
+ font-family: var(--ig-font-ui);
1501
+ font-size: var(--ig-font-size-small);
1502
+ }
1503
+
1504
+ .ig-edge-companion {
1505
+ stroke-width: var(--ig-stroke);
1506
+ }
1507
+
1036
1508
  .ig-terminal[data-edge='blocked-by'] { color: var(--ig-edge-blocked-by); }
1037
1509
  .ig-terminal[data-edge='serialize-with'] { color: var(--ig-edge-serialize-with); }
1038
1510
  .ig-terminal[data-edge='together-with'] { color: var(--ig-edge-together-with); }
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgmC/B,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO;EACP,KAAK;;;;;;;;;;EAUL,KAAK;;;;EAIL,KAAK;;;;;;;;;EASL,KAAK;;;;;;;;;;EAUL,KAAK;;;;;;;;;;;;;EAaL,KAAK;;;;;;;;EAQL,KAAK;;;;;;;;;;;;;;;;;;EAkBL,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BL,KAAK;;;;EAIL,KAAK;EACL,KAAK;;;;;;;EAOL,KAAK;;;;;;;;;;;;;;;;;;;EAmBL,KAAK;;;;;;;;EAQL,KAAK;;;;;;;;;;;;;;;;;;;EAmBL,KAAK;;;;;;;;;;;;;;EAcL,KAAK;;;;;;;;;;;;EAYL,KAAK;;;;;EAKL,KAAK;;;;;EAKL,KAAK;;;;;;;EAOL,KAAK;;;;;;;;;;;;;;;;;;;;;;;EAuBL,KAAK;EACL,KAAK;EACL,KAAK;;;;;;;;;;;;;;;;EAgBL,KAAK;;;;EAIL,KAAK;;;CAGN,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsc9B,WAAW,CAAC,gCAAgC,CAAC;;;;;;;;;;;;;EAa7C,WAAW,CAAC,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA80BhD,CAAC"}
package/dist/theme.d.ts CHANGED
@@ -34,7 +34,7 @@ export type ColorToken = (typeof COLOR_TOKENS)[number];
34
34
  export declare const TYPE_TOKENS: readonly ["--ig-font-ui", "--ig-font-mono", "--ig-font-size", "--ig-font-size-small", "--ig-line-height", "--ig-font-size-micro", "--ig-font-size-pill", "--ig-weight-regular", "--ig-weight-medium", "--ig-weight-strong", "--ig-weight-heavy", "--ig-tracking-label", "--ig-tracking-group", "--ig-tracking-pill", "--ig-tracking-badge", "--ig-font-size-meta", "--ig-font-size-compact", "--ig-font-size-row", "--ig-font-size-rank"];
35
35
  export type TypeToken = (typeof TYPE_TOKENS)[number];
36
36
  /** Geometry tokens. Every value is a number of CSS pixels. */
37
- export declare const METRIC_TOKENS: readonly ["--ig-space", "--ig-space-tight", "--ig-radius", "--ig-row-height", "--ig-station-size", "--ig-station-halo", "--ig-stroke", "--ig-stroke-connector", "--ig-stroke-audit", "--ig-terminal-length", "--ig-terminal-width", "--ig-gutter-width", "--ig-spine-width", "--ig-char-width", "--ig-label-char-width", "--ig-focus-ring", "--ig-space-micro", "--ig-space-snug", "--ig-space-loose", "--ig-space-wide", "--ig-radius-small", "--ig-radius-large", "--ig-row-min-height", "--ig-row-padding-block", "--ig-band-rail", "--ig-rank-column", "--ig-station-box", "--ig-card-line"];
37
+ export declare const METRIC_TOKENS: readonly ["--ig-space", "--ig-space-tight", "--ig-radius", "--ig-row-height", "--ig-station-size", "--ig-station-halo", "--ig-stroke", "--ig-stroke-connector", "--ig-stroke-audit", "--ig-terminal-length", "--ig-terminal-width", "--ig-gutter-width", "--ig-spine-width", "--ig-char-width", "--ig-label-char-width", "--ig-focus-ring", "--ig-space-micro", "--ig-space-snug", "--ig-space-loose", "--ig-space-wide", "--ig-radius-small", "--ig-radius-large", "--ig-row-min-height", "--ig-row-padding-block", "--ig-band-rail", "--ig-rank-column", "--ig-row-height-dense", "--ig-row-padding-block-dense", "--ig-rank-column-dense", "--ig-row-title-line", "--ig-row-meta-line", "--ig-row-line-gap", "--ig-station-box", "--ig-card-line"];
38
38
  export type MetricToken = (typeof METRIC_TOKENS)[number];
39
39
  /**
40
40
  * Surface-treatment tokens: values that are none of a colour, a type value or
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,+ZAgCd,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,2aAgDb,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,aAAa,kkBAyDf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,wIAsBf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAKxC,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KA2MzB,CAAC;AAEH,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAOvE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,SAAU,GAAG,MAAM,CAWjE"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY,+ZAgCd,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,2aAgDb,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,aAAa,utBAoEf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,wIAsBf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAKxC,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KA+OzB,CAAC;AAEH,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAOvE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,SAAU,GAAG,MAAM,CAWjE"}
package/dist/theme.js CHANGED
@@ -165,6 +165,17 @@ export const METRIC_TOKENS = Object.freeze([
165
165
  // would make the alignment grid move whenever either did, which is the one
166
166
  // thing this column exists to prevent.
167
167
  '--ig-rank-column',
168
+ // §17j's RAIL density, beside §16a's above rather than replacing it, because
169
+ // there are two densities and the tile says so: the provenance line is
170
+ // inline in §16a's wider panel and expand-on-demand in the rail. A host
171
+ // retheming one must be able to reach the other, so both are in the
172
+ // contract.
173
+ '--ig-row-height-dense',
174
+ '--ig-row-padding-block-dense',
175
+ '--ig-rank-column-dense',
176
+ '--ig-row-title-line',
177
+ '--ig-row-meta-line',
178
+ '--ig-row-line-gap',
168
179
  // §16b's spine furniture: the station disc that sits ON the spine line, and
169
180
  // the line height a card's own height is counted in.
170
181
  '--ig-station-box',
@@ -390,6 +401,42 @@ export const defaultTheme = Object.freeze({
390
401
  '--ig-band-rail': 3,
391
402
  // §16a's rank track, read straight off `grid-template-columns: 34px 1fr`.
392
403
  '--ig-rank-column': 34,
404
+ // ── §17j's RAIL density ────────────────────────────────────────────────
405
+ //
406
+ // THE THREE ABOVE ARE §16a's, AND §16a IS THE WIDE PANEL. Their comments
407
+ // say so — `34px 1fr` and `padding: 13px 20px` were read off that tile —
408
+ // and applying them to §17's rail is what made one density serve two
409
+ // surfaces. `RULINGS.md`'s §17j is explicit that there are two: *"The
410
+ // provenance line never renders inline here. In the rail it is
411
+ // expand-on-demand; in §16a's wider panel it is inline. Same row, two
412
+ // densities."*
413
+ //
414
+ // So these are the rail's own, read off `17j`'s stated anatomy rather than
415
+ // derived from §16a's:
416
+ //
417
+ // 9 pad + 17 title + 3 gap + 15 meta + 9 pad = 53px, divider inclusive
418
+ // tracks: 30px rank · 1fr issue · auto delta
419
+ //
420
+ // They are applied by a CONTAINER query, never a viewport one — `17j`'s
421
+ // closing consequence is that the same row renders at 390 in the workspace
422
+ // and 330 in §18's settings rail, so it *"must take its width from its
423
+ // container and pick its drop step from that"*. A package that reads the
424
+ // window cannot be dropped into someone else's settings page, which is the
425
+ // whole BYO premise.
426
+ '--ig-row-height-dense': 53,
427
+ '--ig-row-padding-block-dense': 9,
428
+ '--ig-rank-column-dense': 30,
429
+ // The two text lines the 53px is composed of, so the height is built from
430
+ // its parts rather than asserted as one number a later edit can drift from.
431
+ // The meta token was added, removed when nothing read it — this package
432
+ // fails a token with no use, and rightly — and is back now that the meta
433
+ // line exists to read it.
434
+ '--ig-row-title-line': 17,
435
+ '--ig-row-meta-line': 15,
436
+ // The 3 in 9 + 17 + 3 + 15 + 9. Its own token because the anatomy is a
437
+ // SUM: a gap borrowed from the spacing scale would drift the height the
438
+ // moment that scale moved, and the height is the thing 17j fixes.
439
+ '--ig-row-line-gap': 3,
393
440
  // §16b's station disc, 26px across on the spine.
394
441
  '--ig-station-box': 26,
395
442
  // One line of text inside a §16b node card, which is what lets the layout
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACxC,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,YAAY;IACZ,oBAAoB;IACpB,sBAAsB;IACtB,mBAAmB;IACnB,sBAAsB;IACtB,0BAA0B;IAC1B,yBAAyB;IACzB,wBAAwB;IACxB,2BAA2B;IAC3B,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,qEAAqE;IACrE,oEAAoE;IACpE,6EAA6E;IAC7E,yCAAyC;IACzC,EAAE;IACF,6EAA6E;IAC7E,6EAA6E;IAC7E,+EAA+E;IAC/E,oBAAoB;IACpB,mBAAmB;IACnB,qBAAqB;CACb,CAAC,CAAC;AAIZ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,kBAAkB;IAClB,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,0EAA0E;IAC1E,sDAAsD;IACtD,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,sBAAsB;IACtB,qBAAqB;IACrB,0EAA0E;IAC1E,yEAAyE;IACzE,oEAAoE;IACpE,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,6EAA6E;IAC7E,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,0CAA0C;IAC1C,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,8EAA8E;IAC9E,8EAA8E;IAC9E,0EAA0E;IAC1E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,iDAAiD;IACjD,qBAAqB;IACrB,wBAAwB;IACxB,oBAAoB;IACpB,qBAAqB;CACb,CAAC,CAAC;AAIZ,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,YAAY;IACZ,kBAAkB;IAClB,aAAa;IACb,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,uBAAuB;IACvB,iBAAiB;IACjB,sDAAsD;IACtD,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,yEAAyE;IACzE,qEAAqE;IACrE,6EAA6E;IAC7E,qBAAqB;IACrB,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,6EAA6E;IAC7E,6EAA6E;IAC7E,qEAAqE;IACrE,6EAA6E;IAC7E,yBAAyB;IACzB,qBAAqB;IACrB,wBAAwB;IACxB,qEAAqE;IACrE,0EAA0E;IAC1E,gDAAgD;IAChD,gBAAgB;IAChB,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,2EAA2E;IAC3E,2EAA2E;IAC3E,uCAAuC;IACvC,kBAAkB;IAClB,6EAA6E;IAC7E,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,YAAY;IACZ,uBAAuB;IACvB,8BAA8B;IAC9B,wBAAwB;IACxB,qBAAqB;IACrB,oBAAoB;IACpB,mBAAmB;IACnB,4EAA4E;IAC5E,qDAAqD;IACrD,kBAAkB;IAClB,gBAAgB;CACR,CAAC,CAAC;AAIZ;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,6EAA6E;IAC7E,yEAAyE;IACzE,6EAA6E;IAC7E,oDAAoD;IACpD,gBAAgB;IAChB,kBAAkB;IAClB,yEAAyE;IACzE,0EAA0E;IAC1E,wEAAwE;IACxE,iDAAiD;IACjD,gBAAgB;IAChB,gBAAgB;IAChB,yEAAyE;IACzE,qEAAqE;IACrE,4EAA4E;IAC5E,0EAA0E;IAC1E,uEAAuE;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,uBAAuB;IACvB,wBAAwB;CAChB,CAAC,CAAC;AAIZ,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC3D,GAAG,YAAY;IACf,GAAG,WAAW;IACd,GAAG,aAAa;IAChB,GAAG,aAAa;CACjB,CAAC,CAAC;AAWH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAU,MAAM,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE,SAAS;QAC3B,WAAW,EAAE,SAAS;QACtB,WAAW,EAAE,SAAS;QACtB,gBAAgB,EAAE,SAAS;QAC3B,iBAAiB,EAAE,SAAS;QAC5B,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,SAAS;QACvB,oBAAoB,EAAE,SAAS;QAC/B,sBAAsB,EAAE,SAAS;QACjC,mBAAmB,EAAE,SAAS;QAC9B,sBAAsB,EAAE,SAAS;QACjC,0BAA0B,EAAE,SAAS;QACrC,yBAAyB,EAAE,SAAS;QACpC,wBAAwB,EAAE,SAAS;QACnC,2BAA2B,EAAE,SAAS;QACtC,qEAAqE;QACrE,0EAA0E;QAC1E,4EAA4E;QAC5E,2EAA2E;QAC3E,EAAE;QACF,4EAA4E;QAC5E,sEAAsE;QACtE,4EAA4E;QAC5E,sEAAsE;QACtE,sEAAsE;QACtE,yEAAyE;QACzE,+BAA+B;QAC/B,oBAAoB,EAAE,SAAS;QAC/B,mBAAmB,EAAE,SAAS;QAC9B,wEAAwE;QACxE,iEAAiE;QACjE,qBAAqB,EAAE,SAAS;KACjC,CAAC;IACF,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QAClB,cAAc,EAAE,6CAA6C;QAC7D,sEAAsE;QACtE,kDAAkD;QAClD,gBAAgB,EAAE,2DAA2D;QAC7E,gBAAgB,EAAE,MAAM;QACxB,sBAAsB,EAAE,MAAM;QAC9B,kBAAkB,EAAE,MAAM;QAC1B,uEAAuE;QACvE,yEAAyE;QACzE,mEAAmE;QACnE,sBAAsB,EAAE,MAAM;QAC9B,qBAAqB,EAAE,OAAO;QAC9B,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,+BAA+B;QAC/B,qBAAqB,EAAE,KAAK;QAC5B,oBAAoB,EAAE,KAAK;QAC3B,oBAAoB,EAAE,KAAK;QAC3B,mBAAmB,EAAE,KAAK;QAC1B,6DAA6D;QAC7D,qBAAqB,EAAE,QAAQ;QAC/B,yEAAyE;QACzE,qEAAqE;QACrE,qBAAqB,EAAE,OAAO;QAC9B,2EAA2E;QAC3E,2EAA2E;QAC3E,sEAAsE;QACtE,sDAAsD;QACtD,oBAAoB,EAAE,QAAQ;QAC9B,qBAAqB,EAAE,QAAQ;QAC/B,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,4BAA4B;QAC5B,qBAAqB,EAAE,QAAQ;QAC/B,wBAAwB,EAAE,QAAQ;QAClC,oBAAoB,EAAE,QAAQ;QAC9B,qBAAqB,EAAE,MAAM;KAC9B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,YAAY,EAAE,EAAE;QAChB,kBAAkB,EAAE,CAAC;QACrB,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,EAAE;QACrB,mBAAmB,EAAE,EAAE;QACvB,sEAAsE;QACtE,kCAAkC;QAClC,mBAAmB,EAAE,CAAC;QACtB,aAAa,EAAE,GAAG;QAClB,2EAA2E;QAC3E,4DAA4D;QAC5D,uBAAuB,EAAE,GAAG;QAC5B,2EAA2E;QAC3E,sEAAsE;QACtE,2EAA2E;QAC3E,sDAAsD;QACtD,EAAE;QACF,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,oEAAoE;QACpE,wEAAwE;QACxE,yEAAyE;QACzE,8BAA8B;QAC9B,mBAAmB,EAAE,CAAC;QACtB,yEAAyE;QACzE,yEAAyE;QACzE,6DAA6D;QAC7D,sBAAsB,EAAE,CAAC;QACzB,qBAAqB,EAAE,CAAC;QACxB,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,wEAAwE;QACxE,2EAA2E;QAC3E,0DAA0D;QAC1D,mBAAmB,EAAE,GAAG;QACxB,kBAAkB,EAAE,GAAG;QACvB,2EAA2E;QAC3E,0EAA0E;QAC1E,qDAAqD;QACrD,iBAAiB,EAAE,GAAG;QACtB,4DAA4D;QAC5D,sEAAsE;QACtE,gEAAgE;QAChE,0EAA0E;QAC1E,yEAAyE;QACzE,kEAAkE;QAClE,EAAE;QACF,6EAA6E;QAC7E,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,wDAAwD;QACxD,uBAAuB,EAAE,CAAC;QAC1B,iBAAiB,EAAE,CAAC;QACpB,2EAA2E;QAC3E,wDAAwD;QACxD,wEAAwE;QACxE,oBAAoB;QACpB,kBAAkB,EAAE,CAAC;QACrB,iBAAiB,EAAE,CAAC;QACpB,kBAAkB,EAAE,EAAE;QACtB,iBAAiB,EAAE,EAAE;QACrB,uEAAuE;QACvE,sEAAsE;QACtE,mBAAmB,EAAE,CAAC;QACtB,mBAAmB,EAAE,EAAE;QACvB,2EAA2E;QAC3E,yEAAyE;QACzE,qEAAqE;QACrE,qBAAqB,EAAE,EAAE;QACzB,oEAAoE;QACpE,yEAAyE;QACzE,wBAAwB,EAAE,EAAE;QAC5B,oEAAoE;QACpE,gBAAgB,EAAE,CAAC;QACnB,0EAA0E;QAC1E,kBAAkB,EAAE,EAAE;QACtB,0EAA0E;QAC1E,EAAE;QACF,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,sEAAsE;QACtE,+DAA+D;QAC/D,sEAAsE;QACtE,eAAe;QACf,EAAE;QACF,2EAA2E;QAC3E,uBAAuB;QACvB,EAAE;QACF,2EAA2E;QAC3E,iDAAiD;QACjD,EAAE;QACF,wEAAwE;QACxE,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,2EAA2E;QAC3E,qBAAqB;QACrB,uBAAuB,EAAE,EAAE;QAC3B,8BAA8B,EAAE,CAAC;QACjC,wBAAwB,EAAE,EAAE;QAC5B,0EAA0E;QAC1E,4EAA4E;QAC5E,wEAAwE;QACxE,yEAAyE;QACzE,0BAA0B;QAC1B,qBAAqB,EAAE,EAAE;QACzB,oBAAoB,EAAE,EAAE;QACxB,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,mBAAmB,EAAE,CAAC;QACtB,iDAAiD;QACjD,kBAAkB,EAAE,EAAE;QACtB,0EAA0E;QAC1E,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;QAC3E,4EAA4E;QAC5E,wEAAwE;QACxE,qEAAqE;QACrE,gBAAgB,EAAE,EAAE;KACrB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,yEAAyE;QACzE,0EAA0E;QAC1E,2EAA2E;QAC3E,iEAAiE;QACjE,yEAAyE;QACzE,sEAAsE;QACtE,2BAA2B;QAC3B,gBAAgB,EAAE,IAAI;QACtB,kBAAkB,EAAE,KAAK;QACzB,+DAA+D;QAC/D,gBAAgB,EAAE,IAAI;QACtB,2EAA2E;QAC3E,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,iBAAiB;QACjB,gBAAgB,EAAE,IAAI;QACtB,wEAAwE;QACxE,2EAA2E;QAC3E,0CAA0C;QAC1C,EAAE;QACF,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,6DAA6D;QAC7D,uBAAuB,EAAE,sCAAsC;QAC/D,wBAAwB,EAAE,sCAAsC;KACjE,CAAC;CACH,CAAC,CAAC;AAUH;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,IAAW,EAAE,QAAuB;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7D,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAChE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;KACjE,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAY,EAAE,QAAQ,GAAG,OAAO;IACvD,6EAA6E;IAC7E,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,KAAK,MAAM,KAAK,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClF,KAAK,MAAM,KAAK,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACjG,KAAK,MAAM,KAAK,IAAI,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvF,OAAO,GAAG,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@issuegraph/viewer",
3
- "version": "0.5.0",
3
+ "version": "0.9.1",
4
4
  "description": "Render an Issuegraph document as a work order — the ordered spine with readiness stations, the five edge treatments, and three projections. Rendering only: no fetching, no mutation, no auth, and every value themeable through CSS custom properties.",
5
5
  "keywords": [
6
6
  "issuegraph",