@issuegraph/viewer 0.2.0 → 0.3.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/projections/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/projections/tree.ts"],"names":[],"mappings":"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"}
package/dist/styles.d.ts CHANGED
@@ -13,5 +13,5 @@
13
13
  * package's floor is checked by a smoke test that imports the built entry. A
14
14
  * string also means no consumer needs a bundler to use it.
15
15
  */
16
- export declare const viewerStylesheet = "\n.ig-viewer {\n background: var(--ig-bg);\n color: var(--ig-text-body);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size);\n line-height: var(--ig-line-height);\n position: relative;\n}\n\n.ig-viewer *,\n.ig-viewer *::before,\n.ig-viewer *::after {\n box-sizing: border-box;\n}\n\n.ig-viewer :focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/* \u2500\u2500 the spine \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-slot {\n align-items: center;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n column-gap: var(--ig-space);\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n margin-bottom: var(--ig-space-tight);\n min-height: var(--ig-row-height);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-slot[data-held='true'] {\n background: var(--ig-surface-2);\n border-style: dashed;\n}\n\n.ig-slot[aria-current='true'] {\n border-color: var(--ig-accent);\n}\n\n/* A CANVAS-OWNED NODE IS SELECTABLE TOO, and only the rail rows had a selected\n look \u2014 so clicking a gutter, excluded or tracker-held node set aria-current on\n the group and changed nothing a reader could see. A pointer does not normally\n raise :focus-visible either, so those selections had no visible state at all\n on the channel most likely to make them. Same accent the rail uses, so one\n selection reads the same whichever surface drew it. */\n.ig-node-group[aria-current='true'] .ig-node {\n stroke: var(--ig-accent);\n stroke-width: calc(var(--ig-stroke) * 2);\n}\n\n.ig-rank {\n color: var(--ig-text);\n font-family: var(--ig-font-mono);\n font-variant-numeric: tabular-nums;\n min-width: calc(var(--ig-char-width) * 4);\n text-align: right;\n}\n\n.ig-rank[data-held='true'] {\n color: var(--ig-text-muted);\n}\n\n/* \u2500\u2500 readiness stations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-station {\n block-size: var(--ig-station-size);\n border: var(--ig-stroke) solid var(--ig-station-held);\n border-radius: 50%;\n box-shadow: 0 0 0 var(--ig-station-halo) var(--ig-bg);\n display: inline-block;\n inline-size: var(--ig-station-size);\n}\n\n.ig-station[data-fill='filled'] {\n background: var(--ig-station-ready);\n border-color: var(--ig-station-ready);\n}\n\n.ig-station[data-fill='hollow'] {\n background: transparent;\n border-color: var(--ig-station-pending);\n}\n\n.ig-station[data-fill='dashed'] {\n background: transparent;\n border-style: dashed;\n border-color: var(--ig-station-held);\n}\n\n/* \u2500\u2500 titles, identity, provenance \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-title {\n color: var(--ig-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ig-id,\n.ig-count {\n color: var(--ig-text-muted);\n font-family: var(--ig-font-mono);\n font-variant-numeric: tabular-nums;\n}\n\n.ig-link {\n color: var(--ig-accent);\n text-decoration: none;\n}\n\n.ig-link:hover {\n text-decoration: underline;\n}\n\n.ig-provenance,\n.ig-hold {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n grid-column: 3 / -1;\n}\n\n.ig-strike {\n text-decoration: line-through;\n}\n\n/* \u2500\u2500 edge badges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* SPANNED FROM THE TITLE COLUMN, LIKE EVERY OTHER FULL-WIDTH ROW MEMBER. Left\n unplaced this was the fifth child of a four-column grid, so it auto-placed\n into column ONE of a second row \u2014 the rank track, an auto-sized column that\n takes the width of its widest item. One relationship badge then set the width\n of the rank column for the whole row, pushing the station and title across\n and squeezing the title to pay for it. Badges belong with the row's other\n metadata, which is what 3 / -1 already means here for provenance and holds.\n (No backticks in this file: the stylesheet is a template literal.) */\n.ig-badges {\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space-tight);\n grid-column: 3 / -1;\n}\n\n.ig-badge {\n align-items: center;\n /* Not currentColor any more: the label and the border now carry DIFFERENT\n colours deliberately \u2014 see below. Left as currentColor the border would\n follow the text to --ig-text and the hue channel would vanish from the\n badge entirely, which is the opposite of the fix. */\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n color: var(--ig-text);\n display: inline-flex;\n font-size: var(--ig-font-size-small);\n gap: var(--ig-space-tight);\n padding: 0 var(--ig-space-tight);\n}\n\n/* THE HUE IS A BORDER COLOUR HERE, NOT A TEXT COLOUR \u2014 the theme holds the\n edge hues to the 3:1 NON-TEXT bar, and says so where it defines them, so\n painting badge LABELS with them contradicted the palette's own claim. It was\n not merely theoretical: at this size duplicate-of measured 3.98:1 on\n --ig-surface and decomposed-from 4.37:1, both under the 4.5:1 the text test\n asserts for every text colour. The label now takes --ig-text, which that\n test already proves on all three surfaces, and the hue keeps the non-text\n use it was measured for.\n NO CHANNEL IS LOST. Hue is one of four redundant channels and it is still\n carried by the border; the dash pattern and the glyph are untouched; and the\n vocabulary test independently proves all five stay distinguishable with hue\n removed ENTIRELY, which is the stronger claim. */\n.ig-badge[data-edge='blocked-by'] { border-color: var(--ig-edge-blocked-by); border-style: solid; }\n.ig-badge[data-edge='serialize-with'] { border-color: var(--ig-edge-serialize-with); border-style: double; }\n.ig-badge[data-edge='together-with'] { border-color: var(--ig-edge-together-with); border-style: solid; }\n.ig-badge[data-edge='duplicate-of'] { border-color: var(--ig-edge-duplicate-of); border-style: dotted; }\n.ig-badge[data-edge='decomposed-from'] { border-color: var(--ig-edge-decomposed-from); border-style: dashed; }\n\n.ig-glyph {\n font-family: var(--ig-font-mono);\n}\n\n/* \u2500\u2500 the footer group: holds that earn no rank slot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-footer {\n border-top: var(--ig-stroke) solid var(--ig-line);\n margin-top: var(--ig-space);\n padding-top: var(--ig-space);\n}\n\n.ig-footer-title {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n margin: 0 0 var(--ig-space-tight);\n}\n\n/* \u2500\u2500 the graph canvas \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* The stage carries the LAYOUT's own size, so one SVG unit is one CSS pixel\n and an absolutely-positioned rail row lands on the node it names. A\n percentage-width canvas would rescale under the rail and drift. It scrolls\n rather than shrinking, because shrinking would silently break that. */\n.ig-stage {\n block-size: var(--ig-stage-h);\n inline-size: var(--ig-stage-w);\n max-inline-size: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n position: relative;\n}\n\n.ig-canvas {\n block-size: var(--ig-stage-h);\n display: block;\n inline-size: var(--ig-stage-w);\n}\n\n/* The ranks and stations FOR the spine nodes, sitting on them. */\n.ig-rail {\n inset: 0;\n pointer-events: none;\n position: absolute;\n}\n\n.ig-rail-row {\n block-size: var(--ig-row-h);\n inline-size: var(--ig-row-w);\n inset-block-start: var(--ig-row-y);\n inset-inline-start: var(--ig-row-x);\n margin-bottom: 0;\n min-block-size: 0;\n pointer-events: auto;\n position: absolute;\n}\n\n.ig-node {\n fill: var(--ig-surface);\n stroke: var(--ig-line);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-node[data-held='true'] {\n fill: var(--ig-surface-2);\n stroke-dasharray: 4 3;\n}\n\n.ig-node-label {\n fill: var(--ig-text);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size-small);\n}\n\n.ig-edge {\n fill: none;\n stroke-width: var(--ig-stroke);\n}\n\n.ig-edge[data-edge='blocked-by'] { stroke: var(--ig-edge-blocked-by); }\n.ig-edge[data-edge='serialize-with'] { stroke: var(--ig-edge-serialize-with); }\n.ig-edge[data-edge='together-with'] { stroke: var(--ig-edge-together-with); }\n.ig-edge[data-edge='duplicate-of'] { stroke: var(--ig-edge-duplicate-of); }\n.ig-edge[data-edge='decomposed-from'] { stroke: var(--ig-edge-decomposed-from); }\n\n/* The dash pattern is set per element from the edge vocabulary, never here \u2014\n one source for the channel the colour-blind-safety claim rests on. */\n.ig-enclosure {\n fill: none;\n stroke: var(--ig-edge-together-with);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-connector {\n stroke: var(--ig-edge-together-with);\n stroke-width: var(--ig-stroke-connector);\n}\n\n/* currentColor on the marker resolves to the inherited text colour, not to the\n edge's stroke \u2014 so a terminal has to be given the hue explicitly or it renders\n in body text and the fourth channel silently collapses. */\n.ig-terminal {\n color: var(--ig-text-body);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-terminal[data-edge='blocked-by'] { color: var(--ig-edge-blocked-by); }\n.ig-terminal[data-edge='serialize-with'] { color: var(--ig-edge-serialize-with); }\n.ig-terminal[data-edge='together-with'] { color: var(--ig-edge-together-with); }\n.ig-terminal[data-edge='duplicate-of'] { color: var(--ig-edge-duplicate-of); }\n.ig-terminal[data-edge='decomposed-from'] { color: var(--ig-edge-decomposed-from); }\n\n/* \u2500\u2500 refusals and empty states \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-refusal,\n.ig-empty {\n background: var(--ig-surface-2);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n color: var(--ig-text-body);\n padding: var(--ig-space);\n}\n\n.ig-refusal-next {\n color: var(--ig-text);\n margin: var(--ig-space-tight) 0 0;\n}\n\n/* The capsule is INFORMATIONAL \u2014 a plain list item again. It was briefly a\n button, to make the refusal's advertised action keyboard-reachable; the\n action itself has since gone, because this package cannot narrow a document\n and so could never complete it. With the control removed the UA button reset\n goes too: there is no button look left to undo. */\n.ig-capsule {\n align-items: baseline;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n display: flex;\n gap: var(--ig-space);\n margin-top: var(--ig-space-tight);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-refusal-omitted {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n margin: var(--ig-space-tight) 0 0;\n}\n\n/* \u2500\u2500 the decomposition tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-tree,\n.ig-tree .ig-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.ig-tree .ig-list {\n border-left: var(--ig-stroke) dashed var(--ig-edge-decomposed-from);\n margin-left: var(--ig-space);\n padding-left: var(--ig-space);\n}\n\n.ig-tree-item {\n padding: var(--ig-space-tight) 0;\n}\n\n/* \u2500\u2500 legend \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-legend {\n border: 0;\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space);\n margin: 0 0 var(--ig-space);\n padding: 0;\n}\n\n.ig-legend-caption {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n padding: 0;\n}\n";
16
+ export declare const viewerStylesheet = "\n.ig-viewer {\n background: var(--ig-bg);\n color: var(--ig-text-body);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size);\n line-height: var(--ig-line-height);\n position: relative;\n}\n\n.ig-viewer *,\n.ig-viewer *::before,\n.ig-viewer *::after {\n box-sizing: border-box;\n}\n\n.ig-viewer :focus-visible {\n outline: var(--ig-focus-ring) solid var(--ig-focus);\n outline-offset: var(--ig-space-tight);\n}\n\n.ig-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/* \u2500\u2500 the spine \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-slot {\n align-items: center;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n column-gap: var(--ig-space);\n display: grid;\n grid-template-columns: auto auto 1fr auto;\n margin-bottom: var(--ig-space-tight);\n min-height: var(--ig-row-height);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-slot[data-held='true'] {\n background: var(--ig-surface-2);\n border-style: dashed;\n}\n\n.ig-slot[aria-current='true'] {\n border-color: var(--ig-accent);\n}\n\n/* A CANVAS-OWNED NODE IS SELECTABLE TOO, and only the rail rows had a selected\n look \u2014 so clicking a gutter, excluded or tracker-held node set aria-current on\n the group and changed nothing a reader could see. A pointer does not normally\n raise :focus-visible either, so those selections had no visible state at all\n on the channel most likely to make them. Same accent the rail uses, so one\n selection reads the same whichever surface drew it. */\n.ig-node-group[aria-current='true'] .ig-node {\n stroke: var(--ig-accent);\n stroke-width: calc(var(--ig-stroke) * 2);\n}\n\n.ig-rank {\n color: var(--ig-text);\n font-family: var(--ig-font-mono);\n font-variant-numeric: tabular-nums;\n min-width: calc(var(--ig-char-width) * 4);\n text-align: right;\n}\n\n.ig-rank[data-held='true'] {\n color: var(--ig-text-muted);\n}\n\n/* \u2500\u2500 readiness stations \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-station {\n block-size: var(--ig-station-size);\n border: var(--ig-stroke) solid var(--ig-station-held);\n border-radius: 50%;\n box-shadow: 0 0 0 var(--ig-station-halo) var(--ig-bg);\n display: inline-block;\n inline-size: var(--ig-station-size);\n}\n\n.ig-station[data-fill='filled'] {\n background: var(--ig-station-ready);\n border-color: var(--ig-station-ready);\n}\n\n.ig-station[data-fill='hollow'] {\n background: transparent;\n border-color: var(--ig-station-pending);\n}\n\n.ig-station[data-fill='dashed'] {\n background: transparent;\n border-style: dashed;\n border-color: var(--ig-station-held);\n}\n\n/* \u2500\u2500 titles, identity, provenance \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-title {\n color: var(--ig-text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ig-id,\n.ig-count {\n color: var(--ig-text-muted);\n font-family: var(--ig-font-mono);\n font-variant-numeric: tabular-nums;\n}\n\n.ig-link {\n color: var(--ig-accent);\n text-decoration: none;\n}\n\n.ig-link:hover {\n text-decoration: underline;\n}\n\n.ig-provenance,\n.ig-hold,\n.ig-caveat {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n grid-column: 3 / -1;\n}\n\n.ig-strike {\n text-decoration: line-through;\n}\n\n/* \u2500\u2500 edge badges \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* SPANNED FROM THE TITLE COLUMN, LIKE EVERY OTHER FULL-WIDTH ROW MEMBER. Left\n unplaced this was the fifth child of a four-column grid, so it auto-placed\n into column ONE of a second row \u2014 the rank track, an auto-sized column that\n takes the width of its widest item. One relationship badge then set the width\n of the rank column for the whole row, pushing the station and title across\n and squeezing the title to pay for it. Badges belong with the row's other\n metadata, which is what 3 / -1 already means here for provenance and holds.\n (No backticks in this file: the stylesheet is a template literal.) */\n.ig-badges {\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space-tight);\n grid-column: 3 / -1;\n}\n\n.ig-badge {\n align-items: center;\n /* Not currentColor any more: the label and the border now carry DIFFERENT\n colours deliberately \u2014 see below. Left as currentColor the border would\n follow the text to --ig-text and the hue channel would vanish from the\n badge entirely, which is the opposite of the fix. */\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n color: var(--ig-text);\n display: inline-flex;\n font-size: var(--ig-font-size-small);\n gap: var(--ig-space-tight);\n padding: 0 var(--ig-space-tight);\n}\n\n/* THE HUE IS A BORDER COLOUR HERE, NOT A TEXT COLOUR \u2014 the theme holds the\n edge hues to the 3:1 NON-TEXT bar, and says so where it defines them, so\n painting badge LABELS with them contradicted the palette's own claim. It was\n not merely theoretical: at this size duplicate-of measured 3.98:1 on\n --ig-surface and decomposed-from 4.37:1, both under the 4.5:1 the text test\n asserts for every text colour. The label now takes --ig-text, which that\n test already proves on all three surfaces, and the hue keeps the non-text\n use it was measured for.\n NO CHANNEL IS LOST. Hue is one of four redundant channels and it is still\n carried by the border; the dash pattern and the glyph are untouched; and the\n vocabulary test independently proves all five stay distinguishable with hue\n removed ENTIRELY, which is the stronger claim. */\n.ig-badge[data-edge='blocked-by'] { border-color: var(--ig-edge-blocked-by); border-style: solid; }\n.ig-badge[data-edge='serialize-with'] { border-color: var(--ig-edge-serialize-with); border-style: double; }\n.ig-badge[data-edge='together-with'] { border-color: var(--ig-edge-together-with); border-style: solid; }\n.ig-badge[data-edge='duplicate-of'] { border-color: var(--ig-edge-duplicate-of); border-style: dotted; }\n.ig-badge[data-edge='decomposed-from'] { border-color: var(--ig-edge-decomposed-from); border-style: dashed; }\n\n.ig-glyph {\n font-family: var(--ig-font-mono);\n}\n\n/* \u2500\u2500 the footer group: holds that earn no rank slot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-footer {\n border-top: var(--ig-stroke) solid var(--ig-line);\n margin-top: var(--ig-space);\n padding-top: var(--ig-space);\n}\n\n.ig-footer-title {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n margin: 0 0 var(--ig-space-tight);\n}\n\n/* \u2500\u2500 the host facts: what the graph cannot say \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* Present only when the host stated a fact; a document with none draws no\n header at all, which is what keeps the pure-graph markup unchanged. */\n.ig-header {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space);\n margin: 0 0 var(--ig-space);\n}\n\n.ig-summary,\n.ig-freshness {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n font-variant-numeric: tabular-nums;\n margin: 0;\n}\n\n/* STALE GOES GOLD, as the design draws it. The gold this palette already holds\n is the conflict state's \u2014 \"the document moved upstream\" \u2014 and a stale mirror\n is that fact about the whole document, so the state hue is reused rather\n than a token added for one word. No new token: the theme's token list is\n the contract every host theme has to fill. */\n.ig-freshness[data-stale='true'] {\n color: var(--ig-state-conflict);\n}\n\n/* A control the viewer publishes and does not wire: the UA button reset, so it\n reads as the inline link it sits beside. */\n.ig-refresh {\n background: none;\n border: 0;\n color: var(--ig-accent);\n cursor: pointer;\n font: inherit;\n margin-left: var(--ig-space-tight);\n padding: 0;\n}\n\n.ig-refresh:hover {\n text-decoration: underline;\n}\n\n.ig-now {\n list-style: none;\n margin: 0 0 var(--ig-space);\n padding: 0;\n}\n\n/* The same row grammar as a slot, minus the rank track: the marker takes its\n place, so the title column lines up with the order beneath it. */\n.ig-now-row {\n align-items: center;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-accent);\n border-radius: var(--ig-radius);\n column-gap: var(--ig-space);\n display: grid;\n grid-template-columns: auto 1fr auto auto;\n min-height: var(--ig-row-height);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-now-mark {\n color: var(--ig-accent);\n font-family: var(--ig-font-mono);\n font-size: var(--ig-font-size-small);\n text-transform: uppercase;\n}\n\n.ig-now-phase {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n white-space: nowrap;\n}\n\n/* A caveat or hold-label chip carries no relationship hue: it is a word, not\n an edge, so it keeps the line colour the plain badge has. */\n.ig-badge[data-caveat],\n.ig-badge[data-hold] {\n color: var(--ig-text-muted);\n}\n\n/* \u2500\u2500 the graph canvas \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n/* The stage carries the LAYOUT's own size, so one SVG unit is one CSS pixel\n and an absolutely-positioned rail row lands on the node it names. A\n percentage-width canvas would rescale under the rail and drift. It scrolls\n rather than shrinking, because shrinking would silently break that. */\n.ig-stage {\n block-size: var(--ig-stage-h);\n inline-size: var(--ig-stage-w);\n max-inline-size: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n position: relative;\n}\n\n.ig-canvas {\n block-size: var(--ig-stage-h);\n display: block;\n inline-size: var(--ig-stage-w);\n}\n\n/* The ranks and stations FOR the spine nodes, sitting on them. */\n.ig-rail {\n inset: 0;\n pointer-events: none;\n position: absolute;\n}\n\n.ig-rail-row {\n block-size: var(--ig-row-h);\n inline-size: var(--ig-row-w);\n inset-block-start: var(--ig-row-y);\n inset-inline-start: var(--ig-row-x);\n margin-bottom: 0;\n min-block-size: 0;\n pointer-events: auto;\n position: absolute;\n}\n\n.ig-node {\n fill: var(--ig-surface);\n stroke: var(--ig-line);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-node[data-held='true'] {\n fill: var(--ig-surface-2);\n stroke-dasharray: 4 3;\n}\n\n.ig-node-label {\n fill: var(--ig-text);\n font-family: var(--ig-font-ui);\n font-size: var(--ig-font-size-small);\n}\n\n.ig-edge {\n fill: none;\n stroke-width: var(--ig-stroke);\n}\n\n.ig-edge[data-edge='blocked-by'] { stroke: var(--ig-edge-blocked-by); }\n.ig-edge[data-edge='serialize-with'] { stroke: var(--ig-edge-serialize-with); }\n.ig-edge[data-edge='together-with'] { stroke: var(--ig-edge-together-with); }\n.ig-edge[data-edge='duplicate-of'] { stroke: var(--ig-edge-duplicate-of); }\n.ig-edge[data-edge='decomposed-from'] { stroke: var(--ig-edge-decomposed-from); }\n\n/* The dash pattern is set per element from the edge vocabulary, never here \u2014\n one source for the channel the colour-blind-safety claim rests on. */\n.ig-enclosure {\n fill: none;\n stroke: var(--ig-edge-together-with);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-connector {\n stroke: var(--ig-edge-together-with);\n stroke-width: var(--ig-stroke-connector);\n}\n\n/* currentColor on the marker resolves to the inherited text colour, not to the\n edge's stroke \u2014 so a terminal has to be given the hue explicitly or it renders\n in body text and the fourth channel silently collapses. */\n.ig-terminal {\n color: var(--ig-text-body);\n stroke-width: var(--ig-stroke);\n}\n\n.ig-terminal[data-edge='blocked-by'] { color: var(--ig-edge-blocked-by); }\n.ig-terminal[data-edge='serialize-with'] { color: var(--ig-edge-serialize-with); }\n.ig-terminal[data-edge='together-with'] { color: var(--ig-edge-together-with); }\n.ig-terminal[data-edge='duplicate-of'] { color: var(--ig-edge-duplicate-of); }\n.ig-terminal[data-edge='decomposed-from'] { color: var(--ig-edge-decomposed-from); }\n\n/* \u2500\u2500 refusals and empty states \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-refusal,\n.ig-empty {\n background: var(--ig-surface-2);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n color: var(--ig-text-body);\n padding: var(--ig-space);\n}\n\n.ig-refusal-next {\n color: var(--ig-text);\n margin: var(--ig-space-tight) 0 0;\n}\n\n/* The capsule is INFORMATIONAL \u2014 a plain list item again. It was briefly a\n button, to make the refusal's advertised action keyboard-reachable; the\n action itself has since gone, because this package cannot narrow a document\n and so could never complete it. With the control removed the UA button reset\n goes too: there is no button look left to undo. */\n.ig-capsule {\n align-items: baseline;\n background: var(--ig-surface);\n border: var(--ig-stroke) solid var(--ig-line);\n border-radius: var(--ig-radius);\n display: flex;\n gap: var(--ig-space);\n margin-top: var(--ig-space-tight);\n padding: var(--ig-space-tight) var(--ig-space);\n}\n\n.ig-refusal-omitted {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n margin: var(--ig-space-tight) 0 0;\n}\n\n/* \u2500\u2500 the decomposition tree \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-tree,\n.ig-tree .ig-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.ig-tree .ig-list {\n border-left: var(--ig-stroke) dashed var(--ig-edge-decomposed-from);\n margin-left: var(--ig-space);\n padding-left: var(--ig-space);\n}\n\n.ig-tree-item {\n padding: var(--ig-space-tight) 0;\n}\n\n/* \u2500\u2500 legend \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.ig-legend {\n border: 0;\n display: flex;\n flex-wrap: wrap;\n gap: var(--ig-space);\n margin: 0 0 var(--ig-space);\n padding: 0;\n}\n\n.ig-legend-caption {\n color: var(--ig-text-muted);\n font-size: var(--ig-font-size-small);\n padding: 0;\n}\n";
17
17
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,i6aAoX5B,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,gBAAgB,u8fA0c5B,CAAC"}
package/dist/styles.js CHANGED
@@ -140,7 +140,8 @@ export const viewerStylesheet = `
140
140
  }
141
141
 
142
142
  .ig-provenance,
143
- .ig-hold {
143
+ .ig-hold,
144
+ .ig-caveat {
144
145
  color: var(--ig-text-muted);
145
146
  font-size: var(--ig-font-size-small);
146
147
  grid-column: 3 / -1;
@@ -218,6 +219,91 @@ export const viewerStylesheet = `
218
219
  margin: 0 0 var(--ig-space-tight);
