@jskit-ai/agent-docs 0.1.117 → 0.1.119

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.
@@ -681,11 +681,21 @@ navigation.
681
681
 
682
682
  The open drawer is content-aware by default. After the visible semantic
683
683
  placements and fonts settle, `ShellLayout` measures the rendered labels and
684
- keeps the drawer edge approximately 10 CSS pixels beyond the widest label. It
685
- remeasures when placements, localization, fonts, the active surface, or the
686
- window layout change, and clamps unusually long labels to a safe range. The
687
- closed desktop rail remains 80 CSS pixels wide by default, with every icon and
688
- its Material selected-state indicator centred in the rail. Rail tooltips use
684
+ uses Material's 12px outer item inset and one `navigationItemSpacing` value for
685
+ the icon-to-label gap and the space between the widest label and the drawer
686
+ edge. The spacing defaults to 12 CSS pixels and can be set from 8–24px. The
687
+ shell remeasures when placements, localization, fonts, spacing, the active
688
+ surface, or the window layout change, and clamps unusually long labels to a safe range. The
689
+ surface label appears once in the top app bar; the drawer starts with its
690
+ destinations instead of repeating that label as an uppercase subheader.
691
+
692
+ The closed desktop rail remains 80 CSS pixels wide by default, with every icon
693
+ and its Material selected-state indicator centred in the rail. The expanded
694
+ drawer uses the same icon centreline, so toggling the drawer reveals or hides
695
+ labels without making the icons jump sideways. The empty space around a 24px
696
+ icon in the default rail is intentional Material touch/indicator space, not a
697
+ second drawer padding. Products that deliberately need a denser rail can set
698
+ `railWidth`; the shell still enforces a 48px minimum target. Rail tooltips use
689
699
  one explicit opaque theme color pair and open on pointer hover or keyboard
690
700
  focus.
691
701
 
@@ -701,11 +711,11 @@ product has another discoverable navigation affordance:
701
711
  The default is `desktop-drawer-closed-mode="rail"`. Prefer that Material 3
702
712
  pattern; do not imitate a rail with custom CSS or a second menu registry.
703
713
 
704
- Applications that need fixed product-specific dimensions can use the public
705
- width props instead of overriding Vuetify drawer CSS:
714
+ Applications that need product-specific dimensions or spacing can use the
715
+ public props instead of overriding Vuetify drawer CSS:
706
716
 
707
717
  ```vue
708
- <ShellLayout :drawer-width="280" :rail-width="88">
718
+ <ShellLayout :drawer-width="280" :rail-width="64" :navigation-item-spacing="12">
709
719
  <RouterView />
710
720
  </ShellLayout>
711
721
  ```
@@ -714,9 +724,24 @@ Omit `drawer-width` to retain content-aware sizing. Omit `rail-width` to retain
714
724
  the 80px Material navigation-rail default. Drawer overrides are clamped to
715
725
  120–360px and rail overrides to 48–160px so shell navigation cannot consume an
716
726
  unsafe share of the viewport or shrink below its touch targets. The app-owned
717
- `src/components/ShellLayout.vue` wrapper forwards these attributes to the
718
- package component, so an application does not need to copy or restyle the
719
- drawer implementation.
727
+ `src/components/ShellLayout.vue` wrapper also forwards
728
+ `navigation-item-spacing`, so an application does not need to copy or restyle
729
+ the drawer implementation.
730
+
731
+ ### Updating an existing shell app
732
+
733
+ Commit the app's work and run:
734
+
735
+ ```bash
736
+ npm run jskit:update
737
+ ```
738
+
739
+ Keep the generated/app-owned `src/components/ShellLayout.vue` wrapper and let
740
+ it continue forwarding attributes to the package component. No copied drawer,
741
+ `.v-navigation-drawer` CSS, duplicate surface heading, or replacement smoke
742
+ test is required. If the product intentionally wants a denser desktop rail,
743
+ set the supported prop in that wrapper, for example `:rail-width="64"`; omit it
744
+ to keep the Material 3 80px default.
720
745
 
721
746
  `useShellErrorPresentationStore()` exposes the current banner, snackbar, and dialog presentation state behind `ShellErrorHost`.
722
747
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/agent-docs",
3
- "version": "0.1.117",
3
+ "version": "0.1.119",
4
4
  "description": "Distributed JSKIT agent references, prompts, guides, and generated reference maps.",
5
5
  "type": "module",
