@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.
- package/AGENTS.md +3 -0
- package/README.md +214 -1
- package/agents/components.md +8 -1
- package/agents/workspace.md +24 -0
- package/dist/Provider.svelte +19 -15
- package/dist/Provider.svelte.d.ts +2 -2
- package/dist/Provider.svelte.d.ts.map +1 -1
- package/dist/__tests__/provider-mode-harness.svelte +14 -0
- package/dist/__tests__/provider-mode-harness.svelte.d.ts +11 -0
- package/dist/__tests__/provider-mode-harness.svelte.d.ts.map +1 -0
- package/dist/__tests__/provider-mode-probe.svelte +13 -0
- package/dist/__tests__/provider-mode-probe.svelte.d.ts +8 -0
- package/dist/__tests__/provider-mode-probe.svelte.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts +11 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -1
- package/dist/browser-ai/adapters/stt/browser-speech.js +20 -4
- package/dist/browser-ai/adapters/stt/browser-speech.test.js +113 -0
- package/dist/browser-ai/adapters/stt/dictation-source.d.ts +3 -0
- package/dist/browser-ai/adapters/stt/dictation-source.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/dictation-source.js +38 -0
- package/dist/browser-ai/adapters/stt/dictation-source.test.js +52 -0
- package/dist/browser-ai/adapters/stt/index.d.ts +2 -1
- package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -1
- package/dist/browser-ai/adapters/stt/index.js +2 -1
- package/dist/components/forms/FileUpload.svelte +120 -16
- package/dist/components/forms/FileUpload.svelte.d.ts +7 -1
- package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -1
- package/dist/components/forms/Form.svelte +118 -8
- package/dist/components/forms/Form.svelte.d.ts +18 -2
- package/dist/components/forms/Form.svelte.d.ts.map +1 -1
- package/dist/components/forms/FormScope.svelte +202 -0
- package/dist/components/forms/FormScope.svelte.d.ts +22 -0
- package/dist/components/forms/FormScope.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/FileUpload.native-form.test.js +249 -0
- package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte +24 -0
- package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts +10 -0
- package/dist/components/forms/__tests__/FileUploadReset.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/Form.ui-controls.test.js +119 -0
- package/dist/components/forms/__tests__/Form.webmcp.test.js +5 -3
- package/dist/components/forms/__tests__/FormScope.test.js +39 -0
- package/dist/components/forms/__tests__/form-scope.fixture.svelte +30 -0
- package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts +10 -0
- package/dist/components/forms/__tests__/form-scope.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte +84 -0
- package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts +14 -0
- package/dist/components/forms/__tests__/form-with-ui-controls.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/index.d.ts +1 -0
- package/dist/components/forms/index.d.ts.map +1 -1
- package/dist/components/forms/index.js +1 -0
- package/dist/components/workspace/README.md +11 -0
- package/dist/components/workspace/__tests__/AdminShell.responsive.test.js +597 -0
- package/dist/components/workspace/__tests__/AdminShell.test.js +257 -1
- package/dist/components/workspace/__tests__/TenantNav.test.js +115 -0
- package/dist/components/workspace/__tests__/WorkspaceAccountMenu.test.js +6 -0
- package/dist/components/workspace/__tests__/admin-shell-header-overflow.test.js +25 -0
- package/dist/components/workspace/__tests__/admin-shell-mobile.test.js +217 -0
- package/dist/components/workspace/__tests__/admin-shell-page-contracts.test.js +30 -0
- package/dist/components/workspace/__tests__/admin-shell-responsive-state.test.js +184 -0
- package/dist/components/workspace/__tests__/admin-shell-state.test.js +25 -0
- package/dist/components/workspace/__tests__/admin-shell-theme-hooks.test.js +36 -0
- package/dist/components/workspace/__tests__/shell-chrome-components.test.js +108 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte +1099 -59
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +44 -1
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte +170 -0
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts +11 -0
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/PhoneTopBar.svelte +93 -0
- package/dist/components/workspace/admin-shell/PhoneTopBar.svelte.d.ts +11 -0
- package/dist/components/workspace/admin-shell/PhoneTopBar.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellNavToggle.svelte +88 -0
- package/dist/components/workspace/admin-shell/ShellNavToggle.svelte.d.ts +14 -0
- package/dist/components/workspace/admin-shell/ShellNavToggle.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellTitle.svelte +42 -0
- package/dist/components/workspace/admin-shell/ShellTitle.svelte.d.ts +11 -0
- package/dist/components/workspace/admin-shell/ShellTitle.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/TenantNav.svelte +116 -13
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +8 -2
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +16 -2
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts +2 -0
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/mobile-shell-dom.d.ts +37 -0
- package/dist/components/workspace/admin-shell/mobile-shell-dom.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/mobile-shell-dom.js +150 -0
- package/dist/components/workspace/admin-shell/mobile-shell.d.ts +191 -0
- package/dist/components/workspace/admin-shell/mobile-shell.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/mobile-shell.js +165 -0
- package/dist/components/workspace/admin-shell/settings.d.ts +27 -2
- package/dist/components/workspace/admin-shell/settings.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/settings.js +84 -2
- package/dist/components/workspace/admin-shell/state.svelte.d.ts +57 -1
- package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/state.svelte.js +156 -6
- package/dist/components/workspace/admin-shell/types.d.ts +115 -1
- package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/types.js +13 -0
- package/dist/components/workspace/index.d.ts +11 -4
- package/dist/components/workspace/index.d.ts.map +1 -1
- package/dist/components/workspace/index.js +12 -3
- package/dist/i18n/strings.forms.d.ts +3 -0
- package/dist/i18n/strings.forms.d.ts.map +1 -1
- package/dist/i18n/strings.forms.js +3 -0
- package/dist/i18n/strings.workspace.d.ts +14 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +14 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/provider-mode.test.js +86 -0
- package/dist/state/app-state.svelte.d.ts.map +1 -1
- package/dist/state/app-state.svelte.js +8 -8
- package/dist/web/__tests__/assistant-dock.integration.svelte.test.js +2 -2
- package/dist/web/__tests__/list-sort-surface.fixture.svelte +41 -0
- package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts +15 -0
- package/dist/web/__tests__/list-sort-surface.fixture.svelte.d.ts.map +1 -0
- package/dist/web/__tests__/list-sort-surface.svelte.test.js +59 -0
- package/dist/web/__tests__/surfaces.child.fixture.svelte +69 -0
- package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts +16 -0
- package/dist/web/__tests__/surfaces.child.fixture.svelte.d.ts.map +1 -0
- package/dist/web/__tests__/surfaces.fixture.svelte +26 -0
- package/dist/web/__tests__/surfaces.fixture.svelte.d.ts +18 -0
- package/dist/web/__tests__/surfaces.fixture.svelte.d.ts.map +1 -0
- package/dist/web/__tests__/surfaces.svelte.test.js +140 -0
- package/dist/web/__tests__/webmcp-ui.test.js +18 -0
- package/dist/web/index.d.ts +4 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +4 -1
- package/dist/web/link-surface.svelte.d.ts +14 -0
- package/dist/web/link-surface.svelte.d.ts.map +1 -0
- package/dist/web/link-surface.svelte.js +49 -0
- package/dist/web/list-surface.svelte.d.ts +80 -0
- package/dist/web/list-surface.svelte.d.ts.map +1 -0
- package/dist/web/list-surface.svelte.js +309 -0
- package/dist/web/step-surface.svelte.d.ts +17 -0
- package/dist/web/step-surface.svelte.d.ts.map +1 -0
- package/dist/web/step-surface.svelte.js +56 -0
- package/dist/web/webmcp-ui-context.d.ts +7 -0
- package/dist/web/webmcp-ui-context.d.ts.map +1 -1
- package/dist/web/webmcp-ui-context.js +10 -0
- package/dist/web/webmcp-ui.d.ts.map +1 -1
- package/dist/web/webmcp-ui.js +16 -3
- 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,
|
|
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":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AACnD,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;AAEf,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,iBAAiB,CAAC;IAChC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;
|
|
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;
|
|
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
|
|
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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EAEV,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAE1B,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AA6CxB;;GAEG;AACH,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,MAAM,CAA8C;IAG5D,OAAO,CAAC,OAAO,CAAwB;IAGvC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,eAAe,CAAuB;IAM9C,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,iBAAiB,CAA8C;IAOvE,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,iBAAiB,CAAqC;gBAElD,OAAO,GAAE,qBAA0B;IAK/C;;OAEG;IACH,IAAI,YAAY,IAAI,YAAY,GAAG,IAAI,CAEtC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,CAElC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,QAAQ,CAAC,cAAc,CAAC,CAExC;IAED;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
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 ??
|
|
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(/
|
|
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(/
|
|
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
|