219
220
  }
220
221
 
222
+ /* ── the host facts: what the graph cannot say ─────────────────────────── */
223
+
224
+ /* Present only when the host stated a fact; a document with none draws no
225
+ header at all, which is what keeps the pure-graph markup unchanged. */
226
+ .ig-header {
227
+ align-items: baseline;
228
+ display: flex;
229
+ flex-wrap: wrap;
230
+ gap: var(--ig-space);
231
+ margin: 0 0 var(--ig-space);
232
+ }
233
+
234
+ .ig-summary,
235
+ .ig-freshness {
236
+ color: var(--ig-text-muted);
237
+ font-size: var(--ig-font-size-small);
238
+ font-variant-numeric: tabular-nums;
239
+ margin: 0;
240
+ }
241
+
242
+ /* STALE GOES GOLD, as the design draws it. The gold this palette already holds
243
+ is the conflict state's — "the document moved upstream" — and a stale mirror
244
+ is that fact about the whole document, so the state hue is reused rather
245
+ than a token added for one word. No new token: the theme's token list is
246
+ the contract every host theme has to fill. */
247
+ .ig-freshness[data-stale='true'] {
248
+ color: var(--ig-state-conflict);
249
+ }
250
+
251
+ /* A control the viewer publishes and does not wire: the UA button reset, so it
252
+ reads as the inline link it sits beside. */
253
+ .ig-refresh {
254
+ background: none;
255
+ border: 0;
256
+ color: var(--ig-accent);
257
+ cursor: pointer;
258
+ font: inherit;
259
+ margin-left: var(--ig-space-tight);
260
+ padding: 0;
261
+ }
262
+
263
+ .ig-refresh:hover {
264
+ text-decoration: underline;
265
+ }
266
+
267
+ .ig-now {
268
+ list-style: none;
269
+ margin: 0 0 var(--ig-space);
270
+ padding: 0;
271
+ }
272
+
273
+ /* The same row grammar as a slot, minus the rank track: the marker takes its
274
+ place, so the title column lines up with the order beneath it. */
275
+ .ig-now-row {
276
+ align-items: center;
277
+ background: var(--ig-surface);
278
+ border: var(--ig-stroke) solid var(--ig-accent);
279
+ border-radius: var(--ig-radius);
280
+ column-gap: var(--ig-space);
281
+ display: grid;
282
+ grid-template-columns: auto 1fr auto auto;
283
+ min-height: var(--ig-row-height);
284
+ padding: var(--ig-space-tight) var(--ig-space);
285
+ }
286
+
287
+ .ig-now-mark {
288
+ color: var(--ig-accent);
289
+ font-family: var(--ig-font-mono);
290
+ font-size: var(--ig-font-size-small);
291
+ text-transform: uppercase;
292
+ }
293
+
294
+ .ig-now-phase {
295
+ color: var(--ig-text-muted);
296
+ font-size: var(--ig-font-size-small);
297
+ white-space: nowrap;
298
+ }
299
+
300
+ /* A caveat or hold-label chip carries no relationship hue: it is a word, not
301
+ an edge, so it keeps the line colour the plain badge has. */
302
+ .ig-badge[data-caveat],
303
+ .ig-badge[data-hold] {
304
+ color: var(--ig-text-muted);
305
+ }
306
+
221
307
  /* ── the graph canvas ──────────────────────────────────────────────────── */
