@kolkrabbi/kol-theme 0.86.0 → 0.87.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.
@@ -61,13 +61,25 @@
61
61
  * button text — the stretched label span then centers inside the widest-ghost
62
62
  * cell (a value floating at a random indent per list). Pin it to the leading
63
63
  * edge, Input's model. */
64
- .kol-dd-label { display: inline-grid; min-width: 0; text-align: start; }
65
- .kol-dd-label > span { grid-area: 1 / 1; white-space: nowrap; }
64
+ .kol-dd-label { display: inline-grid; min-width: 0; text-align: start; overflow: hidden; }
65
+ .kol-dd-label > span { grid-area: 1 / 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
66
66
  /* Ghost slack: each hidden option reserves the PANEL row's trailing check
67
67
  * column on top of its label, so the fused one-piece width fits every row
68
68
  * without truncating (2026-08-09 night — closes the "Cen…" defect at the
69
69
  * trigger instead of un-fusing the panel). */
70
70
  .kol-dd-ghost { visibility: hidden; padding-right: 1rem; }
71
+ /* THE RESERVATION YIELDS TO THE AVAILABLE WIDTH (DropdownGhostWidthAndListHeight,
72
+ * kol-mirror 2026-08-28 — user, on the studio's 30-option Source picker in a
73
+ * ~300px shelf: "1 it's way too tall, 2 it's not fitting"). The ghost stack
74
+ * above reserves the widest option's width, and the 2026-08-09 one-piece ruling
75
+ * assumed a trigger free to take it: with 30 long labels it computed ~640px,
76
+ * overflowed its container and was clipped, while the portalled panel rendered
77
+ * at the true 640 — a panel wider than and detached from its trigger. Capping
78
+ * the trigger at its container keeps the fusion honest (the panel still matches
79
+ * `rects.reference.width`, which is now the real one) and the label ellipsises.
80
+ * A dropdown in a narrow chrome is where dropdowns live. */
81
+ .kol-dd-root { max-width: 100%; }
82
+ .kol-dd-trigger { max-width: 100%; }
71
83
  .kol-dd-caret {
72
84
  flex-shrink: 0;
73
85
  transition: rotate var(--kol-transition-base);
@@ -101,7 +113,18 @@
101
113
  border-top: none; /* the trigger's bottom edge is the divider (docs page) */
102
114
  }
103
115
  .kol-dd-div { border-top: 1px solid var(--kol-fg-08); }
104
- .kol-dd-list { padding: var(--kol-spacing-1); overflow-y: auto; min-height: 0; }
116
+ /* A ROWS CEILING THE CONSUMER CAN REACH (same ticket): Popover's size
117
+ * middleware clamps the PANEL to the viewport, which does nothing for a
118
+ * 30-row slab opened at the top of a tall page — and its inline `maxHeight`
119
+ * cannot be overridden from a consumer stylesheet, so the ceiling had to be
120
+ * ours. `maxRows` (Dropdown, default 10) and `rowHeight` write these two
121
+ * variables on the panel; the list scrolls at the ceiling as it always could. */
122
+ .kol-dd-list {
123
+ padding: var(--kol-spacing-1);
124
+ overflow-y: auto;
125
+ min-height: 0;
126
+ max-height: calc(var(--kol-dd-max-rows, 10) * var(--kol-dd-row-h, 2rem) + var(--kol-spacing-1) * 2);
127
+ }
105
128
 
106
129
  /* Popover — default chrome for floating-ui-positioned panels.
107
130
  * Used by molecules/Popover.jsx PopoverPanel. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.86.0",
3
+ "version": "0.87.0",
4
4
  "description": "KOL (Kolkrabbi) design-system tokens + base CSS — brand-neutral. The canonical token/cascade layer every other KOL package and consumer builds on.",
5
5
  "license": "MIT",
6
6
  "type": "module",