@kolkrabbi/kol-component 0.76.0 → 0.76.2
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.76.
|
|
3
|
+
"version": "0.76.2",
|
|
4
4
|
"description": "KOL design-system components — atoms through organisms, emitting canonical kol-* classes. Pairs with @kolkrabbi/kol-theme for styling.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* @param {string} [gap='gap-4'] inner rhythm (a Tailwind gap step)
|
|
28
28
|
* @param {ReactNode} children extra slots rendered between body and actions
|
|
29
29
|
* (the split's stats strip)
|
|
30
|
-
* @param {string} labelClass · bodyClass · actionsClass full class overrides
|
|
30
|
+
* @param {string} labelClass · bodyClass · actionsClass full class overrides (label default: the hero's `kol-helper-12 text-meta`)
|
|
31
31
|
* @param {string} className extra classes on the block
|
|
32
32
|
*/
|
|
33
33
|
export const HEADLINE_ROLE = {
|
|
@@ -54,7 +54,11 @@ export default function SectionText({
|
|
|
54
54
|
align = 'start',
|
|
55
55
|
gap = 'gap-4',
|
|
56
56
|
children,
|
|
57
|
-
|
|
57
|
+
/* ONE eyebrow voice across the set (SectionTextLabelVoice, user 2026-08-26:
|
|
58
|
+
* "closer to the hero eyebrow") — the hero's helper-12 / meta, small and
|
|
59
|
+
* quiet, not the split's mono-18 accent kicker. Uppercase stays: that is
|
|
60
|
+
* the eyebrow ROLE (ruled the same day), on `.kol-section-text-eyebrow`. */
|
|
61
|
+
labelClass = 'kol-helper-12 text-meta',
|
|
58
62
|
bodyClass = 'kol-section-text-body',
|
|
59
63
|
actionsClass = 'flex flex-wrap gap-4',
|
|
60
64
|
className = '',
|
|
@@ -103,6 +103,10 @@ function MediaLayer({ media }) {
|
|
|
103
103
|
* @param {ReactNode} foot a node rendered across the hero's bottom edge
|
|
104
104
|
* @param {number} overlap how far `foot` rises into the hero, px (default 250)
|
|
105
105
|
* @param {boolean} autoPlay · {number} autoPlayInterval · {'stack'|'header'} navPosition carousel only
|
|
106
|
+
* @param {Function} renderTitle · {string} ctaLabel · {Function} onNavigate · {boolean} showTitle · showDescription · showCta ·
|
|
107
|
+
* {string} titleClassName · descriptionClassName · {Object} options carousel only — FeaturedCarousel's
|
|
108
|
+
* seams, forwarded whole (SectionHeroCarouselSeams, 2026-08-26: the foundry index sets each
|
|
109
|
+
* slide's title in the typeface's own font and routes the CTA through the SPA)
|
|
106
110
|
* @param {string} height 'full' | '80' | '60' (viewport tiers) · 'lg' | 'md' | 'screen' (aliases) · or a height class string
|
|
107
111
|
* @param {ReactNode} label · headline · body · actions the composed text (SectionText)
|
|
108
112
|
* @param {string} [headlineSize='display-04']
|
|
@@ -129,6 +133,15 @@ export default function SectionHero({
|
|
|
129
133
|
autoPlay = false,
|
|
130
134
|
autoPlayInterval = 5000,
|
|
131
135
|
navPosition = 'stack',
|
|
136
|
+
renderTitle,
|
|
137
|
+
ctaLabel,
|
|
138
|
+
onNavigate,
|
|
139
|
+
showTitle,
|
|
140
|
+
showDescription,
|
|
141
|
+
showCta,
|
|
142
|
+
titleClassName,
|
|
143
|
+
descriptionClassName,
|
|
144
|
+
options,
|
|
132
145
|
height = 'lg',
|
|
133
146
|
label,
|
|
134
147
|
headline,
|
|
@@ -163,7 +176,6 @@ export default function SectionHero({
|
|
|
163
176
|
actions={actions}
|
|
164
177
|
align="center"
|
|
165
178
|
gap="gap-6"
|
|
166
|
-
labelClass="kol-helper-12 text-meta"
|
|
167
179
|
bodyClass="kol-sans-body-02 text-body"
|
|
168
180
|
actionsClass="flex flex-wrap gap-4 justify-center"
|
|
169
181
|
className="max-w-[var(--kol-content-column)]"
|
|
@@ -205,6 +217,7 @@ export default function SectionHero({
|
|
|
205
217
|
autoPlay={autoPlay}
|
|
206
218
|
autoPlayInterval={autoPlayInterval}
|
|
207
219
|
navPosition={navPosition}
|
|
220
|
+
{...Object.fromEntries(Object.entries({ renderTitle, ctaLabel, onNavigate, showTitle, showDescription, showCta, titleClassName, descriptionClassName, options }).filter(([, v]) => v !== undefined))}
|
|
208
221
|
className={`kol-section-hero-carousel ${fullBleed ? 'w-screen ml-[calc(50%-50vw)]' : ''} ${className}`.replace(/\s+/g, ' ').trim()}
|
|
209
222
|
>
|
|
210
223
|
{children}
|
|
@@ -223,7 +236,6 @@ export default function SectionHero({
|
|
|
223
236
|
/* gap-6 — the rhythm every hand-built OverlayGlassPanel hero ran on,
|
|
224
237
|
* so the composed route lands on the same pixels */
|
|
225
238
|
gap="gap-6"
|
|
226
|
-
labelClass="kol-helper-12 text-meta"
|
|
227
239
|
bodyClass="kol-sans-body-02 text-body"
|
|
228
240
|
actionsClass={`flex flex-wrap gap-4${align === 'center' ? ' justify-center' : ''}`}
|
|
229
241
|
className={media == null ? `${panelMaxWidth} mx-auto` : ''}
|