@kolkrabbi/kol-component 0.104.0 → 0.104.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.104.0",
3
+ "version": "0.104.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",
@@ -40,10 +40,10 @@ import IconFrame from '../atoms/IconFrame.jsx'
40
40
  * Look seams — all default to the shipped values, pass nothing and nothing changes:
41
41
  * @param {string} props.titleClassName — header title type/ink
42
42
  * @param {boolean} props.titleUppercase — cases the title (default false)
43
- * @param {string} props.labelClassName — filter-group label type/ink
43
+ * @param {string} props.labelClassName — filter-group label type/ink (default `kol-eyebrow text-fg-96`)
44
44
  * @param {boolean} props.labelUppercase — cases the group label (default true)
45
- * groups: `{ label, key, values, stack?, className?, wrapClassName? }` — a group with ≤ 6 values stacks by
46
- * default (`stack: false` opts out); `className` / `wrapClassName` are per-group seams
45
+ * groups: `{ label, key, values, stack?, className?, wrapClassName? }` — a short group (≤ 6 values) hugs its chips,
46
+ * a long one flows; `stack` pins either way; `className` / `wrapClassName` are per-group seams
47
47
  * @param {string} props.tagVariant — filter chip variant ('primary' grey fill)
48
48
  * @param {string} props.tagSize — filter chip size
49
49
  * @param {string} props.tagActiveClassName — chip ink, selected
@@ -104,7 +104,10 @@ const ContentFilters = ({
104
104
  * titles wrap can move to `kol-mono-14` without losing the casing. */
105
105
  titleClassName = 'kol-helper-14',
106
106
  titleUppercase = true,
107
- labelClassName = 'kol-helper-12 text-fg-96',
107
+ /* the category label is the EYEBROW role (ContentFiltersEqualColumns, what stood —
108
+ * kol-fxr 2026-08-27: every section / category label in the app tier is
109
+ * kol-eyebrow; the role carries the uppercase) */
110
+ labelClassName = 'kol-eyebrow text-fg-96',
108
111
  labelUppercase = true,
109
112
  tagVariant = 'primary',
110
113
  tagSize = 'sm',
@@ -243,9 +246,10 @@ const ContentFilters = ({
243
246
  ) : null
244
247
 
245
248
  const renderFilterGroup = (group) => {
246
- /* a SHORT group (≤ 6 values) stacks by default (WorkListingRowsAndFilters, 2026-08-27
247
- * user: "why do I have to say it every time? why do you default to 50/50?");
248
- * `stack: false` opts out, `stack: true` forces */
249
+ /* the FIRST group hugs its chips, the rest flow (the ruled shape /prints;
250
+ * ContentFiltersEqualColumns was withdrawn 2026-08-27 same day: the "equal
251
+ * columns" ask was a misread). A short group (≤ 6) hugs by default;
252
+ * `stack` pins either way (kol-fxr passes `stack: i === 0`). */
249
253
  const stacked = group.stack ?? (group.values?.length ?? 0) <= 6
250
254
  return (
251
255
  <div key={group.key} className={`flex flex-col gap-3 ${stacked ? 'shrink-0' : 'min-w-0 flex-1'} ${group.className ?? ''}`.trim()}>
@@ -259,7 +263,7 @@ const ContentFilters = ({
259
263
  * never what anyone looked at. No inline letter-spacing: the helper ramp
260
264
  * carries its own, and the override the fork added was not in the
261
265
  * rendered path either. */}
262
- <h4 className={labelClassName} style={labelUppercase ? { textTransform: 'uppercase' } : undefined}>
266
+ <h4 className={labelClassName} style={labelUppercase && !/\bkol-eyebrow\b/.test(labelClassName) ? { textTransform: 'uppercase' } : undefined}>
263
267
  {group.label}
264
268
  </h4>
265
269
  {/* the fluid group keeps 48px of room on its right (it ran flush to the