@kolkrabbi/kol-framework 0.27.1 → 0.29.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 +9 -48
- package/package.json +3 -3
- package/src/index.js +1 -1
- package/src/theme.js +16 -0
package/kol-framework.css
CHANGED
|
@@ -437,54 +437,15 @@ body {
|
|
|
437
437
|
Owners: kol-type-roles.css (pre/code) · kol-components-atoms.css
|
|
438
438
|
(-indented / -pullout). Do not re-add them here. */
|
|
439
439
|
|
|
440
|
-
/* ───── Fullscreen overlay
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
justify-content: center;
|
|
450
|
-
padding: 48px 24px;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
.kol-overlay-sheet {
|
|
454
|
-
position: relative;
|
|
455
|
-
max-width: var(--kol-container-max);
|
|
456
|
-
max-height: 100%;
|
|
457
|
-
width: 100%;
|
|
458
|
-
display: flex;
|
|
459
|
-
align-items: center;
|
|
460
|
-
justify-content: center;
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
.kol-overlay-sheet img {
|
|
464
|
-
max-width: 100%;
|
|
465
|
-
max-height: 90vh;
|
|
466
|
-
object-fit: contain;
|
|
467
|
-
display: block;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
.kol-overlay-close {
|
|
471
|
-
position: absolute;
|
|
472
|
-
top: -48px;
|
|
473
|
-
right: 0;
|
|
474
|
-
width: 40px;
|
|
475
|
-
height: 40px;
|
|
476
|
-
border-radius: 4px;
|
|
477
|
-
background: transparent;
|
|
478
|
-
border: 1px solid color-mix(in srgb, var(--kol-surface-on-inverse) 32%, transparent);
|
|
479
|
-
color: var(--kol-surface-on-inverse);
|
|
480
|
-
cursor: pointer;
|
|
481
|
-
font-size: 24px;
|
|
482
|
-
line-height: 1;
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
.kol-overlay-close:hover {
|
|
486
|
-
background: color-mix(in srgb, var(--kol-surface-on-inverse) 8%, transparent);
|
|
487
|
-
}
|
|
440
|
+
/* ───── Fullscreen overlay — RETIRED 2026-08-27 (DocPageAndKindShowcase, kol-r2b2)
|
|
441
|
+
* The framework shipped its own `.kol-overlay` / `.kol-overlay-sheet` /
|
|
442
|
+
* `.kol-overlay-close` (an inverse 88 % scrim, a 100 %-wide sheet, a hand-drawn
|
|
443
|
+
* close) that beat the theme's FullscreenOverlay rules whenever a consumer
|
|
444
|
+
* imported the framework after the theme — a light wash in dark mode and a sheet
|
|
445
|
+
* that swallowed every click, so click-away died; kol-r2b2 overrode both. No
|
|
446
|
+
* framework component renders these classes. The theme's rules
|
|
447
|
+
* (kol-components-atoms.css: flat `surface-primary` scrim, a sheet that hugs its
|
|
448
|
+
* panel, the DS Button close) are the one definition. */
|
|
488
449
|
|
|
489
450
|
/* ───── Carousel (embla) ───── */
|
|
490
451
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.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",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"react-router-dom": "^6.0.0 || ^7.0.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@kolkrabbi/kol-component": "^0.
|
|
24
|
-
"@kolkrabbi/kol-icons": "^0.
|
|
23
|
+
"@kolkrabbi/kol-component": "^0.114.0",
|
|
24
|
+
"@kolkrabbi/kol-icons": "^0.23.0"
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
27
27
|
"src",
|
package/src/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { default as SideNav } from './SideNav.jsx'
|
|
|
13
13
|
export { default as useDragResize } from './useDragResize.js'
|
|
14
14
|
export { default as ShellHeader, HEADER_ICON } from './ShellHeader.jsx'
|
|
15
15
|
export { default as ThemeToggle } from './ThemeToggle.jsx'
|
|
16
|
-
export { useTheme, applyTheme, getInitialTheme, THEME_STORAGE_KEY } from './theme.js'
|
|
16
|
+
export { useTheme, applyTheme, getInitialTheme, THEME_STORAGE_KEY, THEME_BOOT_SCRIPT } from './theme.js'
|
|
17
17
|
export { default as Layout } from './Layout.jsx'
|
|
18
18
|
export { default as PageSection } from './PageSection.jsx'
|
|
19
19
|
export { default as PortalFooter } from './PortalFooter.jsx'
|
package/src/theme.js
CHANGED
|
@@ -18,6 +18,22 @@ import { useEffect, useState } from 'react'
|
|
|
18
18
|
|
|
19
19
|
export const THEME_STORAGE_KEY = 'kol-theme'
|
|
20
20
|
|
|
21
|
+
/* THE NO-FLASH BOOT SNIPPET (ShellHomeSystem, 2026-08-27 — every app hand-wrote
|
|
22
|
+
* it against this file's key): inline it in index.html before the app script.
|
|
23
|
+
* USER law: explicit choice > system > light — a saved light/dark stamps
|
|
24
|
+
* `data-theme` before first paint; no saved choice leaves the page un-stamped
|
|
25
|
+
* so the theme CSS follows the OS live. The versioned cutover (v3, 2026-07-30)
|
|
26
|
+
* discards stamps written by the old two-state toggle, once. */
|
|
27
|
+
export const THEME_BOOT_SCRIPT = `try {
|
|
28
|
+
if (localStorage.getItem('kol-theme-v') !== '3') {
|
|
29
|
+
localStorage.removeItem('kol-theme')
|
|
30
|
+
localStorage.removeItem('theme')
|
|
31
|
+
localStorage.setItem('kol-theme-v', '3')
|
|
32
|
+
}
|
|
33
|
+
var t = localStorage.getItem('kol-theme')
|
|
34
|
+
if (t === 'light' || t === 'dark') document.documentElement.dataset.theme = t
|
|
35
|
+
} catch (e) {}`
|
|
36
|
+
|
|
21
37
|
function getExplicitTheme() {
|
|
22
38
|
const attr = document.documentElement.dataset.theme
|
|
23
39
|
if (attr === 'light' || attr === 'dark') return attr
|