@celestia-island/hikari 0.55.73 → 0.55.74

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": "@celestia-island/hikari",
3
- "version": "0.55.73",
3
+ "version": "0.55.74",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Hikari Vue 3 component library — production-grade UI components based on shittim-chest design system",
@@ -529,6 +529,24 @@ export function useSizeMorph(
529
529
  dir === "reveal"
530
530
  ? `inset(0px 0 0 0 round ${radii})`
531
531
  : `inset(${insetPx}px 0 0 0 round ${radii})`;
532
+ // Reduced motion: the stylesheet collapses the clip transition to
533
+ // `none` — `transitionend` will never fire, and without this check the
534
+ // watchdog holds the clip for `durationMs + 350` ms while the page
535
+ // behind shows through it (round-24 phone report under
536
+ // `prefers-reduced-motion: reduce`: the sheet's top 254 px showed the
537
+ // page behind for 514 ms). Land now: the clip end state is already
538
+ // painted, the riders carry whatever motion survives, and the landing
539
+ // is the same `stopReveal()` that transitionend would have triggered.
540
+ let reduced = false;
541
+ try {
542
+ reduced = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
543
+ } catch {
544
+ // matchMedia unavailable (SSR) — the sweep path is unreachable anyway.
545
+ }
546
+ if (reduced) {
547
+ stopReveal();
548
+ return;
549
+ }
532
550
  // The riders flip WITH the clip, in the same task, under a mirrored
533
551
  // transform transition — same duration, same easing, same start
534
552
  // moment, so the ride tracks the edge sample-for-sample. Their own