@kolkrabbi/kol-theme 0.32.5 → 0.34.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.
@@ -75,6 +75,22 @@
75
75
  --kol-surface-absolute-split-inverse: #ffffff;
76
76
  }
77
77
 
78
+ /* UI STATE — dark tier. The base ladder (kol-color.css) is authored for
79
+ * light surfaces; on dark it read as dull ink (StatusChip frame, user
80
+ * 2026-08-09 — success sampled off the reference mint). Own block, NOT the
81
+ * one above: kol-color.css loads AFTER this file, so its bare `:root` beats
82
+ * an equal-specificity dark selector on the tie — the :root-qualified forms
83
+ * here outrank it; bare `.dark` stays for subtree-scoped dark wrappers,
84
+ * where the element's own props beat anything inherited. */
85
+ :root[data-theme="dark"],
86
+ :root.dark,
87
+ .dark {
88
+ --ui-error: #F87171;
89
+ --ui-warning: #FACC15;
90
+ --ui-info: #60A5FA;
91
+ --ui-success: #3DD68C;
92
+ }
93
+
78
94
  /* System-follow dark (0.11.6, user law: explicit choice > system > light).
79
95
  * Applies ONLY when no explicit theme is stamped — a consumer that sets
80
96
  * data-theme (any value) vetoes the OS. MIRROR of the block above — edit both. */
@@ -102,5 +118,11 @@
102
118
  --kol-surface-support-split-inverse: #eeeeee;
103
119
  --kol-surface-absolute-split: #000000;
104
120
  --kol-surface-absolute-split-inverse: #ffffff;
121
+
122
+ /* UI STATE — dark tier (mirror of the block above — edit both) */
123
+ --ui-error: #F87171;
124
+ --ui-warning: #FACC15;
125
+ --ui-info: #60A5FA;
126
+ --ui-success: #3DD68C;
105
127
  }
106
128
  }
@@ -951,7 +951,9 @@ a.kol-icon-frame {
951
951
  }
952
952
  .kol-icon-frame-nav {
953
953
  background: transparent;
954
- color: var(--kol-oq-64);
954
+ /* full ink, not oq-64 (user re-rule 2026-08-09: header glyphs at 100%
955
+ * opacity — the dimmed row read as disabled beside the ThemeToggle). */
956
+ color: var(--kol-surface-on-primary);
955
957
  border: 1px solid transparent;
956
958
  }
957
959
  .kol-icon-frame-grey {
@@ -215,7 +215,7 @@
215
215
  border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 12%, transparent);
216
216
  background: color-mix(in srgb, var(--kol-surface-on-secondary) 6%, transparent);
217
217
  color: var(--kol-surface-on-secondary);
218
- border-radius: 10px;
218
+ border-radius: var(--kol-radius-sm);
219
219
  padding: 10px 14px;
220
220
  font-family: var(--kol-font-family-mono);
221
221
  font-size: 0.75rem;
@@ -376,7 +376,7 @@
376
376
  flex: 1;
377
377
  border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 10%, transparent);
378
378
  background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
379
- border-radius: 10px;
379
+ border-radius: var(--kol-radius-sm);
380
380
  padding: 10px;
381
381
  font-family: var(--kol-font-family-mono);
382
382
  font-size: 0.75rem;
