@happyvertical/smrt-svelte 0.51.39 → 0.53.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 (143) hide show
  1. package/AGENTS.md +3 -0
  2. package/README.md +214 -1
  3. package/agents/components.md +8 -1
  4. package/agents/workspace.md +24 -0
  5. package/dist/Provider.svelte +19 -15
  6. package/dist/Provider.svelte.d.ts +2 -2
  7. package/dist/Provider.svelte.d.ts.map +1 -1
  8. package/dist/__tests__/provider-mode-harness.svelte +14 -0
  9. package/dist/__tests__/provider-mode-harness.svelte.d.ts +11 -0
  10. package/dist/__tests__/provider-mode-harness.svelte.d.ts.map +1 -0
  11. package/dist/__tests__/provider-mode-probe.svelte +13 -0
  12. package/dist/__tests__/provider-mode-probe.svelte.d.ts +8 -0
  13. package/dist/__tests__/provider-mode-probe.svelte.d.ts.map +1 -0
  14. package/dist/browser-ai/adapters/stt/browser-speech.d.ts +11 -0
  15. package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -1
  16. package/dist/browser-ai/adapters/stt/browser-speech.js +20 -4
  17. package/dist/browser-ai/adapters/stt/browser-speech.test.js +113 -0
  18. package/dist/browser-ai/adapters/stt/dictation-source.d.ts +3 -0
  19. package/dist/browser-ai/adapters/stt/dictation-source.d.ts.map +1 -0
  20. package/dist/browser-ai/adapters/stt/dictation-source.js +38 -0
  21. package/dist/browser-ai/adapters/stt/dictation-source.test.js +52 -0
  22. package/dist/browser-ai/adapters/stt/index.d.ts +2 -1
  23. package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -1
  24. package/dist/browser-ai/adapters/stt/index.js +2 -1
  25. package/dist/components/forms/FileUpload.svelte +120 -16
  26. package/dist/components/forms/FileUpload.svelte.d.ts +7 -1
  27. package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -1
  28. package/dist/components/forms/Form.svelte +118 -8
  29. package/dist/components/forms/Form.svelte.d.ts +18 -2
  30. package/dist/components/forms/Form.svelte.d.ts.map +1 -1
  31. package/dist/components/forms/FormScope.svelte +202 -0
  32. package/dist/components/forms/FormScope.svelte.d.ts +22 -0
  33. package/dist/components/forms/FormScope.svelte.d.ts.map +1 -0
  34. package/dist/components/forms/__tests__/FileUpload.native-form.test.js +249 -0
  35. package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte +24 -0
  36. package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts +10 -0
  37. package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts.map +1 -0
  38. package/dist/components/forms/__tests__/Form.ui-controls.test.js +119 -0
  39. package/dist/components/forms/__tests__/Form.webmcp.test.js +5 -3
  40. package/dist/components/forms/__tests__/FormScope.test.js +39 -0
  41. package/dist/components/forms/__tests__/form-scope.fixture.svelte +30 -0
  42. package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts +10 -0
  43. package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts.map +1 -0
  44. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte +84 -0
  45. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts +14 -0
  46. package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts.map +1 -0
  47. package/dist/components/forms/index.d.ts +1 -0
  48. package/dist/components/forms/index.d.ts.map +1 -1
  49. package/dist/components/forms/index.js +1 -0
  50. package/dist/components/workspace/README.md +11 -0
  51. package/dist/components/workspace/__tests__/AdminShell.responsive.test.js +597 -0
  52. package/dist/components/workspace/__tests__/AdminShell.test.js +257 -1
  53. package/dist/components/workspace/__tests__/TenantNav.test.js +115 -0
  54. package/dist/components/workspace/__tests__/WorkspaceAccountMenu.test.js +6 -0
  55. package/dist/components/workspace/__tests__/admin-shell-header-overflow.test.js +25 -0
  56. package/dist/components/workspace/__tests__/admin-shell-mobile.test.js +217 -0
  57. package/dist/components/workspace/__tests__/admin-shell-page-contracts.test.js +30 -0
  58. package/dist/components/workspace/__tests__/admin-shell-responsive-state.test.js +184 -0
  59. package/dist/components/workspace/__tests__/admin-shell-state.test.js +25 -0
  60. package/dist/components/workspace/__tests__/admin-shell-theme-hooks.test.js +36 -0
  61. package/dist/components/workspace/__tests__/shell-chrome-components.test.js +108 -0
  62. package/dist/components/workspace/admin-shell/AdminShell.svelte +1099 -59
  63. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +44 -1
  64. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
  65. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte +170 -0
  66. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts +11 -0
  67. package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts.map +1 -0
  68. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte +93 -0
  69. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte.d.ts +11 -0
  70. package/dist/components/workspace/admin-shell/PhoneTopBar.svelte.d.ts.map +1 -0
  71. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte +88 -0
  72. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte.d.ts +14 -0
  73. package/dist/components/workspace/admin-shell/ShellNavToggle.svelte.d.ts.map +1 -0
  74. package/dist/components/workspace/admin-shell/ShellTitle.svelte +42 -0
  75. package/dist/components/workspace/admin-shell/ShellTitle.svelte.d.ts +11 -0
  76. package/dist/components/workspace/admin-shell/ShellTitle.svelte.d.ts.map +1 -0
  77. package/dist/components/workspace/admin-shell/TenantNav.svelte +116 -13
  78. package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +8 -2
  79. package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
  80. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +16 -2
  81. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts +2 -0
  82. package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts.map +1 -1
  83. package/dist/components/workspace/admin-shell/mobile-shell-dom.d.ts +37 -0
  84. package/dist/components/workspace/admin-shell/mobile-shell-dom.d.ts.map +1 -0
  85. package/dist/components/workspace/admin-shell/mobile-shell-dom.js +150 -0
  86. package/dist/components/workspace/admin-shell/mobile-shell.d.ts +191 -0
  87. package/dist/components/workspace/admin-shell/mobile-shell.d.ts.map +1 -0
  88. package/dist/components/workspace/admin-shell/mobile-shell.js +165 -0
  89. package/dist/components/workspace/admin-shell/settings.d.ts +27 -2
  90. package/dist/components/workspace/admin-shell/settings.d.ts.map +1 -1
  91. package/dist/components/workspace/admin-shell/settings.js +84 -2
  92. package/dist/components/workspace/admin-shell/state.svelte.d.ts +57 -1
  93. package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
  94. package/dist/components/workspace/admin-shell/state.svelte.js +156 -6
  95. package/dist/components/workspace/admin-shell/types.d.ts +115 -1
  96. package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
  97. package/dist/components/workspace/admin-shell/types.js +13 -0
  98. package/dist/components/workspace/index.d.ts +11 -4
  99. package/dist/components/workspace/index.d.ts.map +1 -1
  100. package/dist/components/workspace/index.js +12 -3
  101. package/dist/i18n/strings.forms.d.ts +3 -0
  102. package/dist/i18n/strings.forms.d.ts.map +1 -1
  103. package/dist/i18n/strings.forms.js +3 -0
  104. package/dist/i18n/strings.workspace.d.ts +14 -0
  105. package/dist/i18n/strings.workspace.d.ts.map +1 -1
  106. package/dist/i18n/strings.workspace.js +14 -0
  107. package/dist/index.d.ts +1 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +1 -1
  110. package/dist/provider-mode.test.js +86 -0
  111. package/dist/state/app-state.svelte.d.ts.map +1 -1
  112. package/dist/state/app-state.svelte.js +8 -8
  113. package/dist/web/__tests__/assistant-dock.integration.svelte.test.js +2 -2
  114. package/dist/web/__tests__/list-sort-surface.fixture.svelte +41 -0
  115. package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts +15 -0
  116. package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts.map +1 -0
  117. package/dist/web/__tests__/list-sort-surface.svelte.test.js +59 -0
  118. package/dist/web/__tests__/surfaces.child.fixture.svelte +69 -0
  119. package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts +16 -0
  120. package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts.map +1 -0
  121. package/dist/web/__tests__/surfaces.fixture.svelte +26 -0
  122. package/dist/web/__tests__/surfaces.fixture.svelte.d.ts +18 -0
  123. package/dist/web/__tests__/surfaces.fixture.svelte.d.ts.map +1 -0
  124. package/dist/web/__tests__/surfaces.svelte.test.js +140 -0
  125. package/dist/web/__tests__/webmcp-ui.test.js +18 -0
  126. package/dist/web/index.d.ts +4 -1
  127. package/dist/web/index.d.ts.map +1 -1
  128. package/dist/web/index.js +4 -1
  129. package/dist/web/link-surface.svelte.d.ts +14 -0
  130. package/dist/web/link-surface.svelte.d.ts.map +1 -0
  131. package/dist/web/link-surface.svelte.js +49 -0
  132. package/dist/web/list-surface.svelte.d.ts +80 -0
  133. package/dist/web/list-surface.svelte.d.ts.map +1 -0
  134. package/dist/web/list-surface.svelte.js +309 -0
  135. package/dist/web/step-surface.svelte.d.ts +17 -0
  136. package/dist/web/step-surface.svelte.d.ts.map +1 -0
  137. package/dist/web/step-surface.svelte.js +56 -0
  138. package/dist/web/webmcp-ui-context.d.ts +7 -0
  139. package/dist/web/webmcp-ui-context.d.ts.map +1 -1
  140. package/dist/web/webmcp-ui-context.js +10 -0
  141. package/dist/web/webmcp-ui.d.ts.map +1 -1
  142. package/dist/web/webmcp-ui.js +16 -3
  143. package/package.json +17 -17
