@kolkrabbi/kol-component 0.90.0 → 0.90.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.90.0",
3
+ "version": "0.90.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",
@@ -53,7 +53,10 @@ import AssetPlaceholder from '../utilities/AssetPlaceholder.jsx'
53
53
  * @param {string} bg tint only, no border — a raw token value
54
54
  * @param {string} borderHover border colour on hover (article's fg-16 step)
55
55
  * @param {boolean} ring hairline border OVER the media, inset
56
- * @param {boolean} zoom the artwork creeps up inside its frame on the
56
+ * @param {boolean|'hero'} zoom the artwork creeps up inside its frame on the
57
+ * card's hover — 1.06; `'hero'` = the hero rung, 1.02
58
+ * (StackCardHover, 2026-08-27) — same pixel travel on a
59
+ * ~1500px thumb as 1.06 on a 500px one. Was:
57
60
  * CARD's hover — image-led variants only
58
61
  * @param {boolean} fillHeight size from the HEIGHT instead of the width: the
59
62
  * media fills its parent's height and its width
@@ -89,7 +92,7 @@ export default function ContentMedia({
89
92
  const round = radius ? 'rounded-[var(--kol-radius-sm)]' : ''
90
93
  return (
91
94
  <div
92
- className={`relative ${fillHeight ? 'h-full w-auto' : 'w-full'} overflow-hidden ${round} ${FIT[fit] ?? FIT.cover} ${frame ? 'bg-fg-04 border border-fg-08' : ''} ${border ? 'border border-fg-08' : ''} ${zoom ? 'kol-media-zoom' : ''} ${borderHover ? 'transition-colors hover:border-fg-16' : ''} ${ratio == null ? 'h-full' : ''} ${className}`.trim()}
95
+ className={`relative ${fillHeight ? 'h-full w-auto' : 'w-full'} overflow-hidden ${round} ${FIT[fit] ?? FIT.cover} ${frame ? 'bg-fg-04 border border-fg-08' : ''} ${border ? 'border border-fg-08' : ''} ${zoom ? `kol-media-zoom${zoom === 'hero' ? ' is-hero' : ''}` : ''} ${borderHover ? 'transition-colors hover:border-fg-16' : ''} ${ratio == null ? 'h-full' : ''} ${className}`.trim()}
93
96
  style={{ ...(ratio != null ? { aspectRatio: ratio } : null), background: bg }}
94
97
  >
95
98
  {children}
@@ -61,8 +61,9 @@ const RAMP = {
61
61
  row: { title: 'kol-mono-12 text-emphasis', detail: 'kol-mono-10 text-meta' },
62
62
  },
63
63
  article: {
64
- card: { kicker: 'kol-mono-12 text-meta', title: 'kol-sans-heading-03 text-emphasis', body: 'kol-mono-14 text-body', date: 'kol-mono-12 text-meta', size: 'kol-mono-12 text-meta', tags: 'flex flex-wrap gap-2' },
65
- row: { kicker: 'kol-mono-12 text-meta', title: 'kol-sans-heading-04 text-emphasis', body: 'kol-mono-12 text-body', date: 'kol-mono-12 text-meta', size: 'kol-mono-12 text-meta', tags: 'flex flex-wrap gap-2' },
64
+ /* kol-content-title-dim: the title dims to 70% on card hover (StackCardHover, 2026-08-27 ListingCard's move, kol-theme) */
65
+ card: { kicker: 'kol-mono-12 text-meta', title: 'kol-sans-heading-03 text-emphasis kol-content-title-dim', body: 'kol-mono-14 text-body', date: 'kol-mono-12 text-meta', size: 'kol-mono-12 text-meta', tags: 'flex flex-wrap gap-2' },
66
+ row: { kicker: 'kol-mono-12 text-meta', title: 'kol-sans-heading-04 text-emphasis kol-content-title-dim', body: 'kol-mono-12 text-body', date: 'kol-mono-12 text-meta', size: 'kol-mono-12 text-meta', tags: 'flex flex-wrap gap-2' },
66
67
  },
67
68
  work: {
68
69
  /* INVERSE ink — the card's plate is the drawer, `surface-inverse`. Leaving
@@ -98,22 +98,28 @@ export default function SectionNewsletter({
98
98
  data-theme={themeStamp}
99
99
  className={`kol-section-newsletter w-full flex flex-col justify-center py-24 ${theme ? 'bg-surface-primary text-auto' : ''} ${minHeightClass(height)} ${className}`.replace(/\s+/g, ' ').trim()}
100
100
  >
101
- {/* the family's ONE cap — the shell's --kol-container-max ladder */}
101
+ {/* the family's ONE cap — the shell's --kol-container-max ladder — and
102
+ * inside it the lede's MEASURE on a wrapper (SectionNewsletterForm,
103
+ * 2026-08-27): a measure is a layout seam, not a `bodyClass` override
104
+ * on SectionText — the organism renders the molecule bare */}
102
105
  <div className="w-full max-w-[var(--kol-container-max,var(--kol-content-shell,1800px))] mx-auto text-center">
106
+ <div className="mx-auto max-w-[64rem]">
103
107
  <SectionText
104
108
  align="center"
105
109
  label={label}
106
110
  headline={headline}
107
111
  headlineSize={headlineSize}
108
112
  body={body}
109
- bodyClass="kol-mono-14 text-auto mx-auto max-w-[64rem]"
110
113
  gap="gap-6"
111
114
  slotClass={slotClass}
112
115
  slotStyle={slotStyle}
113
116
  >
117
+ {/* `w-full`: SectionText centres its children as flex items, so
118
+ * without it the form shrink-wraps and the Input's `w-full` has
119
+ * nothing to fill — it rendered at its intrinsic ~190px */}
114
120
  <form
115
121
  onSubmit={handleSubmit}
116
- className="flex flex-col gap-4 pt-6 sm:flex-row sm:items-center sm:justify-center sm:gap-3"
122
+ className="flex w-full flex-col gap-4 pt-6 sm:flex-row sm:items-center sm:justify-center sm:gap-3"
117
123
  >
118
124
  <Input
119
125
  id={emailId}
@@ -147,6 +153,7 @@ export default function SectionNewsletter({
147
153
  </p>
148
154
  )}
149
155
  </SectionText>
156
+ </div>
150
157
  </div>
151
158
  </section>
152
159
  )