@kolkrabbi/kol-theme 0.53.0 → 0.55.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.
@@ -262,15 +262,33 @@
262
262
  */
263
263
 
264
264
  /* =============================================================================
265
- * FeatureSplit
265
+ * SectionSplit + SectionText (the section family, SectionSet 2026-08-26)
266
+ *
267
+ * `.kol-section-text-{label,pull,body}` are the text block's classes and
268
+ * `.kol-section-split-*` the split's; every `.kol-feature-split-*` selector
269
+ * below is the same rule under the old name, kept ONE release for a consumer's
270
+ * own CSS still pointing at it — dropped at the next major.
266
271
  * ============================================================================= */
267
272
 
268
- .kol-feature-split {
273
+ .kol-feature-split,
274
+ .kol-section-split {
269
275
  background: var(--kol-surface-primary);
270
276
  color: var(--kol-surface-on-primary);
271
277
  }
272
278
 
273
- .kol-feature-split-kicker {
279
+ /* THE EYEBROW IS UPPERCASE BY ROLE (user ruling 2026-08-26, the fourth time).
280
+ * Casing is a property of the ROLE, not a law about strings: an eyebrow /
281
+ * kicker / section label is caps by design language — the display voice
282
+ * already carries its transform "by contract" — while body copy, buttons and
283
+ * tags render as authored. SectionText stamps this on every label it renders,
284
+ * whatever voice class rides beside it. The old "no text-transform, ever" was
285
+ * one call about button strings written up as a law for every string. */
286
+ .kol-section-text-eyebrow {
287
+ text-transform: uppercase;
288
+ }
289
+
290
+ .kol-feature-split-kicker,
291
+ .kol-section-text-label {
274
292
  font-family: var(--kol-font-family-mono, monospace);
275
293
  font-size: 18px;
276
294
  font-weight: 600;
@@ -278,7 +296,8 @@
278
296
  color: var(--kol-accent-primary);
279
297
  }
280
298
 
281
- .kol-feature-split-pull {
299
+ .kol-feature-split-pull,
300
+ .kol-section-text-pull {
282
301
  margin: 0;
283
302
  font-family: var(--kol-font-family-sans);
284
303
  font-weight: 700;
@@ -288,7 +307,8 @@
288
307
  color: var(--kol-surface-on-primary);
289
308
  }
290
309
 
291
- .kol-feature-split-pull em {
310
+ .kol-feature-split-pull em,
311
+ .kol-section-text-pull em {
292
312
  font-family: var(--kol-font-family-sans);
293
313
  font-feature-settings: "liga", "dlig";
294
314
  font-weight: 700;
@@ -296,7 +316,8 @@
296
316
  color: var(--kol-accent-primary);
297
317
  }
298
318
 
299
- .kol-feature-split-body {
319
+ .kol-feature-split-body,
320
+ .kol-section-text-body {
300
321
  margin: 0;
301
322
  font-family: var(--kol-font-family-sans);
302
323
  font-weight: 400;
@@ -305,11 +326,13 @@
305
326
  color: color-mix(in srgb, var(--kol-surface-on-primary) 72%, transparent);
306
327
  }
307
328
 
308
- .kol-feature-split-meta {
329
+ .kol-feature-split-meta,
330
+ .kol-section-split-meta {
309
331
  border-top: 1px solid color-mix(in srgb, var(--kol-surface-on-primary) 8%, transparent);
310
332
  }
311
333
 
312
- .kol-feature-split-meta-num {
334
+ .kol-feature-split-meta-num,
335
+ .kol-section-split-meta-num {
313
336
  font-family: var(--kol-font-family-sans);
314
337
  font-weight: 900;
315
338
  font-size: 32px;
@@ -318,7 +341,8 @@
318
341
  color: var(--kol-surface-on-primary);
319
342
  }
320
343
 
321
- .kol-feature-split-meta-label {
344
+ .kol-feature-split-meta-label,
345
+ .kol-section-split-meta-label {
322
346
  font-family: var(--kol-font-family-mono, monospace);
323
347
  font-size: 10px;
324
348
  font-weight: 600;
@@ -326,7 +350,8 @@
326
350
  color: color-mix(in srgb, var(--kol-surface-on-primary) 48%, transparent);
327
351
  }
328
352
 
329
- .kol-feature-split-visual img {
353
+ .kol-feature-split-visual img,
354
+ .kol-section-split-visual img {
330
355
  width: 100%;
331
356
  height: 100%;
332
357
  object-fit: cover;
@@ -341,20 +366,25 @@
341
366
  * 2026-08-12) — one motion vocabulary, not two. Motion chrome is DS CSS, never
342
367
  * a JSX utility (the ComponentTailwindSourceTrap law). The frame's own
343
368
  * overflow-hidden + radius clip the scale. */
344
- .kol-feature-split-visual.is-hoverable > :first-child {
369
+ .kol-feature-split-visual.is-hoverable > :first-child,
370
+ .kol-section-split-visual.is-hoverable > :first-child {
345
371
  transition: transform 300ms ease;
346
372
  }
347
373
 
348
- .kol-feature-split-visual.is-hoverable:hover > :first-child {
374
+ .kol-feature-split-visual.is-hoverable:hover > :first-child,
375
+ .kol-section-split-visual.is-hoverable:hover > :first-child {
349
376
  transform: scale(1.03);
350
377
  }
351
378
 
352
379
  @media (prefers-reduced-motion: reduce) {
353
- .kol-feature-split-visual.is-hoverable > :first-child { transition: none; }
354
- .kol-feature-split-visual.is-hoverable:hover > :first-child { transform: none; }
380
+ .kol-feature-split-visual.is-hoverable > :first-child,
381
+ .kol-section-split-visual.is-hoverable > :first-child { transition: none; }
382
+ .kol-feature-split-visual.is-hoverable:hover > :first-child,
383
+ .kol-section-split-visual.is-hoverable:hover > :first-child { transform: none; }
355
384
  }
356
385
 
357
- .kol-feature-split-visual-veil {
386
+ .kol-feature-split-visual-veil,
387
+ .kol-section-split-visual-veil {
358
388
  position: absolute;
359
389
  inset: 0;
360
390
  background: linear-gradient(
@@ -366,7 +396,8 @@
366
396
  pointer-events: none;
367
397
  }
368
398
 
369
- .kol-feature-split-visual-caption {
399
+ .kol-feature-split-visual-caption,
400
+ .kol-section-split-visual-caption {
370
401
  position: absolute;
371
402
  left: 24px;
372
403
  bottom: 24px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.53.0",
3
+ "version": "0.55.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",