222
308
 
223
309
  /* The stage carries the LAYOUT's own size, so one SVG unit is one CSS pixel
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoX/B,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0c/B,CAAC"}
package/dist/theme.d.ts CHANGED
@@ -22,12 +22,41 @@
22
22
  */
23
23
  export declare const COLOR_TOKENS: readonly ["--ig-bg", "--ig-surface", "--ig-surface-2", "--ig-line", "--ig-text", "--ig-text-body", "--ig-text-muted", "--ig-accent", "--ig-focus", "--ig-station-ready", "--ig-station-pending", "--ig-station-held", "--ig-edge-blocked-by", "--ig-edge-serialize-with", "--ig-edge-together-with", "--ig-edge-duplicate-of", "--ig-edge-decomposed-from", "--ig-state-invalid", "--ig-state-failed", "--ig-state-conflict"];
24
24
  export type ColorToken = (typeof COLOR_TOKENS)[number];
25
- /** Type tokens. `lineHeight` is unitless; the rest carry their own units. */
26
- export declare const TYPE_TOKENS: readonly ["--ig-font-ui", "--ig-font-mono", "--ig-font-size", "--ig-font-size-small", "--ig-line-height"];
25
+ /**
26
+ * Type tokens. `lineHeight` is unitless; the rest carry their own units.
27
+ *
28
+ * WEIGHT AND TRACKING ARE TYPE, NOT GEOMETRY, even though a reader might file
29
+ * them under either. They are emitted VERBATIM, which is the property that
30
+ * settles it: a weight is a unitless number and a tracking value is an `em`,
31
+ * and {@link METRIC_TOKENS} would give both a `px` unit and silently void the
32
+ * declaration.
33
+ */
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"];
27
35
  export type TypeToken = (typeof TYPE_TOKENS)[number];
