@kolkrabbi/kol-theme 0.7.6 → 0.9.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-color.css CHANGED
@@ -80,6 +80,14 @@
80
80
 
81
81
  /* =============================================================================
82
82
  * SYSTEM PREFERENCE (Automatic Dark Mode)
83
+ *
84
+ * KEPT deliberately (ruling applied 2026-07-15, ledger-2.0 #2.4): KOL policy
85
+ * is light-first + FOLLOW-SYSTEM — an undecided page respects the visitor's
86
+ * OS preference; an explicit choice (app-set data-theme or a saved toggle)
87
+ * always wins because [data-theme="light"] opts out of this block and
88
+ * [data-theme="dark"] doesn't need it. A repo wanting hard light-always
89
+ * stamps data-theme="light" at boot — that's the per-repo seam, not a theme
90
+ * edit. ThemeToggle + useTheme implement the same policy JS-side.
83
91
  * ============================================================================= */
84
92
 
85
93
  @media (prefers-color-scheme: dark) {
@@ -225,6 +225,14 @@
225
225
  outline-offset: 2px;
226
226
  }
227
227
 
228
+ /* Icon-only buttons — was an inline style in Button.jsx, which beat every
229
+ * consumer display utility (`lg:hidden` could never hide an iconOnly button).
230
+ * Chrome belongs here, layered, so utilities stay sovereign. The flex
231
+ * centering comes from .kol-btn; the icon-only extra is only line-height. */
232
+ .kol-btn-icon {
233
+ line-height: 0;
234
+ }
235
+
228
236
  .kol-btn-primary {
229
237
  background: var(--kol-surface-secondary);
230
238
  color: var(--kol-surface-on-primary);
@@ -703,84 +711,6 @@
703
711
  }
704
712
 
705
713
 
