@kolkrabbi/kol-theme 0.9.3 → 0.11.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-foundry.css +305 -0
- package/kol-typography.css +67 -0
- package/package.json +1 -1
|
@@ -47,3 +47,308 @@
|
|
|
47
47
|
-webkit-text-stroke-width: 3px;
|
|
48
48
|
-webkit-text-stroke-color: var(--kol-text-pressure-stroke, var(--kol-accent-primary));
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
/* =============================================================================
|
|
52
|
+
* FONTVIEWER ENGINE CHROME — the variable-font viewer instrument (canvas stage,
|
|
53
|
+
* metrics overlay, axis controls). Lobbied verbatim from the elder
|
|
54
|
+
* @kol/fontviewer package 2026-07-16 alongside the engine (kol-foundry ./engine).
|
|
55
|
+
* ponytail: carries its own --fv-* token set + system-ui stack from the source —
|
|
56
|
+
* kol-token conformance is a follow-up pass, not done blind in the lobby.
|
|
57
|
+
* ============================================================================= */
|
|
58
|
+
|
|
59
|
+
:root {
|
|
60
|
+
--system-ui: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
61
|
+
--fv-white: rgb(255, 255, 255);
|
|
62
|
+
--fv-black: rgb(0, 0, 0);
|
|
63
|
+
--fv-metrics-color: rgba(0, 0, 0, 0.4);
|
|
64
|
+
--fv-border-color: var(--fv-black);
|
|
65
|
+
--fv-surface: rgba(255, 255, 255, 0.1);
|
|
66
|
+
--fv-panel-bg: rgba(255, 255, 255, 0.1);
|
|
67
|
+
--fv-panel-border: var(--fv-black);
|
|
68
|
+
--fv-panel-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.fontviewer-section,
|
|
72
|
+
.fontviewer-container {
|
|
73
|
+
width: 100%;
|
|
74
|
+
height: 100%;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.fontviewer-section {
|
|
78
|
+
margin: 0;
|
|
79
|
+
padding: 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.fontviewer-container {
|
|
83
|
+
position: relative;
|
|
84
|
+
overflow: hidden;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.font-viewer-wrapper {
|
|
88
|
+
position: relative;
|
|
89
|
+
width: 100%;
|
|
90
|
+
height: 100%;
|
|
91
|
+
font-family: var(--system-ui);
|
|
92
|
+
font-size: 0.7rem;
|
|
93
|
+
background: var(--fv-white);
|
|
94
|
+
color: var(--fv-black);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.font-viewer-display-container {
|
|
98
|
+
position: absolute;
|
|
99
|
+
top: 0;
|
|
100
|
+
left: 0;
|
|
101
|
+
right: 0;
|
|
102
|
+
bottom: 0;
|
|
103
|
+
display: flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
justify-content: center;
|
|
106
|
+
background: var(--fv-white);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.font-viewer-glyph-buffer {
|
|
110
|
+
color: var(--fv-black);
|
|
111
|
+
text-align: center;
|
|
112
|
+
position: relative;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.font-viewer-metrics-overlay {
|
|
116
|
+
position: absolute;
|
|
117
|
+
inset: 0;
|
|
118
|
+
pointer-events: none;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.font-viewer-wrapper {
|
|
122
|
+
--fv-controls-background: rgba(255, 255, 255, 0.2);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.font-viewer-wrapper[data-color-scheme='dark'] {
|
|
126
|
+
--fv-controls-background: rgba(0, 0, 0, 0.2);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.font-viewer-controls {
|
|
130
|
+
position: fixed;
|
|
131
|
+
left: 0;
|
|
132
|
+
right: 0;
|
|
133
|
+
bottom: 0;
|
|
134
|
+
background: var(--fv-controls-background);
|
|
135
|
+
backdrop-filter: blur(2px);
|
|
136
|
+
padding: 7px 14px;
|
|
137
|
+
border-top: 1px solid var(--fv-border-color);
|
|
138
|
+
z-index: 99999;
|
|
139
|
+
color: var(--fv-black);
|
|
140
|
+
opacity: 0;
|
|
141
|
+
pointer-events: none;
|
|
142
|
+
transition: opacity 400ms ease;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.font-viewer-controls.is-visible {
|
|
146
|
+
opacity: 1;
|
|
147
|
+
pointer-events: auto !important;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.font-viewer-buttons {
|
|
151
|
+
display: flex;
|
|
152
|
+
flex-wrap: wrap;
|
|
153
|
+
gap: 6px;
|
|
154
|
+
margin-bottom: 6px;
|
|
155
|
+
pointer-events: auto !important;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.font-viewer-btn {
|
|
159
|
+
font-size: 0.7rem;
|
|
160
|
+
cursor: pointer;
|
|
161
|
+
height: 23px;
|
|
162
|
+
padding: 0 8px;
|
|
163
|
+
margin-right: 5px;
|
|
164
|
+
margin-bottom: 7px;
|
|
165
|
+
background: transparent;
|
|
166
|
+
color: var(--fv-black);
|
|
167
|
+
border: 1px solid var(--fv-border-color);
|
|
168
|
+
border-radius: 5px;
|
|
169
|
+
transition: 0.2s;
|
|
170
|
+
pointer-events: auto !important;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.font-viewer-btn:last-child {
|
|
174
|
+
margin-right: 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.font-viewer-btn.active {
|
|
178
|
+
background-color: var(--fv-black);
|
|
179
|
+
color: var(--fv-white);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.font-viewer-btn.disabled,
|
|
183
|
+
.font-viewer-btn:disabled {
|
|
184
|
+
opacity: 0.4;
|
|
185
|
+
cursor: not-allowed;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.font-viewer-sliders {
|
|
189
|
+
display: flex;
|
|
190
|
+
flex-direction: column;
|
|
191
|
+
gap: 8px;
|
|
192
|
+
padding: 0 14px;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.font-viewer-slider-group {
|
|
196
|
+
display: flex;
|
|
197
|
+
align-items: center;
|
|
198
|
+
gap: 10px;
|
|
199
|
+
margin-bottom: 6px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.font-viewer-slider-group label {
|
|
203
|
+
min-width: 120px;
|
|
204
|
+
font-size: 0.7rem;
|
|
205
|
+
font-weight: 500;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.font-viewer-slider-group span {
|
|
209
|
+
min-width: 60px;
|
|
210
|
+
text-align: right;
|
|
211
|
+
font-size: 0.7rem;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.font-viewer-slider-group input[type='range'] {
|
|
215
|
+
flex: 1;
|
|
216
|
+
height: 15px;
|
|
217
|
+
padding: 7px 0;
|
|
218
|
+
cursor: pointer;
|
|
219
|
+
background: linear-gradient(var(--fv-black), var(--fv-black)) center/100% 1px no-repeat;
|
|
220
|
+
-webkit-appearance: none;
|
|
221
|
+
appearance: none;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.font-viewer-slider-group input[type='range']::-webkit-slider-runnable-track,
|
|
225
|
+
.font-viewer-slider-group input[type='range']::-moz-range-track {
|
|
226
|
+
width: 100%;
|
|
227
|
+
height: 1px;
|
|
228
|
+
background: transparent;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.font-viewer-slider-group input[type='range']::-webkit-slider-runnable-track {
|
|
232
|
+
border-radius: 9999px;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.font-viewer-slider-group input[type='range']::-webkit-slider-thumb {
|
|
236
|
+
-webkit-appearance: none;
|
|
237
|
+
appearance: none;
|
|
238
|
+
height: 15px;
|
|
239
|
+
width: 15px;
|
|
240
|
+
border-radius: 50%;
|
|
241
|
+
background: var(--fv-black);
|
|
242
|
+
cursor: pointer;
|
|
243
|
+
margin-top: 0;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.font-viewer-slider-group input[type='range']::-moz-range-thumb {
|
|
247
|
+
height: 15px;
|
|
248
|
+
width: 15px;
|
|
249
|
+
border-radius: 50%;
|
|
250
|
+
background: var(--fv-black);
|
|
251
|
+
cursor: pointer;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.font-viewer-slider-group input[type='range']::-moz-range-track {
|
|
255
|
+
border-radius: 9999px;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.font-viewer-slider-group input[type='range']::-ms-track {
|
|
259
|
+
width: 100%;
|
|
260
|
+
height: 1px;
|
|
261
|
+
background: transparent;
|
|
262
|
+
border-color: transparent;
|
|
263
|
+
color: transparent;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.font-viewer-slider-group input[type='range']::-ms-fill-lower,
|
|
267
|
+
.font-viewer-slider-group input[type='range']::-ms-fill-upper {
|
|
268
|
+
background: var(--fv-black);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.font-viewer-slider-group input[type='range']::-ms-thumb {
|
|
272
|
+
height: 15px;
|
|
273
|
+
width: 15px;
|
|
274
|
+
border-radius: 50%;
|
|
275
|
+
background: var(--fv-black);
|
|
276
|
+
cursor: pointer;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.font-viewer-slider-group input[type='range']::-webkit-slider-thumb,
|
|
280
|
+
.font-viewer-slider-group input[type='range']::-moz-range-thumb {
|
|
281
|
+
height: 15px;
|
|
282
|
+
width: 15px;
|
|
283
|
+
border-radius: 50%;
|
|
284
|
+
background: var(--fv-black);
|
|
285
|
+
cursor: pointer;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.font-viewer-variable-axes {
|
|
289
|
+
margin-top: 12px;
|
|
290
|
+
display: flex;
|
|
291
|
+
flex-direction: column;
|
|
292
|
+
gap: 6px;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.font-viewer-info-panel {
|
|
296
|
+
position: absolute;
|
|
297
|
+
z-index: 10001;
|
|
298
|
+
padding: 14px;
|
|
299
|
+
border-radius: 8px;
|
|
300
|
+
color: var(--fv-black);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.font-viewer-font-info {
|
|
304
|
+
width: 300px;
|
|
305
|
+
top: 8px;
|
|
306
|
+
left: 8px;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.font-viewer-glyph-info {
|
|
310
|
+
width: 150px;
|
|
311
|
+
top: 8px;
|
|
312
|
+
right: 8px;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.font-viewer-metrics-overlay .metric-line {
|
|
316
|
+
position: absolute;
|
|
317
|
+
width: 100%;
|
|
318
|
+
height: 1px;
|
|
319
|
+
background: var(--fv-metrics-color);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
.font-viewer-metrics-overlay .side-bearing-line {
|
|
323
|
+
position: absolute;
|
|
324
|
+
width: 1px;
|
|
325
|
+
height: 100%;
|
|
326
|
+
background: var(--fv-metrics-color);
|
|
327
|
+
top: 0;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.font-viewer-metrics-overlay .legend {
|
|
331
|
+
position: absolute;
|
|
332
|
+
padding-left: 14px;
|
|
333
|
+
color: var(--fv-black);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.axis-controls {
|
|
337
|
+
margin-top: 12px;
|
|
338
|
+
display: flex;
|
|
339
|
+
flex-direction: column;
|
|
340
|
+
gap: 6px;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.glyph-info-container {
|
|
344
|
+
display: flex;
|
|
345
|
+
gap: 16px;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.glyph-info-container .info-column {
|
|
349
|
+
min-width: 120px;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
.font-viewer-wrapper .monospaced {
|
|
353
|
+
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
|
|
354
|
+
}
|
package/kol-typography.css
CHANGED
|
@@ -772,6 +772,14 @@
|
|
|
772
772
|
--kol-text-body-01: 16px;
|
|
773
773
|
--kol-text-body-02: 14px;
|
|
774
774
|
--kol-text-body-03: 12px;
|
|
775
|
+
|
|
776
|
+
/* Display Tight — the condensed-caps display voice (lobbied from the
|
|
777
|
+
* website's elder type system 2026-07-16). Own ladder with a 1024px step —
|
|
778
|
+
* deliberately NOT the sans-display ladder: values preserve the lobbied
|
|
779
|
+
* rendering exactly. */
|
|
780
|
+
--kol-text-display-tight-01: 48px;
|
|
781
|
+
--kol-text-display-tight-02: 40px;
|
|
782
|
+
--kol-text-display-tight-03: 32px;
|
|
775
783
|
}
|
|
776
784
|
|
|
777
785
|
@media (min-width: 768px) {
|
|
@@ -780,6 +788,18 @@
|
|
|
780
788
|
--kol-text-display-02: 56px;
|
|
781
789
|
--kol-text-display-03: 42px;
|
|
782
790
|
--kol-text-heading-01: 56px;
|
|
791
|
+
--kol-text-display-tight-01: 64px;
|
|
792
|
+
--kol-text-display-tight-02: 48px;
|
|
793
|
+
--kol-text-display-tight-03: 40px;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
/* Display Tight tops out at 1024, not 1280 — the lobbied ladder's own step. */
|
|
798
|
+
@media (min-width: 1024px) {
|
|
799
|
+
:root {
|
|
800
|
+
--kol-text-display-tight-01: 96px;
|
|
801
|
+
--kol-text-display-tight-02: 64px;
|
|
802
|
+
--kol-text-display-tight-03: 48px;
|
|
783
803
|
}
|
|
784
804
|
}
|
|
785
805
|
|
|
@@ -813,6 +833,53 @@
|
|
|
813
833
|
/* .kol-sans-display-03 deferred — orphan in current consumers. Token defined.
|
|
814
834
|
* Add the class when a consumer needs it. */
|
|
815
835
|
|
|
836
|
+
/* =============================================================================
|
|
837
|
+
* DISPLAY TIGHT — the condensed-caps display voice: base sans + the variable
|
|
838
|
+
* width axis (font-stretch), weight 470. Uppercase BY CONTRACT — display
|
|
839
|
+
* classes are the one type family that carries text-transform; the display
|
|
840
|
+
* voice is caps by design language.
|
|
841
|
+
* Lobbied verbatim from the website's elder type system (2026-07-16) so call
|
|
842
|
+
* sites migrate without renames. `kol-heading-display` was a byte-identical
|
|
843
|
+
* duplicate of `kol-display-lg` and was not carried — map it to display-lg.
|
|
844
|
+
* ============================================================================= */
|
|
845
|
+
|
|
846
|
+
.kol-display-lg {
|
|
847
|
+
font-family: var(--kol-font-family-sans);
|
|
848
|
+
font-stretch: extra-condensed;
|
|
849
|
+
font-weight: 470;
|
|
850
|
+
font-size: var(--kol-text-display-tight-01);
|
|
851
|
+
line-height: 100%;
|
|
852
|
+
text-transform: uppercase;
|
|
853
|
+
color: var(--kol-fg-emphasis);
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
.kol-display-section {
|
|
857
|
+
font-family: var(--kol-font-family-sans);
|
|
858
|
+
font-stretch: extra-condensed;
|
|
859
|
+
font-weight: 470;
|
|
860
|
+
font-size: var(--kol-text-display-tight-02);
|
|
861
|
+
line-height: 100%;
|
|
862
|
+
text-transform: uppercase;
|
|
863
|
+
}
|
|
864
|
+
|
|
865
|
+
.kol-display-section-sm {
|
|
866
|
+
font-family: var(--kol-font-family-sans);
|
|
867
|
+
font-stretch: extra-condensed;
|
|
868
|
+
font-weight: 470;
|
|
869
|
+
font-size: var(--kol-text-display-tight-03);
|
|
870
|
+
line-height: 100%;
|
|
871
|
+
text-transform: uppercase;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/* subsection — the Narrow face, one voice quieter than section-sm */
|
|
875
|
+
.kol-display-subsection {
|
|
876
|
+
font-family: var(--kol-font-family-sans-narrow);
|
|
877
|
+
font-weight: 470;
|
|
878
|
+
font-size: var(--kol-text-display-tight-03);
|
|
879
|
+
line-height: 100%;
|
|
880
|
+
text-transform: uppercase;
|
|
881
|
+
}
|
|
882
|
+
|
|
816
883
|
/* =============================================================================
|
|
817
884
|
* HEADINGS — H1 sans Narrow, H2-H5 sans Compact, weight 500.
|
|
818
885
|
* 01 = H1 anchor (matches prose H1). 02-06 use Compact for visual rhythm
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.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",
|