@happyvertical/smrt-svelte 0.51.38 → 0.52.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.
Files changed (115) hide show
  1. package/AGENTS.md +3 -0
  2. package/README.md +167 -1
  3. package/agents/workspace.md +24 -0
  4. package/dist/browser-ai/adapters/stt/browser-speech.d.ts +11 -0
  5. package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -1
  6. package/dist/browser-ai/adapters/stt/browser-speech.js +20 -4
  7. package/dist/browser-ai/adapters/stt/browser-speech.test.js +113 -0
  8. package/dist/browser-ai/adapters/stt/dictation-source.d.ts +3 -0
  9. package/dist/browser-ai/adapters/stt/dictation-source.d.ts.map +1 -0
  10. package/dist/browser-ai/adapters/stt/dictation-source.js +38 -0
  11. package/dist/browser-ai/adapters/stt/dictation-source.test.js +52 -0
  12. package/dist/browser-ai/adapters/stt/index.d.ts +2 -1
  13. package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -1
  14. package/dist/browser-ai/adapters/stt/index.js +2 -1
  15. package/dist/components/forms/Form.svelte +118 -8
  16. package/dist/components/forms/Form.svelte.d.ts +18 -2
  17. package/dist/components/forms/Form.svelte.d.ts.map +1 -1
  18. package/dist/components/forms/FormScope.svelte +202 -0
  19. package/dist/components/forms/FormScope.svelte.d.ts +22 -0
  20. package/dist/components/forms/FormScope.svelte.d.ts.map +1 -0
  21. package/dist/components/forms/__tests__/Form.ui-controls.test.js +119 -0
  22. package/dist/components/forms/__tests__/Form.webmcp.test.js +5 -3
  23. package/dist/components/forms/__tests__/FormScope.test.js +39 -0
  24. package/dist/components/forms/__tests__/form-scope.fixture.svelte +30 -0
  25. package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts +10 -0
  26. package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts.map +1 -0
  27. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte +84 -0
  28. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts +14 -0
  29. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts.map +1 -0
  30. package/dist/components/forms/index.d.ts +1 -0
  31. package/dist/components/forms/index.d.ts.map +1 -1
  32. package/dist/components/forms/index.js +1 -0
  33. package/dist/components/workspace/README.md +18 -0
  34. package/dist/components/workspace/__tests__/AdminShell.responsive.test.js +586 -0
  35. package/dist/components/workspace/__tests__/AdminShell.test.js +85 -0
  36. package/dist/components/workspace/__tests__/TenantNav.test.js +49 -0
  37. package/dist/components/workspace/__tests__/admin-shell-header-overflow.test.js +25 -0
  38. package/dist/components/workspace/__tests__/admin-shell-mobile.test.js +217 -0
  39. package/dist/components/workspace/__tests__/admin-shell-page-contracts.test.js +30 -0
  40. package/dist/components/workspace/__tests__/admin-shell-responsive-state.test.js +184 -0
  41. package/dist/components/workspace/__tests__/admin-shell-theme-hooks.test.js +36 -0
  42. package/dist/components/workspace/__tests__/shell-chrome-components.test.js +108 -0
  43. package/dist/components/workspace/admin-shell/AdminShell.svelte +998 -40
  44. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +42 -1
  45. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
  46. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte +170 -0
  47. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts +11 -0
  48. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts.map +1 -0
  49. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte +93 -0
  50. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte.d.ts +11 -0
  51. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte.d.ts.map +1 -0
  52. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte +88 -0
  53. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte.d.ts +14 -0
  54. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte.d.ts.map +1 -0
  55. package/dist/components/workspace/admin-shell/ShellTitle.svelte +42 -0
  56. package/dist/components/workspace/admin-shell/ShellTitle.svelte.d.ts +11 -0
  57. package/dist/components/workspace/admin-shell/ShellTitle.svelte.d.ts.map +1 -0
  58. package/dist/components/workspace/admin-shell/TenantNav.svelte +46 -1
  59. package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
  60. package/dist/components/workspace/admin-shell/mobile-shell-dom.d.ts +37 -0
  61. package/dist/components/workspace/admin-shell/mobile-shell-dom.d.ts.map +1 -0
  62. package/dist/components/workspace/admin-shell/mobile-shell-dom.js +150 -0
  63. package/dist/components/workspace/admin-shell/mobile-shell.d.ts +191 -0
  64. package/dist/components/workspace/admin-shell/mobile-shell.d.ts.map +1 -0
  65. package/dist/components/workspace/admin-shell/mobile-shell.js +165 -0
  66. package/dist/components/workspace/admin-shell/settings.d.ts +27 -2
  67. package/dist/components/workspace/admin-shell/settings.d.ts.map +1 -1
  68. package/dist/components/workspace/admin-shell/settings.js +84 -2
  69. package/dist/components/workspace/admin-shell/state.svelte.d.ts +55 -1
  70. package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
  71. package/dist/components/workspace/admin-shell/state.svelte.js +149 -6
  72. package/dist/components/workspace/admin-shell/types.d.ts +97 -0
  73. package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
  74. package/dist/components/workspace/admin-shell/types.js +13 -0
  75. package/dist/components/workspace/index.d.ts +11 -4
  76. package/dist/components/workspace/index.d.ts.map +1 -1
  77. package/dist/components/workspace/index.js +12 -3
  78. package/dist/components/workspace/tools-dock/ToolsDock.svelte +2 -0
  79. package/dist/i18n/strings.workspace.d.ts +10 -0
  80. package/dist/i18n/strings.workspace.d.ts.map +1 -1
  81. package/dist/i18n/strings.workspace.js +10 -0
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +1 -1
  85. package/dist/web/__tests__/assistant-dock.integration.svelte.test.js +2 -2
  86. package/dist/web/__tests__/list-sort-surface.fixture.svelte +41 -0
  87. package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts +15 -0
  88. package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts.map +1 -0
  89. package/dist/web/__tests__/list-sort-surface.svelte.test.js +59 -0
  90. package/dist/web/__tests__/surfaces.child.fixture.svelte +69 -0
  91. package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts +16 -0
  92. package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts.map +1 -0
  93. package/dist/web/__tests__/surfaces.fixture.svelte +26 -0
  94. package/dist/web/__tests__/surfaces.fixture.svelte.d.ts +18 -0
  95. package/dist/web/__tests__/surfaces.fixture.svelte.d.ts.map +1 -0
  96. package/dist/web/__tests__/surfaces.svelte.test.js +140 -0
  97. package/dist/web/__tests__/webmcp-ui.test.js +18 -0
  98. package/dist/web/index.d.ts +4 -1
  99. package/dist/web/index.d.ts.map +1 -1
  100. package/dist/web/index.js +4 -1
  101. package/dist/web/link-surface.svelte.d.ts +14 -0
  102. package/dist/web/link-surface.svelte.d.ts.map +1 -0
  103. package/dist/web/link-surface.svelte.js +49 -0
  104. package/dist/web/list-surface.svelte.d.ts +80 -0
  105. package/dist/web/list-surface.svelte.d.ts.map +1 -0
  106. package/dist/web/list-surface.svelte.js +309 -0
  107. package/dist/web/step-surface.svelte.d.ts +17 -0
  108. package/dist/web/step-surface.svelte.d.ts.map +1 -0
  109. package/dist/web/step-surface.svelte.js +56 -0
  110. package/dist/web/webmcp-ui-context.d.ts +7 -0
  111. package/dist/web/webmcp-ui-context.d.ts.map +1 -1
  112. package/dist/web/webmcp-ui-context.js +10 -0
  113. package/dist/web/webmcp-ui.d.ts.map +1 -1
  114. package/dist/web/webmcp-ui.js +16 -3
  115. package/package.json +16 -16