28
36
  /** Geometry tokens. Every value is a number of CSS pixels. */
29
- 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-terminal-length", "--ig-terminal-width", "--ig-gutter-width", "--ig-spine-width", "--ig-char-width", "--ig-label-char-width", "--ig-focus-ring"];
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-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"];
30
38
  export type MetricToken = (typeof METRIC_TOKENS)[number];
39
+ /**
40
+ * Surface-treatment tokens: values that are none of a colour, a type value or
41
+ * a pixel length, and so belong to none of the three groups above.
42
+ *
43
+ * A FOURTH GROUP RATHER THAN A HOME OF CONVENIENCE IN AN EXISTING ONE. A tint
44
+ * strength is a proportion and an elevation is a whole `box-shadow`; put
45
+ * either in {@link METRIC_TOKENS} and `themeCss` appends `px` to it, which is
46
+ * not a value any browser reads. Put them in {@link TYPE_TOKENS} and the group
47
+ * that documents itself as "type" starts carrying shadows — the same
48
+ * one-token-two-meanings problem the edit-state hues are kept apart from.
49
+ *
50
+ * NO TINT CARRIES A COLOUR. A tint is a PROPORTION, applied by the consumer
51
+ * against a colour token that already exists — `color-mix(in srgb,
52
+ * var(--ig-edge-blocked-by) var(--ig-tint-fill), transparent)` — so the
53
+ * palette stays fixed and a host retheming a relationship retints it too. The
54
+ * two ELEVATIONS are the exception and the only values here that name a
55
+ * colour; `theme.test.ts` pins that split rather than checking the tints
56
+ * alone, so a colour cannot arrive in this group unannounced.
57
+ */
58
+ export declare const EFFECT_TOKENS: readonly ["--ig-tint-fill", "--ig-tint-border", "--ig-tint-wash", "--ig-tint-unit", "--ig-elevation-raised", "--ig-elevation-overlay"];
59
+ export type EffectToken = (typeof EFFECT_TOKENS)[number];
31
60
  /** Every custom property the stylesheet may reference. */
