@kolkrabbi/kol-theme 0.106.0 → 0.108.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 +5 -2
- package/kol-components-molecules.css +38 -12
- package/package.json +1 -1
package/kol-components-atoms.css
CHANGED
|
@@ -433,12 +433,15 @@
|
|
|
433
433
|
}
|
|
434
434
|
|
|
435
435
|
@media (hover: hover) {
|
|
436
|
-
|
|
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
|
}
|
|
@@ -1324,7 +1324,22 @@
|
|
|
1324
1324
|
* ink `fg-96`. `.kol-tone-inverse` stays selected for any class
|
|
1325
1325
|
* hand-stamped on the old name.
|
|
1326
1326
|
* ───────────────────────────────────────────────────────────────────── */
|
|
1327
|
-
/* THE
|
|
1327
|
+
/* THE WELL TAKES THE PAGE'S WASH TOO (SunkenWellEatenByPageWash, kol-fxr
|
|
1328
|
+
* 2026-08-30). `--kol-surface-sunken` is derived from `surface-primary`, but
|
|
1329
|
+
* `AppShell`'s `pageWash` paints a film ON TOP of that page — and the control's
|
|
1330
|
+
* opaque fill does not receive it. At the ruled `fg-02` rung the light page
|
|
1331
|
+
* lands 250 × 0.98 + 18 × 0.02 = 245, which is EXACTLY the well: measured delta
|
|
1332
|
+
* [0,0,0], four controls rendering as bare text with no pill.
|
|
1333
|
+
*
|
|
1334
|
+
* Deepening the well would have worked by luck and broken on the next rung
|
|
1335
|
+
* change. Instead every sunken surface paints the same film the page does, so
|
|
1336
|
+
* the five levels hold by construction whatever `pageWash` is set to. The
|
|
1337
|
+
* property is unset outside an AppShell and falls back to `transparent`.
|
|
1338
|
+
*
|
|
1339
|
+
* State washes stack ON TOP of it — `linear-gradient(state), linear-gradient(wash)`
|
|
1340
|
+
* — because one background-color cannot carry two translucent layers.
|
|
1341
|
+
*
|
|
1342
|
+
* THE SUNKEN TONE IS `surface-tertiary`, NOT `oq-inverse-96` (measured on
|
|
1328
1343
|
* kol-fxr's /settings, 2026-08-30). The whole set read `--kol-oq-inverse-96`,
|
|
1329
1344
|
* which is `color-mix(#0e0e11 96%, #fcfbf8)` — four percent of near-WHITE mixed
|
|
1330
1345
|
* in. On the dark theme that lands at luminance **23.7 against an 18.2 page**:
|
|
@@ -1341,13 +1356,13 @@
|
|
|
1341
1356
|
* `surface-tertiary` is `#0e0e11` in dark (14.2, genuinely below the page) and
|
|
1342
1357
|
* `#ffffff` in light, so it is theme-correct on both sides where a mix toward
|
|
1343
1358
|
* a fixed near-white could only ever be right on one. */
|
|
1344
|
-
.kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
|
|
1359
|
+
.kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
|
|
1345
1360
|
.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
1361
|
.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
|
-
.kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
|
|
1348
|
-
.kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
|
|
1362
|
+
.kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
|
|
1363
|
+
.kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
|
|
1349
1364
|
/* the tone's fill, one selector — nothing left to cancel (2026-08-28) */
|
|
1350
|
-
.kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
|
|
1365
|
+
.kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
|
|
1351
1366
|
/* THE PANEL IS OPAQUE (user 2026-08-28: "transparent doesn't work for
|
|
1352
1367
|
* dropdown") — it floats over page content, and every `fg-*` stop is an alpha
|
|
1353
1368
|
* wash that the content reads through. `oq-inverse-*`, the opaque tier, bakes
|
|
@@ -1355,7 +1370,7 @@
|
|
|
1355
1370
|
* lands ~23.5 against the #121215 page's 18: lighter than the page, the wrong
|
|
1356
1371
|
* side of it. `surface-tertiary` is the flat twin of what the trigger renders:
|
|
1357
1372
|
* #0e0e11 (14.0) in dark against the trigger's 14.2, #ffffff in light. */
|
|
1358
|
-
.kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
|
|
1373
|
+
.kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
|
|
1359
1374
|
/* the rest of the set — Button (icon-only especially), IconFrame, ThemeToggle:
|
|
1360
1375
|
* the well, transparent edge, fg-96 ink; hover the CONTRAST wash, pressed the
|
|
1361
1376
|
* fg-08 chip — both LAYERED over the well (a gradient image over the fill),
|
|
@@ -1373,24 +1388,35 @@
|
|
|
1373
1388
|
* when that was first fixed it went to an 8% wash — the same strength as
|
|
1374
1389
|
* `selected`, which put hover 0.4 from selected in dark and 1.5 in light. A
|
|
1375
1390
|
* hovered unselected control was indistinguishable from the selected one.
|
|
1376
|
-
* 04 and 08 are ~10 apart on both themes; the ladder reads.
|
|
1391
|
+
* 04 and 08 are ~10 apart on both themes; the ladder reads.
|
|
1392
|
+
*
|
|
1393
|
+
* ⛔ THE TRIGGER IS EXCLUDED. `.kol-dd-trigger` carries `.kol-btn`, so every
|
|
1394
|
+
* `.kol-btn.kol-tone-sunken` state rule matches it unless it says otherwise —
|
|
1395
|
+
* and "REST AND OPEN ARE THE ONLY STATES" for a Dropdown trigger is a law
|
|
1396
|
+
* written TWICE at the top of this file (2026-07-15, re-called 2026-08-09 and
|
|
1397
|
+
* 2026-08-28). The atoms sheet excludes the trigger from all eight variant
|
|
1398
|
+
* hovers; these tone rules did not, so the law held everywhere except the one
|
|
1399
|
+
* tone the settings page uses. Repeatedly reported and repeatedly missed,
|
|
1400
|
+
* because the exclusion was checked in `kol-components-atoms.css` and the
|
|
1401
|
+
* offending rule lives here. */
|
|
1377
1402
|
.kol-btn.kol-tone-sunken,
|
|
1378
1403
|
.kol-icon-frame.kol-tone-sunken,
|
|
1379
1404
|
.kol-theme-toggle.kol-tone-sunken {
|
|
1380
1405
|
background-color: var(--kol-surface-sunken);
|
|
1406
|
+
background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent));
|
|
1381
1407
|
border-color: transparent;
|
|
1382
1408
|
color: var(--kol-fg-96);
|
|
1383
1409
|
}
|
|
1384
1410
|
@media (hover: hover) {
|
|
1385
|
-
.kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):hover {
|
|
1411
|
+
.kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):hover {
|
|
1386
1412
|
background-color: var(--kol-surface-sunken);
|
|
1387
|
-
background-image: linear-gradient(var(--kol-fg-04), var(--kol-fg-04));
|
|
1413
|
+
background-image: linear-gradient(var(--kol-fg-04), var(--kol-fg-04)), linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent));
|
|
1388
1414
|
color: var(--kol-fg-96);
|
|
1389
1415
|
}
|
|
1390
1416
|
}
|
|
1391
|
-
.kol-btn.kol-tone-sunken.kol-btn-pressed,
|
|
1392
|
-
.kol-btn.kol-tone-sunken:not(:disabled):active {
|
|
1417
|
+
.kol-btn.kol-tone-sunken.kol-btn-pressed:not(.kol-dd-trigger),
|
|
1418
|
+
.kol-btn.kol-tone-sunken:not(:disabled):not(.kol-dd-trigger):active {
|
|
1393
1419
|
background-color: var(--kol-surface-sunken);
|
|
1394
|
-
background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08));
|
|
1420
|
+
background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08)), linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent));
|
|
1395
1421
|
color: var(--kol-fg-96);
|
|
1396
1422
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.108.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",
|