@@ -448,7 +448,7 @@
448
448
  .board-playback__section {
449
449
  background: color-mix(in srgb, var(--kol-surface-on-secondary) 3%, transparent);
450
450
  border: 1px solid color-mix(in srgb, var(--kol-surface-on-secondary) 8%, transparent);
451
- border-radius: 10px;
451
+ border-radius: var(--kol-radius-sm);
452
452
  padding: 14px 16px;
453
453
  display: flex;
454
454
  flex-direction: column;
@@ -479,7 +479,7 @@
479
479
 
480
480
  .board-playback__notes {
481
481
  min-height: 110px;
482
- border-radius: 10px;
482
+ border-radius: var(--kol-radius-sm);
483
483
  padding: 16px;
484
484
  background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
485
485
  font-family: var(--kol-font-family-mono);
@@ -557,7 +557,7 @@
557
557
  .analysis-table-empty {
558
558
  padding: 32px;
559
559
  text-align: center;
560
- border-radius: 16px;
560
+ border-radius: var(--kol-radius-sm);
561
561
  border: 1px solid var(--kol-border-default);
562
562
  background: color-mix(in srgb, var(--kol-surface-secondary) 92%, transparent);
563
563
  color: var(--kol-surface-on-secondary);
@@ -749,7 +749,7 @@
749
749
  font-size: 0.75rem;
750
750
  letter-spacing: 0.08em;
751
751
  padding: 4px 10px;
752
- border-radius: 6px;
752
+ border-radius: var(--kol-radius-sm);
753
753
  align-self: flex-start;
754
754
  }
755
755
 
@@ -820,7 +820,7 @@
820
820
  font-size: 0.85rem;
821
821
  letter-spacing: 0.08em;
822
822
  padding: 4px 10px;
823
- border-radius: 6px;
823
+ border-radius: var(--kol-radius-sm);
824
824
  background: color-mix(in srgb, #0a682a 20%, transparent);
825
825
  color: #5dd27f;
826
826
  }
@@ -970,7 +970,7 @@
970
970
  .chess-hero__line-chart {
971
971
  height: 60px;
972
972
  background: color-mix(in srgb, var(--kol-surface-on-secondary) 4%, transparent);
973
- border-radius: 8px;
973
+ border-radius: var(--kol-radius-sm);
974
974
  padding: 12px;
975
975
  }
976
976
 
@@ -165,7 +165,7 @@
165
165
  background: transparent;
166
166
  color: var(--fv-black);
167
167
  border: 1px solid var(--fv-border-color);
168
- border-radius: 5px;
168
+ border-radius: var(--kol-radius-sm);
169
169
  transition: 0.2s;
170
170
  pointer-events: auto !important;
171
171
  }
@@ -296,7 +296,7 @@
296
296
  position: absolute;
297
297
  z-index: 10001;
298
298
  padding: 14px;
299
- border-radius: 8px;
299
+ border-radius: var(--kol-radius-sm);
300
300
  color: var(--fv-black);
301
301
  }
302
302
 
@@ -106,7 +106,7 @@
106
106
  .kol-popover {
107
107
  background: var(--kol-surface-secondary);
108
108
  border: 1px solid var(--kol-fg-08);
109
- border-radius: 6px;
109
+ border-radius: var(--kol-radius-sm);
110
110
  box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.4),
111
111
  0 2px 6px -2px rgba(0, 0, 0, 0.3);
112
112
  z-index: 1000;
@@ -121,7 +121,7 @@
121
121
  align-items: center;
122
122
  gap: 6px;
123
123
  background: var(--kol-surface-secondary);
124
- border-radius: 6px;
124
+ border-radius: var(--kol-radius-sm);
125
125
  padding: 4px 4px 4px 8px;
126
126
  font-family: var(--kol-font-family-mono);
127
127
  font-size: 11px;
@@ -284,6 +284,22 @@
284
284
  color: var(--kol-surface-on-primary);
285
285
  background-color: color-mix(in srgb, var(--kol-surface-on-primary) 8%, var(--kol-surface-primary));
286
286
  }
287
+ /* ── FieldRow — .kol-field-row ────────────────────────────────────────────
288
+ * Row anatomy: label column LEFT beside the control column (reference,
289
+ * 2026-08-09). Lives here, not in a Tailwind arbitrary utility — package
290
+ * chrome rides theme CSS (the SegmentedToggle lesson): an arbitrary class
291
+ * silently missed generation in a consumer build and the rows stacked. */
292
+ .kol-field-row {
293
+ display: grid;
294
+ grid-template-columns: minmax(0, 12rem) minmax(0, 1fr);
295
+ }
296
+
297
+ /* Chevron weight (user frames 2026-08-09): at the chip size the set
298
+ * chevron's 1.5 stroke renders a 0.75px hairline; 4 units read too thick.
299
+ * 3 units on the 24 viewBox → 1.5px rendered at size 12. Chip-scoped: the
300
+ * keyline law governs the set's drawings; chrome may weight a glyph in
301
+ * context. */
302
+ .kol-status-chip svg path { stroke-width: 3px; }
287
303
  .kol-status-chip--success {
288
304
  color: var(--ui-success);
289
305
  background-color: color-mix(in srgb, var(--ui-success) 15%, var(--kol-surface-primary));
@@ -386,10 +402,16 @@
386
402
  border: 1px solid transparent;
387
403
  }
388
404
 
