@kolkrabbi/kol-component 0.245.0 → 0.246.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolkrabbi/kol-component",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.246.0",
|
|
4
4
|
"description": "The core component library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"embla-carousel-react": "^8.6.0",
|
|
27
27
|
"pdfjs-dist": "^6.3.289",
|
|
28
28
|
"react-syntax-highlighter": "^16.1.1",
|
|
29
|
-
"@kolkrabbi/kol-
|
|
30
|
-
"@kolkrabbi/kol-
|
|
29
|
+
"@kolkrabbi/kol-markdown": "^0.1.3",
|
|
30
|
+
"@kolkrabbi/kol-search": "^0.3.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@kolkrabbi/kol-icons": ">=0.22.0",
|
package/src/index.js
CHANGED
|
@@ -38,6 +38,9 @@ export { default as IconFrame } from './atoms/IconFrame.jsx'
|
|
|
38
38
|
export { default as ExitPreview } from './utilities/ExitPreview.jsx'
|
|
39
39
|
export { default as Figure } from './atoms/Figure.jsx'
|
|
40
40
|
export { default as FullscreenOverlay } from './utilities/FullscreenOverlay.jsx'
|
|
41
|
+
/* the overlay layer stack — which open layer owns Escape; exported so a layer in another package
|
|
42
|
+
* (kol-shell's walkthrough) joins the same stack instead of a second one (2026-10-09) */
|
|
43
|
+
export { pushLayer, popLayer, isTopLayer } from './utilities/layerStack.js'
|
|
41
44
|
/* BackgroundVideo — renamed from HlsVideo and moved to utilities 2026-10-01 (user ruling: no UI,
|
|
42
45
|
* and the name said how it streams, not what it is for). `HlsVideo` is the alias, on the ledger. */
|
|
43
46
|
export { default as BackgroundVideo, default as HlsVideo } from './utilities/BackgroundVideo.jsx'
|
|
@@ -107,7 +107,7 @@ export default function SectionText({
|
|
|
107
107
|
? <p className={cls(bodyClass, 'body')} style={slotStyle.body}>{body}</p>
|
|
108
108
|
: <div className={cls(bodyClass, 'body')} style={slotStyle.body}>{body}</div>)
|
|
109
109
|
const cluster = actions && (
|
|
110
|
-
<div className={cls(`${actionsClass} shrink-0 h-0 self-center`, 'actions')} style={slotStyle.actions}>{actions}</div>
|
|
110
|
+
<div className={cls(`${actionsClass} shrink-0 md:h-0 md:self-center`, 'actions')} style={slotStyle.actions}>{actions}</div>
|
|
111
111
|
)
|
|
112
112
|
return (
|
|
113
113
|
<div className={`kol-section-text flex flex-col ${gap} ${alignCls} ${className}`.replace(/\s+/g, ' ').trim()} style={style}>
|
|
@@ -133,7 +133,10 @@ export default function SectionText({
|
|
|
133
133
|
* have been space between … on the right edge"). The column is `items-start`, so this
|
|
134
134
|
* row shrank to its content and `justify-between` had no room to act: the cluster sat
|
|
135
135
|
* against the subtitle on every PageHeader with actions. */
|
|
136
|
-
|
|
136
|
+
/* BELOW `md` THE CLUSTER DROPS UNDER THE BODY (kol-fxr 2026-10-09, HubSettingsHeaderAt390:
|
|
137
|
+
* at 390 the cluster kept its natural width and left the lede ~110px, three lines). It
|
|
138
|
+
* takes its own row there, with its real height; the zero-height trick is a desk rule. */
|
|
139
|
+
<div className="flex flex-col md:flex-row self-stretch md:items-baseline md:justify-between gap-3 md:gap-6">
|
|
137
140
|
{bodyNode}
|
|
138
141
|
{cluster}
|
|
139
142
|
</div>
|
|
@@ -523,19 +523,39 @@ const ContentFilters = ({
|
|
|
523
523
|
|
|
524
524
|
{/* the view family's own line below md (`auto`) or always (`below`) —
|
|
525
525
|
* full width, wrapping, so no view is ever off the page */}
|
|
526
|
-
{
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
)
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
526
|
+
{/* BELOW `md` THE VIEW STRIP AND THE TRAILING CONTROLS SHARE ONE WRAPPING LINE (kol-fxr
|
|
527
|
+
* 2026-10-09, HubSettingsHeaderAt390: fxr's SETTINGS label and its options/shortcuts toggle
|
|
528
|
+
* were two ragged rows of one rung). Same rung, same line; it still wraps when they do not
|
|
529
|
+
* fit, so nothing is ever off the page. `below` placements keep their own line at every width. */}
|
|
530
|
+
{(() => {
|
|
531
|
+
const view = viewModeOptions && viewPlacement !== 'header'
|
|
532
|
+
const trail = trailingActions && trailingPlacement !== 'header'
|
|
533
|
+
const shared = view && trail && viewPlacement === 'auto' && trailingPlacement === 'auto'
|
|
534
|
+
if (shared) return (
|
|
535
|
+
<div className="md:hidden mb-3 flex flex-wrap items-center gap-6 gap-y-2">
|
|
536
|
+
{/* the desk's order — trailing, then the strip — so a consumer's divider sits between them */}
|
|
537
|
+
{trailingActions}
|
|
538
|
+
{viewStrip('flex flex-wrap gap-y-2')}
|
|
539
|
+
</div>
|
|
540
|
+
)
|
|
541
|
+
return (
|
|
542
|
+
<>
|
|
543
|
+
{view && (
|
|
544
|
+
<div className={`${viewPlacement === 'auto' ? 'md:hidden ' : ''}mb-3`}>
|
|
545
|
+
{viewStrip('flex flex-wrap gap-y-2')}
|
|
546
|
+
</div>
|
|
547
|
+
)}
|
|
548
|
+
{/* the consumer's trailing controls: their OWN line below md (`auto`) or
|
|
549
|
+
* always (`below`) — full width, wrapping. In the below row's right
|
|
550
|
+
* group they measured 223px beside LIST/GRID in a 342px track. */}
|
|
551
|
+
{trail && (
|
|
552
|
+
<div className={`${trailingPlacement === 'auto' ? 'md:hidden ' : ''}mb-3 flex flex-wrap items-center gap-6 gap-y-2`}>
|
|
553
|
+
{trailingActions}
|
|
554
|
+
</div>
|
|
555
|
+
)}
|
|
556
|
+
</>
|
|
557
|
+
)
|
|
558
|
+
})()}
|
|
539
559
|
|
|
540
560
|
{/* BELOW the divider: the filter GROUPS only. Left-aligned columns —
|
|
541
561
|
* label above values — visible only while the filter toggle is open.
|