@kolkrabbi/kol-theme 0.128.0 → 0.130.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.
@@ -189,11 +189,21 @@
189
189
  * inside the content column's right edge — lined up with nothing the fields
190
190
  * below it establish. On the edge, the button's box sits on the same vertical
191
191
  * as the controls under it. */
192
+ /* THE CLOSE MUST OUT-STACK THE SHEET'S OWN CONTENT (BrowsePageRulingsAndSeams,
193
+ * kol-r2b2 2026-09-02; user 2026-08-28: "doesnt work clicking close"). It sat
194
+ * at a bare `10` — the dropdown rung — and it is the FIRST child of the sheet,
195
+ * so any consumer content after it at 10 or above covered the corner and the
196
+ * click landed on the panel behind. Reproduces in the DS with any tall sheet.
197
+ * `--kol-z-overlay` (50), not the reported 60: the ladder IS the z-contract
198
+ * (01-foundations/01-tokens § Stacking) and a hand-typed number here is the
199
+ * thing that law exists to stop. 50 clears dropdown (10) and sticky (20) inside
200
+ * the sheet, and a Dropdown opened from the sheet still covers it — that one
201
+ * portals to <body> at 210, outside this stacking context, which is correct. */
192
202
  .kol-overlay-close {
193
203
  position: absolute;
194
204
  top: var(--kol-spacing-3);
195
205
  right: 0;
196
- z-index: 10;
206
+ z-index: var(--kol-z-overlay);
197
207
  }
198
208
 
199
209
  /* ═══════════════════════════════════════════════════════════════
@@ -241,6 +251,13 @@
241
251
  * Chrome belongs here, layered, so utilities stay sovereign. The flex
242
252
  * centering comes from .kol-btn; the icon-only extra is only line-height. */
243
253
  .kol-btn-icon {
254
+ /* A FIXED SQUARE ON EVERY RUNG (IconButtonNoFlexShrink, kol-monitor
255
+ * 2026-09-02): in a shrink-to-fit flex row WebKit measured the icon-only
256
+ * button's contribution as its GLYPH (20 + 2 border = 22), not the 32px
257
+ * rule, so the row came out short and squeezed the square to 22×32 — the
258
+ * gear a sliver beside a 32px Dropdown. `flex: none` fixes the measurement
259
+ * AND the shrink; `flex-shrink: 0` alone fixed only the shrink. */
260
+ flex: none;
244
261
  line-height: 0;
245
262
  }
246
263
  /* Icon-only is a GEOMETRY condition, not a variant (2026-07-28, user-ordered):
@@ -1231,15 +1231,26 @@
1231
1231
  .kol-doc-page .kol-prose td,
1232
1232
  .kol-doc-page .kol-prose th { overflow-wrap: anywhere; word-break: break-word; }
1233
1233
  .kol-doc-page .kol-prose pre { white-space: pre-wrap; overflow-wrap: anywhere; }
1234
+ /* 3:5 IS THE TALLEST A DOCUMENT PAGE MAY BE (BrowsePageRulingsAndSeams,
1235
+ * kol-r2b2 2026-09-02; user 2026-08-28: "this is not an approved ratio"). The
1236
+ * overlay page was A-series (1:√2) and the column preview had NO bound at all,
1237
+ * so the FILE decided the height — a 7 KB JSON drew a pane taller than the
1238
+ * browser. 3:5 is the portrait rung on the export-specs ladder below 4:5, and
1239
+ * the floor before a page reads as a 9:16 strip. Both presentations take it:
1240
+ * content scrolls inside the box, the box never grows to the file. */
1234
1241
  .kol-overlay .kol-doc-page {
1242
+ aspect-ratio: 3 / 5;
1235
1243
  height: 85vh;
1236
- width: calc(85vh / 1.41421);
1244
+ width: auto;
1237
1245
  max-width: calc(100vw - 10rem);
1238
1246
  overflow-y: auto;
1239
1247
  overflow-x: hidden;
1240
1248
  margin-inline: auto;
1241
1249
  }