389
- .kol-badge-destructive {
390
- background-color: color-mix(in srgb, #ef4444 20%, transparent);
391
- color: #ef4444;
392
- border: 1px solid color-mix(in srgb, #ef4444 30%, transparent);
405
+ /* Tones ride the --ui-* ladder with StatusChip's exact fill formula — Badge
406
+ * and StatusChip are siblings and speak one language (user ruling
407
+ * 2026-08-09, "like a button and dropdown"). Canonical tone name is
408
+ * `error`; destructive/critical are legacy aliases of the same rule. */
409
+ .kol-badge-error,
410
+ .kol-badge-destructive,
411
+ .kol-badge-critical {
412
+ color: var(--ui-error);
413
+ background-color: color-mix(in srgb, var(--ui-error) 15%, var(--kol-surface-primary));
414
+ border: 1px solid transparent;
393
415
  }
394
416
 
395
417
  .kol-badge-outline {
@@ -399,27 +421,21 @@
399
421
  }
400
422
 
401
423
  .kol-badge-success {
402
- background-color: color-mix(in srgb, #22c55e 20%, transparent);
403
- color: #22c55e;
404
- border: 1px solid color-mix(in srgb, #22c55e 30%, transparent);
424
+ color: var(--ui-success);
425
+ background-color: color-mix(in srgb, var(--ui-success) 15%, var(--kol-surface-primary));
426
+ border: 1px solid transparent;
405
427
  }
406
428
 
407
429
  .kol-badge-warning {
408
- background-color: color-mix(in srgb, #eab308 20%, transparent);
409
- color: #eab308;
410
- border: 1px solid color-mix(in srgb, #eab308 30%, transparent);
411
- }
412
-
413
- .kol-badge-critical {
414
- background-color: color-mix(in srgb, #ef4444 20%, transparent);
415
- color: #ef4444;
416
- border: 1px solid color-mix(in srgb, #ef4444 30%, transparent);
430
+ color: var(--ui-warning);
431
+ background-color: color-mix(in srgb, var(--ui-warning) 15%, var(--kol-surface-primary));
432
+ border: 1px solid transparent;
417
433
  }
418
434
 
419
435
  .kol-badge-info {
420
- background-color: color-mix(in srgb, #3b82f6 20%, transparent);
421
- color: #3b82f6;
422
- border: 1px solid color-mix(in srgb, #3b82f6 30%, transparent);
436
+ color: var(--ui-info);
437
+ background-color: color-mix(in srgb, var(--ui-info) 15%, var(--kol-surface-primary));
438
+ border: 1px solid transparent;
423
439
  }
424
440
 
425
441
  .kol-badge-sm {
@@ -473,7 +473,7 @@
473
473
  .docs-card {
474
474
  display: block;
475
475
  padding: 16px;
476
- border-radius: 8px;
476
+ border-radius: var(--kol-radius-sm);
477
477
  border: 1px solid;
478
478
  border-color: color-mix(in srgb, var(--kol-surface-on-primary) 4%, transparent);
479
479
  background: transparent;
@@ -494,7 +494,7 @@
494
494
  /* Compact doc card for sidebar */
495
495
  .docs-card--compact {
496
496
  padding: 8px 12px;
497
- border-radius: 6px;
497
+ border-radius: var(--kol-radius-sm);
498
498
  }
499
499
 
500
500
  .docs-title-link {
@@ -625,7 +625,7 @@
625
625
  .docs-image {
626
626
  max-width: 100%;
627
627
  height: auto;
628
- border-radius: 8px;
628
+ border-radius: var(--kol-radius-sm);
629
629
  margin-block: 1.5rem;
630
630
  }
631
631
 
@@ -680,7 +680,7 @@
680
680
  gap: 6px;
681
681
  padding: 6px 12px;
682
682
  border: 1px solid color-mix(in srgb, var(--kol-surface-on-primary) 16%, transparent);
683
- border-radius: 6px;
683
+ border-radius: var(--kol-radius-sm);
684
684
  background: transparent;
685
685
  cursor: pointer;
686
686
  transition: all 0.15s ease;
@@ -733,7 +733,7 @@
733
733
  aspect-ratio: 1;
734
734
  position: relative;
735
735
  overflow: hidden;
736
- border-radius: 8px;
736
+ border-radius: var(--kol-radius-sm);
737
737
  background: color-mix(in srgb, var(--kol-surface-on-primary) 4%, transparent);
738
738
  }
739
739
 
package/kol-theme.css CHANGED
@@ -118,10 +118,14 @@
118
118
  ignored rather than followed. A value used six times is a rung. */
119
119
  --kol-radius-xs: 2px;
120
120
  --kol-radius-sm: 4px;
121
- --kol-radius-md: 8px;
122
- --kol-radius-lg: 12px;
123
- --kol-radius-xl: 16px;
124
- --kol-radius-2xl: 20px;
121
+ /* CONTAINERS ARE 4px (user ruling 2026-08-09, "change 8px radius to 4px in
122
+ containers. everywhere."). The repo ships 4px or full, nothing between —
123
+ md/lg/xl/2xl stay resolvable so no consumer's var() breaks, but they all
124
+ collapse to the 4px value. Do not re-widen a rung without a ruling. */
125
+ --kol-radius-md: 4px;
126
+ --kol-radius-lg: 4px;
127
+ --kol-radius-xl: 4px;
128
+ --kol-radius-2xl: 4px;
125
129
  --kol-radius-full: 9999px;
126
130
 
127
131
  /* Shadows (subtle elevation) */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.32.5",
3
+ "version": "0.34.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",