@kolkrabbi/kol-theme 0.80.0 → 0.82.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.
@@ -1253,6 +1253,19 @@
1253
1253
  .kol-playback-scrub::-moz-range-track { height: 2px; border-radius: 1px; background: color-mix(in srgb, var(--kol-color-absolute-white) 40%, transparent); }
1254
1254
  .kol-playback-scrub::-moz-range-thumb { width: 4px; height: 28px; border: 0; border-radius: 2px; background: var(--kol-color-absolute-white); }
1255
1255
 
1256
+ /* ColumnBrowser rows — ONE SELECTED STATE (ColumnBrowserSeams, kol-r2b2
1257
+ * 2026-08-28; user: "ONLY one selected state can exist, not TWO"). The row's
1258
+ * fill lives here, keyed on its state classes, not on a `bg-fg-04` utility a
1259
+ * consumer had to hang rules off. Hover and the keyboard cursor are the fill;
1260
+ * a selected row is the TRAIL at half strength unless its column is the
1261
+ * deepest one holding a selection — then it is the selection, full strength.
1262
+ * `:has(~ …)` says what a positional selector cannot: "no later column has a
1263
+ * selected row". */
1264
+ .kol-column-browser-row:hover,
1265
+ .kol-column-browser-row.is-cursor { background-color: var(--kol-fg-04); }
1266
+ .kol-column-browser-row.is-selected { background-color: var(--kol-fg-02); }
1267
+ .kol-column-browser-column:not(:has(~ .kol-column-browser-column .is-selected)) > .is-selected { background-color: var(--kol-fg-04); }
1268
+
1256
1269
  /* ColumnBrowser resize handles (ColumnBrowserResize, kol-r2b2 2026-08-27 —
1257
1270
  * Finder's edge handles, user ruling "that should be a set in ds"; native CSS
1258
1271
  * `resize:` rejected). The column border already there is the visual; the
@@ -1314,32 +1327,58 @@
1314
1327
  }
1315
1328
 
1316
1329
  /* ─────────────────────────────────────────────────────────────────────
1317
- * TONE — inverse (ControlToneInverse, kol-website 2026-08-27; user on brand's
1318
- * /icons over a `pageWash` of fg-04: "a flipped version of this color scheme,
1319
- * where the darker is background and grey is the active it would fit better
1320
- * on the light grey" "that would also need to be a variant for the dropdown
1321
- * and the input" — "the active grey can be lighter"). On a washed plane the
1322
- * default grey well reads as a second plate. `tone="inverse"` on ViewToggle
1323
- * (icon) · Dropdown · Input · SearchInput stamps `.kol-tone-inverse`; the rules
1324
- * live HERE, after every default they out-rank, so a consumer never restates
1325
- * them (brand's stopgap did).
1330
+ * TONE — sunken (ControlToneSunken, kol-website 2026-08-28; was "inverse",
1331
+ * ControlToneInverse 2026-08-27). User, on brand's /icons over a `pageWash`:
1332
+ * "a flipped version of this color scheme, where the darker is background and
1333
+ * grey is the active it would fit better on the light grey" and then, on
1334
+ * the name: the control does not INVERT anything, it sits BELOW the plane it
1335
+ * is on `sunken`. ("inverse" already meant four things: `tone` here,
1336
+ * `variant` on Tag/Pill, `theme` on Section, a boolean on Divider.) On a
1337
+ * washed plane the default grey well reads as a second plate, so the set takes
1338
+ * ONE tone: `tone="sunken"` (`inverse` aliased) on ViewToggle (icon) ·
1339
+ * Dropdown · Input · SearchInput · Button · IconFrame · ThemeToggle stamps
1340
+ * `.kol-tone-sunken`; the rules live HERE, after every default they out-rank,
1341
+ * so a consumer never restates them (brand hand-wrote the fill and GUESSED
1342
+ * the ink for its two icon buttons — that fork is what widening the set ends).
1326
1343
  *
1327
- * The chip is `fg-absolute-24` theme-invariant black, as the icon well's
1328
- * active state already was so it darkens on either theme; the active chip
1329
- * is the fg-16 ink wash (ruled on the page); a dark well wants a LIGHTER hover,
1330
- * so the inactive hover is an absolute-white wash.
1344
+ * THE SET: well `fg-absolute-24` (theme-invariant black, darkens either
1345
+ * theme) · active chip `fg-08` (user ruling 2026-08-28, down from the 0.78.1
1346
+ * fg-16) · inactive hover absolute-white @ 8% (a dark well wants a LIGHTER
1347
+ * hover) · ink `fg-96`. `.kol-tone-inverse` stays selected for any class
1348
+ * hand-stamped on the old name.
1331
1349
  * ───────────────────────────────────────────────────────────────────── */
