@kolkrabbi/kol-theme 0.105.0 → 0.107.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.
@@ -433,12 +433,15 @@
433
433
  }
434
434
 
435
435
  @media (hover: hover) {
436
- .kol-btn:hover .kol-icon-default {
436
+ /* the trigger is excluded here too — it IS a Button, so a consumer giving it
437
+ * a hover-icon would animate on hover, and the law is rest and open only
438
+ * (validate-dd-trigger.mjs T1) */
439
+ .kol-btn:not(.kol-dd-trigger):hover .kol-icon-default {
437
440
  opacity: 0;
438
441
  transform: translateY(-4px);
439
442
  }
440
443
 
441
- .kol-btn:hover .kol-icon-hover {
444
+ .kol-btn:not(.kol-dd-trigger):hover .kol-icon-hover {
442
445
  opacity: 1;
443
446
  transform: translateY(0);
444
447
  }
@@ -1343,7 +1343,7 @@
1343
1343
  * a fixed near-white could only ever be right on one. */
1344
1344
  .kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1345
1345
  .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); }
1346
- .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: var(--kol-fg-ab-inverse-08); }
1346
+ .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: var(--kol-fg-04); }
1347
1347
  .kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1348
1348
  .kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1349
1349
  /* the tone's fill, one selector — nothing left to cancel (2026-08-28) */
@@ -1361,11 +1361,29 @@
1361
1361
  * fg-08 chip — both LAYERED over the well (a gradient image over the fill),
1362
1362
  * since one background cannot stack two translucent colours.
1363
1363
  *
1364
- * The wash is `fg-ab-inverse-08`, not a hardcoded white (2026-08-30). A frozen
1365
- * white wash lightens the well in dark and is INVISIBLE in light — white on a
1366
- * 245 ground. `fg-ab-inverse-*` flips toward the ink, so it is white over the
1367
- * dark well and black over the light one: a visible step on both. Same class of
1368
- * bug as the tone itself, one layer down. */
1364
+ * REST / HOVER / SELECTED ARE ONE LADDER, THREE RUNGS (2026-08-30):
1365
+ *
1366
+ * rest the well 10.2 dark · 244.8 light
1367
+ * hover + fg-04 19.8 · 235.7
1368
+ * selected + fg-08 29.4 · 226.7
1369
+ *
1370
+ * `fg-*` already flips toward the ink, so it darkens a light well and lightens
1371
+ * a dark one with no help. Two things were wrong before: the wash was a
1372
+ * hardcoded WHITE, invisible over the light well (white on a 245 ground), and
1373
+ * when that was first fixed it went to an 8% wash — the same strength as
1374
+ * `selected`, which put hover 0.4 from selected in dark and 1.5 in light. A
1375
+ * hovered unselected control was indistinguishable from the selected one.
1376
+ * 04 and 08 are ~10 apart on both themes; the ladder reads.
1377
+ *
1378
+ * ⛔ THE TRIGGER IS EXCLUDED. `.kol-dd-trigger` carries `.kol-btn`, so every
1379
+ * `.kol-btn.kol-tone-sunken` state rule matches it unless it says otherwise —
1380
+ * and "REST AND OPEN ARE THE ONLY STATES" for a Dropdown trigger is a law
1381
+ * written TWICE at the top of this file (2026-07-15, re-called 2026-08-09 and
1382
+ * 2026-08-28). The atoms sheet excludes the trigger from all eight variant
1383
+ * hovers; these tone rules did not, so the law held everywhere except the one
1384
+ * tone the settings page uses. Repeatedly reported and repeatedly missed,
1385
+ * because the exclusion was checked in `kol-components-atoms.css` and the
1386
+ * offending rule lives here. */
1369
1387
  .kol-btn.kol-tone-sunken,
1370
1388
  .kol-icon-frame.kol-tone-sunken,
1371
1389
  .kol-theme-toggle.kol-tone-sunken {
@@ -1374,14 +1392,14 @@
1374
1392
  color: var(--kol-fg-96);
1375
1393
  }
1376
1394
  @media (hover: hover) {
1377
- .kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):hover {
1395
+ .kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):hover {
1378
1396
  background-color: var(--kol-surface-sunken);
1379
- background-image: linear-gradient(var(--kol-fg-ab-inverse-08), var(--kol-fg-ab-inverse-08));
1397
+ background-image: linear-gradient(var(--kol-fg-04), var(--kol-fg-04));
1380
1398
  color: var(--kol-fg-96);
1381
1399
  }
1382
1400
  }
1383
- .kol-btn.kol-tone-sunken.kol-btn-pressed,
1384
- .kol-btn.kol-tone-sunken:not(:disabled):active {
1401
+ .kol-btn.kol-tone-sunken.kol-btn-pressed:not(.kol-dd-trigger),
1402
+ .kol-btn.kol-tone-sunken:not(:disabled):not(.kol-dd-trigger):active {
1385
1403
  background-color: var(--kol-surface-sunken);
1386
1404
  background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08));
1387
1405
  color: var(--kol-fg-96);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.105.0",
3
+ "version": "0.107.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",