@kolkrabbi/kol-theme 0.137.0 → 0.139.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.
package/kol-components-atoms.css
CHANGED
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
/* WEIGHT IS THE VARIANT'S, not the tone's: a tone is a ground, and a ground
|
|
250
250
|
* must not re-weigh a label — a sunken secondary keeps its 500 (matrix-verified
|
|
251
251
|
* 2026-09-03, the one regression the first cut had). */
|
|
252
|
-
.kol-btn-secondary, .kol-btn-accent, .kol-btn-danger, .kol-btn.kol-tone-
|
|
252
|
+
.kol-btn-secondary, .kol-btn-accent, .kol-btn-danger, .kol-btn.kol-tone-inverted { font-weight: 500; }
|
|
253
253
|
|
|
254
254
|
.kol-btn:focus-visible {
|
|
255
255
|
outline: 2px solid var(--kol-focus-ring);
|
|
@@ -1112,8 +1112,8 @@ a:hover .icon-hover,
|
|
|
1112
1112
|
border-radius: var(--kol-radius-sm);
|
|
1113
1113
|
padding: 0;
|
|
1114
1114
|
/* paint from the TONE properties (kol-components-molecules.css, TONE); the
|
|
1115
|
-
* variant classes are aliases of the tones, the fallback is `secondary`
|
|
1116
|
-
* the frame's default since it was promoted — and a toned wrapper reaches a
|
|
1115
|
+
* variant classes are aliases of the tones, the fallback is the `secondary`
|
|
1116
|
+
* VARIANT's paint (the `inverted` tone) — the frame's default since it was promoted — and a toned wrapper reaches a
|
|
1117
1117
|
* frame with no variant of its own. No states, as ever. */
|
|
1118
1118
|
background-color: var(--kol-tone-bg, var(--kol-surface-on-primary));
|
|
1119
1119
|
color: var(--kol-tone-fg, var(--kol-surface-primary));
|
|
@@ -857,10 +857,15 @@
|
|
|
857
857
|
* rounded-[…] / shadow-[…] / bg-black/NN / backdrop-blur-[…] in package chrome.
|
|
858
858
|
* ───────────────────────────────────────────────────────────────────── */
|
|
859
859
|
|
|
860
|
-
/* LOOK ONLY — the call site owns the box.
|
|
861
|
-
*
|
|
862
|
-
*
|
|
863
|
-
*
|
|
860
|
+
/* LOOK ONLY — the call site owns the box. Nine scrims wear it after the
|
|
861
|
+
* 2026-09-03 sweep (overlay-scrim-outliers: Modal · FullscreenOverlay ·
|
|
862
|
+
* ShellDrawer · ShellSearchOverlay · PageLayout's sidenav backdrop · FieldRow ·
|
|
863
|
+
* ShortcutsOverlay · TouchDeviceOverlay · the workshop's shortcuts sheet), and
|
|
864
|
+
* they are `fixed` or `absolute` by their own contract; baking position in
|
|
865
|
+
* would force a wrong one on some. The class owns what was drifting: the tint
|
|
866
|
+
* (60 / 50 / 50 across the first three files; an 8 % inverse wash + blur on
|
|
867
|
+
* the two shell overlays the sweep caught). ParamSheet is untinted on purpose;
|
|
868
|
+
* OverlayGlassPanel and PlaybackBar blur because they are surfaces, not scrims.
|
|
864
869
|
* NO BLUR (user ruling 2026-09-01, OverlayScrimBlur): the 1px blur bought a
|
|
865
870
|
* compositing layer on every overlay open, on a phone, for a separation the
|
|
866
871
|
* 60% tint already carries. */
|
|
@@ -1170,6 +1175,9 @@
|
|
|
1170
1175
|
* the clip path and the border path separately, and a hairline of the
|
|
1171
1176
|
* lighter fill bleeds through on the arc, bright only on the curve. */
|
|
1172
1177
|
.kol-card {
|
|
1178
|
+
/* NOT toned. A wrapper tone reaches the CONTROLS on a page and stops at the
|
|
1179
|
+
* card plate (user ruling 2026-09-03: "no just controls") — the plate is the
|
|
1180
|
+
* content-card system's box per variant. */
|
|
1173
1181
|
background: var(--kol-card-bg);
|
|
1174
1182
|
background-clip: padding-box;
|
|
1175
1183
|
border-color: var(--kol-card-border);
|
|
@@ -1540,6 +1548,9 @@
|
|
|
1540
1548
|
* `default` is not a tone: it is the ABSENCE of one — inherit the wrapper's,
|
|
1541
1549
|
* else the family's fallback. (An alias of `primary` set on the element would
|
|
1542
1550
|
* block the inheritance that ask 3 exists for.) `inverse` stays sunken's alias.
|
|
1551
|
+
* SEVEN since 0.138.0: `secondary` paints the page surface and `inverted` is
|
|
1552
|
+
* the text-colour fill the word `secondary` used to mean (tone-secondary-is-
|
|
1553
|
+
* inverse, the line of the user's ruling the first ticket did not carry).
|
|
1543
1554
|
*
|
|
1544
1555
|
* The rules live HERE, after every default they out-rank. Sunken's own
|
|
1545
1556
|
* history — the well, its three-rung ladder, why it was raised until
|
|
@@ -1564,7 +1575,37 @@
|
|
|
1564
1575
|
--kol-tone-panel-border-w: 0;
|
|
1565
1576
|
--kol-tone-panel-border: transparent;
|
|
1566
1577
|
}
|
|
1567
|
-
|
|
1578
|
+
/* `secondary` PAINTS THE PAGE SURFACE (tone-secondary-is-inverse, kol-client-olina
|
|
1579
|
+
* 2026-09-03; user: "I told you I wanted primary surface as a tone … that tone
|
|
1580
|
+
* should be called secondary. What is currently secondary should be called
|
|
1581
|
+
* inverted."). 0.134.0 lifted the name from Button's `secondary` VARIANT, which
|
|
1582
|
+
* was already an inverse, and the page's own colour had no tone at all. The
|
|
1583
|
+
* variant keeps its pixels — it aliases `inverted` below — only the tone word
|
|
1584
|
+
* moved. Hover / press are primary's rungs over the page colour. */
|
|
1585
|
+
.kol-tone-secondary {
|
|
1586
|
+
--kol-tone-bg: var(--kol-surface-primary);
|
|
1587
|
+
--kol-tone-image: none;
|
|
1588
|
+
--kol-tone-fg: var(--kol-surface-on-primary);
|
|
1589
|
+
--kol-tone-border: transparent;
|
|
1590
|
+
--kol-tone-hover-bg: var(--kol-oq-08);
|
|
1591
|
+
--kol-tone-hover-image: none;
|
|
1592
|
+
--kol-tone-hover-fg: var(--kol-surface-on-primary);
|
|
1593
|
+
--kol-tone-hover-border: transparent;
|
|
1594
|
+
--kol-tone-active-bg: var(--kol-oq-16);
|
|
1595
|
+
--kol-tone-active-image: none;
|
|
1596
|
+
--kol-tone-pressed-bg: var(--kol-surface-on-primary);
|
|
1597
|
+
--kol-tone-pressed-image: none;
|
|
1598
|
+
--kol-tone-pressed-fg: var(--kol-surface-primary);
|
|
1599
|
+
--kol-tone-panel-bg: var(--kol-surface-primary);
|
|
1600
|
+
--kol-tone-panel-border-w: 0;
|
|
1601
|
+
--kol-tone-panel-border: transparent;
|
|
1602
|
+
}
|
|
1603
|
+
/* `inverted` — the text colour as fill: Button's / IconFrame's `secondary`
|
|
1604
|
+
* variant and the panel's `--secondary`, under the name the user gave it.
|
|
1605
|
+
* (`inverse` is NOT this: it is sunken's alias from 0.117.0, still on one
|
|
1606
|
+
* kol-website call, and stays that until it is dropped — the two words were
|
|
1607
|
+
* one letter apart and a live alias, so the new tone took the user's word.) */
|
|
1608
|
+
.kol-tone-inverted,
|
|
1568
1609
|
:where(.kol-btn-secondary, .kol-icon-frame-secondary, .kol-dd-panel--secondary) {
|
|
1569
1610
|
--kol-tone-bg: var(--kol-surface-on-primary);
|
|
1570
1611
|
--kol-tone-image: none;
|
|
@@ -1758,6 +1799,18 @@
|
|
|
1758
1799
|
:is(.kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse, .kol-tone-sunken .kol-view-toggle) > button:not([aria-pressed="true"]):hover { background-color: var(--kol-fg-04); }
|
|
1759
1800
|
/* the open search shell — was `bg-fg-04` on the element, sunken by class */
|
|
1760
1801
|
.kol-expand--open { background-color: var(--kol-tone-bg, var(--kol-fg-04)); }
|
|
1802
|
+
/* THE SEGMENTED STRIP, SUNKEN (segmented-toggle-sunken-tone, kol-client-olina
|
|
1803
|
+
* 2026-09-03; user, on kol-fxr's labs rail: "is this a variant? its not what you
|
|
1804
|
+
* have"). It was not — it was fxr's kol-labs.css:220-226, and olina's inspector
|
|
1805
|
+
* carried the same three lines. Promoted verbatim: the shell's ring goes, the
|
|
1806
|
+
* selected cell takes the well and the fg-96 ink; rest cells stay as the
|
|
1807
|
+
* default paints them. `filled` / `tonal` keep their own selected law. On the
|
|
1808
|
+
* element, or inherited from a sunken wrapper. */
|
|
1809
|
+
:is(.kol-seg.kol-tone-sunken, .kol-seg.kol-tone-inverse, .kol-tone-sunken .kol-seg):not(.kol-seg--filled) { border-color: transparent; }
|
|
1810
|
+
:is(.kol-seg.kol-tone-sunken, .kol-seg.kol-tone-inverse, .kol-tone-sunken .kol-seg):not(.kol-seg--filled) .kol-seg-cell.is-active {
|
|
1811
|
+
background: var(--kol-surface-sunken);
|
|
1812
|
+
color: var(--kol-fg-96);
|
|
1813
|
+
}
|
|
1761
1814
|
/* ⛔ THE TRIGGER IS EXCLUDED — rest and open are its only states (law, twice
|
|
1762
1815
|
* at the top of this file). Pressed on a sunken button out-ranks its hover, as
|
|
1763
1816
|
* it always did: this is the one rule the generic `.kol-btn-pressed` cannot
|
|
@@ -670,26 +670,29 @@
|
|
|
670
670
|
.kol-filters-row {
|
|
671
671
|
container-type: inline-size;
|
|
672
672
|
}
|
|
673
|
-
/* THE TRACK COUNT,
|
|
673
|
+
/* THE TRACK COUNT, MEASURED ONCE AND READ TWICE (CatalogFilterFirstGroupTrackCount,
|
|
674
674
|
* kol-client-olina 2026-09-03). The first group was `(100cqw − 120px) / 6` — one
|
|
675
675
|
* column of a six-track grid — while the catalog grid asks how many tracks FIT
|
|
676
|
-
* (ceiling 6, floor
|
|
677
|
-
*
|
|
678
|
-
*
|
|
676
|
+
* (ceiling 6, floor `minColumn`): on a capped page at 1280 the grid renders five
|
|
677
|
+
* at 165 and the group measured 133, its right edge mid-card. The 2026-08-27
|
|
678
|
+
* "sits over the first card" law was only true at six.
|
|
679
679
|
*
|
|
680
|
-
* Both
|
|
681
|
-
* `min(cols, floor((W + gap) /
|
|
682
|
-
* `repeat(auto-fill, minmax(
|
|
683
|
-
* six-track pages are pixel-identical and narrower
|
|
684
|
-
*
|
|
685
|
-
*
|
|
686
|
-
*
|
|
687
|
-
.
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
680
|
+
* Both read `--kol-catalog-n`, the count the grid actually renders. CatalogPage
|
|
681
|
+
* MEASURES it (a ResizeObserver on the grid — `min(cols, floor((W + gap) /
|
|
682
|
+
* (min + gap)))`, exactly what `repeat(auto-fill, minmax(…))` resolved to) and
|
|
683
|
+
* publishes it on the page, so six-track pages are pixel-identical and narrower
|
|
684
|
+
* ones agree. Unset — a ContentFilters outside CatalogPage — falls back to 6,
|
|
685
|
+
* the pre-0.137.0 formula.
|
|
686
|
+
*
|
|
687
|
+
* ⚠️ 0.137.0 computed the count HERE with `round(down, (100cqw + 24px) / (min +
|
|
688
|
+
* 24px), 1)`. Chromium resolves a `<length> / <length>` division to a number;
|
|
689
|
+
* Firefox does not, so the declaration was invalid at computed-value time,
|
|
690
|
+
* `repeat(var(--n))` fell to `none`, and every catalog rendered ONE column — a
|
|
691
|
+
* ~1500px card (user: "is this supposed to be a joke? huge card"). Pulled the
|
|
692
|
+
* same hour; the count is measured in JS now, and CSS does one division by a
|
|
693
|
+
* NUMBER, which is Level 3 and everywhere. */
|
|
691
694
|
.kol-filters-first {
|
|
692
695
|
flex: none;
|
|
693
|
-
width: calc((100cqw - (var(--
|
|
696
|
+
width: calc((100cqw - (var(--kol-catalog-n, 6) - 1) * 24px) / var(--kol-catalog-n, 6));
|
|
694
697
|
}
|
|
695
698
|
|
package/kol-components-shell.css
CHANGED
|
@@ -79,17 +79,19 @@
|
|
|
79
79
|
|
|
80
80
|
/* ── CatalogPage ────────────────────────────────────────────────────────── */
|
|
81
81
|
|
|
82
|
-
/* THE CATALOG GRID — a ceiling with a floor: up to
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
82
|
+
/* THE CATALOG GRID — a ceiling with a floor: up to 6 tracks, none narrower
|
|
83
|
+
* than `CatalogPage minColumn` (160), gap 24. The count is `--kol-catalog-n`,
|
|
84
|
+
* MEASURED by CatalogPage (a ResizeObserver on this element) and published on
|
|
85
|
+
* the page, where `.kol-filters-first` reads the same number — so the filter
|
|
86
|
+
* row's first group is one track of THIS grid at every width. The grid used to
|
|
87
|
+
* be an inline `auto-fill` that resolved to the same tracks but told nobody
|
|
88
|
+
* how many (CatalogFilterFirstGroupTrackCount, 2026-09-03). 0.137.0 computed
|
|
89
|
+
* the count in CSS with a length ÷ length inside `round()`, which Firefox
|
|
90
|
+
* rejects — one column, huge card — see kol-components-organisms.css. */
|
|
89
91
|
.kol-catalog-grid {
|
|
90
92
|
display: grid;
|
|
91
93
|
gap: 24px;
|
|
92
|
-
grid-template-columns: repeat(var(--
|
|
94
|
+
grid-template-columns: repeat(var(--kol-catalog-n, 6), minmax(0, 1fr));
|
|
93
95
|
}
|
|
94
96
|
|
|
95
97
|
/* ── NavRail ────────────────────────────────────────────────────────────── */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.139.0",
|
|
4
4
|
"description": "KOL (Kolkrabbi) design-system tokens + base CSS — brand-neutral. The canonical token/cascade layer every other KOL package and consumer builds on.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|