@kolkrabbi/kol-theme 0.162.0 → 0.163.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-color.css +6 -0
- package/kol-components-atoms.css +1 -1
- package/kol-components-foundry.css +8 -73
- package/kol-components-molecules.css +15 -12
- package/kol-components-workshop.css +30 -0
- package/package.json +1 -1
package/kol-color.css
CHANGED
|
@@ -221,6 +221,12 @@
|
|
|
221
221
|
color: var(--kol-surface-on-inverse);
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
/* the sunken surface had a token and no class (2026-10-01) — the preview stage reached for
|
|
225
|
+
* `bg-[var(--kol-surface-sunken)]`. Ground only: what sits in a well keeps its own ink. */
|
|
226
|
+
.bg-surface-sunken {
|
|
227
|
+
background-color: var(--kol-surface-sunken);
|
|
228
|
+
}
|
|
229
|
+
|
|
224
230
|
/* ---------------------------------------------------------------------------
|
|
225
231
|
* Elevation Utilities
|
|
226
232
|
* --------------------------------------------------------------------------- */
|
package/kol-components-atoms.css
CHANGED
|
@@ -1315,7 +1315,7 @@ a.kol-icon-frame {
|
|
|
1315
1315
|
* field to the token's line-height (h-4 / h-[18px] / h-[22px]), so a 16px face
|
|
1316
1316
|
* in an unlifted 16px box would clip. */
|
|
1317
1317
|
/* `.kol-control--bare` is a MARKER, not chrome (OverlaySearchFieldZoomsIOS,
|
|
1318
|
-
* 2026-09-01): SearchInput's `bare` body plan — the
|
|
1318
|
+
* 2026-09-01): SearchInput's `bare` body plan — the search modal's field —
|
|
1319
1319
|
* sits in a plain <label>, outside both shells, and was the field that put a
|
|
1320
1320
|
* whole mobile review in a zoomed page. The marker carries no rules of its
|
|
1321
1321
|
* own; it exists so the floor below keys on every body plan the DS ships,
|
|
@@ -211,79 +211,14 @@
|
|
|
211
211
|
font-size: 0.7rem;
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
.font-viewer-slider-group input[type='range']::-webkit-slider-runnable-track,
|
|
225
|
-
.font-viewer-slider-group input[type='range']::-moz-range-track {
|
|
226
|
-
width: 100%;
|
|
227
|
-
height: 1px;
|
|
228
|
-
background: transparent;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
.font-viewer-slider-group input[type='range']::-webkit-slider-runnable-track {
|
|
232
|
-
border-radius: 9999px;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.font-viewer-slider-group input[type='range']::-webkit-slider-thumb {
|
|
236
|
-
-webkit-appearance: none;
|
|
237
|
-
appearance: none;
|
|
238
|
-
height: 15px;
|
|
239
|
-
width: 15px;
|
|
240
|
-
border-radius: 50%;
|
|
241
|
-
background: var(--fv-black);
|
|
242
|
-
cursor: pointer;
|
|
243
|
-
margin-top: 0;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.font-viewer-slider-group input[type='range']::-moz-range-thumb {
|
|
247
|
-
height: 15px;
|
|
248
|
-
width: 15px;
|
|
249
|
-
border-radius: 50%;
|
|
250
|
-
background: var(--fv-black);
|
|
251
|
-
cursor: pointer;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
.font-viewer-slider-group input[type='range']::-moz-range-track {
|
|
255
|
-
border-radius: 9999px;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
.font-viewer-slider-group input[type='range']::-ms-track {
|
|
259
|
-
width: 100%;
|
|
260
|
-
height: 1px;
|
|
261
|
-
background: transparent;
|
|
262
|
-
border-color: transparent;
|
|
263
|
-
color: transparent;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
.font-viewer-slider-group input[type='range']::-ms-fill-lower,
|
|
267
|
-
.font-viewer-slider-group input[type='range']::-ms-fill-upper {
|
|
268
|
-
background: var(--fv-black);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
.font-viewer-slider-group input[type='range']::-ms-thumb {
|
|
272
|
-
height: 15px;
|
|
273
|
-
width: 15px;
|
|
274
|
-
border-radius: 50%;
|
|
275
|
-
background: var(--fv-black);
|
|
276
|
-
cursor: pointer;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
.font-viewer-slider-group input[type='range']::-webkit-slider-thumb,
|
|
280
|
-
.font-viewer-slider-group input[type='range']::-moz-range-thumb {
|
|
281
|
-
height: 15px;
|
|
282
|
-
width: 15px;
|
|
283
|
-
border-radius: 50%;
|
|
284
|
-
background: var(--fv-black);
|
|
285
|
-
cursor: pointer;
|
|
286
|
-
}
|
|
214
|
+
/* The range is `Slider` now (2026-10-02 — the ~65 lines that drew one here are in
|
|
215
|
+
* `_tmp/2026-10-02-foundry-slider-css/`). The viewer keeps its own two-color scheme (`--fv-*`,
|
|
216
|
+
* swapped at runtime), so the slider's track, knob and readout are bound to it here. */
|
|
217
|
+
.font-viewer-slider-group { --kol-slider-track: var(--fv-black); }
|
|
218
|
+
.font-viewer-slider-group .slider-black::-webkit-slider-thumb { background: var(--fv-black); }
|
|
219
|
+
.font-viewer-slider-group .slider-black::-moz-range-thumb { background: var(--fv-black); }
|
|
220
|
+
.font-viewer-slider-group label,
|
|
221
|
+
.font-viewer-slider-group span { color: var(--fv-black); background: transparent; padding: 0; }
|
|
287
222
|
|
|
288
223
|
.font-viewer-variable-axes {
|
|
289
224
|
margin-top: 12px;
|
|
@@ -944,7 +944,7 @@
|
|
|
944
944
|
color: var(--kol-oq-96);
|
|
945
945
|
/* NO BORDER, NO SHADOW (user 2026-08-01). Both were tried and both were
|
|
946
946
|
* wrong: the shadow was another product's floating-card idiom, and the
|
|
947
|
-
* hairline left an empty
|
|
947
|
+
* hairline left an empty search modal reading as a bordered empty box. The SCRIM
|
|
948
948
|
* is the separation — a 60% tint is already a stronger edge than an
|
|
949
949
|
* 8%-opacity line. */
|
|
950
950
|
/* `sm` — the radius this repo's chrome actually uses. */
|
|
@@ -1628,8 +1628,8 @@
|
|
|
1628
1628
|
/* THE QUICKTIME BAR (PlaybackBarAndAudioSheet, kol-r2b2 2026-08-27 — ruled
|
|
1629
1629
|
* against the reference). White glyphs on the frosted strip whatever the theme:
|
|
1630
1630
|
* the ghost IconFrame paints --kol-oq-48, a theme color, and the bar sits on
|
|
1631
|
-
* media, not on the theme. The scrubber is a native range — a 2px track
|
|
1632
|
-
*
|
|
1631
|
+
* media, not on the theme. The scrubber is a native range — a 2px track, a tall
|
|
1632
|
+
* 4 × 28 pill for the knob — pseudo-elements, so CSS. */
|
|
1633
1633
|
.kol-playback-bar .kol-icon-frame { color: var(--kol-color-ab-white); opacity: 0.8; }
|
|
1634
1634
|
.kol-playback-bar .kol-icon-frame:hover,
|
|
1635
1635
|
.kol-playback-bar .kol-icon-frame:focus-visible { opacity: 1; }
|
|
@@ -1641,18 +1641,21 @@
|
|
|
1641
1641
|
outline: none;
|
|
1642
1642
|
cursor: pointer;
|
|
1643
1643
|
}
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
.kol-playback-scrub::-
|
|
1644
|
+
/* THE SCRUBBER IS A SLIDER VARIANT (2026-10-02, `Slider variant="scrub"`), so at rest it takes the
|
|
1645
|
+
* THEME's ink — an opaque rail and knob, the look the docked bar already had — and reads the
|
|
1646
|
+
* slider's own `--kol-slider-track` seam. Only the bar FLOATING over media paints it white. */
|
|
1647
|
+
.kol-playback-scrub::-webkit-slider-runnable-track { height: 2px; border-radius: 1px; background: var(--kol-slider-track, var(--kol-oq-24)); }
|
|
1648
|
+
.kol-playback-scrub::-webkit-slider-thumb { -webkit-appearance: none; width: 4px; height: 28px; margin-top: -13px; border-radius: 2px; background: var(--kol-oq-80); }
|
|
1649
|
+
.kol-playback-scrub::-moz-range-track { height: 2px; border-radius: 1px; background: var(--kol-slider-track, var(--kol-oq-24)); }
|
|
1650
|
+
.kol-playback-scrub::-moz-range-thumb { width: 4px; height: 28px; border: 0; border-radius: 2px; background: var(--kol-oq-80); }
|
|
1651
|
+
.kol-playback-bar:not(.kol-playback-bar--docked) .kol-playback-scrub::-webkit-slider-runnable-track { background: color-mix(in srgb, var(--kol-color-ab-white) 40%, transparent); }
|
|
1652
|
+
.kol-playback-bar:not(.kol-playback-bar--docked) .kol-playback-scrub::-webkit-slider-thumb { background: var(--kol-color-ab-white); }
|
|
1653
|
+
.kol-playback-bar:not(.kol-playback-bar--docked) .kol-playback-scrub::-moz-range-track { background: color-mix(in srgb, var(--kol-color-ab-white) 40%, transparent); }
|
|
1654
|
+
.kol-playback-bar:not(.kol-playback-bar--docked) .kol-playback-scrub::-moz-range-thumb { background: var(--kol-color-ab-white); }
|
|
1648
1655
|
/* DOCKED (2026-09-23) — the bar in the Quick Look window's footer. It sits on the window, not on
|
|
1649
1656
|
* media, so it takes the theme's ink on an opaque plate instead of white on a dark wash. */
|
|
1650
1657
|
.kol-playback-bar--docked { background: var(--kol-oq-08); color: var(--kol-oq-80); }
|
|
1651
1658
|
.kol-playback-bar--docked .kol-icon-frame { color: var(--kol-oq-80); }
|
|
1652
|
-
.kol-playback-bar--docked .kol-playback-scrub::-webkit-slider-runnable-track { background: var(--kol-oq-24); }
|
|
1653
|
-
.kol-playback-bar--docked .kol-playback-scrub::-webkit-slider-thumb { background: var(--kol-oq-80); }
|
|
1654
|
-
.kol-playback-bar--docked .kol-playback-scrub::-moz-range-track { background: var(--kol-oq-24); }
|
|
1655
|
-
.kol-playback-bar--docked .kol-playback-scrub::-moz-range-thumb { background: var(--kol-oq-80); }
|
|
1656
1659
|
|
|
1657
1660
|
/* ColumnBrowser rows — ONE SELECTED STATE (ColumnBrowserSeams, kol-r2b2
|
|
1658
1661
|
* 2026-08-28; user: "ONLY one selected state can exist, not TWO"). The row's
|
|
@@ -2205,7 +2208,7 @@
|
|
|
2205
2208
|
/* ─── the families that keep their own plates ─── */
|
|
2206
2209
|
.kol-view-toggle { background-color: var(--kol-tone-bg, var(--kol-surface-secondary)); }
|
|
2207
2210
|
/* keyboard focus in the well wears the DS ring, not the browser's blue (a button regains focus when
|
|
2208
|
-
* the search
|
|
2211
|
+
* the search modal it opened closes, 2026-09-23) */
|
|
2209
2212
|
.kol-view-toggle button:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--kol-oq-24); }
|
|
2210
2213
|
/* the sunken well's chip ladder (rest · +fg-04 hover · +fg-08 selected) — on the
|
|
2211
2214
|
* element, or inherited from a sunken wrapper */
|
|
@@ -134,6 +134,36 @@
|
|
|
134
134
|
padding-inline-start: var(--kol-pad-chrome-x);
|
|
135
135
|
}
|
|
136
136
|
|
|
137
|
+
/* THE RAIL'S THIRD STATE — ICONS (user ruling 2026-10-02: *"I wanted that icon state on the rails"*).
|
|
138
|
+
* Beside visible and hidden: the left rail as a strip, one glyph per group. Its grid track is the
|
|
139
|
+
* framework's collapsed-rail width (`--kol-sidenav-w-collapsed`, set in ShellLayout), so the strip
|
|
140
|
+
* drops the open rail's inner inset and centres its glyphs.
|
|
141
|
+
*
|
|
142
|
+
* HOVER OPENS IT OVER THE PAGE (`.is-peek`, stamped by ShellNavColumn): the column grows to the
|
|
143
|
+
* open rail's width past its own track, on the sticky tier with the page's surface behind it, so
|
|
144
|
+
* the page under it does not reflow — a hover must not move the thing you are reading. */
|
|
145
|
+
.shell-rail--icons {
|
|
146
|
+
padding-inline-end: 0;
|
|
147
|
+
}
|
|
148
|
+
.shell-rail--icons.is-peek {
|
|
149
|
+
width: var(--kol-shell-nav-w);
|
|
150
|
+
z-index: var(--kol-z-sticky);
|
|
151
|
+
background: var(--kol-surface-primary);
|
|
152
|
+
padding-inline-end: var(--kol-pad-chrome-x);
|
|
153
|
+
}
|
|
154
|
+
.shell-rail-icons {
|
|
155
|
+
display: flex;
|
|
156
|
+
flex-direction: column;
|
|
157
|
+
align-items: center;
|
|
158
|
+
gap: var(--kol-spacing-1);
|
|
159
|
+
}
|
|
160
|
+
/* the group you are in: the rail's active wash HELD ON (the 2026-08-12 ruling `.kol-shell-rail`
|
|
161
|
+
* already carries — navigation is location, never a pressed tool) */
|
|
162
|
+
.shell-rail-icons .kol-btn-nav[aria-current="page"] {
|
|
163
|
+
background-color: var(--kol-oq-04);
|
|
164
|
+
color: var(--kol-oq-96);
|
|
165
|
+
}
|
|
166
|
+
|
|
137
167
|
.shell-main {
|
|
138
168
|
min-width: 0;
|
|
139
169
|
}
|