@@ -1,4 +1,13 @@
1
- import type { PanelEdge, PanelState, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellFocusTool, ShellPanelDefaults, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, VisiblePanelState } from './types.js';
1
+ import type { PanelEdge, PanelPresentation, PanelState, PhonePanelPresentation, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellFocusTool, ShellPanelDefaults, ShellPanelResize, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, ShellViewport, VisiblePanelState } from './types.js';
2
+ /**
3
+ * Phones: up to 48rem (768px itself is a phone). The same boundary the
4
+ * shell's CSS uses to turn side edges into drawers.
5
+ */
6
+ export declare const ADMIN_SHELL_PHONE_QUERY = "(max-width: 48rem)";
7
+ /** Desktop starts at 64rem; between the two queries is a tablet. */
8
+ export declare const ADMIN_SHELL_DESKTOP_QUERY = "(min-width: 64rem)";
9
+ /** The viewport class for the current window (`desktop` without a DOM). */
10
+ export declare function detectShellViewport(): ShellViewport;
2
11
  type ActivityListener = (event: ShellActivityEvent) => void;
3
12
  type ShellActivityPatch = Partial<Omit<ShellActivity, 'id'>>;
4
13
  export interface ShellStateOptions {
@@ -6,18 +15,63 @@ export interface ShellStateOptions {
6
15
  settings?: ShellSettingsDelta;
7
16
  settingsAdapter?: ShellSettingsAdapter;
8
17
  storageKey?: string;
18
+ /** Initial viewport class (default: detected from `window`, else desktop). */
19
+ viewport?: ShellViewport;
9
20
  }
10
21
  export declare class ShellState {
11
22
  readonly config: ResolvedShellConfig;
12
23
  readonly adapter: ShellSettingsAdapter | null;
13
24
  settings: ShellSettingsDelta;
14
25
  panels: Record<PanelEdge, PanelState>;
26
+ /** Width class the shell is laid out for; `AdminShell` keeps it current. */
27
+ viewport: ShellViewport;
15
28
  focusTools: ShellFocusTool[];
16
29
  activeFocusToolId: string | null;
17
30
  activities: ShellActivity[];
31
+ /**
32
+ * Side edges whose `overlayMedia` currently matches; `AdminShell` keeps
33
+ * it current. Read it through `presentationFor`.
34
+ */
35
+ overlayMatches: Partial<Record<PanelEdge, boolean>>;
18
36
  private activityListeners;
19
37
  constructor(options?: ShellStateOptions);
20
38
  hydrate(): Promise<void>;
39
+ /**
40
+ * Record the viewport class. When it changes, edges with
41
+ * `viewportDefaults` switch to their default for the new class (the
42
+ * user's toggle for the old class is dropped). Not persisted.
43
+ */
44
+ setViewport(viewport: ShellViewport): void;
45
+ /** How a side edge is presented on phones (`drawer` unless configured). */
46
+ phonePresentation(edge: PanelEdge): PhonePanelPresentation;
47
+ /**
48
+ * How an edge is presented right now: its configured presentation, or
49
+ * `overlay` for a side edge whose `overlayMedia` matches off phones.
50
+ */
51
+ presentationFor(edge: PanelEdge): PanelPresentation;
52
+ /**
53
+ * Close side edges that would open as overlays (a restored or initial
54
+ * `expanded` state), without changing the stored preference: an overlay
55
+ * never covers the page on load, while a docked edge still restores.
56
+ */
57
+ closeOverlaidEdges(): void;
58
+ /** Record whether a side edge's `overlayMedia` matches. */
59
+ setOverlayMatch(edge: PanelEdge, matches: boolean): void;
60
+ /** Whether an edge is rendered at the current viewport. */
61
+ isEdgeShown(edge: PanelEdge): boolean;
62
+ /** Resize limits for an edge, or `null` when it is not resizable. */
63
+ resizeLimits(edge: PanelEdge): Required<ShellPanelResize> | null;
64
+ /** The user's resized width for an edge in px, or `null` (configured size). */
65
+ panelSize(edge: PanelEdge): number | null;
66
+ /**
67
+ * Resize an edge's expanded width (px, clamped to its limits); `null`
68
+ * resets it to the configured `expandedSize`. Persisted unless
69
+ * `persist: false` (use that while a drag is in progress) or the edge
70
+ * opts out of storing its size.
71
+ */
72
+ setPanelSize(edge: PanelEdge, size: number | null, options?: {
73
+ persist?: boolean;
74
+ }): void;
21
75
  snapshot(): ShellStateSnapshot;
22
76
  applySettings(delta: ShellSettingsDelta, options?: {
23
77
  persist?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/state.svelte.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,KAAK,gBAAgB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;AAC5D,KAAK,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,UAAU;IACrB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAE9C,QAAQ,qBAAkC;IAC1C,MAAM,gCAKH;IACH,UAAU,mBAAgC;IAC1C,iBAAiB,gBAA+B;IAChD,UAAU,kBAA+B;IAEzC,OAAO,CAAC,iBAAiB,CAA+B;gBAE5C,OAAO,GAAE,iBAAsB;IAUrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,QAAQ,IAAI,kBAAkB;IAY9B,aAAa,CACX,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,IAAI;IAkBP,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAUrD,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAezD,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAUlC,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAIlC,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAIpC,oBAAoB,IAAI,OAAO;IAY/B,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,IAAI;IAYnD,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IASrC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAY/B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWjC,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IA4B7C,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAc3D,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAWhC,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAKvD,cAAc,CAAC,MAAM,GAAE,mBAAwB,GAAG,aAAa,EAAE;IASjE,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,kBAAkB;IAsBlD,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS;IAW9C,OAAO,CAAC,mBAAmB;YAmBb,eAAe;IAI7B,OAAO,CAAC,YAAY;CAGrB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAE5E"}
1
+ {"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/state.svelte.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,25 @@
1
1
  import { untrack } from 'svelte';
2
- import { LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, resolveInitialPanelState, resolveShellConfig, } from './settings.js';
2
+ import { clampPanelSize, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, resolveInitialPanelState, resolvePanelResize, resolveShellConfig, stripUnpersistedSettings, } from './settings.js';
3
3
  import { PANEL_EDGES, SCOPE_EDGES } from './types.js';
4
+ /**
5
+ * Phones: up to 48rem (768px itself is a phone). The same boundary the
6
+ * shell's CSS uses to turn side edges into drawers.
7
+ */
8
+ export const ADMIN_SHELL_PHONE_QUERY = '(max-width: 48rem)';
9
+ /** Desktop starts at 64rem; between the two queries is a tablet. */
10
+ export const ADMIN_SHELL_DESKTOP_QUERY = '(min-width: 64rem)';
11
+ /** The viewport class for the current window (`desktop` without a DOM). */
12
+ export function detectShellViewport() {
13
+ if (typeof window === 'undefined' ||
14
+ typeof window.matchMedia !== 'function') {
15
+ return 'desktop';
16
+ }
17
+ if (window.matchMedia(ADMIN_SHELL_PHONE_QUERY).matches)
18
+ return 'phone';
19
+ return window.matchMedia(ADMIN_SHELL_DESKTOP_QUERY).matches
20
+ ? 'desktop'
21
+ : 'tablet';
22
+ }
4
23
  export class ShellState {
5
24
  config;
6
25
  adapter;
@@ -11,9 +30,16 @@ export class ShellState {
11
30
  right: 'collapsed',
12
31
  bottom: 'collapsed',
13
32
  });
33
+ /** Width class the shell is laid out for; `AdminShell` keeps it current. */
34
+ viewport = $state('desktop');
14
35
  focusTools = $state([]);
15
36
  activeFocusToolId = $state(null);
16
37
  activities = $state([]);
38
+ /**
39
+ * Side edges whose `overlayMedia` currently matches; `AdminShell` keeps
40
+ * it current. Read it through `presentationFor`.
41
+ */
42
+ overlayMatches = $state({});
17
43
  activityListeners = new Set();
18
44
  constructor(options = {}) {
19
45
  this.config = resolveShellConfig(options.config);
@@ -22,23 +48,135 @@ export class ShellState {
22
48
  (options.storageKey
23
49
  ? new LocalStorageShellSettingsAdapter(options.storageKey)
24
50
  : null);
51
+ this.viewport = options.viewport ?? detectShellViewport();
25
52
  this.applySettings(options.settings ?? {}, { persist: false });
26
53
  }
27
54
  async hydrate() {
28
55
  if (!this.adapter)
29
56
  return;
30
57
  const delta = await this.adapter.read();
31
- if (delta)
32
- this.applySettings(delta, { persist: false });
58
+ if (delta) {
59
+ this.applySettings(stripUnpersistedSettings(delta, this.config), {
60
+ persist: false,
61
+ });
62
+ }
63
+ }
64
+ /**
65
+ * Record the viewport class. When it changes, edges with
66
+ * `viewportDefaults` switch to their default for the new class (the
67
+ * user's toggle for the old class is dropped). Not persisted.
68
+ */
69
+ setViewport(viewport) {
70
+ untrack(() => {
71
+ if (viewport === this.viewport)
72
+ return;
73
+ this.viewport = viewport;
74
+ let changed = false;
75
+ const panels = { ...(this.settings.panels ?? {}) };
76
+ for (const edge of PANEL_EDGES) {
77
+ const config = this.config.panels[edge];
78
+ const next = config.viewportDefaults?.[viewport];
79
+ if (!next || config.initial === 'hidden')
80
+ continue;
81
+ delete panels[edge];
82
+ changed = true;
83
+ if (next === 'expanded')
84
+ this.closeExclusivePeers(edge);
85
+ this.panels[edge] = next;
86
+ }
87
+ if (changed)
88
+ this.settings = { ...this.settings, panels };
89
+ });
90
+ }
91
+ /** How a side edge is presented on phones (`drawer` unless configured). */
92
+ phonePresentation(edge) {
93
+ return this.config.panels[edge].phone ?? 'drawer';
94
+ }
95
+ /**
96
+ * How an edge is presented right now: its configured presentation, or
97
+ * `overlay` for a side edge whose `overlayMedia` matches off phones.
98
+ */
99
+ presentationFor(edge) {
100
+ const config = this.config.panels[edge];
101
+ if ((edge === 'left' || edge === 'right') &&
102
+ this.viewport !== 'phone' &&
103
+ config.overlayMedia &&
104
+ this.overlayMatches[edge]) {
105
+ return 'overlay';
106
+ }
107
+ return config.presentation;
108
+ }
109
+ /**
110
+ * Close side edges that would open as overlays (a restored or initial
111
+ * `expanded` state), without changing the stored preference: an overlay
112
+ * never covers the page on load, while a docked edge still restores.
113
+ */
114
+ closeOverlaidEdges() {
115
+ untrack(() => {
116
+ for (const edge of ['left', 'right']) {
117
+ if (this.panels[edge] === 'expanded' &&
118
+ this.presentationFor(edge) === 'overlay') {
119
+ this.panels[edge] = 'collapsed';
120
+ }
121
+ }
122
+ });
123
+ }
124
+ /** Record whether a side edge's `overlayMedia` matches. */
125
+ setOverlayMatch(edge, matches) {
126
+ untrack(() => {
127
+ if (Boolean(this.overlayMatches[edge]) === matches)
128
+ return;
129
+ this.overlayMatches = { ...this.overlayMatches, [edge]: matches };
130
+ });
131
+ }
132
+ /** Whether an edge is rendered at the current viewport. */
133
+ isEdgeShown(edge) {
134
+ if (this.panels[edge] === 'hidden')
135
+ return false;
136
+ return !(this.viewport === 'phone' && this.phonePresentation(edge) === 'hidden');
137
+ }
138
+ /** Resize limits for an edge, or `null` when it is not resizable. */
139
+ resizeLimits(edge) {
140
+ return resolvePanelResize(edge, this.config.panels[edge]);
141
+ }
142
+ /** The user's resized width for an edge in px, or `null` (configured size). */
143
+ panelSize(edge) {
144
+ if (!this.resizeLimits(edge))
145
+ return null;
146
+ const size = this.settings.sizes?.[edge];
147
+ return typeof size === 'number' && Number.isFinite(size) ? size : null;
148
+ }
149
+ /**
150
+ * Resize an edge's expanded width (px, clamped to its limits); `null`
151
+ * resets it to the configured `expandedSize`. Persisted unless
152
+ * `persist: false` (use that while a drag is in progress) or the edge
153
+ * opts out of storing its size.
154
+ */
155
+ setPanelSize(edge, size, options = {}) {
156
+ untrack(() => {
157
+ const limits = this.resizeLimits(edge);
158
+ if (!limits)
159
+ return;
160
+ const next = size === null || !Number.isFinite(size)
161
+ ? null
162
+ : clampPanelSize(size, limits);
163
+ this.settings = mergeShellSettingsDelta(this.settings, {
164
+ sizes: { [edge]: next },
165
+ });
166
+ if (options.persist !== false)
167
+ void this.persistSettings();
168
+ });
33
169
  }
34
170
  snapshot() {
35
171
  return {
36
172
  panels: { ...this.panels },
173
+ viewport: this.viewport,
37
174
  activeFocusToolId: this.activeFocusToolId,
38
175
  settings: {
39
176
  ...this.settings,
40
177
  keymap: this.settings.keymap ? { ...this.settings.keymap } : undefined,
41
178
  panels: this.settings.panels ? { ...this.settings.panels } : undefined,
179
+ sizes: this.settings.sizes ? { ...this.settings.sizes } : undefined,
42
180
  },
43
181
  };
44
182
  }
@@ -48,7 +186,7 @@ export class ShellState {
48
186
  untrack(() => {
49
187
  this.settings = mergeShellSettingsDelta(this.settings, nextDelta);
50
188
  for (const edge of PANEL_EDGES) {
51
- this.panels[edge] = resolveInitialPanelState(edge, this.config.panels[edge], this.settings);
189
+ this.panels[edge] = resolveInitialPanelState(edge, this.config.panels[edge], this.settings, this.viewport);
52
190
  }
53
191
  this.activeFocusToolId =
54
192
  this.settings.activeFocusToolId ?? this.activeFocusToolId;
@@ -99,7 +237,7 @@ export class ShellState {
99
237
  closeTopmostExpanded() {
100
238
  return untrack(() => {
101
239
  for (const edge of [...PANEL_EDGES].reverse()) {
102
- if (this.panels[edge] === 'expanded') {
240
+ if (this.panels[edge] === 'expanded' && this.isEdgeShown(edge)) {
103
241
  this.collapsePanel(edge);
104
242
  return true;
105
243
  }
@@ -255,7 +393,9 @@ export class ShellState {
255
393
  }
256
394
  }
257
395
  async persistSettings() {
258
- await this.adapter?.write(this.settings);
396
+ if (!this.adapter)
397
+ return;
398
+ await this.adapter.write(stripUnpersistedSettings(this.settings, this.config));
259
399
  }
260
400
  emitActivity(event) {
261
401
  for (const listener of this.activityListeners)
@@ -297,6 +437,9 @@ function snapshotShellSettingsDelta(delta) {
297
437
  if ('panels' in delta) {
298
438
  snapshot.panels = delta.panels ? { ...delta.panels } : delta.panels;
299
439
  }
440
+ if ('sizes' in delta) {
441
+ snapshot.sizes = delta.sizes ? { ...delta.sizes } : delta.sizes;
442
+ }
300
443
  return snapshot;
301
444
  }
302
445
  function snapshotShellKeymap(keymap) {
@@ -4,6 +4,18 @@ export type ShellScope = 'app' | 'tenant' | 'focus' | 'system';
4
4
  export type PanelState = 'hidden' | 'collapsed' | 'expanded';
5
5
  export type VisiblePanelState = Exclude<PanelState, 'hidden'>;
6
6
  export type PanelPresentation = 'push' | 'overlay';
7
+ /**
8
+ * Width class the shell is laid out for: `phone` up to 48rem (edges become
9
+ * drawers), `tablet` up to 64rem, `desktop` from 64rem. See
10
+ * `ADMIN_SHELL_PHONE_QUERY` / `ADMIN_SHELL_DESKTOP_QUERY`.
11
+ */
12
+ export type ShellViewport = 'phone' | 'tablet' | 'desktop';
13
+ /**
14
+ * How a side edge is presented on phones: `drawer` (the default, slides in
15
+ * from its side), `sheet` (right edge only: rises from the bottom), or
16
+ * `hidden` (not rendered on phones; the host shows its content elsewhere).
17
+ */
18
+ export type PhonePanelPresentation = 'drawer' | 'sheet' | 'hidden';
7
19
  export type ActivityStatus = 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
8
20
  export interface ShellHotkeyBinding {
9
21
  code: string;
@@ -22,12 +34,67 @@ export interface ShellPanelConfig {
22
34
  collapsedSize: string;
23
35
  expandedSize: string;
24
36
  exclusiveGroup?: string;
37
+ /**
38
+ * Open/closed state per viewport class, applied on first render and again
39
+ * whenever the viewport class changes (e.g. `{ phone: 'collapsed', tablet:
40
+ * 'collapsed', desktop: 'expanded' }`). The user's toggle sticks until the
41
+ * class changes. An edge with viewport defaults never persists its state.
42
+ */
43
+ viewportDefaults?: Partial<Record<ShellViewport, VisiblePanelState>>;
44
+ /** Phone presentation of a side edge (default `drawer`). */
45
+ phone?: PhonePanelPresentation;
46
+ /**
47
+ * Media query under which an expanded `push` side edge is laid over the
48
+ * page (sliding in above a scrim) instead of pushing it aside, on tablet
49
+ * and desktop. Above it the edge docks as usual. Phones keep their
50
+ * `phone` presentation. E.g. `'(max-width: 99.9375rem)'` overlays up to
51
+ * the Material 3 "Large" window class (under 1600px).
52
+ */
53
+ overlayMedia?: string;
54
+ /**
55
+ * Drag-to-resize for a `push` side edge on tablet/desktop: a separator on
56
+ * the edge's inner border (pointer drag, arrow keys, Home/End, double-click
57
+ * or Enter to reset). `true` uses the default limits.
58
+ */
59
+ resizable?: boolean | ShellPanelResize;
60
+ /**
61
+ * What the settings adapter stores for this edge (default: everything).
62
+ * `false` stores nothing; `{ state: false }` keeps only the size.
63
+ */
64
+ persist?: boolean | ShellPanelPersist;
65
+ /**
66
+ * Keep the edge's panel content mounted (and hidden) while the edge is
67
+ * collapsed, instead of unmounting it. Use it when the panel holds state
68
+ * that must survive closing, such as an assistant chat's draft on the
69
+ * phone sheet. Applies to the expanded content (`appPanel`,
70
+ * `tenantPanel`, the focus panel, `systemPanel`); the rail still renders
71
+ * as usual. A hidden edge unmounts everything.
72
+ */
73
+ keepMounted?: boolean;
74
+ }
75
+ /** Limits for a resizable side edge, in CSS pixels. */
76
+ export interface ShellPanelResize {
77
+ /** Smallest expanded width (default 240). */
78
+ min?: number;
79
+ /** Largest expanded width (default 720). */
80
+ max?: number;
81
+ /** Arrow-key step (default 16; Shift multiplies by 4). */
82
+ step?: number;
83
+ }
84
+ /** Which of an edge's user settings the settings adapter stores. */
85
+ export interface ShellPanelPersist {
86
+ /** Open/closed state (default true). */
87
+ state?: boolean;
88
+ /** Resized width (default true). */
89
+ size?: boolean;
25
90
  }
26
91
  export type ShellPanelDefaults = Partial<Record<PanelEdge, Partial<ShellPanelConfig> | false>>;
27
92
  export interface ShellSettingsDelta {
28
93
  hotkeysEnabled?: boolean;
29
94
  keymap?: Partial<Record<PanelEdge, ShellHotkeyBinding | null>>;
30
95
  panels?: Partial<Record<PanelEdge, VisiblePanelState>>;
96
+ /** Resized expanded widths in px; `null` resets to the configured size. */
97
+ sizes?: Partial<Record<PanelEdge, number | null>>;
31
98
  activeFocusToolId?: string | null;
32
99
  }
33
100
  export interface ShellSettingsAdapter {
@@ -48,6 +115,13 @@ export interface ShellNavItem {
48
115
  icon?: string;
49
116
  description?: string;
50
117
  badge?: number | string | null;
118
+ /**
119
+ * Show a "needs attention" dot on the item (also over its icon when the
120
+ * nav is collapsed). `true` announces the default label ("Needs
121
+ * attention"); a string is the accessible label to announce instead
122
+ * (e.g. "A background job failed recently").
123
+ */
124
+ attention?: boolean | string | null;
51
125
  children?: ShellNavItem[];
52
126
  }
53
127
  /** Tenant option rendered by {@link WorkspaceAccountMenu}. */
@@ -129,9 +203,19 @@ export interface ShellSystemPanel {
129
203
  }
130
204
  export interface ShellStateSnapshot {
131
205
  panels: Record<PanelEdge, PanelState>;
206
+ viewport: ShellViewport;
132
207
  activeFocusToolId: string | null;
133
208
  settings: ShellSettingsDelta;
134
209
  }
210
+ /** Phone behavior switches for `AdminShell` (all off by default). */
211
+ export interface AdminShellPhoneOptions {
212
+ /** Dim the page behind an open side drawer or sheet; a tap closes it. */
213
+ scrim?: boolean;
214
+ /** Close drawers by swiping them away (left drawer left, right drawer right, sheet down). */
215
+ swipeToClose?: boolean;
216
+ /** Hide the `phoneTopBar` while scrolling down (default true). */
217
+ hideOnScroll?: boolean;
218
+ }
135
219
  export interface AdminShellProps {
136
220
  title?: string;
137
221
  subtitle?: string;
@@ -143,4 +227,17 @@ export interface AdminShellProps {
143
227
  export declare const PANEL_EDGES: PanelEdge[];
144
228
  export declare const EDGE_SCOPES: Record<PanelEdge, ShellScope>;
145
229
  export declare const SCOPE_EDGES: Record<ShellScope, PanelEdge>;
230
+ /**
231
+ * Public element ids of AdminShell's regions, stable for `aria-controls`,
232
+ * skip links, and host styling. `main` is the page scroller: the shell is
233
+ * pinned to the viewport and page content scrolls inside it.
234
+ */
235
+ export declare const ADMIN_SHELL_REGION_IDS: {
236
+ readonly header: "smrt-admin-shell-header";
237
+ readonly top: "smrt-admin-shell-top-panel";
238
+ readonly left: "smrt-admin-shell-left-panel";
239
+ readonly right: "smrt-admin-shell-right-panel";
240
+ readonly bottom: "smrt-admin-shell-bottom-panel";
241
+ readonly main: "smrt-admin-shell-main";
242
+ };
146
243
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
@@ -11,3 +11,16 @@ export const SCOPE_EDGES = {
11
11
  focus: 'right',
12
12
  system: 'bottom',
13
13
  };
14
+ /**
15
+ * Public element ids of AdminShell's regions, stable for `aria-controls`,
16
+ * skip links, and host styling. `main` is the page scroller: the shell is
17
+ * pinned to the viewport and page content scrolls inside it.
18
+ */
19
+ export const ADMIN_SHELL_REGION_IDS = {
20
+ header: 'smrt-admin-shell-header',
21
+ top: 'smrt-admin-shell-top-panel',
22
+ left: 'smrt-admin-shell-left-panel',
23
+ right: 'smrt-admin-shell-right-panel',
24
+ bottom: 'smrt-admin-shell-bottom-panel',
25
+ main: 'smrt-admin-shell-main',
26
+ };
@@ -6,6 +6,7 @@
6
6
  * package as migration references, but the public workspace surface now points
7
7
  * at the four-edge AdminShell contract.
8
8
  */
9
+ export { type SwipeDirection, type SwipeDismissOptions, swipeDismiss, swipeDismisses, } from '@happyvertical/smrt-ui/feedback';
9
10
  export { default as ActivityBadge } from './admin-shell/ActivityBadge.svelte';
10
11
  export { default as ActivityItem } from './admin-shell/ActivityItem.svelte';
11
12
  export { default as ActivityList } from './admin-shell/ActivityList.svelte';
@@ -15,17 +16,23 @@ export { default as AppScopePanel } from './admin-shell/AppScopePanel.svelte';
15
16
  export { ADMIN_SHELL_CONTEXT, setAdminShell, tryUseAdminShell, useAdminShell, } from './admin-shell/context.js';
16
17
  export { default as HotkeyInput } from './admin-shell/HotkeyInput.svelte';
17
18
  export { formatHotkeyBinding, hotkeyMatchesEvent, isEditableTarget, isShortcutsEvent, type ShellHotkeyAction, shellActionFromKeyboardEvent, shouldIgnoreShellHotkey, } from './admin-shell/hotkeys.js';
19
+ export { type BottomBarMode, bottomBarMode, FORM_ACTION_BAR_SELECTOR, findShellNavTrail, keyboardLikelyOpen, normalizeShellPath, type PhoneBottomBarItem, type PhoneTopBarInput, type PhoneTopBarModel, phoneTopBarFor, ScrollChrome, type ScrollChromeOptions, type ScrollSample, type ShellCrumb, type ShellIcon, type ShellNavPathItem, type ShellPageTrail, type ShellPageTrailInput, shellNavItemMatches, shellPageTrailFor, viewportFor, } from './admin-shell/mobile-shell.js';
20
+ export { installKeyboardWatcher, installScrollChrome, installShellViewport, watchFormActionBar, } from './admin-shell/mobile-shell-dom.js';
21
+ export { default as PhoneBottomBar } from './admin-shell/PhoneBottomBar.svelte';
22
+ export { default as PhoneTopBar } from './admin-shell/PhoneTopBar.svelte';
18
23
  export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
19
24
  export { default as ShellDockTool } from './admin-shell/ShellDockTool.svelte';
25
+ export { default as ShellNavToggle } from './admin-shell/ShellNavToggle.svelte';
20
26
  export { default as ShellSettingsPanel } from './admin-shell/ShellSettingsPanel.svelte';
27
+ export { default as ShellTitle } from './admin-shell/ShellTitle.svelte';
21
28
  export { default as ShortcutsOverlay } from './admin-shell/ShortcutsOverlay.svelte';
22
29
  export { default as SystemScopePanel } from './admin-shell/SystemScopePanel.svelte';
23
30
  export { default as SystemStatusChips } from './admin-shell/SystemStatusChips.svelte';
24
- export { DEFAULT_SHELL_KEYMAP, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, pruneShellSettingsDelta, resolveHotkey, resolveInitialPanelState, resolveShellConfig, } from './admin-shell/settings.js';
25
- export { createShellState, ShellState } from './admin-shell/state.svelte.js';
31
+ export { clampPanelSize, DEFAULT_SHELL_KEYMAP, DEFAULT_SHELL_PANEL_RESIZE, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, panelPersists, pruneShellSettingsDelta, resolveHotkey, resolveInitialPanelState, resolvePanelResize, resolveShellConfig, stripUnpersistedSettings, } from './admin-shell/settings.js';
32
+ export { ADMIN_SHELL_DESKTOP_QUERY, ADMIN_SHELL_PHONE_QUERY, createShellState, detectShellViewport, ShellState, type ShellStateOptions, } from './admin-shell/state.svelte.js';
26
33
  export { default as TenantNav } from './admin-shell/TenantNav.svelte';
27
- export type { ActivityStatus, AdminShellProps, PanelEdge, PanelPresentation, PanelState, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellFocusTool, ShellFocusToolSubject, ShellHotkeyBinding, ShellNavItem, ShellPanelConfig, ShellPanelDefaults, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, ShellStatusChip, ShellStatusTone, ShellSystemItem, ShellSystemPanel, VisiblePanelState, WorkspaceAccountTenant, } from './admin-shell/types.js';
28
- export { EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES } from './admin-shell/types.js';
34
+ export type { ActivityStatus, AdminShellPhoneOptions, AdminShellProps, PanelEdge, PanelPresentation, PanelState, PhonePanelPresentation, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellFocusTool, ShellFocusToolSubject, ShellHotkeyBinding, ShellNavItem, ShellPanelConfig, ShellPanelDefaults, ShellPanelPersist, ShellPanelResize, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, ShellStatusChip, ShellStatusTone, ShellSystemItem, ShellSystemPanel, ShellViewport, VisiblePanelState, WorkspaceAccountTenant, } from './admin-shell/types.js';
35
+ export { ADMIN_SHELL_REGION_IDS, EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES, } from './admin-shell/types.js';
29
36
  export { default as WorkspaceAccountMenu } from './admin-shell/WorkspaceAccountMenu.svelte';
30
37
  export { type NavSection, type NavTreeFromManifestOptions, navTreeFromManifest as tenantNavFromManifest, pluralizeClassName, type SmrtManifestEntryLike, type SmrtManifestLike, } from './manifest-nav.js';
31
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EACV,cAAc,EACd,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAE5F,OAAO,EACL,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,mBAAmB,IAAI,qBAAqB,EAC5C,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,9 @@
6
6
  * package as migration references, but the public workspace surface now points
7
7
  * at the four-edge AdminShell contract.
8
8
  */
9
+ // Phone surfaces and swipe-to-dismiss live in the smrt-ui leaf; re-exported
10
+ // here so a shell host has one import for its chrome.
11
+ export { swipeDismiss, swipeDismisses, } from '@happyvertical/smrt-ui/feedback';
9
12
  export { default as ActivityBadge } from './admin-shell/ActivityBadge.svelte';
10
13
  export { default as ActivityItem } from './admin-shell/ActivityItem.svelte';
11
14
  export { default as ActivityList } from './admin-shell/ActivityList.svelte';
@@ -15,15 +18,21 @@ export { default as AppScopePanel } from './admin-shell/AppScopePanel.svelte';
15
18
  export { ADMIN_SHELL_CONTEXT, setAdminShell, tryUseAdminShell, useAdminShell, } from './admin-shell/context.js';
16
19
  export { default as HotkeyInput } from './admin-shell/HotkeyInput.svelte';
17
20
  export { formatHotkeyBinding, hotkeyMatchesEvent, isEditableTarget, isShortcutsEvent, shellActionFromKeyboardEvent, shouldIgnoreShellHotkey, } from './admin-shell/hotkeys.js';
21
+ export { bottomBarMode, FORM_ACTION_BAR_SELECTOR, findShellNavTrail, keyboardLikelyOpen, normalizeShellPath, phoneTopBarFor, ScrollChrome, shellNavItemMatches, shellPageTrailFor, viewportFor, } from './admin-shell/mobile-shell.js';
22
+ export { installKeyboardWatcher, installScrollChrome, installShellViewport, watchFormActionBar, } from './admin-shell/mobile-shell-dom.js';
23
+ export { default as PhoneBottomBar } from './admin-shell/PhoneBottomBar.svelte';
24
+ export { default as PhoneTopBar } from './admin-shell/PhoneTopBar.svelte';
18
25
  export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
19
26
  export { default as ShellDockTool } from './admin-shell/ShellDockTool.svelte';
27
+ export { default as ShellNavToggle } from './admin-shell/ShellNavToggle.svelte';
20
28
  export { default as ShellSettingsPanel } from './admin-shell/ShellSettingsPanel.svelte';
29
+ export { default as ShellTitle } from './admin-shell/ShellTitle.svelte';
21
30
  export { default as ShortcutsOverlay } from './admin-shell/ShortcutsOverlay.svelte';
22
31
  export { default as SystemScopePanel } from './admin-shell/SystemScopePanel.svelte';
23
32
  export { default as SystemStatusChips } from './admin-shell/SystemStatusChips.svelte';
24
- export { DEFAULT_SHELL_KEYMAP, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, pruneShellSettingsDelta, resolveHotkey, resolveInitialPanelState, resolveShellConfig, } from './admin-shell/settings.js';
25
- export { createShellState, ShellState } from './admin-shell/state.svelte.js';
33
+ export { clampPanelSize, DEFAULT_SHELL_KEYMAP, DEFAULT_SHELL_PANEL_RESIZE, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, panelPersists, pruneShellSettingsDelta, resolveHotkey, resolveInitialPanelState, resolvePanelResize, resolveShellConfig, stripUnpersistedSettings, } from './admin-shell/settings.js';
34
+ export { ADMIN_SHELL_DESKTOP_QUERY, ADMIN_SHELL_PHONE_QUERY, createShellState, detectShellViewport, ShellState, } from './admin-shell/state.svelte.js';
26
35
  export { default as TenantNav } from './admin-shell/TenantNav.svelte';
27
- export { EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES } from './admin-shell/types.js';
36
+ export { ADMIN_SHELL_REGION_IDS, EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES, } from './admin-shell/types.js';
28
37
  export { default as WorkspaceAccountMenu } from './admin-shell/WorkspaceAccountMenu.svelte';
29
38
  export { navTreeFromManifest as tenantNavFromManifest, pluralizeClassName, } from './manifest-nav.js';
@@ -508,6 +508,8 @@
508
508
 
509
509
  .tools-dock__sr-only {
510
510
  position: absolute;
511
+ top: 0;
512
+ left: 0;
511
513
  width: 1px;
512
514
  height: 1px;
513
515
  padding: 0;
@@ -34,6 +34,15 @@ export declare const M: {
34
34
  readonly 'ui.admin_shell.close_shortcuts': "ui.admin_shell.close_shortcuts";
35
35
  readonly 'ui.admin_shell.shortcuts': "ui.admin_shell.shortcuts";
36
36
  readonly 'ui.admin_shell.close': "ui.admin_shell.close";
37
+ readonly 'ui.admin_shell.close_panel': "ui.admin_shell.close_panel";
38
+ readonly 'ui.admin_shell.resize_panel': "ui.admin_shell.resize_panel";
39
+ readonly 'ui.shell_nav_toggle.collapse': "ui.shell_nav_toggle.collapse";
40
+ readonly 'ui.shell_nav_toggle.expand': "ui.shell_nav_toggle.expand";
41
+ readonly 'ui.shell_nav_toggle.navigation': "ui.shell_nav_toggle.navigation";
42
+ readonly 'ui.phone_top_bar.back': "ui.phone_top_bar.back";
43
+ readonly 'ui.phone_bottom_bar.label': "ui.phone_bottom_bar.label";
44
+ readonly 'ui.phone_bottom_bar.unread': "ui.phone_bottom_bar.unread";
45
+ readonly 'ui.phone_bottom_bar.new': "ui.phone_bottom_bar.new";
37
46
  readonly 'ui.activity_toasts.dismiss': "ui.activity_toasts.dismiss";
38
47
  readonly 'ui.activity_toasts.dismiss_action': "ui.activity_toasts.dismiss_action";
39
48
  readonly 'ui.activity_item.view': "ui.activity_item.view";
@@ -57,6 +66,7 @@ export declare const M: {
57
66
  readonly 'ui.system_scope_panel.no_running_work': "ui.system_scope_panel.no_running_work";
58
67
  readonly 'ui.system_status_chips.system_status': "ui.system_status_chips.system_status";
59
68
  readonly 'ui.tenant_nav.tenant_navigation': "ui.tenant_nav.tenant_navigation";
69
+ readonly 'ui.tenant_nav.needs_attention': "ui.tenant_nav.needs_attention";
60
70
  readonly 'ui.workspace_account_menu.open': "ui.workspace_account_menu.open";
61
71
  readonly 'ui.workspace_account_menu.current_tenant': "ui.workspace_account_menu.current_tenant";
62
72
  readonly 'ui.workspace_account_menu.sign_out': "ui.workspace_account_menu.sign_out";
@@ -1 +1 @@
1
- {"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FZ,CAAC"}
1
+ {"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGZ,CAAC"}