1242
1250
  .kol-column-browser-preview .kol-doc-page {
1251
+ aspect-ratio: 3 / 5;
1252
+ height: auto;
1253
+ overflow: auto;
1243
1254
  zoom: 0.5;
1244
1255
  background: transparent;
1245
1256
  border-radius: 0;
@@ -1277,11 +1288,42 @@
1277
1288
  * deepest one holding a selection — then it is the selection, full strength.
1278
1289
  * `:has(~ …)` says what a positional selector cannot: "no later column has a
1279
1290
  * selected row". */
1291
+ /* ONE FILL ON SCREEN, AND IT MEANS SELECTED (BrowsePageRulingsAndSeams, kol-r2b2
1292
+ * 2026-09-02, user ruling 2026-08-28). Hover and the bare keyboard cursor now
1293
+ * paint NOTHING. With `autoFocus` on there is always a cursor row, so the
1294
+ * 08-28 fill sat on the list permanently and moved with every click — the hover
1295
+ * fill the user removed the day before, back under another name, and at fg-04 it
1296
+ * drowned the selection at fg-02.
1297
+ *
1298
+ * A selected row that is ALSO the cursor keeps its fill, and needs no rule of
1299
+ * its own: `:hover` and `.is-cursor` are (0,2,0), `.is-selected` is (0,2,0) and
1300
+ * comes LATER, so source order hands the tie to the selection. The consumer
1301
+ * needed explicit `.is-selected.is-cursor` selectors only because its override
1302
+ * sat in a later sheet; in one file the order is the mechanism. Do not reorder.
1303
+ *
1304
+ * The VALUES are unchanged and were never wrong — the trail at fg-02, the
1305
+ * deepest column's selection at fg-04. This is a precedence fix, not a palette
1306
+ * one; `autoFocus` and the three-state fill shipped together and have not been
1307
+ * correct together since. */
1280
1308
  .kol-column-browser-row:hover,
1281
- .kol-column-browser-row.is-cursor { background-color: var(--kol-fg-04); }
1309
+ .kol-column-browser-row.is-cursor { background-color: transparent; }
1282
1310
  .kol-column-browser-row.is-selected { background-color: var(--kol-fg-02); }
1283
1311
  .kol-column-browser-column:not(:has(~ .kol-column-browser-column .is-selected)) > .is-selected { background-color: var(--kol-fg-04); }
1284
1312
 
1313
+ /* THE ROW IS A PILL (same ticket, user ruling 2026-08-27: "dont make selected
1314
+ * state move the layout"). A constant 4px inset on EVERY row, selected or not,
1315
+ * so the fill appears inside a gutter that was already there instead of the row
1316
+ * changing size; the column pads to match, so the first and last rows sit off
1317
+ * the frame by the same 4. Dividers are gone from the JSX — ColumnBrowser's Row
1318
+ * no longer emits `border-b`, because a hairline under a rounded fill draws the
1319
+ * box the pill is not. `.kol-column-browser-preview` is deliberately NOT in the
1320
+ * padding rule: it has no rows, and its own `p-4` is a Tailwind utility that
1321
+ * would out-rank this layer anyway. */
1322
+ .kol-column-browser-row { margin-inline: 4px; }
1323
+ .kol-column-browser-column { padding-block: 4px; }
1324
+ .kol-column-browser-row.is-selected,
1325
+ .kol-column-browser-row.is-cursor { border-radius: var(--kol-radius-sm); }
1326
+
1285
1327
  /* ColumnBrowser resize handles (ColumnBrowserResize, kol-r2b2 2026-08-27 —
1286
1328
  * Finder's edge handles, user ruling "that should be a set in ds"; native CSS
1287
1329
  * `resize:` rejected). The column border already there is the visual; the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.128.0",
3
+ "version": "0.130.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",