@kolkrabbi/kol-component 0.245.0 → 0.247.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.247.0",
|
|
4
4
|
"description": "The core component library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"react-dom": "^18.3.0 || ^19.0.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@kolkrabbi/kol-icons": "^0.
|
|
41
|
+
"@kolkrabbi/kol-icons": "^0.35.0"
|
|
42
42
|
},
|
|
43
43
|
"files": [
|
|
44
44
|
"src",
|
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'
|
|
@@ -6,8 +6,8 @@ import ContentText from './ContentText.jsx'
|
|
|
6
6
|
* the variant has one) beside the ruled text. Box values — thumb size, gap,
|
|
7
7
|
* padding, frame — default per variant to the RULED structures from the live
|
|
8
8
|
* review (06-content-card-system.md §2 boxes): default is a bare table-like
|
|
9
|
-
* line with a 48px thumb; catalog/print are framed between-headers with
|
|
10
|
-
* thumb; article rides a 120px 16:9 thumb; work a framed 64px row; typeface a
|
|
9
|
+
* line with a 48px thumb; catalog/print are framed between-headers with a
|
|
10
|
+
* 36 square thumb when `media` is passed (none without); article rides a 120px 16:9 thumb; work a framed 64px row; typeface a
|
|
11
11
|
* framed no-thumb block.
|
|
12
12
|
*
|
|
13
13
|
* @param {string} variant file | catalog | print | article | work | typeface | roster
|
|
@@ -57,7 +57,10 @@ const BOX = {
|
|
|
57
57
|
/* catalog/print rows render AT 36px — the shipped GridCard list row is a
|
|
58
58
|
* fixed 36 and the Y padding was what pushed it past that. X padding stays;
|
|
59
59
|
* `minH` is now the whole height budget and the row centres inside it. */
|
|
60
|
-
catalog
|
|
60
|
+
/* catalog carries a thumb (2026-10-09 — user: "catalog should change its default"): the full
|
|
61
|
+
* 36 rung, square, and ONLY when `media` is passed — every catalog row that never had one keeps
|
|
62
|
+
* none, rather than growing a MISSING plate (`mediaOnly`). */
|
|
63
|
+
catalog: { thumb: 36, mediaOnly: true, ratio: '1 / 1', pad: `0 ${S3}`, gap: S3, frame: 'var(--kol-fg-04)', bg: 'var(--kol-surface-tertiary)', minH: 36, align: 'items-center', hover: 'var(--kol-oq-04)' },
|
|
61
64
|
/* ListingCard's row thumb is `bg-fg-12` bare — a tint, no border. */
|
|
62
65
|
/* article had NO hover of any kind — the only row in the family you could
|
|
63
66
|
* point at and get nothing back. It has no surface of its own, so it takes
|
|
@@ -188,7 +191,7 @@ export default function ContentRow({
|
|
|
188
191
|
* consumer listing coverless documents should not have to say it two
|
|
189
192
|
* different ways on the card and the row. `media={false}` reads the same in
|
|
190
193
|
* both; `thumb` still wins when it is passed explicitly. */
|
|
191
|
-
const thumbPx = thumb ?? (media === false ? 0 : box.thumb)
|
|
194
|
+
const thumbPx = thumb ?? (media === false || (box.mediaOnly && media == null) ? 0 : box.thumb)
|
|
192
195
|
const padY = (paddingY != null ? `${paddingY}px` : String(box.pad)).trim().split(/\s+/)[0]
|
|
193
196
|
|
|
194
197
|
/* The md: STEP is a custom property, not a Tailwind variant. Tailwind cannot
|
|
@@ -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.
|