32
61
  export declare const THEME_TOKENS: readonly string[];
33
62
  export interface Theme {
@@ -35,6 +64,8 @@ export interface Theme {
35
64
  readonly type: Readonly<Record<TypeToken, string>>;
36
65
  /** Numbers, in CSS pixels. Layout reads these; `themeCss` renders them. */
37
66
  readonly metrics: Readonly<Record<MetricToken, number>>;
67
+ /** Strings, emitted verbatim — proportions and whole shadow values. */
68
+ readonly effects: Readonly<Record<EffectToken, string>>;
38
69
  }
39
70
  /**
40
71
  * The default theme.
@@ -51,6 +82,7 @@ export interface ThemeOverride {
51
82
  readonly colors?: Partial<Record<ColorToken, string>> | undefined;
52
83
  readonly type?: Partial<Record<TypeToken, string>> | undefined;
53
84
  readonly metrics?: Partial<Record<MetricToken, number>> | undefined;
85
+ readonly effects?: Partial<Record<EffectToken, string>> | undefined;
54
86
  }
55
87
  /**
56
88
  * Merge an override onto a base theme, per token.
@@ -84,9 +116,9 @@ export declare function resolveTheme(theme?: Theme | undefined): Theme;
84
116
  /**
85
117
  * Render a theme as one CSS rule of custom properties.
86
118
  *
87
- * Values are emitted verbatim for colours and type — a theme's author owns
88
- * their spelling — and metrics gain a `px` unit here, which is the single place
89
- * the numbers become CSS.
119
+ * Values are emitted verbatim for colours, type and effects — a theme's author
120
+ * owns their spelling — and metrics gain a `px` unit here, which is the single
121
+ * place the numbers become CSS.
90
122
  */
91
123
  export declare function themeCss(theme: Theme, selector?: string): string;
92
124
  //# sourceMappingURL=theme.d.ts.map
@@ -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,6EAA6E;AAC7E,eAAO,MAAM,WAAW,2GAMb,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,aAAa,wTAgBf,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,0DAA0D;AAC1D,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAIxC,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;CACzD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,KAqFzB,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;CACrE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,GAAG,KAAK,CAMvE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;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,CAUjE"}
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,6UAmCb,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,8DAA8D;AAC9D,eAAO,MAAM,aAAa,mfA6Cf,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,KAkKzB,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;;;;;;;;;;;;;;;;;;;GAmBG;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
@@ -53,13 +53,50 @@ export const COLOR_TOKENS = Object.freeze([
53
53
  '--ig-state-failed',
54
54
  '--ig-state-conflict',
55
55
  ]);
56
- /** Type tokens. `lineHeight` is unitless; the rest carry their own units. */
56
+ /**
57
+ * Type tokens. `lineHeight` is unitless; the rest carry their own units.
58
+ *
59
+ * WEIGHT AND TRACKING ARE TYPE, NOT GEOMETRY, even though a reader might file
60
+ * them under either. They are emitted VERBATIM, which is the property that
61
+ * settles it: a weight is a unitless number and a tracking value is an `em`,
62
+ * and {@link METRIC_TOKENS} would give both a `px` unit and silently void the
63
+ * declaration.
64
+ */
57
65
  export const TYPE_TOKENS = Object.freeze([
58
66
  '--ig-font-ui',
59
67
  '--ig-font-mono',
60
68
  '--ig-font-size',
61
69
  '--ig-font-size-small',
62
70
  '--ig-line-height',
71
+ // ADDED IN SOURCE ORDER, AFTER THE ONES THAT SHIPPED, in this group and in
72
+ // {@link METRIC_TOKENS} both. `themeCss` emits in list order, so appending
73
+ // rather than interleaving keeps every declaration a host already had in the
74
+ // position it already had — the emitted rule stays a strict superset instead
75
+ // of a reshuffle a snapshotting consumer has to re-approve. Reading order
76
+ // loses a little; the diff a host sees loses nothing.
77
+ //
78
+ // TWO SIZE STEPS BELOW `--ig-font-size-small`, because the design draws two
79
+ // and this file named neither. A relationship badge is 10px and an uppercase
80
+ // status pill is 9.5px (§16a); with 11px as the smallest token, both had to
81
+ // be drawn a size too large, which is why the badge row reads as body copy.
82
+ '--ig-font-size-micro',
83
+ '--ig-font-size-pill',
84
+ // THE FOUR WEIGHTS THE DESIGN USES, and the reason a rail row read as one
85
+ // undifferentiated object: with no weight token every string rendered at
86
+ // 400, so a row's title and its metadata carried the same emphasis.
87
+ '--ig-weight-regular',
88
+ '--ig-weight-medium',
89
+ '--ig-weight-strong',
90
+ '--ig-weight-heavy',
91
+ // Uppercase labels are TRACKED in this design, and tracking is NOT derivable
92
+ // from the size — §16a sets `.06em` and `.08em` on two pills of the same
93
+ // 9.5px sitting in the same list. One token reused for all of them is the
94
+ // approximation that makes uppercase type look mechanically stretched, so
95
+ // there is one per value the frames draw.
96
+ '--ig-tracking-label',
97
+ '--ig-tracking-group',
98
+ '--ig-tracking-pill',
99
+ '--ig-tracking-badge',
63
100
  ]);
64
101
  /** Geometry tokens. Every value is a number of CSS pixels. */
65
102
  export const METRIC_TOKENS = Object.freeze([
@@ -78,12 +115,84 @@ export const METRIC_TOKENS = Object.freeze([
78
115
  '--ig-char-width',
79
116
  '--ig-label-char-width',
80
117
  '--ig-focus-ring',
118
+ // Appended, for the reason {@link TYPE_TOKENS} gives.
119
+ //
120
+ // SIX SPACING STEPS, WHICH IS A CHOICE AND SAYS SO. §16a and §16b do not run
121
+ // a scale — they spend a near-continuum from 2px to 20px, with 7px and 9px
122
+ // as common as any tokenised step — so a token set has to pick, and the
123
+ // honest statement is which values it rounds. These six span the range the
124
+ // frames spend and keep the two that shipped exactly where they were: a
125
+ // chip's `2px 7px` padding draws its inline half at `--ig-space-tight`, and
126
+ // a 9px or 10px gap at `--ig-space-snug` or `--ig-space`. What two steps
127
+ // could not do is span it at all — a 2px gap between a title and its
128
+ // metadata and a 20px panel inset both resolved to 6px or 12px, and the rail
129
+ // lost its grouping.
130
+ '--ig-space-micro',
131
+ '--ig-space-snug',
132
+ '--ig-space-loose',
133
+ '--ig-space-wide',
134
+ '--ig-radius-small',
135
+ '--ig-radius-large',
136
+ // A ROW WHOSE HEIGHT CAN FOLLOW ITS CONTENT. `--ig-row-height` stays what it
137
+ // has always been — the FIXED height of a rail row — because a host has that
138
+ // number and its meaning must not move under them. These two are the
139
+ // vocabulary a content-sized row needs instead: a floor, and the padding its
140
+ // content grows against.
141
+ '--ig-row-min-height',
142
+ '--ig-row-padding-block',
143
+ // The accent rail a banded row carries down its leading edge (§16a's
144
+ // WORKING NOW band, `inset 3px 0 0`). It pairs with `--ig-tint-wash`: the
145
+ // wash is the band's fill and this is its edge.
146
+ '--ig-band-rail',
147
+ ]);
148
+ /**
149
+ * Surface-treatment tokens: values that are none of a colour, a type value or
150
+ * a pixel length, and so belong to none of the three groups above.
151
+ *
152
+ * A FOURTH GROUP RATHER THAN A HOME OF CONVENIENCE IN AN EXISTING ONE. A tint
153
+ * strength is a proportion and an elevation is a whole `box-shadow`; put
154
+ * either in {@link METRIC_TOKENS} and `themeCss` appends `px` to it, which is
155
+ * not a value any browser reads. Put them in {@link TYPE_TOKENS} and the group
156
+ * that documents itself as "type" starts carrying shadows — the same
157
+ * one-token-two-meanings problem the edit-state hues are kept apart from.
158
+ *
159
+ * NO TINT CARRIES A COLOUR. A tint is a PROPORTION, applied by the consumer
160
+ * against a colour token that already exists — `color-mix(in srgb,
161
+ * var(--ig-edge-blocked-by) var(--ig-tint-fill), transparent)` — so the
162
+ * palette stays fixed and a host retheming a relationship retints it too. The
163
+ * two ELEVATIONS are the exception and the only values here that name a
164
+ * colour; `theme.test.ts` pins that split rather than checking the tints
165
+ * alone, so a colour cannot arrive in this group unannounced.
166
+ */
167
+ export const EFFECT_TOKENS = Object.freeze([
168
+ // Read from §16a's badge row, where a relationship chip is a fill of its own
169
+ // hue inside a heavier border of the same hue. That is what "badges with
170
+ // tinted fills rather than bare borders" costs in tokens, and with no way to
171
+ // express it every badge shipped as a bare outline.
172
+ '--ig-tint-fill',
173
+ '--ig-tint-border',
174
+ // Two washes, and they are not interchangeable: the band marking the row
175
+ // being worked NOW sits at 5% of the accent, and the together-unit row at
176
+ // 3%. Collapsing them to one value either loses the band or draws every
177
+ // compound station as loud as the one in flight.
178
+ '--ig-tint-wash',
179
+ '--ig-tint-unit',
180
+ // Elevation, and it is the one pair here NOT read from a §16 frame — §16
181
+ // draws no drop shadow at all, separating its panels with `1px solid
182
+ // var(--ig-line)`. The values are the kit's own two, from the surfaces that
183
+ // do float: the device frame the comps sit in, and a floating toast. They
184
+ // are here because the token set is the whole visual vocabulary and an
185
+ // overlay has nowhere else to come from; a §16 panel keeps its border, and
186
+ // reaching for one of these to lift a panel is a decision, not a default.
187
+ '--ig-elevation-raised',
188
+ '--ig-elevation-overlay',
81
189
  ]);
82
190
  /** Every custom property the stylesheet may reference. */
83
191
  export const THEME_TOKENS = Object.freeze([
84
192
  ...COLOR_TOKENS,
85
193
  ...TYPE_TOKENS,
86
194
  ...METRIC_TOKENS,
195
+ ...EFFECT_TOKENS,
87
196
  ]);
88
197
  /**
89
198
  * The default theme.
@@ -139,6 +248,32 @@ export const defaultTheme = Object.freeze({
139
248
  '--ig-font-size': '13px',
140
249
  '--ig-font-size-small': '11px',
141
250
  '--ig-line-height': '1.45',
251
+ // §16a draws a relationship badge at 10px and an uppercase status pill
252
+ // ("now", "⧉ one unit · 2 issues") at 9.5px. Both are read values, not a
253
+ // ratio continued downward — the design does not run a scale here.
254
+ '--ig-font-size-micro': '10px',
255
+ '--ig-font-size-pill': '9.5px',
256
+ // Regular is the ground the file already rendered everything at; medium is
257
+ // §16's emphasis weight; strong is §16a's list rank number, its active
258
+ // toggle and its pills, and is the most-used weight in the frames. Heavy
259
+ // is §16b's STATION rank numbers, which are 700 where §16a's list numbers
260
+ // are 600 — the same figure at two weights in two projections, so three
261
+ // weights could not draw both.
262
+ '--ig-weight-regular': '400',
263
+ '--ig-weight-medium': '500',
264
+ '--ig-weight-strong': '600',
265
+ '--ig-weight-heavy': '700',
266
+ // "Order preview", the panel's own label, at 11px uppercase.
267
+ '--ig-tracking-label': '0.14em',
268
+ // §16b's column headers — "The work order ↓", "Explains the order", "Not
269
+ // worked" — which name a group WITHIN a frame rather than the frame.
270
+ '--ig-tracking-group': '0.1em',
271
+ // §16a's status pill ("now") and its unit badge ("⧉ one unit · 2 issues"),
272
+ // both 9.5px uppercase and sitting in the same list at DIFFERENT tracking.
273
+ // That pair is the reason tracking is its own axis here: it cannot be
274
+ // derived from the size, because these two share one.
275
+ '--ig-tracking-pill': '0.08em',
276
+ '--ig-tracking-badge': '0.06em',
142
277
  }),
143
278
  metrics: Object.freeze({
144
279
  '--ig-space': 12,
@@ -178,6 +313,57 @@ export const defaultTheme = Object.freeze({
178
313
  // which this package's own fixtures caught immediately.
179
314
  '--ig-label-char-width': 6,
180
315
  '--ig-focus-ring': 2,
316
+ // Read off §16a: 2px between a row title and its metadata, 8px between the
317
+ // row's blocks, 16px and 20px for the panel's own inset
318
+ // (`padding: 16px 20px`). 6px and 12px are the two that already shipped
319
+ // and did not move.
320
+ '--ig-space-micro': 2,
321
+ '--ig-space-snug': 8,
322
+ '--ig-space-loose': 16,
323
+ '--ig-space-wide': 20,
324
+ // §16a's micro badge is 4px and its outer panel 14px. The existing 6px
325
+ // sits between them and is the chip's, so neither end could be drawn.
326
+ '--ig-radius-small': 4,
327
+ '--ig-radius-large': 14,
328
+ // The FLOOR, matching today's fixed height so a row that grows starts from
329
+ // exactly where a rail row sits now; the same number carries a different
330
+ // meaning, which is why it is a different token rather than a reuse.
331
+ '--ig-row-min-height': 44,
332
+ // §16a's rank row is `padding: 13px 20px`. The block half is what a
333
+ // content-sized row grows against; the inline half is `--ig-space-wide`.
334
+ '--ig-row-padding-block': 13,
335
+ // §16a's WORKING NOW band, `box-shadow: inset 3px 0 0 var(--cyan)`.
336
+ '--ig-band-rail': 3,
337
+ }),
338
+ effects: Object.freeze({
339
+ // ONE PAIR FOR ALL FIVE RELATIONSHIP CHIPS, at the value §16a draws most
340
+ // often: the fills across its chips are `.08 .08 .08 .09 .09 .10` and the
341
+ // borders `.28 .28 .30 .30 .30 .30 .30 .35 .35 .35`, so the mode is 8% and
342
+ // 30%. Five hues at five alphas would be a palette rather than a
343
+ // treatment, and the chips that draw hotter are the ACCENT ones — a host
344
+ // wanting that emphasis raises the pair rather than being given it by
345
+ // default on a blocked-by.
346
+ '--ig-tint-fill': '8%',
347
+ '--ig-tint-border': '30%',
348
+ // §16a's WORKING NOW band, `background: rgba(23,188,238,.05)`.
349
+ '--ig-tint-wash': '5%',
350
+ // §16a's rank-2 row, `background: rgba(23,188,238,.03)` — the ONE row that
351
+ // carries a fill, and it carries it because it is the `together-with`
352
+ // compound station. The other four rank rows have no background: this is
353
+ // not a zebra stripe and drawing it as one would invent a treatment §16
354
+ // does not have.
355
+ '--ig-tint-unit': '3%',
356
+ // The kit's own two drop shadows, verbatim: the floating toast, and the
357
+ // device frame the comps are mounted in. See EFFECT_TOKENS on why they are
358
+ // here rather than read from a §16 frame.
359
+ //
360
+ // DELIBERATELY LITERAL rather than mixed against `--ig-bg`. A shadow is
361
+ // dark on a light ground as well as a dark one, so expressing it against
362
+ // the background would turn it white on the documented paper theme and
363
+ // delete it. These two are the only values in this group that carry a
364
+ // colour, and a host retheming to a light palette owns them.
365
+ '--ig-elevation-raised': '0 16px 40px -16px rgba(0, 0, 0, 0.9)',
366
+ '--ig-elevation-overlay': '0 30px 80px -40px rgba(0, 0, 0, 0.8)',
181
367
  }),
182
368
  });
183
369
  /**
@@ -192,6 +378,7 @@ export function extendTheme(base, override) {
192
378
  colors: Object.freeze({ ...base.colors, ...override.colors }),
193
379
  type: Object.freeze({ ...base.type, ...override.type }),
194
380
  metrics: Object.freeze({ ...base.metrics, ...override.metrics }),
381
+ effects: Object.freeze({ ...base.effects, ...override.effects }),
195
382
  });
196
383
  }
197
384
  /**
@@ -220,9 +407,9 @@ export function resolveTheme(theme) {
220
407
  /**
221
408
  * Render a theme as one CSS rule of custom properties.
222
409
  *
223
- * Values are emitted verbatim for colours and type — a theme's author owns
224
- * their spelling — and metrics gain a `px` unit here, which is the single place
225
- * the numbers become CSS.
410
+ * Values are emitted verbatim for colours, type and effects — a theme's author
411
+ * owns their spelling — and metrics gain a `px` unit here, which is the single
412
+ * place the numbers become CSS.
226
413
  */
227
414
  export function themeCss(theme, selector = ':root') {
228
415
  // RESOLVED HERE TOO: this is an exported entry point taking a caller's theme
@@ -236,6 +423,8 @@ export function themeCss(theme, selector = ':root') {
236
423
  lines.push(` ${token}: ${filled.type[token]};`);
237
424
  for (const token of METRIC_TOKENS)
238
425
  lines.push(` ${token}: ${String(filled.metrics[token])}px;`);
426
+ for (const token of EFFECT_TOKENS)
427
+ lines.push(` ${token}: ${filled.effects[token]};`);
239
428
  return `${selector} {\n${lines.join('\n')}\n}\n`;
240
429
  }
241
430
  //# sourceMappingURL=theme.js.map
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@issuegraph/viewer",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
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",