@kolkrabbi/kol-component 0.169.0 → 0.170.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.169.0",
3
+ "version": "0.170.0",
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",
@@ -38,6 +38,7 @@ const FOCUSABLE =
38
38
  * @param {number|string} height panel height (px number or CSS length); omit for a content-sized sheet — `bottom` only
39
39
  * @param {ReactNode} header header-row content beside the close button (replaces the source's baked-in wordmark)
40
40
  * @param {boolean} backdrop render the dimming scrim (default true); false = panel alone, no darken/blur, close via × / Esc
41
+ * @param {'xs'|'sm'|'md'|'lg'} closeSize the close control's rung (default 'sm' — match the controls in the panel)
41
42
  * @param {ReactNode} children scrollable panel body
42
43
  * @param {string} className extra classes on the panel
43
44
  */
@@ -50,6 +51,14 @@ export default function ShellDrawer({
50
51
  header,
51
52
  closeSide = 'end',
52
53
  backdrop = true,
54
+ /* THE CLOSE SITS ON THE ROW'S RUNG (user 2026-09-03, on the settings drawer:
55
+ * *"does this button follow the size ladder?"*). It was pinned `md` (32) while
56
+ * every control in the panel below it — the switches, the dropdowns, the reset
57
+ * frame — is `sm` (26), so the one control that is not a setting was the
58
+ * largest thing on the surface. A size is a height and a row is one height;
59
+ * `sm` is the default because a drawer header sits over its own controls.
60
+ * Named `closeSize`, not `size` — `size` is already the panel's own box. */
61
+ closeSize = 'sm',
53
62
  children,
54
63
  className = '',
55
64
  /* SettingsPanelApproved (2026-08-27): the settings drawer has neither */
@@ -207,7 +216,7 @@ export default function ShellDrawer({
207
216
  {closeSide !== 'start' && (
208
217
  <Button
209
218
  variant="nav"
210
- size="md"
219
+ size={closeSize}
211
220
  iconOnly="x"
212
221
  onClick={onClose}
213
222
  aria-label="Close"
@@ -6,8 +6,11 @@ import Button from '../atoms/Button.jsx'
6
6
  * wears. Owns dismissal (Escape, backdrop, close button), scroll lock and
7
7
  * stacking; the consumer supplies the panel.
8
8
  *
9
- * The close control is the DS `Button` (quiet, icon-only, the `x` glyph) —
10
- * the same idiom as ShellLayout's. It was a hand-rolled <button> printing a
9
+ * The close control is the DS `Button` (icon-only, the `x` glyph) — the estate's
10
+ * ONE close idiom, and therefore ONE SIZE: `sm` (26), matching `ShellDrawer`'s
11
+ * (2026-09-03). It took Button's `md` default while the drawer's went to `sm`,
12
+ * which is two sizes for one idiom — the thing the single-idiom ruling exists to
13
+ * stop. It was a hand-rolled <button> printing a
11
14
  * literal `×` TEXT CHARACTER until 2026-08-01: no icon, no states, and a
12
15
  * typographic multiplication sign standing in for a glyph the icon set has
13
16
  * always shipped.
@@ -69,10 +72,11 @@ export default function FullscreenOverlay({ open, onClose, closeButton = true, c
69
72
  * user ruling): the estate's close X is the drawer trigger's bare
70
73
  * `nav` glyph — the boxed outline treatment was a second design one
71
74
  * tap away from the first, and had he kept a box it would have worn
72
- * `primary`, never `outline`. Same variant, same default square as
73
- * the trigger. */
75
+ * `primary`, never `outline`. Same variant as the trigger; the SQUARE
76
+ * is `sm` since 2026-09-03, one size for the one idiom. */
74
77
  <Button
75
78
  variant="nav"
79
+ size="sm"
76
80
  iconOnly="x"
77
81
  className="kol-overlay-close"
78
82
  onClick={onClose}