@@ -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
- panels?: Partial<Record<PanelEdge, VisiblePanelState>>;
95
+ panels?: Partial<Record<PanelEdge, PanelState>>;
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 {
@@ -42,12 +109,24 @@ export interface ShellFocusToolSubject {
42
109
  id: string;
43
110
  label?: string;
44
111
  }
112
+ /** Labelled, collapsible group of tenant navigation links. */
113
+ export interface ShellNavGroup {
114
+ heading: string;
115
+ items: ShellNavItem[];
116
+ }
45
117
  export interface ShellNavItem {
46
118
  href: string;
47
119
  label: string;
48
120
  icon?: string;
49
121
  description?: string;
50
122
  badge?: number | string | null;
123
+ /**
124
+ * Show a "needs attention" dot on the item (also over its icon when the
125
+ * nav is collapsed). `true` announces the default label ("Needs
126
+ * attention"); a string is the accessible label to announce instead
127
+ * (e.g. "A background job failed recently").
128
+ */
129
+ attention?: boolean | string | null;
51
130
  children?: ShellNavItem[];
52
131
  }
53
132
  /** Tenant option rendered by {@link WorkspaceAccountMenu}. */
@@ -129,11 +208,33 @@ export interface ShellSystemPanel {
129
208
  }
130
209
  export interface ShellStateSnapshot {
131
210
  panels: Record<PanelEdge, PanelState>;
211
+ viewport: ShellViewport;
132
212
  activeFocusToolId: string | null;
133
213
  settings: ShellSettingsDelta;
134
214
  }
215
+ /** Phone behavior switches for `AdminShell` (all off by default). */
216
+ export interface AdminShellPhoneOptions {
217
+ /** Dim the page behind an open side drawer or sheet; a tap closes it. */
218
+ scrim?: boolean;
219
+ /** Close drawers by swiping them away (left drawer left, right drawer right, sheet down). */
220
+ swipeToClose?: boolean;
221
+ /** Hide the `phoneTopBar` while scrolling down (default true). */
222
+ hideOnScroll?: boolean;
223
+ }
135
224
  export interface AdminShellProps {
136
225
  title?: string;
226
+ /** Optional destination for the default brand and compact rail mark. */
227
+ homeHref?: string;
228
+ /** Show the built-in tenant edge collapse/expand control. */
229
+ showTenantToggle?: boolean;
230
+ /** Optional brand logo URL. */
231
+ logoSrc?: string;
232
+ /** Alternative text for the logo (decorative by default). */
233
+ logoAlt?: string;
234
+ /** Custom brand content, receiving whether it is in the compact rail. */
235
+ brand?: Snippet<[{
236
+ compact: boolean;
237
+ }]>;
137
238
  subtitle?: string;
138
239
  config?: ShellPanelDefaults;
139
240
  settings?: ShellSettingsDelta;
@@ -143,4 +244,17 @@ export interface AdminShellProps {
143
244
  export declare const PANEL_EDGES: PanelEdge[];
144
245
  export declare const EDGE_SCOPES: Record<PanelEdge, ShellScope>;
145
246
  export declare const SCOPE_EDGES: Record<ShellScope, PanelEdge>;
247
+ /**
248
+ * Public element ids of AdminShell's regions, stable for `aria-controls`,
249
+ * skip links, and host styling. `main` is the page scroller: the shell is
250
+ * pinned to the viewport and page content scrolls inside it.
251
+ */
252
+ export declare const ADMIN_SHELL_REGION_IDS: {
253
+ readonly header: "smrt-admin-shell-header";
254
+ readonly top: "smrt-admin-shell-top-panel";
255
+ readonly left: "smrt-admin-shell-left-panel";
256
+ readonly right: "smrt-admin-shell-right-panel";
257
+ readonly bottom: "smrt-admin-shell-bottom-panel";
258
+ readonly main: "smrt-admin-shell-main";
259
+ };
146
260
  //# 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, ShellNavGroup, 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';
@@ -8,6 +8,9 @@ export declare const M: {
8
8
  readonly 'ui.date_time_input.mic_aria_label': "ui.date_time_input.mic_aria_label";
9
9
  readonly 'ui.date_time_input.parsing': "ui.date_time_input.parsing";
10
10
  readonly 'ui.file_upload.remove_file': "ui.file_upload.remove_file";
11
+ readonly 'ui.file_upload.required': "ui.file_upload.required";
12
+ readonly 'ui.file_upload.rejected_type': "ui.file_upload.rejected_type";
13
+ readonly 'ui.file_upload.exceeds_max_size': "ui.file_upload.exceeds_max_size";
11
14
  readonly 'ui.form.extracting': "ui.form.extracting";
12
15
  readonly 'ui.form.listening_status': "ui.form.listening_status";
13
16
  readonly 'ui.form.listening_button': "ui.form.listening_button";
@@ -1 +1 @@
1
- {"version":3,"file":"strings.forms.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.forms.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DZ,CAAC"}
1
+ {"version":3,"file":"strings.forms.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.forms.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEZ,CAAC"}
@@ -20,6 +20,9 @@ export const M = defineMessages({
20
20
  'ui.date_time_input.parsing': 'Parsing date...',
21
21
  // FileUpload
22
22
  'ui.file_upload.remove_file': 'Remove {name}',
23
+ 'ui.file_upload.required': 'Select a file to upload',
24
+ 'ui.file_upload.rejected_type': '{count} file(s) rejected: type not allowed',
25
+ 'ui.file_upload.exceeds_max_size': '{count} file(s) exceed the maximum size of {size}',
23
26
  // Form
24
27
  'ui.form.extracting': 'Extracting form fields…',
25
28
  'ui.form.listening_status': 'Listening. Say "done" to finish.',
@@ -34,6 +34,19 @@ 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.home': "ui.admin_shell.home";
38
+ readonly 'ui.admin_shell.menu': "ui.admin_shell.menu";
39
+ readonly 'ui.admin_shell.expand_panel': "ui.admin_shell.expand_panel";
40
+ readonly 'ui.admin_shell.collapse_panel': "ui.admin_shell.collapse_panel";
41
+ readonly 'ui.admin_shell.close_panel': "ui.admin_shell.close_panel";
42
+ readonly 'ui.admin_shell.resize_panel': "ui.admin_shell.resize_panel";
43
+ readonly 'ui.shell_nav_toggle.collapse': "ui.shell_nav_toggle.collapse";
44
+ readonly 'ui.shell_nav_toggle.expand': "ui.shell_nav_toggle.expand";
45
+ readonly 'ui.shell_nav_toggle.navigation': "ui.shell_nav_toggle.navigation";
46
+ readonly 'ui.phone_top_bar.back': "ui.phone_top_bar.back";
47
+ readonly 'ui.phone_bottom_bar.label': "ui.phone_bottom_bar.label";
48
+ readonly 'ui.phone_bottom_bar.unread': "ui.phone_bottom_bar.unread";
49
+ readonly 'ui.phone_bottom_bar.new': "ui.phone_bottom_bar.new";
37
50
  readonly 'ui.activity_toasts.dismiss': "ui.activity_toasts.dismiss";
38
51
  readonly 'ui.activity_toasts.dismiss_action': "ui.activity_toasts.dismiss_action";
39
52
  readonly 'ui.activity_item.view': "ui.activity_item.view";
@@ -57,6 +70,7 @@ export declare const M: {
57
70
  readonly 'ui.system_scope_panel.no_running_work': "ui.system_scope_panel.no_running_work";
58
71
  readonly 'ui.system_status_chips.system_status': "ui.system_status_chips.system_status";
59
72
  readonly 'ui.tenant_nav.tenant_navigation': "ui.tenant_nav.tenant_navigation";
73
+ readonly 'ui.tenant_nav.needs_attention': "ui.tenant_nav.needs_attention";
60
74
  readonly 'ui.workspace_account_menu.open': "ui.workspace_account_menu.open";
61
75
  readonly 'ui.workspace_account_menu.current_tenant': "ui.workspace_account_menu.current_tenant";
62
76
  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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0GZ,CAAC"}
@@ -39,6 +39,19 @@ export const M = defineMessages({
39
39
  'ui.admin_shell.close_shortcuts': 'Close shortcuts',
40
40
  'ui.admin_shell.shortcuts': 'Shortcuts',
41
41
  'ui.admin_shell.close': 'Close',
42
+ 'ui.admin_shell.home': 'Home',
43
+ 'ui.admin_shell.menu': 'Menu',
44
+ 'ui.admin_shell.expand_panel': 'Expand {panel}',
45
+ 'ui.admin_shell.collapse_panel': 'Collapse {panel}',
46
+ 'ui.admin_shell.close_panel': 'Close {label}',
47
+ 'ui.admin_shell.resize_panel': 'Resize {label}',
48
+ 'ui.shell_nav_toggle.collapse': 'Collapse {label}',
49
+ 'ui.shell_nav_toggle.expand': 'Expand {label}',
50
+ 'ui.shell_nav_toggle.navigation': 'navigation',
51
+ 'ui.phone_top_bar.back': 'Back to {label}',
52
+ 'ui.phone_bottom_bar.label': 'Main',
53
+ 'ui.phone_bottom_bar.unread': '{count} unread',
54
+ 'ui.phone_bottom_bar.new': 'new',
42
55
  'ui.activity_toasts.dismiss': 'Dismiss activity notification',
43
56
  'ui.activity_toasts.dismiss_action': 'Dismiss',
44
57
  'ui.activity_item.view': 'View',
@@ -62,6 +75,7 @@ export const M = defineMessages({
62
75
  'ui.system_scope_panel.no_running_work': 'No running work',
63
76
  'ui.system_status_chips.system_status': 'System status',
64
77
  'ui.tenant_nav.tenant_navigation': 'Tenant navigation',
78
+ 'ui.tenant_nav.needs_attention': 'Needs attention',
65
79
  'ui.workspace_account_menu.open': 'Open account menu',
66
80
  'ui.workspace_account_menu.current_tenant': '{tenant} — current',
67
81
  'ui.workspace_account_menu.sign_out': 'Sign out',
package/dist/index.d.ts CHANGED
@@ -21,5 +21,5 @@ export { type UseViewIntentOptions, useViewIntent, type ViewIntentIdentity, } fr
21
21
  export { useWebMcpTool, type WebMcpToolSpec } from './web/webmcp.svelte.js';
22
22
  export type { WebMcpProviderConfig, WebMcpUiProviderConfig, } from './web/webmcp-provider.js';
23
23
  export { type RegisterWebMcpUiToolsOptions, registerWebMcpUiTools, } from './web/webmcp-ui.js';
24
- export { useWebMcpUi, type WebMcpUiContext, } from './web/webmcp-ui-context.js';
24
+ export { tryUseWebMcpUi, useWebMcpUi, type WebMcpUiContext, } from './web/webmcp-ui-context.js';
25
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAGH,cAAc,6BAA6B,CAAC;AAE5C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,mBAAmB,CAAC;AAElC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,KAAK,oBAAoB,EACzB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAGH,cAAc,6BAA6B,CAAC;AAE5C,cAAc,8BAA8B,CAAC;AAE7C,cAAc,mBAAmB,CAAC;AAElC,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EACL,KAAK,oBAAoB,EACzB,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,4BAA4B,EACjC,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -30,4 +30,4 @@ export { useViewIntent, } from './web/view-intent.svelte.js';
30
30
  // Opt-in browser WebMCP lifecycle primitive.
31
31
  export { useWebMcpTool } from './web/webmcp.svelte.js';
32
32
  export { registerWebMcpUiTools, } from './web/webmcp-ui.js';
33
- export { useWebMcpUi, } from './web/webmcp-ui-context.js';
33
+ export { tryUseWebMcpUi, useWebMcpUi, } from './web/webmcp-ui-context.js';
@@ -0,0 +1,86 @@
1
+ import { render, screen, waitFor } from '@testing-library/svelte';
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
+ import Harness from './__tests__/provider-mode-harness.svelte';
4
+ import { createAppState, SmrtAppStateManager, } from './state/app-state.svelte.js';
5
+ let initializationModes;
6
+ let manager;
7
+ const capture = (state) => {
8
+ manager = state;
9
+ };
10
+ beforeEach(() => {
11
+ initializationModes = [];
12
+ vi.stubGlobal('SpeechRecognition', class {
13
+ });
14
+ const initialize = SmrtAppStateManager.prototype.initialize;
15
+ vi.spyOn(SmrtAppStateManager.prototype, 'initialize').mockImplementation(function () {
16
+ const result = initialize.call(this);
17
+ // Inspect the real initialization boundary before a later reactive effect
18
+ // can hide a transient auto-enabled mode.
19
+ initializationModes.push(this.state.mode);
20
+ return result;
21
+ });
22
+ vi.spyOn(SmrtAppStateManager.prototype, 'initializeSTT').mockResolvedValue({});
23
+ });
24
+ afterEach(() => {
25
+ vi.restoreAllMocks();
26
+ vi.unstubAllGlobals();
27
+ });
28
+ describe('Provider voice opt-in', () => {
29
+ it('keeps defaults in standard mode even with speech capabilities', async () => {
30
+ render(Harness, { props: { capture } });
31
+ await waitFor(() => expect(manager.state.initialized).toBe(true));
32
+ expect(manager.state.capabilities?.stt.browserSpeechAPI).toBe(true);
33
+ expect(manager.state.mode).toBe('default');
34
+ expect(initializationModes).toEqual(['default']);
35
+ expect(manager.initializeSTT).not.toHaveBeenCalled();
36
+ });
37
+ it('honors explicit default before initialization despite auto-detection opt-in', async () => {
38
+ render(Harness, {
39
+ props: { capture, mode: 'default', autoEnableSmrt: true },
40
+ });
41
+ await waitFor(() => expect(manager.state.initialized).toBe(true));
42
+ expect(initializationModes).toEqual(['default']);
43
+ expect(manager.state.modeSource).toBe('explicit');
44
+ expect(manager.initializeSTT).not.toHaveBeenCalled();
45
+ });
46
+ it('preserves explicit smrt mode and reactive mode updates', async () => {
47
+ const view = render(Harness, { props: { capture, mode: 'smrt' } });
48
+ await waitFor(() => expect(manager.state.initialized).toBe(true));
49
+ expect(initializationModes).toEqual(['smrt']);
50
+ expect(manager.state.modeSource).toBe('explicit');
51
+ await view.rerender({ capture, mode: 'default' });
52
+ expect(screen.getByRole('status', { name: 'App mode' })).toHaveTextContent('default');
53
+ });
54
+ it('retains auto-detection behind the explicit flag', async () => {
55
+ render(Harness, { props: { capture, autoEnableSmrt: true } });
56
+ await waitFor(() => expect(manager.state.initialized).toBe(true));
57
+ expect(manager.state.mode).toBe('smrt');
58
+ expect(manager.state.modeSource).toBe('auto');
59
+ });
60
+ it('does not auto-enable when capabilities are unavailable', async () => {
61
+ vi.stubGlobal('SpeechRecognition', undefined);
62
+ const capability = await import('./browser-ai/capabilities/detector.js');
63
+ vi.spyOn(capability, 'canEnableSmrtMode').mockReturnValue(false);
64
+ render(Harness, { props: { capture, autoEnableSmrt: true } });
65
+ await waitFor(() => expect(manager.state.initialized).toBe(true));
66
+ expect(manager.state.mode).toBe('default');
67
+ });
68
+ it('standalone state also requires explicit opt-in and respects initial session preferences', async () => {
69
+ const standard = createAppState();
70
+ await standard.initialize();
71
+ expect(standard.state.mode).toBe('default');
72
+ const auto = createAppState({
73
+ session: { preferences: { autoEnableSmrt: true } },
74
+ });
75
+ await auto.initialize();
76
+ expect(auto.state.mode).toBe('smrt');
77
+ const explicit = createAppState({
78
+ initialMode: 'default',
79
+ session: { preferences: { autoEnableSmrt: true } },
80
+ });
81
+ await explicit.initialize();
82
+ expect(explicit.state.mode).toBe('default');
83
+ expect(explicit.state.modeSource).toBe('explicit');
84
+ await Promise.all([standard.dispose(), auto.dispose(), explicit.dispose()]);
85
+ });
86
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"app-state.svelte.d.ts","sourceRoot":"","sources":["../../src/state/app-state.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-state.svelte.d.ts","sourceRoot":"","sources":["../../src/state/app-state.svelte.ts"],"names":[],"mappings":"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"}
@@ -116,6 +116,13 @@ export class SmrtAppStateManager {
116
116
  this._state.capabilities = capabilities;
117
117
  // Notify callback
118
118
  this.options.onCapabilitiesDetected?.(capabilities);
119
+ // Apply initial session if provided
120
+ if (this.options.session) {
121
+ this._state.session = {
122
+ ...this._state.session,
123
+ ...this.options.session,
124
+ };
125
+ }
119
126
  // Determine initial mode
120
127
  if (this.options.initialMode) {
121
128
  this._state.mode = this.options.initialMode;
@@ -123,19 +130,12 @@ export class SmrtAppStateManager {
123
130
  }
124
131
  else {
125
132
  // Auto-detect based on capabilities and preferences
126
- const autoEnable = this._state.session.preferences.autoEnableSmrt ?? true;
133
+ const autoEnable = this._state.session.preferences.autoEnableSmrt ?? false;
127
134
  if (autoEnable && canEnableSmrtMode(capabilities)) {
128
135
  this._state.mode = 'smrt';
129
136
  this._state.modeSource = 'auto';
130
137
  }
131
138
  }
132
- // Apply initial session if provided
133
- if (this.options.session) {
134
- this._state.session = {
135
- ...this._state.session,
136
- ...this.options.session,
137
- };
138
- }
139
139
  this._state.initialized = true;
140
140
  // Schedule AI preloading based on strategy
141
141
  this.schedulePreload();
@@ -98,7 +98,7 @@ describe('AssistantDock integration (#2904)', () => {
98
98
  const transport = createInMemoryAssistantTransport();
99
99
  render(AssistantDock, { props: { transport, registry } });
100
100
  await waitFor(() => {
101
- expect(screen.getByText(/No data surfaces are mounted on this route/i)).toBeInTheDocument();
101
+ expect(screen.getByText(/Nothing on this page can be changed from the chat/i)).toBeInTheDocument();
102
102
  });
103
103
  });
104
104
  it('discovers a mounted surface via the registry and renders a sent conversation', async () => {
@@ -114,7 +114,7 @@ describe('AssistantDock integration (#2904)', () => {
114
114
  });
115
115
  render(AssistantDock, { props: { transport, registry } });
116
116
  await waitFor(() => {
117
- expect(screen.queryByText(/No data surfaces are mounted on this route/i)).not.toBeInTheDocument();
117
+ expect(screen.queryByText(/Nothing on this page can be changed from the chat/i)).not.toBeInTheDocument();
118
118
  });
119
119
  const thread = await transport.createThread('Order question');
120
120
  // Drive the same controller the component owns internally by exercising
@@ -0,0 +1,41 @@
1
+ <script lang="ts">
2
+ import type {
3
+ DataSurfaceRegistry,
4
+ ListSort,
5
+ } from '@happyvertical/smrt-ui/data';
6
+ import { useListSurface } from '../list-surface.svelte.js';
7
+
8
+ let {
9
+ registry,
10
+ rows,
11
+ sort = $bindable({ columnId: 'published', direction: 'desc' }),
12
+ deny = false,
13
+ }: {
14
+ registry: DataSurfaceRegistry;
15
+ rows: Array<{ id: string; title: string; published: string }>;
16
+ sort?: ListSort;
17
+ deny?: boolean;
18
+ } = $props();
19
+
20
+ useListSurface(
21
+ () => ({
22
+ surfaceId: 'stories-ui',
23
+ label: 'Stories',
24
+ description: 'Stories on this page',
25
+ columns: [
26
+ { id: 'id', label: 'ID', rowKey: true },
27
+ { id: 'title', label: 'Title', sortable: true },
28
+ { id: 'published', label: 'Published', sortable: true },
29
+ ],
30
+ rows,
31
+ sort,
32
+ onSort: (next) => {
33
+ if (deny) return false;
34
+ sort = next;
35
+ },
36
+ }),
37
+ registry,
38
+ );
39
+ </script>
40
+
41
+ <p data-testid="sort">{sort.columnId}:{sort.direction}</p>
@@ -0,0 +1,15 @@
1
+ import type { DataSurfaceRegistry, ListSort } from '@happyvertical/smrt-ui/data';
2
+ type $$ComponentProps = {
3
+ registry: DataSurfaceRegistry;
4
+ rows: Array<{
5
+ id: string;
6
+ title: string;
7
+ published: string;
8
+ }>;
9
+ sort?: ListSort;
10
+ deny?: boolean;
11
+ };
12
+ declare const ListSortSurface: import("svelte").Component<$$ComponentProps, {}, "sort">;
13
+ type ListSortSurface = ReturnType<typeof ListSortSurface>;
14
+ export default ListSortSurface;
15
+ //# sourceMappingURL=list-sort-surface.fixture.svelte.d.ts.map