@synopackageland/ui 0.25.4 → 0.25.5

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.
@@ -3,7 +3,7 @@
3
3
  "version": "2.11.0",
4
4
  "delivery": "bundled-patched-esm",
5
5
  "patchManifestSha256": "9c5b9c9a162fa584b4695a683368a4484b3ac6e70177fd063b77aa618c051627",
6
- "bundleSha256": "b992eb0e6b74fd027571844040e69248fa39ce1906fa762f3263a762ccaf780d",
6
+ "bundleSha256": "321dac978fd161de20e750583376cc4f0cedec34de3c41fcee23a5197d53709c",
7
7
  "sourceHashes": {
8
8
  "shared/useBodyScrollLock.js": "287bfb604318c4202769e4b5191896eaf0e52a952e1de898967cbe09467fcfda",
9
9
  "DismissableLayer/DismissableLayer.js": "3c8d248f0a32e01f89ca1f6202b1bb691bf5d0e4012a92535e161c35e69cdc32",
@@ -299,9 +299,9 @@ const { state, width } = useAsidePreference('studio.aside', 'editor', { state: '
299
299
  | --- | --- | --- |
300
300
  | docked | `web`, the page keeps 480px | keeps `--ui-aside-open-width` and slides by `translate` while the region's width moves (`--ui-motion-panel`, ease-in-out both ways); the rail button fades in 150ms into a collapse |
301
301
  | floating | an open panel the page has no room for, or a 641–959 container | slides over the page from the rail (in `panel` ease-out, out `normal` ease-in); the region keeps its 48px |
302
- | sheet | a phone (≤640) | a 48px button at the end corner (above the tab bar and the safe area) opens a 90% bottom sheet; `expanded` is full screen; the scrim, Escape and a downward swipe on the header close it; the page is inert |
302
+ | sheet | a phone (≤640) | a 48px button at the end corner (above the tab bar and the safe area) opens a 90% bottom sheet; `expanded` is full screen; the scrim, Escape and a downward swipe on the header close it; the page is `aria-hidden` and out of reach |
303
303
 
304
- - The panel is never unmounted: collapsed, it is `inert` and `aria-hidden`, and the thread's scroll and the composer's draft stay. The page is `inert` while the panel is expanded or a sheet is up.
304
+ - The panel is never unmounted: collapsed, it is `inert` and `aria-hidden`, and the thread's scroll and the composer's draft stay. The page is `inert` and `aria-hidden` while the panel is expanded (it has no width then). While a sheet is up the page is `aria-hidden` but not `inert`: the sheet keeps it out of reach as an app-local dialog does (docs/app-local-modal.md).
305
305
  - Focus moves to the composer's first field on open (not on touch, `initial-focus` changes it) and back to the rail button or the phone button on collapse.
306
306
  - Escape: docked and expanded leave it to the content (stop a reply). A floating panel with focus inside, or a sheet, collapses on Escape after any layer opened above it (a menu, a popover) has closed.
307
307
  - No transition runs before the first paint has settled. The state needs no `transitionend`: only a floating panel's exit waits for one, with the `normal` token as its deadline, and a new state change or reduced motion ends it at once.
@@ -45,6 +45,14 @@ that reaches the background goes back to the panel) keep the background out of
45
45
  reach; focus left on the background when a dialog skips autofocus is released,
46
46
  as inert would.
47
47
 
48
+ AppLayout's phone overlays work the same way. The navigation drawer and the
49
+ aside's bottom sheet are local modal layers. The FAB speed dial is a trapped
50
+ focus scope over its own scrim: Tab loops in the dial and focus that reaches
51
+ the page comes back, although the dial is not a layer. While any of them is
52
+ open the page column (`[data-ui-layout-main]`) is `aria-hidden`, never
53
+ `inert`. Only an expanded aside, which leaves the page no width, makes the page
54
+ `inert`.
55
+
48
56
  A host must provide an accessible window switch mechanism: a looping Tab
49
57
  sequence inside a local dialog does not itself reach another app. There is no
50
58
  claim of whole-document modality in app mode. VoiceOver/NVDA exposure and
@@ -163,7 +171,11 @@ Independent modality is the default.
163
171
  module plus exact before/after hunks. `build/rekaPatch.ts` verifies the installed
164
172
  version and all input hashes before the build; each hunk must match exactly
165
173
  once. The Vite plugin loads patched modules in memory, never edits node_modules,
166
- and is also used by Vitest. Any source/hash/hunk mismatch fails the build.
174
+ and is also used by Vitest and every dev server (Histoire, the gallery,
175
+ `tests/dsm-host`). The dependency optimizer would pre-bundle reka-ui without the
176
+ patch, so the plugin keeps reka-ui out of `optimizeDeps` in any config it is
177
+ in; `tests/dev-server-reka.test.ts` fails if a dev config or a script's dev
178
+ server goes without it. Any source/hash/hunk mismatch fails the build.
167
179
 
168
180
  The body-scroll patch follows the U3 shared-lock candidate: save owned body
169
181
  padding-right, margin-right, overflow, pointer-events and root scrollbar-width
@@ -724,8 +724,11 @@ change: the same slot moves.
724
724
  as labelled 48px pills over a scrim, staggered in. Focus moves to the first
725
725
  and stays in the dial; Escape, Back, a press on the scrim or the FAB close
726
726
  it and focus returns to the FAB. A pick runs the action and closes the dial;
727
- an action that opens a menu closes it once the menu closes. The page behind
728
- is inert while it is open. Reduced motion shows and hides it at once.
727
+ an action that opens a menu closes it once the menu closes. While it is
728
+ open the page behind is out of reach: the scrim takes presses, Tab loops in
729
+ the dial, focus that reaches the page comes back, and the page is
730
+ `aria-hidden` (not `inert`, which would restyle the whole page). Reduced
731
+ motion shows and hides it at once.
729
732
  - Every pill is its icon and its text. An action with no text of its own (an
730
733
  `IconButton` such as "More actions", an icon-only Button) shows its
731
734
  accessible name, from `aria-label` or `title`; the pill sizes to it and a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/ui",
3
- "version": "0.25.4",
3
+ "version": "0.25.5",
4
4
  "description": "Shared Vue 3 UI component library with a DSM 7 inspired application theme",
5
5
  "license": "MIT",
6
6
  "type": "module",