@kolkrabbi/kol-component 0.62.0 → 0.64.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.64.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",
|
|
@@ -150,7 +150,7 @@ export default function SearchInput({
|
|
|
150
150
|
{!isOpen && (
|
|
151
151
|
<button
|
|
152
152
|
type="button"
|
|
153
|
-
className="flex items-center justify-center rounded-full text-auto flex-shrink-0 border border-transparent transition-colors hover:border-oq-
|
|
153
|
+
className="flex items-center justify-center rounded-full text-auto flex-shrink-0 border border-transparent transition-colors hover:border-oq-08"
|
|
154
154
|
style={{ width: square, height: square }}
|
|
155
155
|
onClick={() => setOpen(true)}
|
|
156
156
|
aria-label={triggerLabel}
|
|
@@ -81,12 +81,12 @@ const ContentFilters = ({
|
|
|
81
81
|
/* THE LOOK SEAMS. Every one defaults to what the component shipped, so
|
|
82
82
|
* passing nothing renders exactly as before — these exist because the
|
|
83
83
|
* hardcoded values were the wrong call for every consumer but one. */
|
|
84
|
-
/*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
84
|
+
/* SENTENCE CASE (user ruling 2026-08-15, reversing the uppercase pass an
|
|
85
|
+
* hour earlier). The title is a NAME, not a label — the strips are chrome and
|
|
86
|
+
* wear caps; the thing being filtered keeps its own casing. Same rung as
|
|
87
|
+
* RECENT/SAVED, different casing, and that difference is the point. */
|
|
88
88
|
titleClassName = 'kol-helper-14',
|
|
89
|
-
titleUppercase =
|
|
89
|
+
titleUppercase = false,
|
|
90
90
|
labelClassName = 'kol-helper-12 text-fg-96',
|
|
91
91
|
labelUppercase = true,
|
|
92
92
|
tagVariant = 'primary',
|
|
@@ -102,7 +102,11 @@ const ContentFilters = ({
|
|
|
102
102
|
* pair moves to the opaque tier so it never washes out over a tinted surface. */
|
|
103
103
|
stripActiveClassName = 'text-oq-96',
|
|
104
104
|
stripRestClassName = 'text-oq-48 hover:text-oq-64',
|
|
105
|
-
|
|
105
|
+
/* THE COUNT IS PART OF THE STRIP IT SITS ON — same rung as LIST/GRID
|
|
106
|
+
* (`kol-helper-12`), same opaque tier. It carried `text-fg-64`, a
|
|
107
|
+
* translucent value on neither the active nor the rest rung, so it read as a
|
|
108
|
+
* third state that means nothing. It is static information: the REST ink. */
|
|
109
|
+
countClassName = 'kol-helper-12 text-oq-48',
|
|
106
110
|
}) => {
|
|
107
111
|
/* Icon seam — consumers on a local icon shelf pass their own component
|
|
108
112
|
* rather than being forced onto the DS set. Needs `filter` + `search`. */
|
|
@@ -284,9 +288,11 @@ const ContentFilters = ({
|
|
|
284
288
|
*
|
|
285
289
|
* `nav` rests at oq-64 and lights to full ink when the panel is
|
|
286
290
|
* open, so the toggle finally SHOWS that it is on. */}
|
|
287
|
-
{/*
|
|
288
|
-
*
|
|
289
|
-
*
|
|
291
|
+
{/* 16 GLYPH IN A 32 BOX — the house's quiet-control pairing (user
|
|
292
|
+
* ruling 2026-08-15). `.kol-copy-btn` is exactly this: an 8px pad
|
|
293
|
+
* around a `sm` 16px glyph, giving a 32 box. A 20 glyph fills a 32
|
|
294
|
+
* square far harder, which is why this row read too intense. The
|
|
295
|
+
* square stays md; only the glyph steps down. */}
|
|
290
296
|
<IconFrame
|
|
291
297
|
name="filter"
|
|
292
298
|
/* `nav` ALWAYS — no container. The open state is the panel
|
|
@@ -295,6 +301,7 @@ const ContentFilters = ({
|
|
|
295
301
|
* has none. */
|
|
296
302
|
variant="nav"
|
|
297
303
|
size="md"
|
|
304
|
+
iconSize={16}
|
|
298
305
|
onClick={() => setIsExpanded(!isExpanded)}
|
|
299
306
|
aria-label="Toggle filters"
|
|
300
307
|
/>
|
|
@@ -321,6 +328,9 @@ const ContentFilters = ({
|
|
|
321
328
|
* The organism's own field never had one. */
|
|
322
329
|
placeholder=""
|
|
323
330
|
size="md"
|
|
331
|
+
/* 16 in the 32 box, matching the filter beside it and the copy
|
|
332
|
+
* button everywhere else. */
|
|
333
|
+
iconSize={16}
|
|
324
334
|
/* a rung under the 32 square: this field sits beside two BARE
|
|
325
335
|
* glyphs, and at the full square it read as a chunky input. */
|
|
326
336
|
fieldHeight={28}
|
|
@@ -407,7 +417,9 @@ const ContentFilters = ({
|
|
|
407
417
|
* toggle, so it takes neither the 96 active nor the 32 rest. */}
|
|
408
418
|
{/* ONE LINE — the count sits BESIDE LIST/GRID, not stacked above it.
|
|
409
419
|
* They are the same strip of chrome reading left to right. */}
|
|
410
|
-
|
|
420
|
+
{/* ONE LINE, and the count needs room off the strip — at gap-4 the
|
|
421
|
+
* two read as one run of text rather than a label and a control. */}
|
|
422
|
+
<div className="flex flex-shrink-0 items-center gap-6">
|
|
411
423
|
{showCount && isExpanded && (
|
|
412
424
|
<span className={countClassName} style={{ letterSpacing: 1 }}>
|
|
413
425
|
{filteredItems.length} of {totalCount}
|