6
6
  "files": [
@@ -58,8 +58,8 @@ Runtime behavior:
58
58
  - Runtime resolves the component token as `entry.componentToken || variant.renderers[entry.kind]`.
59
59
  - Entries without a resolvable component token do not render.
60
60
  - `when()` receives placement context including `app`, `surface`, `target`, `layoutClass`, runtime context, local outlet context, and context contributors.
61
- - The standard `ShellLayout` sizes its open drawer from the widest currently visible placement label plus an approximately 10px logical-end gap. It remeasures after placement, locale, font, surface, and layout changes. Use the public `drawerWidth` prop only when a product needs a fixed width; do not add consumer `.v-navigation-drawer` overrides.
62
- - On medium and expanded layouts, closing the standard drawer produces an 80px navigation rail by default. Use `railWidth` to configure that width, or `desktopDrawerClosedMode="hidden"` only when another discoverable navigation surface exists.
61
+ - The standard `ShellLayout` uses Material's 12px outer item inset and one `navigationItemSpacing` value (12px by default) for the icon-to-label gap and widest label's logical-end gap. It remeasures its content-aware width after placement, locale, font, surface, spacing, and layout changes. The surface label belongs once in the top app bar; do not add or restore a duplicate drawer subheader. Use `drawerWidth` only when a product needs a fixed width; do not add consumer `.v-navigation-drawer` overrides.
62
+ - On medium and expanded layouts, closing the standard drawer produces an 80px Material navigation rail by default. Expanded and collapsed icons share one centreline. Use `railWidth` to configure an intentionally denser rail, or `desktopDrawerClosedMode="hidden"` only when another discoverable navigation surface exists.
63
63
  - The shell link renderers own rail centring, selected-state treatment, and opaque theme-aware tooltips. Applications should keep supplying the same semantic placement records rather than creating rail-only links or tooltip CSS.
64
64
 
65
65
  CLI and generators:
@@ -430,13 +430,14 @@ Exports
430
430
  ### `src/client/support/drawerWidth.js`
431
431
  Exports
432
432
  - `DEFAULT_SHELL_DRAWER_WIDTH`
433
+ - `DEFAULT_SHELL_NAVIGATION_ITEM_SPACING`
433
434
  - `DEFAULT_SHELL_RAIL_WIDTH`
434
435
  - `MAXIMUM_SHELL_DRAWER_WIDTH`
435
436
  - `MINIMUM_SHELL_DRAWER_WIDTH`
436
- - `SHELL_DRAWER_LABEL_END_GAP`
437
437
  - `normalizeShellDrawerWidth(value, fallback = DEFAULT_SHELL_DRAWER_WIDTH)`
438
+ - `normalizeShellNavigationItemSpacing(value, fallback = DEFAULT_SHELL_NAVIGATION_ITEM_SPACING)`
438
439
  - `normalizeShellRailWidth(value, fallback = DEFAULT_SHELL_RAIL_WIDTH)`
439
- - `resolveContentAwareDrawerWidth(measurements = [], { endGap = SHELL_DRAWER_LABEL_END_GAP, minimum = MINIMUM_SHELL_DRAWER_WIDTH, maximum = MAXIMUM_SHELL_DRAWER_WIDTH, fallback = DEFAULT_SHELL_DRAWER_WIDTH } = {})`
440
+ - `resolveContentAwareDrawerWidth(measurements = [], { endGap = DEFAULT_SHELL_NAVIGATION_ITEM_SPACING, minimum = MINIMUM_SHELL_DRAWER_WIDTH, maximum = MAXIMUM_SHELL_DRAWER_WIDTH, fallback = DEFAULT_SHELL_DRAWER_WIDTH } = {})`
440
441
  Local functions
441
442
  - `clampNumber(value, minimum, maximum)`
442
443
 
@@ -41,16 +41,18 @@ Doctor must continue to report a missing managed test.
41
41
 
42
42
  ## Adaptive shell drawer
43
43
 
44
- Use Vuetify Material navigation. Compact close dismisses the temporary drawer.
45
- Wider layouts default to `desktopDrawerClosedMode="rail"`, retaining primary
46
- navigation as a rail. Use `desktopDrawerClosedMode="hidden"` only when another
47
- discoverable navigation affordance exists. Do not create a second drawer/menu
48
- registry or imitate the rail with CSS.
49
-
50
- The open drawer tracks its widest visible label plus about 10px. The 80px
51
- desktop rail centres complete 48px targets and opaque theme-owned tooltips.
52
- Set `ShellLayout` `drawerWidth` or `railWidth` only for a fixed product width;
53
- the app wrapper forwards both. Never override `.v-navigation-drawer` in an app.
44
+ Use Vuetify Material navigation. Compact close dismisses the temporary drawer;
45
+ wide layouts default to `desktopDrawerClosedMode="rail"`. Use `hidden` only
46
+ with another navigation affordance.
47
+
48
+ The drawer omits the app bar's surface label. Open and rail icons share a
49
+ centreline. It uses a 12px outer item inset; `navigationItemSpacing` (12px)
50
+ controls icon/label and label/end gaps. The 80px rail centres 48px targets; set
51
+ `railWidth` (for example, `64`) for a denser rail or `drawerWidth` for a fixed
52
+ drawer. The wrapper forwards these props; never override its CSS.
53
+
54
+ Existing apps: commit work and run `npm run jskit:update`. Keep and adapt
55
+ the app-owned shell wrapper and smoke test; do not copy or delete them.
54
56
 
55
57
  ## Browser verification
56
58