@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 +6 -1
- package/kol-framework.css +20 -146
- package/package.json +2 -2
- package/src/ShellHeader.jsx +1 -1
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
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
30
|
+
"@kolkrabbi/kol-component": "0.13.0",
|
|
31
31
|
"@kolkrabbi/kol-icons": "0.8.10"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
package/src/ShellHeader.jsx
CHANGED
|
@@ -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
|
|
115
|
+
className="kol-shell-header-tab"
|
|
116
116
|
aria-current={active ? 'page' : undefined}
|
|
117
117
|
onClick={onNavigate ? (event) => onNavigate(event, item) : undefined}
|
|
118
118
|
>
|