@dorsk/tsumikit 0.64.0 → 0.64.1

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/README.md CHANGED
@@ -837,7 +837,11 @@ glyphs (`size` stays the SVG px, emoji ×1.35).
837
837
  On `(pointer: coarse)` every icon-only/square control (and `Popover`'s default
838
838
  trigger) carries an invisible `::after` slab that extends its hit area to
839
839
  `--touch-target` (44px, WCAG 2.5.8) without moving layout; fine pointers are
840
- untouched. `hitArea="compact"` opts a dense-table row out. `Button
840
+ untouched. The slab grows on both block sides but only towards the inline
841
+ *start*: inline-end overflow would count towards the scrollable overflow of
842
+ every scroll ancestor, so a button near the right edge of an `overflow-y: auto`
843
+ container would make it scroll sideways by a pixel or two.
844
+ `hitArea="compact"` opts a dense-table row out. `Button
841
845
  collapseLabel="mobile" | "container"` hides `<span data-label>` children below
842
846
  40rem viewport / 30rem container, drops to icon padding, and names the button
843
847
  from the hidden text unless `aria-label` is set:
@@ -508,7 +508,11 @@
508
508
 
509
509
  /* Coarse pointers: icon-only and square buttons carry an invisible slab that
510
510
  extends the hit area to --touch-target without changing layout. Buttons
511
- already at or above the target keep their own box (inset never positive). */
511
+ already at or above the target keep their own box (inset never positive).
512
+ The slab grows towards the inline start only: inline-end overflow counts
513
+ towards the scrollable overflow of every scroll ancestor, so a button near
514
+ the right edge of an `overflow-y: auto` container would make it scroll
515
+ sideways. Start-side overflow is unscrollable, so the full target survives. */
512
516
  @media (pointer: coarse) {
513
517
  .btn-icon:not(.hit-compact),
514
518
  .btn-icon-inline:not(.hit-compact),
@@ -524,7 +528,9 @@
524
528
  .btn-chip:not(.hit-compact)::after {
525
529
  content: '';
526
530
  position: absolute;
527
- inset: min(0px, calc((100% - var(--touch-target)) / 2));
531
+ inset-block: min(0px, calc((100% - var(--touch-target)) / 2));
532
+ inset-inline-start: min(0px, calc(100% - var(--touch-target)));
533
+ inset-inline-end: 0;
528
534
  }
529
535
  }
530
536
 
@@ -422,7 +422,8 @@
422
422
  .panel-content {
423
423
  flex: 1;
424
424
  min-height: 0;
425
- overflow: auto;
425
+ overflow-y: auto;
426
+ overflow-x: hidden;
426
427
  }
427
428
  /* Subtle chevron handle anchored to the panel's inner edge — never a filled
428
429
  button, never overlapping the neighbouring main content. It stays visible
@@ -157,7 +157,9 @@
157
157
  .file-btn.icon-only:not(.hit-compact)::after {
158
158
  content: '';
159
159
  position: absolute;
160
- inset: min(0px, calc((100% - var(--touch-target)) / 2));
160
+ inset-block: min(0px, calc((100% - var(--touch-target)) / 2));
161
+ inset-inline-start: min(0px, calc(100% - var(--touch-target)));
162
+ inset-inline-end: 0;
161
163
  }
162
164
  }
163
165
  /* Emoji glyph is bumped above the text size — at 1em a paperclip is hard to
@@ -450,7 +450,9 @@
450
450
  flex: none;
451
451
  }
452
452
  /* Coarse pointers: icon-only triggers extend their hit area to --touch-target
453
- via an invisible slab; layout does not move. */
453
+ via an invisible slab; layout does not move. The slab grows towards the
454
+ inline start only, so it never adds scrollable overflow to a scroll ancestor
455
+ (see Button.svelte). */
454
456
  @media (pointer: coarse) {
455
457
  .pop-trigger:not(.canonical, .hit-compact) {
456
458
  position: relative;
@@ -458,7 +460,9 @@
458
460
  .pop-trigger:not(.canonical, .hit-compact)::after {
459
461
  content: '';
460
462
  position: absolute;
461
- inset: min(0px, calc((100% - var(--touch-target)) / 2));
463
+ inset-block: min(0px, calc((100% - var(--touch-target)) / 2));
464
+ inset-inline-start: min(0px, calc(100% - var(--touch-target)));
465
+ inset-inline-end: 0;
462
466
  }
463
467
  }
464
468
  .pop-trigger.trigger-tone-accent {
@@ -88,12 +88,16 @@ pre {
88
88
  border-radius: var(--r-sm);
89
89
  }
90
90
 
91
- ::-webkit-scrollbar {
92
- width: 8px;
93
- height: 8px;
94
- }
95
- ::-webkit-scrollbar-thumb {
96
- background: var(--border-strong);
97
- border-radius: var(--r-pill);
91
+ /* Slim scrollbars for mice only. On touch, a custom scrollbar replaces the
92
+ native overlay bars with classic space-taking ones. */
93
+ @media (hover: hover) and (pointer: fine) {
94
+ ::-webkit-scrollbar {
95
+ width: 8px;
96
+ height: 8px;
97
+ }
98
+ ::-webkit-scrollbar-thumb {
99
+ background: var(--border-strong);
100
+ border-radius: var(--r-pill);
101
+ }
98
102
  }
99
103
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dorsk/tsumikit",
3
- "version": "0.64.0",
3
+ "version": "0.64.1",
4
4
  "description": "Minimal, dependency-free Svelte 5 + pure-CSS UI kit. Token-driven atoms, molecules & layouts with theming out of the box.",
5
5
  "type": "module",
6
6
  "license": "MIT",