@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 +8 -0
- package/kol-components-atoms.css +8 -78
- package/kol-components-chess.css +39 -0
- package/kol-components-molecules.css +29 -0
- package/kol-components-workshop.css +5 -1
- package/kol-typography-mono.css +17 -1
- package/package.json +1 -1
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) {
|
package/kol-components-atoms.css
CHANGED
|
@@ -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
|
package/kol-components-chess.css
CHANGED
|
@@ -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
|
|
package/kol-typography-mono.css
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
/* =============================================================================
|
|
17
|
-
* FONT-FACE — JetBrains Mono (
|
|
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.
|
|
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",
|