@kolkrabbi/kol-framework 0.45.0 → 0.47.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-framework.css +1 -1
- package/package.json +3 -3
- package/src/PageLayout.jsx +1 -1
- package/src/ShellHeader.jsx +7 -3
- package/src/SideNav.jsx +1 -1
- package/src/ThemeToggle.jsx +4 -2
package/kol-framework.css
CHANGED
|
@@ -177,7 +177,7 @@ body {
|
|
|
177
177
|
}
|
|
178
178
|
/* A nested route GROUP's header (sidenav-nested-groups, kol-studio
|
|
179
179
|
* 2026-08-26): a non-routing label sitting where a leaf sits, its rows one
|
|
180
|
-
* step further in. Type and
|
|
180
|
+
* step further in. Type and color ride the element as utilities
|
|
181
181
|
* (kol-helper-10; text-subtle, text-emphasis when a leaf beneath it is the
|
|
182
182
|
* route); the box lives here. No text-transform — the retired fork's
|
|
183
183
|
* `uppercase` does not return (type law: only the display voice carries one). */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.0",
|
|
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",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"react-router-dom": "^6.0.0 || ^7.0.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@kolkrabbi/kol-
|
|
25
|
-
"@kolkrabbi/kol-
|
|
24
|
+
"@kolkrabbi/kol-icons": "^0.30.0",
|
|
25
|
+
"@kolkrabbi/kol-component": "^0.230.0"
|
|
26
26
|
},
|
|
27
27
|
"files": [
|
|
28
28
|
"src",
|
package/src/PageLayout.jsx
CHANGED
|
@@ -55,7 +55,7 @@ export const ShellTocCollapsedContext = createContext(null)
|
|
|
55
55
|
* @param {ReactNode} footer below the outlet on the plane
|
|
56
56
|
* @param {ReactNode} defaultTocContent the TOC rail's content when no page registers one
|
|
57
57
|
* @param {object} sideNav every SideNav prop this layout does not own, spread onto the rail
|
|
58
|
-
* @param {string} pageWash the plane's wash, a CSS
|
|
58
|
+
* @param {string} pageWash the plane's wash, a CSS color (e.g. `'var(--kol-fg-02)'`)
|
|
59
59
|
* @param {boolean} bare plane + outlet only (default false)
|
|
60
60
|
*/
|
|
61
61
|
export default function PageLayout({ navTree = [], header, footer, defaultTocContent, sideNav, pageWash, bare = false }) {
|
package/src/ShellHeader.jsx
CHANGED
|
@@ -36,6 +36,8 @@ import ThemeToggle from './ThemeToggle.jsx'
|
|
|
36
36
|
* @param {ReactNode} actions Row-1 trailing slot before the theme toggle (e.g. a search-overlay trigger)
|
|
37
37
|
* @param {boolean} showThemeToggle render the framework ThemeToggle (default true)
|
|
38
38
|
* @param {Function} onMenuClick hamburger click; button renders only when set
|
|
39
|
+
* @param {boolean} menuBelowLg the hamburger shows only below `lg` (2026-09-30, the names audit — on a desktop the tab row's own
|
|
40
|
+
* rail toggles do its job, so it read as a duplicate; default false keeps every consumer as it was)
|
|
39
41
|
* @param {Function} onNavToggle dock-left click → toggle left nav; button renders only when set (lg+)
|
|
40
42
|
* @param {Function} onTocToggle dock-right click → toggle TOC rail; button renders only when set (lg+)
|
|
41
43
|
* @param {boolean} navCollapsed tints the dock-left button
|
|
@@ -82,6 +84,7 @@ export default function ShellHeader({
|
|
|
82
84
|
actions,
|
|
83
85
|
showThemeToggle = true,
|
|
84
86
|
onMenuClick,
|
|
87
|
+
menuBelowLg = false,
|
|
85
88
|
onNavToggle,
|
|
86
89
|
onTocToggle,
|
|
87
90
|
navCollapsed,
|
|
@@ -136,7 +139,7 @@ export default function ShellHeader({
|
|
|
136
139
|
</>
|
|
137
140
|
)}
|
|
138
141
|
{onMenuClick && (
|
|
139
|
-
<Tooltip label="
|
|
142
|
+
<Tooltip label="Menu">
|
|
140
143
|
{/* IconFrame, not Button (user ruling 2026-08-01). Header
|
|
141
144
|
* chrome takes a click but must not light up; the frame has
|
|
142
145
|
* no state rules at all, which is the property Button can
|
|
@@ -146,6 +149,7 @@ export default function ShellHeader({
|
|
|
146
149
|
name="hamburger"
|
|
147
150
|
variant="nav"
|
|
148
151
|
size="md"
|
|
152
|
+
className={menuBelowLg ? 'lg:hidden' : ''}
|
|
149
153
|
onClick={onMenuClick}
|
|
150
154
|
aria-label="Open navigation menu"
|
|
151
155
|
/>
|
|
@@ -193,7 +197,7 @@ export default function ShellHeader({
|
|
|
193
197
|
{(onNavToggle || onTocToggle) && (
|
|
194
198
|
<div className="hidden lg:flex items-center gap-1 pb-2">
|
|
195
199
|
{onNavToggle && (
|
|
196
|
-
<Tooltip label="
|
|
200
|
+
<Tooltip label="Navigation">
|
|
197
201
|
{/* The collapsed tint is a VARIANT SWAP, not a state:
|
|
198
202
|
* `ghost` rests at oq-48, `nav` at oq-64, and both are
|
|
199
203
|
* static classes with no rules to fire. That is the only
|
|
@@ -211,7 +215,7 @@ export default function ShellHeader({
|
|
|
211
215
|
</Tooltip>
|
|
212
216
|
)}
|
|
213
217
|
{onTocToggle && (
|
|
214
|
-
<Tooltip label="
|
|
218
|
+
<Tooltip label="Contents">
|
|
215
219
|
<IconFrame
|
|
216
220
|
name="panel-right"
|
|
217
221
|
variant={tocCollapsed ? 'ghost' : 'nav'}
|
package/src/SideNav.jsx
CHANGED
|
@@ -398,7 +398,7 @@ function SideNavInner({
|
|
|
398
398
|
* the aside's position/height/stack live in .kol-sidenav
|
|
399
399
|
* (kol-framework.css). `sticky … h-dvh z-20` here outranked the 767px
|
|
400
400
|
* drawer rule's `position: fixed`, so every consumer page opened one
|
|
401
|
-
* viewport down on phones. Only
|
|
401
|
+
* viewport down on phones. Only color utilities ride the element. */
|
|
402
402
|
className={`kol-sidenav${background ? ' bg-surface-primary' : ''}${hairline ? ' border-r border-fg-08' : ''}${collapsed ? ' is-collapsed' : ''}${drawerOpen ? ' is-drawer-open' : ''}`}
|
|
403
403
|
>
|
|
404
404
|
{/* NO chip Button in either state (user build order 2026-08-09 — "MAKE
|
package/src/ThemeToggle.jsx
CHANGED
|
@@ -155,9 +155,11 @@ export default function ThemeToggle({
|
|
|
155
155
|
const shared = {
|
|
156
156
|
type: 'button',
|
|
157
157
|
onClick,
|
|
158
|
-
'aria-label': `Switch to ${next} mode`,
|
|
158
|
+
'aria-label': `Switch to ${next} mode${resetHint}`,
|
|
159
159
|
}
|
|
160
|
-
|
|
160
|
+
/* ONE WORD (2026-09-30, open questions Round 1 Q4 — ruled many times); the alt-click hint
|
|
161
|
+
* stays in the aria-label and the S sheet, not the tooltip */
|
|
162
|
+
const tip = 'Theme'
|
|
161
163
|
const wrap = (node) => (tooltip ? <Tooltip label={tip}>{node}</Tooltip> : node)
|
|
162
164
|
|
|
163
165
|
/* ── DEPRECATED aliases — old chrome verbatim (0.6.x) ── */
|