706
- /* ═══════════════════════════════════════════════════════════════
707
- * Section label typography — promoted from residual kol-components.css.
708
- * Used by molecules/SectionLabel.jsx. Mono variants + compact variants.
709
- * Typography-adjacent; lives here because consumed by atom-tier
710
- * components (SectionLabel etc.).
711
- * ═══════════════════════════════════════════════════════════════ */
712
-
713
- .kol-label-mono-sm {
714
- font-family: var(--kol-font-family-mono);
715
- font-weight: 470;
716
- font-size: clamp(14px, 1.5vw, 24px);
717
- line-height: 100%;
718
- text-transform: uppercase;
719
- letter-spacing: 0.05em;
720
- color: var(--kol-surface-on-primary);
721
- }
722
-
723
- .kol-label-mono-md {
724
- font-family: var(--kol-font-family-mono);
725
- font-weight: 470;
726
- font-size: clamp(12px, 1vw, 16px);
727
- line-height: 125%;
728
- text-transform: uppercase;
729
- letter-spacing: 0.05em;
730
- color: var(--kol-surface-on-primary);
731
- }
732
-
733
- .kol-label-mono-xs {
734
- font-family: var(--kol-font-family-mono);
735
- font-weight: 470;
736
- font-size: clamp(10px, 0.8vw, 14px);
737
- line-height: 100%;
738
- text-transform: uppercase;
739
- letter-spacing: 0.05em;
740
- color: var(--kol-surface-on-primary);
741
- }
742
-
743
- .kol-label-compact-lg {
744
- font-family: var(--kol-font-family-mono);
745
- font-weight: 500;
746
- font-size: clamp(24px, 2vw, 28px);
747
- line-height: 100%;
748
- text-transform: uppercase;
749
- letter-spacing: 0.03em;
750
- color: var(--kol-surface-on-primary);
751
- }
752
-
753
- .kol-label-compact-md {
754
- font-family: var(--kol-font-family-mono);
755
- font-weight: 500;
756
- font-size: clamp(12px, 1vw, 16px);
757
- line-height: 100%;
758
- text-transform: uppercase;
759
- letter-spacing: 0.03em;
760
- color: var(--kol-surface-on-primary);
761
- }
762
-
763
- .kol-label {
764
- font-family: var(--kol-font-family-mono);
765
- font-weight: 470;
766
- font-size: clamp(14px, 1.5vw, 24px);
767
- line-height: 100%;
768
- text-transform: uppercase;
769
- letter-spacing: 0.05em;
770
- color: var(--kol-surface-on-primary);
771
- }
772
-
773
- .kol-label-compact {
774
- font-family: var(--kol-font-family-mono);
775
- font-weight: 500;
776
- font-size: clamp(12px, 1vw, 16px);
777
- line-height: 100%;
778
- text-transform: uppercase;
779
- letter-spacing: 0.03em;
780
- color: var(--kol-surface-on-primary);
781
- }
782
-
783
-
784
714
  /* ═══════════════════════════════════════════════════════════════
785
715
  * Icon-swap utility — promoted from residual kol-components.css.
786
716
  * Used by molecules/SectionLabel.jsx and any <button>/<a> with
@@ -97,6 +97,45 @@
97
97
  z-index: 1;
98
98
  }
99
99
 
100
+ /* board input (brief 3.0) — selection wash + legal-target marks; amber
101
+ * rides the same highlight language as --highlighted so it reads on all
102
+ * six board themes */
103
+ .chess-square--interactive {
104
+ cursor: pointer;
105
+ }
106
+
107
+ .chess-square--selected::after {
108
+ content: '';
109
+ position: absolute;
110
+ inset: 0;
111
+ background-color: rgba(251, 191, 36, 0.55);
112
+ pointer-events: none;
113
+ z-index: 1;
114
+ }
115
+
116
+ .chess-square--target::before {
117
+ content: '';
118
+ position: absolute;
119
+ left: 36%;
120
+ top: 36%;
121
+ width: 28%;
122
+ height: 28%;
123
+ border-radius: 999px;
124
+ background-color: rgba(251, 191, 36, 0.7);
125
+ pointer-events: none;
126
+ z-index: 2;
127
+ }
128
+
129
+ .chess-square--target-capture::before {
130
+ content: '';
131
+ position: absolute;
132
+ inset: 6%;
133
+ border: 3px solid rgba(251, 191, 36, 0.7);
134
+ border-radius: 999px;
135
+ pointer-events: none;
136
+ z-index: 11; /* over the piece (its wrapper is z-10) */
137
+ }
138
+
100
139
  .chess-board__coordinate-label {
101
140
  display: inline-flex;
102
141
  align-items: center;
@@ -14,6 +14,14 @@
14
14
  * ─────────────────────────────────────────────────────────────────────
15
15
  */
16
16
 
17
+ /* Every floating node (PopoverPanel root, with or without panel chrome).
18
+ * Floats must top overlay chrome (.kol-overlay is z-100) — without this a
19
+ * dropdown/menu/tooltip opened INSIDE a FullscreenOverlay stacks under the
20
+ * sheet and its options intercept nothing. */
21
+ .kol-popover-float {
22
+ z-index: 110;
23
+ }
24
+
17
25
  /* Popover — default chrome for floating-ui-positioned panels.
18
26
  * Used by molecules/Popover.jsx PopoverPanel. */
19
27
  .kol-popover {
@@ -198,6 +206,27 @@
198
206
  margin: 0 12px;
199
207
  }
200
208
 
209
+ /* The option list — chrome, not consumer utilities (brief-2.0 defect 2: a
210
+ * consumer without @source got an uncapped, unscrollable panel). */
211
+ .kol-dd-list {
212
+ display: flex;
213
+ flex-direction: column;
214
+ align-items: stretch;
215
+ max-height: 300px;
216
+ overflow-y: auto;
217
+ }
218
+
219
+ /* The trigger chevron — pushed to the trailing edge, flips on open state.
220
+ * Replaces the ml-auto utility + inline rotate style in Dropdown.jsx. */
221
+ .kol-dd-caret {
222
+ margin-left: auto;
223
+ transition: transform 300ms;
224
+ }
225
+
226
+ .kol-dd-trigger[data-state="open"] .kol-dd-caret {
227
+ transform: rotate(180deg);
228
+ }
229
+
201
230
  .tag-control:hover {
202
231
  background-color: var(--kol-oq-12);
203
232
  color: var(--kol-surface-on-primary);
@@ -88,6 +88,10 @@
88
88
 
89
89
  /* Sidebar toggle buttons (collapsible section headers) — layout only.
90
90
  * Type/color carried in JSX (kol-helper-10 text-meta). */
91
+ /* Vertical rhythm matches .shell-nav-group-header (6px rows) — ledger-2.0
92
+ * #2.6 ruling (final, user-reviewed 2026-07-15): the rail keeps its quieter
93
+ * 10px label scale (deliberate hierarchy vs the nav's 14px), row rhythm is
94
+ * shared. */
91
95
  .shell-sidebar-toggle {
92
96
  display: flex;
93
97
  align-items: center;
@@ -96,7 +100,7 @@
96
100
  width: 100%;
97
101
  border: none;
98
102
  background: transparent;
99
- padding: 0;
103
+ padding: 6px 0;
100
104
  transition: color 0.15s ease;
101
105
  }
102
106
 
@@ -14,7 +14,7 @@
14
14
  */
15
15
 
16
16
  /* =============================================================================
17
- * FONT-FACE — JetBrains Mono (4 weights: 400, 500, 500i, 600)
17
+ * FONT-FACE — JetBrains Mono (6 faces: 400, 400i, 500, 500i, 600, 600i)
18
18
  * ============================================================================= */
19
19
 
20
20
  @font-face {
@@ -25,6 +25,14 @@
25
25
  font-display: swap;
26
26
  }
27
27
 
28
+ @font-face {
29
+ font-family: 'JetBrains Mono';
30
+ src: url('/fonts/jetbrains-mono/JetBrainsMono-Italic.woff2') format('woff2');
31
+ font-weight: 400;
32
+ font-style: italic;
33
+ font-display: swap;
34
+ }
35
+
28
36
  @font-face {
29
37
  font-family: 'JetBrains Mono';
30
38
  src: url('/fonts/jetbrains-mono/JetBrainsMono-Medium.woff2') format('woff2');
@@ -49,6 +57,14 @@
49
57
  font-display: swap;
50
58
  }
51
59
 
60
+ @font-face {
61
+ font-family: 'JetBrains Mono';
62
+ src: url('/fonts/jetbrains-mono/JetBrainsMono-SemiBoldItalic.woff2') format('woff2');
63
+ font-weight: 600;
64
+ font-style: italic;
65
+ font-display: swap;
66
+ }
67
+
52
68
  /* =============================================================================
53
69
  * FAMILY TOKEN + TAILWIND CONTRACT
54
70
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.7.6",
3
+ "version": "0.9.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",