@kolkrabbi/kol-theme 0.121.0 → 0.123.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.
@@ -696,6 +696,13 @@
696
696
  * own `align-self: center` on the runnable track, and the thumb stays pinned
697
697
  * to the track. The row (.control-slider) is already 24px, so nothing moves. */
698
698
  height: 24px;
699
+ /* pan-y, not none (SliderCoarsePointerHeight, kol-mirror 2026-09-01): inside
700
+ * a scrolling sheet `auto` let the scroller claim any drag a few degrees off
701
+ * horizontal, so the thumb never moved and the sheet scrolled instead. The
702
+ * vertical gesture must still reach the scroller, or the sheet stops
703
+ * scrolling wherever a fader sits under the thumb. Does not inherit — it has
704
+ * to be on the input, and no prop reaches the input. */
705
+ touch-action: pan-y;
699
706
  }
700
707
 
701
708
  .slider-black::-webkit-slider-runnable-track {
@@ -1364,4 +1371,14 @@ a.kol-icon-frame {
1364
1371
  font-size: 16px;
1365
1372
  line-height: 22px;
1366
1373
  }
1374
+ /* THE FADER (SliderCoarsePointerHeight, kol-mirror 2026-09-01). The jump that
1375
+ * took the input 2 → 24 on the desk takes it 24 → 44 on a phone, by its own
1376
+ * argument: the track is a 2px pseudo the UA centres in the box and the
1377
+ * thumb stays pinned to it, so the drawing does not change. The ROW lifts
1378
+ * with it — `.control-slider` is a fixed 24px and a 44px input inside it
1379
+ * would overflow; a consumer's `rowHeight` inline style still wins. */
1380
+ .control-slider,
1381
+ .slider-black {
1382
+ height: 44px;
1383
+ }
1367
1384
  }
@@ -134,3 +134,46 @@
134
134
  z-index: calc(var(--kol-z-sticky) - 1);
135
135
  background: color-mix(in srgb, var(--kol-color-ab-black) 48%, transparent);
136
136
  }
137
+
138
+ /* ── THE TAP OPENER (ShellRailCollapsedWithTapOpen, kol-mirror 2026-09-01) ──
139
+ * `touch="shell"` keeps the collapsed 48px rail visible — the user's ruling
140
+ * for a home that is navigation — but its only opener was the grab strip: 8px
141
+ * on the line, a pill that wakes on pointer PROXIMITY. A thumb never hovers,
142
+ * so on a phone the rail could not be opened. The strip is a <button> now
143
+ * (kol-shell 0.38.0) carrying `.kol-rail-grab-tap`, a 24px disc on the line
144
+ * that exists ONLY under a coarse pointer: fine pointers keep the ruled grab
145
+ * (RailFlatGrabOpen, OneGrabGestureBothRails) and never see this. The strip
146
+ * already toggles on a press with no travel; this gives that press a target.
147
+ * Geometry lives here, the pill's motion stays in kol-animation.css. */
148
+ .kol-rail-grab {
149
+ appearance: none;
150
+ background: transparent;
151
+ border: 0;
152
+ padding: 0;
153
+ color: inherit;
154
+ }
155
+ .kol-rail-grab-tap { display: none; }
156
+ @media (pointer: coarse) {
157
+ .kol-rail-grab {
158
+ width: 24px;
159
+ right: -12px;
160
+ cursor: pointer;
161
+ }
162
+ /* no proximity on touch — the pill would never wake; the disc is the affordance */
163
+ .kol-rail-grab::before { display: none; }
164
+ .kol-rail-grab-tap {
165
+ display: flex;
166
+ align-items: center;
167
+ justify-content: center;
168
+ position: absolute;
169
+ left: 50%;
170
+ top: 50%;
171
+ translate: -50% -50%;
172
+ width: 24px;
173
+ height: 24px;
174
+ border-radius: var(--kol-radius-full);
175
+ background: var(--kol-surface-secondary);
176
+ border: 1px solid var(--kol-fg-16);
177
+ color: var(--kol-oq-96);
178
+ }
179
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.121.0",
3
+ "version": "0.123.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",