@kolkrabbi/kol-theme 0.90.0 → 0.91.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.
@@ -243,7 +243,7 @@
243
243
  border: 1px solid transparent;
244
244
  }
245
245
  @media (hover: hover) {
246
- .kol-btn-primary:not(.kol-btn-animate):hover {
246
+ .kol-btn-primary:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
247
247
  background-color: var(--kol-oq-08);
248
248
  color: var(--kol-surface-on-primary);
249
249
  }
@@ -256,7 +256,7 @@
256
256
  font-weight: 500;
257
257
  }
258
258
  @media (hover: hover) {
259
- .kol-btn-secondary:not(.kol-btn-animate):hover {
259
+ .kol-btn-secondary:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
260
260
  background-color: var(--kol-oq-inverse-40);
261
261
  color: var(--kol-surface-primary);
262
262
  border-color: transparent;
@@ -270,7 +270,7 @@
270
270
  font-weight: 500;
271
271
  }
272
272
  @media (hover: hover) {
273
- .kol-btn-accent:not(.kol-btn-animate):hover {
273
+ .kol-btn-accent:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
274
274
  background-color: var(--kol-accent-primary-strong);
275
275
  color: var(--kol-accent-on-primary);
276
276
  }
@@ -286,7 +286,7 @@
286
286
  border: 1px solid var(--kol-oq-08);
287
287
  }
288
288
  @media (hover: hover) {
289
- .kol-btn-outline:not(.kol-btn-animate):hover {
289
+ .kol-btn-outline:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
290
290
  background-color: var(--kol-oq-02);
291
291
  border-color: color-mix(in srgb, var(--kol-surface-on-primary) 25%, var(--kol-surface-primary));
292
292
  color: var(--kol-surface-on-primary);
@@ -299,7 +299,7 @@
299
299
  border: 1px solid transparent;
300
300
  }
301
301
  @media (hover: hover) {
302
- .kol-btn-ghost:not(.kol-btn-animate):hover {
302
+ .kol-btn-ghost:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
303
303
  background-color: var(--kol-oq-04);
304
304
  color: var(--kol-surface-on-primary);
305
305
  }
@@ -318,7 +318,7 @@
318
318
  border: 1px solid transparent;
319
319
  }
320
320
  @media (hover: hover) {
321
- .kol-btn-nav:not(.kol-btn-animate):hover {
321
+ .kol-btn-nav:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
322
322
  background-color: var(--kol-oq-04);
323
323
  color: var(--kol-surface-on-primary);
324
324
  }
@@ -343,7 +343,7 @@
343
343
  border: 1px solid transparent;
344
344
  }
345
345
  @media (hover: hover) {
346
- .kol-btn-grey:not(.kol-btn-animate):hover {
346
+ .kol-btn-grey:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
347
347
  background-color: var(--kol-oq-16);
348
348
  color: var(--kol-surface-on-primary);
349
349
  }
@@ -360,7 +360,7 @@
360
360
  font-weight: 500;
361
361
  }
362
362
  @media (hover: hover) {
363
- .kol-btn-danger:not(.kol-btn-animate):hover {
363
+ .kol-btn-danger:not(.kol-btn-animate):not(.kol-dd-trigger):hover {
364
364
  background-color: color-mix(in srgb, var(--ui-error) 80%, var(--kol-surface-primary));
365
365
  color: var(--kol-color-absolute-white);
366
366
  }
@@ -372,13 +372,19 @@
372
372
 
373
373
  /* Press feedback — one stop past hover (2026-07-08 button-states spec).
374
374
  * Outside the hover guard: :active fires on touch too. */
375
- .kol-btn-primary:not(.kol-btn-animate):not(:disabled):active { background-color: var(--kol-oq-16); }
376
- .kol-btn-secondary:not(.kol-btn-animate):not(:disabled):active { background-color: var(--kol-oq-inverse-48); color: var(--kol-surface-primary); }
377
- .kol-btn-accent:not(.kol-btn-animate):not(:disabled):active { background-color: color-mix(in srgb, var(--kol-accent-primary) 70%, var(--kol-surface-primary)); }
378
- .kol-btn-outline:not(.kol-btn-animate):not(:disabled):active,
379
- .kol-btn-ghost:not(.kol-btn-animate):not(:disabled):active { background-color: var(--kol-oq-08); }
380
- .kol-btn-danger:not(.kol-btn-animate):not(:disabled):active { background-color: color-mix(in srgb, var(--ui-error) 70%, var(--kol-surface-primary)); }
381
- .kol-btn-grey:not(.kol-btn-animate):not(:disabled):active { background-color: var(--kol-oq-24); }
375
+ /* NO HOVER, NO PRESS ON A DROPDOWN TRIGGER (user ruling 2026-08-28). Every
376
+ * variant excludes `.kol-dd-trigger` at the SOURCE. It used to be cancelled
377
+ * downstream kol-components-molecules re-stated each variant's rest colours
378
+ * on :hover — and that restatement was specificity (0,4,0) against the sunken
379
+ * tone's (0,2,0), so hovering a SUNKEN trigger repainted it in the untoned
380
+ * fill: a light box beside two icon controls that stayed dark. */
381
+ .kol-btn-primary:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active { background-color: var(--kol-oq-16); }
382
+ .kol-btn-secondary:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active { background-color: var(--kol-oq-inverse-48); color: var(--kol-surface-primary); }
383
+ .kol-btn-accent:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active { background-color: color-mix(in srgb, var(--kol-accent-primary) 70%, var(--kol-surface-primary)); }
384
+ .kol-btn-outline:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active,
385
+ .kol-btn-ghost:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active { background-color: var(--kol-oq-08); }
386
+ .kol-btn-danger:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active { background-color: color-mix(in srgb, var(--ui-error) 70%, var(--kol-surface-primary)); }
387
+ .kol-btn-grey:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):active { background-color: var(--kol-oq-24); }
382
388
 
383
389
  .kol-btn:disabled,
384
390
  .kol-btn[disabled] {
@@ -48,31 +48,15 @@
48
48
  .kol-dd-trigger.kol-btn-sm { height: 28px; padding-block: 0; }
49
49
  .kol-dd-trigger.kol-btn-md { height: 32px; padding-block: 0; }
50
50
  .kol-dd-trigger.kol-btn-lg { height: 36px; padding-block: 0; }
51
- /* REST AND OPEN ARE THE ONLY STATES (2026-07-15 ruling, re-called twice
52
- * 2026-08-09). The trigger wears button chrome, and button chrome hovers AND
53
- * presses so every kol-btn variant :hover and :active is PINNED BACK TO
54
- * REST here. The :not(:disabled) carries the weight of the atoms :active
55
- * selectors; this sheet loads after atoms in the same layer, so ties resolve
56
- * to these rules. */
57
- .kol-dd-trigger.kol-btn-primary:not(:disabled):hover,
58
- .kol-dd-trigger.kol-btn-primary:not(:disabled):active {
59
- background: var(--kol-surface-secondary);
60
- color: var(--kol-surface-on-primary);
61
- }
62
- /* oq-08, NOT oq-16 (DropdownHeightAndHover, kol-fxr 2026-08-28). This is a
63
- * pin-back to rest and it stopped being one: `.kol-btn-outline`'s rest border
64
- * moved to `oq-08` on 2026-08-26 ("ONE outline border across the controls"),
65
- * and this line kept the old `oq-16` — so the outline trigger quietly grew a
66
- * hover the 2026-07-15 ruling forbids, and an untoned Dropdown lit while a
67
- * sunken one beside it did not. A pin-back has to be re-read whenever the rest
68
- * value it mirrors moves; that is the cost of expressing "no state" as a
69
- * restatement rather than as an absence. */
70
- .kol-dd-trigger.kol-btn-outline:not(:disabled):hover,
71
- .kol-dd-trigger.kol-btn-outline:not(:disabled):active {
72
- background: transparent;
73
- color: var(--kol-surface-on-primary);
74
- border-color: var(--kol-oq-08);
75
- }
51
+ /* REST AND OPEN ARE THE ONLY STATES (2026-07-15, re-called 2026-08-09 and
52
+ * 2026-08-28). No :hover or :active rules for the trigger live here any more —
53
+ * kol-components-atoms.css excludes `.kol-dd-trigger` from every variant's
54
+ * hover and press instead. The pin-backs that stood here restated each
55
+ * variant's REST colours to cancel the button's, and that failed twice: one
56
+ * went stale when `.kol-btn-outline`'s rest border moved (2026-08-26), and a
57
+ * pin-back out-specifies the tone, so a sunken trigger hovered into the
58
+ * untoned fill. "No state" is an absence now, not a mirror. */
59
+
76
60
  /* ONE PIECE MEANS ONE WIDTH (2026-08-09 user call — "they are connected").
77
61
  * The trigger reserves the widest option's width by stacking every label in
78
62
  * one grid cell (hidden ghosts), so the panel — pinned to the trigger by
@@ -1283,14 +1267,8 @@
1283
1267
  .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); }
1284
1268
  .kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-fg-inverse-96); }
1285
1269
  .kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-fg-inverse-96); }
1286
- /* NO HOVER STATE ON THE DROPDOWN (user ruling 2026-08-28). Rest and open are
1287
- * its only states — and the three selectors are what ENFORCE that: the base
1288
- * `.kol-dd-trigger:hover/:active` rules paint surface-secondary, so the tone
1289
- * re-states its own fill on all three and nothing moves. Deleting them gives
1290
- * the hover back. */
1291
- .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse,
1292
- .kol-dd-trigger.kol-tone-sunken:not(:disabled):hover, .kol-dd-trigger.kol-tone-inverse:not(:disabled):hover,
1293
- .kol-dd-trigger.kol-tone-sunken:not(:disabled):active, .kol-dd-trigger.kol-tone-inverse:not(:disabled):active { background-color: var(--kol-fg-inverse-96); }
1270
+ /* the tone's fill, one selector nothing left to cancel (2026-08-28) */
1271
+ .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-fg-inverse-96); }
1294
1272
  /* THE PANEL IS OPAQUE (user 2026-08-28: "transparent doesn't work for
1295
1273
  * dropdown") — it floats over page content, and every `fg-*` stop is an alpha
1296
1274
  * wash that the content reads through. `oq-inverse-*`, the opaque tier, bakes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.90.0",
3
+ "version": "0.91.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",