@kolkrabbi/kol-framework 0.6.2 → 0.6.4

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/README.md CHANGED
@@ -17,9 +17,14 @@ npm i @kolkrabbi/kol-framework @kolkrabbi/kol-component @kolkrabbi/kol-theme
17
17
  @import "tailwindcss";
18
18
  @import "@kolkrabbi/kol-theme";
19
19
  @import "@kolkrabbi/kol-framework/kol-brand-color.css";
20
- @import "@kolkrabbi/kol-framework/kol-framework.css";
20
+ @import "@kolkrabbi/kol-framework/kol-framework.css" layer(components);
21
21
  ```
22
22
 
23
+ `layer(components)` is **required**, not optional. Unlayered rules outrank every
24
+ layered rule regardless of specificity, so a bare import promotes framework
25
+ chrome above the theme's type layer and the same package renders differently
26
+ per consumer.
27
+
23
28
  ```jsx
24
29
  import { AppShell } from '@kolkrabbi/kol-framework'
25
30
  import { NAV_TREE, getActivePage } from './sidebars.config'
package/kol-framework.css CHANGED
@@ -238,43 +238,13 @@ body {
238
238
  /* Type-sample rule removed 2026-07-09 — was drift-flagged duplicate of the
239
239
  theme-owned rule (now packages/theme/kol-components-foundry.css). */
240
240
 
241
- /* Prose moved to DS typography — see kol-typography-mono.css.
242
- See docs/documentation/06-framework/06-amendments.md 2026-04-23. */
243
-
244
- .kol-prose-indented {
245
- padding-left: 32px;
246
- border-left: 1px solid var(--kol-fg-16);
247
- }
248
-
249
- .kol-prose pre {
250
- margin: 0 0 24px;
251
- padding: 16px;
252
- border-radius: 4px;
253
- font-family: 'Right Grotesk Mono', monospace;
254
- font-size: 16px;
255
- line-height: 24px;
256
- overflow-x: auto;
257
- }
258
-
259
- .kol-prose code {
260
- font-family: var(--kol-font-family-mono, monospace);
261
- font-size: 0.9em;
262
- padding: 1px 4px;
263
- border-radius: 3px;
264
- }
265
-
266
- .kol-prose pre code {
267
- padding: 0;
268
- background: none;
269
- border-radius: 0;
270
- }
271
-
272
- .kol-prose-pullout {
273
- padding: 16px 0;
274
- margin: 32px 0;
275
- border-top: 1px solid var(--kol-fg-08);
276
- border-bottom: 1px solid var(--kol-fg-08);
277
- }
241
+ /* Prose chrome lives in kol-theme, ONE home (task 8, 2026-07-30). The copies
242
+ that stood here (.kol-prose-indented, .kol-prose-pullout, .kol-prose
243
+ pre/code) duplicated theme selectors exactly, so whichever sheet loaded last
244
+ won — and the `pre` copy hardcoded 'Right Grotesk Mono' instead of the mono
245
+ token, so when framework won, prose code rendered in the wrong family.
246
+ Owners: kol-type-roles.css (pre/code) · kol-components-atoms.css
247
+ (-indented / -pullout). Do not re-add them here. */
278
248
 
279
249
  /* ───── Fullscreen overlay ───── */
280
250
 
@@ -586,114 +556,11 @@ body {
586
556
 
587
557
  /* .kol-combo-* (+ @keyframes kol-combo-fade) relocated to kol-theme/kol-components-styleguide.css 2026-07-10 */
588
558
 
589
- /* ═════════════════════════════════════════════════════════════════════
590
- SpectrumGrid — matrix color-token grid (9 ramps × 10 stops)
591
- ═════════════════════════════════════════════════════════════════════ */
592
-
593
- .kol-spectrum-grid {
594
- display: grid;
595
- grid-template-columns: 100px repeat(10, minmax(0, 1fr));
596
- gap: 4px;
597
- width: 100%;
598
- }
599
-
600
- .kol-spectrum-grid--loading {
601
- min-height: 400px;
602
- background: var(--kol-fg-02);
603
- border-radius: 6px;
604
- }
605
-
606
- .kol-spectrum-grid-head {
607
- display: contents;
608
- }
609
-
610
- .kol-spectrum-grid-corner {
611
- grid-column: 1;
612
- }
613
-
614
- .kol-spectrum-grid-stop-label {
615
- font-family: var(--kol-font-family-mono, monospace);
616
- font-size: 11px;
617
- text-transform: uppercase;
618
- letter-spacing: 0.08em;
619
- color: var(--kol-fg-48);
620
- padding: 4px 6px;
621
- text-align: center;
622
- }
623
-
624
- .kol-spectrum-grid-row {
625
- display: contents;
626
- }
559
+ /* SpectrumGrid chrome moved to kol-theme/kol-components-molecules.css
560
+ 2026-07-30 (task 8): it was defined in BOTH packages, so the cascade picked
561
+ a winner by load order and a consumer editing the theme copy saw nothing.
562
+ Theme owns component chrome. */
627
563
 
628
- .kol-spectrum-grid-row-label {
629
- font-family: var(--kol-font-family-mono, monospace);
630
- font-size: 12px;
631
- font-weight: 500;
632
- letter-spacing: 0.02em;
633
- color: var(--kol-surface-on-primary);
634
- align-self: center;
635
- padding-right: 12px;
636
- }
637
-
638
- .kol-spectrum-grid-row-label::first-letter {
639
- text-transform: uppercase;
640
- }
641
-
642
- .kol-spectrum-grid-cell {
643
- position: relative;
644
- aspect-ratio: 5 / 3;
645
- min-width: 0;
646
- border-radius: 4px;
647
- padding: 6px 8px;
648
- display: flex;
649
- flex-direction: column;
650
- justify-content: space-between;
651
- transition: transform 120ms ease;
652
- }
653
-
654
- .kol-spectrum-grid-cell-marker {
655
- position: absolute;
656
- top: 50%;
657
- left: 50%;
658
- transform: translate(-50%, -50%);
659
- width: 10px;
660
- height: 10px;
661
- border-radius: 50%;
662
- background: currentColor;
663
- opacity: 0.85;
664
- pointer-events: none;
665
- }
666
-
667
- .kol-spectrum-grid-cell:hover {
668
- transform: scale(1.04);
669
- }
670
-
671
- .kol-spectrum-grid-cell-stop {
672
- font-family: var(--kol-font-family-mono, monospace);
673
- font-weight: 700;
674
- font-size: 12px;
675
- letter-spacing: 0.04em;
676
- }
677
-
678
- .kol-spectrum-grid-cell-hex {
679
- font-family: var(--kol-font-family-mono, monospace);
680
- font-size: 9px;
681
- text-transform: uppercase;
682
- opacity: 0.78;
683
- }
684
-
685
- @media (max-width: 900px) {
686
- .kol-spectrum-grid {
687
- grid-template-columns: 72px repeat(10, minmax(0, 1fr));
688
- gap: 2px;
689
- }
690
- .kol-spectrum-grid-cell {
691
- padding: 4px;
692
- }
693
- .kol-spectrum-grid-cell-hex {
694
- display: none;
695
- }
696
- }
697
564
 
698
565
 
699
566
  /* .kol-anatomy-sample-* relocated to kol-theme/kol-components-styleguide.css 2026-07-10 */
@@ -828,7 +695,13 @@ body {
828
695
  align-items: center;
829
696
  gap: 6px;
830
697
  font-family: var(--kol-font-family-mono, monospace);
831
- font-size: 13px;
698
+ /* The tab IS kol-mono-14 (14/18). Stated here, not as a utility class on the
699
+ element: this rule and the utility have equal specificity, so whichever
700
+ stylesheet loads last wins — and that flipped per consumer depending on
701
+ whether kol-framework.css was imported into a layer. Type lives in the
702
+ rule; do not re-add a kol-mono-* class to the tab. */
703
+ font-size: 14px;
704
+ line-height: 18px;
832
705
  font-weight: 500;
833
706
  letter-spacing: 0.02em;
834
707
  color: var(--kol-fg-64);
@@ -856,7 +729,8 @@ body {
856
729
  }
857
730
 
858
731
  .kol-shell-header-tab {
859
- font-size: 16px;
732
+ /* No type bump — 14/18 is the tab size at every viewport (user ruling
733
+ 2026-07-30). Only the spacing breathes at wide widths. */
860
734
  gap: 8px;
861
735
  padding-top: 10px;
862
736
  padding-bottom: 14px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-framework",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "description": "KOL app shell — sidenav, layout, theme toggle, footer, heroes + brand color layer. SideNav takes nav data as props so the tree stays app-local.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  "app-shell"
28
28
  ],
29
29
  "dependencies": {
30
- "@kolkrabbi/kol-component": "0.12.19",
30
+ "@kolkrabbi/kol-component": "0.13.0",
31
31
  "@kolkrabbi/kol-icons": "0.8.10"
32
32
  },
33
33
  "peerDependencies": {
@@ -112,7 +112,7 @@ export default function ShellHeader({
112
112
  <a
113
113
  key={item.href ?? item.label}
114
114
  href={item.href}
115
- className="kol-shell-header-tab kol-mono-14"
115
+ className="kol-shell-header-tab"
116
116
  aria-current={active ? 'page' : undefined}
117
117
  onClick={onNavigate ? (event) => onNavigate(event, item) : undefined}
118
118
  >