1332
- .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1333
- /* the active chip is the fg-16 INK WASH (user ruling 2026-08-27 on the live page — "why are you using
1334
- * absolute transparent? just use bg-fg-16"; surface-tertiary sat BELOW secondary on the dark ramp):
1335
- * it lifts off the fg-absolute-24 well on both themes */
1336
- .kol-view-toggle.kol-tone-inverse > button[aria-pressed="true"] { background-color: var(--kol-fg-16); }
1337
- .kol-view-toggle.kol-tone-inverse > button:not([aria-pressed="true"]):hover { background-color: color-mix(in srgb, var(--kol-color-absolute-white) 8%, transparent); }
1338
- .kol-control.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1339
- .kol-expand.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1350
+ .kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1351
+ .kol-view-toggle.kol-tone-sunken > button[aria-pressed="true"], .kol-view-toggle.kol-tone-inverse > button[aria-pressed="true"] { background-color: var(--kol-fg-08); }
1352
+ .kol-view-toggle.kol-tone-sunken > button:not([aria-pressed="true"]):hover, .kol-view-toggle.kol-tone-inverse > button:not([aria-pressed="true"]):hover { background-color: color-mix(in srgb, var(--kol-color-absolute-white) 8%, transparent); }
1353
+ .kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1354
+ .kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1340
1355
  /* the trigger: rest and open are its only states — the pin-back rules above
1341
- * paint surface-secondary on hover/active, so the inverse pins its own chip */
1342
- .kol-dd-trigger.kol-tone-inverse,
1343
- .kol-dd-trigger.kol-tone-inverse:not(:disabled):hover,
1344
- .kol-dd-trigger.kol-tone-inverse:not(:disabled):active { background-color: var(--kol-fg-absolute-24); }
1345
- .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1356
+ * paint surface-secondary on hover/active, so the tone pins its own chip */
1357
+ .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse,
1358
+ .kol-dd-trigger.kol-tone-sunken:not(:disabled):hover, .kol-dd-trigger.kol-tone-inverse:not(:disabled):hover,
1359
+ .kol-dd-trigger.kol-tone-sunken:not(:disabled):active, .kol-dd-trigger.kol-tone-inverse:not(:disabled):active { background-color: var(--kol-fg-absolute-24); }
1360
+ .kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-fg-absolute-24); }
1361
+ /* the rest of the set — Button (icon-only especially), IconFrame, ThemeToggle:
1362
+ * the well, transparent edge, fg-96 ink; hover the white wash, pressed the
1363
+ * fg-08 chip — both LAYERED over the well (a gradient image over the fill),
1364
+ * since one background cannot stack two translucent colours */
1365
+ .kol-btn.kol-tone-sunken,
1366
+ .kol-icon-frame.kol-tone-sunken,
1367
+ .kol-theme-toggle.kol-tone-sunken {
1368
+ background-color: var(--kol-fg-absolute-24);
1369
+ border-color: transparent;
1370
+ color: var(--kol-fg-96);
1371
+ }
1372
+ @media (hover: hover) {
1373
+ .kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):hover {
1374
+ background-color: var(--kol-fg-absolute-24);
1375
+ background-image: linear-gradient(color-mix(in srgb, var(--kol-color-absolute-white) 8%, transparent), color-mix(in srgb, var(--kol-color-absolute-white) 8%, transparent));
1376
+ color: var(--kol-fg-96);
1377
+ }
1378
+ }
1379
+ .kol-btn.kol-tone-sunken.kol-btn-pressed,
1380
+ .kol-btn.kol-tone-sunken:not(:disabled):active {
1381
+ background-color: var(--kol-fg-absolute-24);
1382
+ background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08));
1383
+ color: var(--kol-fg-96);
1384
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.80.0",
3
+ "version": "0.82.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",