@happyvertical/smrt-svelte 0.51.39 → 0.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +3 -0
- package/README.md +167 -1
- package/agents/workspace.md +24 -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/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__/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 +586 -0
- package/dist/components/workspace/__tests__/AdminShell.test.js +85 -0
- package/dist/components/workspace/__tests__/TenantNav.test.js +49 -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-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 +998 -40
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +42 -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 +46 -1
- package/dist/components/workspace/admin-shell/TenantNav.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 +55 -1
- package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/state.svelte.js +149 -6
- package/dist/components/workspace/admin-shell/types.d.ts +97 -0
- 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.workspace.d.ts +10 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +10 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- 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 +16 -16
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import type { PanelEdge, PanelState, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellFocusTool, ShellPanelDefaults, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, VisiblePanelState } from './types.js';
|
|
1
|
+
import type { PanelEdge, PanelPresentation, PanelState, PhonePanelPresentation, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellFocusTool, ShellPanelDefaults, ShellPanelResize, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, ShellViewport, VisiblePanelState } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Phones: up to 48rem (768px itself is a phone). The same boundary the
|
|
4
|
+
* shell's CSS uses to turn side edges into drawers.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ADMIN_SHELL_PHONE_QUERY = "(max-width: 48rem)";
|
|
7
|
+
/** Desktop starts at 64rem; between the two queries is a tablet. */
|
|
8
|
+
export declare const ADMIN_SHELL_DESKTOP_QUERY = "(min-width: 64rem)";
|
|
9
|
+
/** The viewport class for the current window (`desktop` without a DOM). */
|
|
10
|
+
export declare function detectShellViewport(): ShellViewport;
|
|
2
11
|
type ActivityListener = (event: ShellActivityEvent) => void;
|
|
3
12
|
type ShellActivityPatch = Partial<Omit<ShellActivity, 'id'>>;
|
|
4
13
|
export interface ShellStateOptions {
|
|
@@ -6,18 +15,63 @@ export interface ShellStateOptions {
|
|
|
6
15
|
settings?: ShellSettingsDelta;
|
|
7
16
|
settingsAdapter?: ShellSettingsAdapter;
|
|
8
17
|
storageKey?: string;
|
|
18
|
+
/** Initial viewport class (default: detected from `window`, else desktop). */
|
|
19
|
+
viewport?: ShellViewport;
|
|
9
20
|
}
|
|
10
21
|
export declare class ShellState {
|
|
11
22
|
readonly config: ResolvedShellConfig;
|
|
12
23
|
readonly adapter: ShellSettingsAdapter | null;
|
|
13
24
|
settings: ShellSettingsDelta;
|
|
14
25
|
panels: Record<PanelEdge, PanelState>;
|
|
26
|
+
/** Width class the shell is laid out for; `AdminShell` keeps it current. */
|
|
27
|
+
viewport: ShellViewport;
|
|
15
28
|
focusTools: ShellFocusTool[];
|
|
16
29
|
activeFocusToolId: string | null;
|
|
17
30
|
activities: ShellActivity[];
|
|
31
|
+
/**
|
|
32
|
+
* Side edges whose `overlayMedia` currently matches; `AdminShell` keeps
|
|
33
|
+
* it current. Read it through `presentationFor`.
|
|
34
|
+
*/
|
|
35
|
+
overlayMatches: Partial<Record<PanelEdge, boolean>>;
|
|
18
36
|
private activityListeners;
|
|
19
37
|
constructor(options?: ShellStateOptions);
|
|
20
38
|
hydrate(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Record the viewport class. When it changes, edges with
|
|
41
|
+
* `viewportDefaults` switch to their default for the new class (the
|
|
42
|
+
* user's toggle for the old class is dropped). Not persisted.
|
|
43
|
+
*/
|
|
44
|
+
setViewport(viewport: ShellViewport): void;
|
|
45
|
+
/** How a side edge is presented on phones (`drawer` unless configured). */
|
|
46
|
+
phonePresentation(edge: PanelEdge): PhonePanelPresentation;
|
|
47
|
+
/**
|
|
48
|
+
* How an edge is presented right now: its configured presentation, or
|
|
49
|
+
* `overlay` for a side edge whose `overlayMedia` matches off phones.
|
|
50
|
+
*/
|
|
51
|
+
presentationFor(edge: PanelEdge): PanelPresentation;
|
|
52
|
+
/**
|
|
53
|
+
* Close side edges that would open as overlays (a restored or initial
|
|
54
|
+
* `expanded` state), without changing the stored preference: an overlay
|
|
55
|
+
* never covers the page on load, while a docked edge still restores.
|
|
56
|
+
*/
|
|
57
|
+
closeOverlaidEdges(): void;
|
|
58
|
+
/** Record whether a side edge's `overlayMedia` matches. */
|
|
59
|
+
setOverlayMatch(edge: PanelEdge, matches: boolean): void;
|
|
60
|
+
/** Whether an edge is rendered at the current viewport. */
|
|
61
|
+
isEdgeShown(edge: PanelEdge): boolean;
|
|
62
|
+
/** Resize limits for an edge, or `null` when it is not resizable. */
|
|
63
|
+
resizeLimits(edge: PanelEdge): Required<ShellPanelResize> | null;
|
|
64
|
+
/** The user's resized width for an edge in px, or `null` (configured size). */
|
|
65
|
+
panelSize(edge: PanelEdge): number | null;
|
|
66
|
+
/**
|
|
67
|
+
* Resize an edge's expanded width (px, clamped to its limits); `null`
|
|
68
|
+
* resets it to the configured `expandedSize`. Persisted unless
|
|
69
|
+
* `persist: false` (use that while a drag is in progress) or the edge
|
|
70
|
+
* opts out of storing its size.
|
|
71
|
+
*/
|
|
72
|
+
setPanelSize(edge: PanelEdge, size: number | null, options?: {
|
|
73
|
+
persist?: boolean;
|
|
74
|
+
}): void;
|
|
21
75
|
snapshot(): ShellStateSnapshot;
|
|
22
76
|
applySettings(delta: ShellSettingsDelta, options?: {
|
|
23
77
|
persist?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/state.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"state.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/state.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import { untrack } from 'svelte';
|
|
2
|
-
import { LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, resolveInitialPanelState, resolveShellConfig, } from './settings.js';
|
|
2
|
+
import { clampPanelSize, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, resolveInitialPanelState, resolvePanelResize, resolveShellConfig, stripUnpersistedSettings, } from './settings.js';
|
|
3
3
|
import { PANEL_EDGES, SCOPE_EDGES } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Phones: up to 48rem (768px itself is a phone). The same boundary the
|
|
6
|
+
* shell's CSS uses to turn side edges into drawers.
|
|
7
|
+
*/
|
|
8
|
+
export const ADMIN_SHELL_PHONE_QUERY = '(max-width: 48rem)';
|
|
9
|
+
/** Desktop starts at 64rem; between the two queries is a tablet. */
|
|
10
|
+
export const ADMIN_SHELL_DESKTOP_QUERY = '(min-width: 64rem)';
|
|
11
|
+
/** The viewport class for the current window (`desktop` without a DOM). */
|
|
12
|
+
export function detectShellViewport() {
|
|
13
|
+
if (typeof window === 'undefined' ||
|
|
14
|
+
typeof window.matchMedia !== 'function') {
|
|
15
|
+
return 'desktop';
|
|
16
|
+
}
|
|
17
|
+
if (window.matchMedia(ADMIN_SHELL_PHONE_QUERY).matches)
|
|
18
|
+
return 'phone';
|
|
19
|
+
return window.matchMedia(ADMIN_SHELL_DESKTOP_QUERY).matches
|
|
20
|
+
? 'desktop'
|
|
21
|
+
: 'tablet';
|
|
22
|
+
}
|
|
4
23
|
export class ShellState {
|
|
5
24
|
config;
|
|
6
25
|
adapter;
|
|
@@ -11,9 +30,16 @@ export class ShellState {
|
|
|
11
30
|
right: 'collapsed',
|
|
12
31
|
bottom: 'collapsed',
|
|
13
32
|
});
|
|
33
|
+
/** Width class the shell is laid out for; `AdminShell` keeps it current. */
|
|
34
|
+
viewport = $state('desktop');
|
|
14
35
|
focusTools = $state([]);
|
|
15
36
|
activeFocusToolId = $state(null);
|
|
16
37
|
activities = $state([]);
|
|
38
|
+
/**
|
|
39
|
+
* Side edges whose `overlayMedia` currently matches; `AdminShell` keeps
|
|
40
|
+
* it current. Read it through `presentationFor`.
|
|
41
|
+
*/
|
|
42
|
+
overlayMatches = $state({});
|
|
17
43
|
activityListeners = new Set();
|
|
18
44
|
constructor(options = {}) {
|
|
19
45
|
this.config = resolveShellConfig(options.config);
|
|
@@ -22,23 +48,135 @@ export class ShellState {
|
|
|
22
48
|
(options.storageKey
|
|
23
49
|
? new LocalStorageShellSettingsAdapter(options.storageKey)
|
|
24
50
|
: null);
|
|
51
|
+
this.viewport = options.viewport ?? detectShellViewport();
|
|
25
52
|
this.applySettings(options.settings ?? {}, { persist: false });
|
|
26
53
|
}
|
|
27
54
|
async hydrate() {
|
|
28
55
|
if (!this.adapter)
|
|
29
56
|
return;
|
|
30
57
|
const delta = await this.adapter.read();
|
|
31
|
-
if (delta)
|
|
32
|
-
this.applySettings(delta, {
|
|
58
|
+
if (delta) {
|
|
59
|
+
this.applySettings(stripUnpersistedSettings(delta, this.config), {
|
|
60
|
+
persist: false,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Record the viewport class. When it changes, edges with
|
|
66
|
+
* `viewportDefaults` switch to their default for the new class (the
|
|
67
|
+
* user's toggle for the old class is dropped). Not persisted.
|
|
68
|
+
*/
|
|
69
|
+
setViewport(viewport) {
|
|
70
|
+
untrack(() => {
|
|
71
|
+
if (viewport === this.viewport)
|
|
72
|
+
return;
|
|
73
|
+
this.viewport = viewport;
|
|
74
|
+
let changed = false;
|
|
75
|
+
const panels = { ...(this.settings.panels ?? {}) };
|
|
76
|
+
for (const edge of PANEL_EDGES) {
|
|
77
|
+
const config = this.config.panels[edge];
|
|
78
|
+
const next = config.viewportDefaults?.[viewport];
|
|
79
|
+
if (!next || config.initial === 'hidden')
|
|
80
|
+
continue;
|
|
81
|
+
delete panels[edge];
|
|
82
|
+
changed = true;
|
|
83
|
+
if (next === 'expanded')
|
|
84
|
+
this.closeExclusivePeers(edge);
|
|
85
|
+
this.panels[edge] = next;
|
|
86
|
+
}
|
|
87
|
+
if (changed)
|
|
88
|
+
this.settings = { ...this.settings, panels };
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** How a side edge is presented on phones (`drawer` unless configured). */
|
|
92
|
+
phonePresentation(edge) {
|
|
93
|
+
return this.config.panels[edge].phone ?? 'drawer';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* How an edge is presented right now: its configured presentation, or
|
|
97
|
+
* `overlay` for a side edge whose `overlayMedia` matches off phones.
|
|
98
|
+
*/
|
|
99
|
+
presentationFor(edge) {
|
|
100
|
+
const config = this.config.panels[edge];
|
|
101
|
+
if ((edge === 'left' || edge === 'right') &&
|
|
102
|
+
this.viewport !== 'phone' &&
|
|
103
|
+
config.overlayMedia &&
|
|
104
|
+
this.overlayMatches[edge]) {
|
|
105
|
+
return 'overlay';
|
|
106
|
+
}
|
|
107
|
+
return config.presentation;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Close side edges that would open as overlays (a restored or initial
|
|
111
|
+
* `expanded` state), without changing the stored preference: an overlay
|
|
112
|
+
* never covers the page on load, while a docked edge still restores.
|
|
113
|
+
*/
|
|
114
|
+
closeOverlaidEdges() {
|
|
115
|
+
untrack(() => {
|
|
116
|
+
for (const edge of ['left', 'right']) {
|
|
117
|
+
if (this.panels[edge] === 'expanded' &&
|
|
118
|
+
this.presentationFor(edge) === 'overlay') {
|
|
119
|
+
this.panels[edge] = 'collapsed';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/** Record whether a side edge's `overlayMedia` matches. */
|
|
125
|
+
setOverlayMatch(edge, matches) {
|
|
126
|
+
untrack(() => {
|
|
127
|
+
if (Boolean(this.overlayMatches[edge]) === matches)
|
|
128
|
+
return;
|
|
129
|
+
this.overlayMatches = { ...this.overlayMatches, [edge]: matches };
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/** Whether an edge is rendered at the current viewport. */
|
|
133
|
+
isEdgeShown(edge) {
|
|
134
|
+
if (this.panels[edge] === 'hidden')
|
|
135
|
+
return false;
|
|
136
|
+
return !(this.viewport === 'phone' && this.phonePresentation(edge) === 'hidden');
|
|
137
|
+
}
|
|
138
|
+
/** Resize limits for an edge, or `null` when it is not resizable. */
|
|
139
|
+
resizeLimits(edge) {
|
|
140
|
+
return resolvePanelResize(edge, this.config.panels[edge]);
|
|
141
|
+
}
|
|
142
|
+
/** The user's resized width for an edge in px, or `null` (configured size). */
|
|
143
|
+
panelSize(edge) {
|
|
144
|
+
if (!this.resizeLimits(edge))
|
|
145
|
+
return null;
|
|
146
|
+
const size = this.settings.sizes?.[edge];
|
|
147
|
+
return typeof size === 'number' && Number.isFinite(size) ? size : null;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Resize an edge's expanded width (px, clamped to its limits); `null`
|
|
151
|
+
* resets it to the configured `expandedSize`. Persisted unless
|
|
152
|
+
* `persist: false` (use that while a drag is in progress) or the edge
|
|
153
|
+
* opts out of storing its size.
|
|
154
|
+
*/
|
|
155
|
+
setPanelSize(edge, size, options = {}) {
|
|
156
|
+
untrack(() => {
|
|
157
|
+
const limits = this.resizeLimits(edge);
|
|
158
|
+
if (!limits)
|
|
159
|
+
return;
|
|
160
|
+
const next = size === null || !Number.isFinite(size)
|
|
161
|
+
? null
|
|
162
|
+
: clampPanelSize(size, limits);
|
|
163
|
+
this.settings = mergeShellSettingsDelta(this.settings, {
|
|
164
|
+
sizes: { [edge]: next },
|
|
165
|
+
});
|
|
166
|
+
if (options.persist !== false)
|
|
167
|
+
void this.persistSettings();
|
|
168
|
+
});
|
|
33
169
|
}
|
|
34
170
|
snapshot() {
|
|
35
171
|
return {
|
|
36
172
|
panels: { ...this.panels },
|
|
173
|
+
viewport: this.viewport,
|
|
37
174
|
activeFocusToolId: this.activeFocusToolId,
|
|
38
175
|
settings: {
|
|
39
176
|
...this.settings,
|
|
40
177
|
keymap: this.settings.keymap ? { ...this.settings.keymap } : undefined,
|
|
41
178
|
panels: this.settings.panels ? { ...this.settings.panels } : undefined,
|
|
179
|
+
sizes: this.settings.sizes ? { ...this.settings.sizes } : undefined,
|
|
42
180
|
},
|
|
43
181
|
};
|
|
44
182
|
}
|
|
@@ -48,7 +186,7 @@ export class ShellState {
|
|
|
48
186
|
untrack(() => {
|
|
49
187
|
this.settings = mergeShellSettingsDelta(this.settings, nextDelta);
|
|
50
188
|
for (const edge of PANEL_EDGES) {
|
|
51
|
-
this.panels[edge] = resolveInitialPanelState(edge, this.config.panels[edge], this.settings);
|
|
189
|
+
this.panels[edge] = resolveInitialPanelState(edge, this.config.panels[edge], this.settings, this.viewport);
|
|
52
190
|
}
|
|
53
191
|
this.activeFocusToolId =
|
|
54
192
|
this.settings.activeFocusToolId ?? this.activeFocusToolId;
|
|
@@ -99,7 +237,7 @@ export class ShellState {
|
|
|
99
237
|
closeTopmostExpanded() {
|
|
100
238
|
return untrack(() => {
|
|
101
239
|
for (const edge of [...PANEL_EDGES].reverse()) {
|
|
102
|
-
if (this.panels[edge] === 'expanded') {
|
|
240
|
+
if (this.panels[edge] === 'expanded' && this.isEdgeShown(edge)) {
|
|
103
241
|
this.collapsePanel(edge);
|
|
104
242
|
return true;
|
|
105
243
|
}
|
|
@@ -255,7 +393,9 @@ export class ShellState {
|
|
|
255
393
|
}
|
|
256
394
|
}
|
|
257
395
|
async persistSettings() {
|
|
258
|
-
|
|
396
|
+
if (!this.adapter)
|
|
397
|
+
return;
|
|
398
|
+
await this.adapter.write(stripUnpersistedSettings(this.settings, this.config));
|
|
259
399
|
}
|
|
260
400
|
emitActivity(event) {
|
|
261
401
|
for (const listener of this.activityListeners)
|
|
@@ -297,6 +437,9 @@ function snapshotShellSettingsDelta(delta) {
|
|
|
297
437
|
if ('panels' in delta) {
|
|
298
438
|
snapshot.panels = delta.panels ? { ...delta.panels } : delta.panels;
|
|
299
439
|
}
|
|
440
|
+
if ('sizes' in delta) {
|
|
441
|
+
snapshot.sizes = delta.sizes ? { ...delta.sizes } : delta.sizes;
|
|
442
|
+
}
|
|
300
443
|
return snapshot;
|
|
301
444
|
}
|
|
302
445
|
function snapshotShellKeymap(keymap) {
|
|
@@ -4,6 +4,18 @@ export type ShellScope = 'app' | 'tenant' | 'focus' | 'system';
|
|
|
4
4
|
export type PanelState = 'hidden' | 'collapsed' | 'expanded';
|
|
5
5
|
export type VisiblePanelState = Exclude<PanelState, 'hidden'>;
|
|
6
6
|
export type PanelPresentation = 'push' | 'overlay';
|
|
7
|
+
/**
|
|
8
|
+
* Width class the shell is laid out for: `phone` up to 48rem (edges become
|
|
9
|
+
* drawers), `tablet` up to 64rem, `desktop` from 64rem. See
|
|
10
|
+
* `ADMIN_SHELL_PHONE_QUERY` / `ADMIN_SHELL_DESKTOP_QUERY`.
|
|
11
|
+
*/
|
|
12
|
+
export type ShellViewport = 'phone' | 'tablet' | 'desktop';
|
|
13
|
+
/**
|
|
14
|
+
* How a side edge is presented on phones: `drawer` (the default, slides in
|
|
15
|
+
* from its side), `sheet` (right edge only: rises from the bottom), or
|
|
16
|
+
* `hidden` (not rendered on phones; the host shows its content elsewhere).
|
|
17
|
+
*/
|
|
18
|
+
export type PhonePanelPresentation = 'drawer' | 'sheet' | 'hidden';
|
|
7
19
|
export type ActivityStatus = 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
|
|
8
20
|
export interface ShellHotkeyBinding {
|
|
9
21
|
code: string;
|
|
@@ -22,12 +34,67 @@ export interface ShellPanelConfig {
|
|
|
22
34
|
collapsedSize: string;
|
|
23
35
|
expandedSize: string;
|
|
24
36
|
exclusiveGroup?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Open/closed state per viewport class, applied on first render and again
|
|
39
|
+
* whenever the viewport class changes (e.g. `{ phone: 'collapsed', tablet:
|
|
40
|
+
* 'collapsed', desktop: 'expanded' }`). The user's toggle sticks until the
|
|
41
|
+
* class changes. An edge with viewport defaults never persists its state.
|
|
42
|
+
*/
|
|
43
|
+
viewportDefaults?: Partial<Record<ShellViewport, VisiblePanelState>>;
|
|
44
|
+
/** Phone presentation of a side edge (default `drawer`). */
|
|
45
|
+
phone?: PhonePanelPresentation;
|
|
46
|
+
/**
|
|
47
|
+
* Media query under which an expanded `push` side edge is laid over the
|
|
48
|
+
* page (sliding in above a scrim) instead of pushing it aside, on tablet
|
|
49
|
+
* and desktop. Above it the edge docks as usual. Phones keep their
|
|
50
|
+
* `phone` presentation. E.g. `'(max-width: 99.9375rem)'` overlays up to
|
|
51
|
+
* the Material 3 "Large" window class (under 1600px).
|
|
52
|
+
*/
|
|
53
|
+
overlayMedia?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Drag-to-resize for a `push` side edge on tablet/desktop: a separator on
|
|
56
|
+
* the edge's inner border (pointer drag, arrow keys, Home/End, double-click
|
|
57
|
+
* or Enter to reset). `true` uses the default limits.
|
|
58
|
+
*/
|
|
59
|
+
resizable?: boolean | ShellPanelResize;
|
|
60
|
+
/**
|
|
61
|
+
* What the settings adapter stores for this edge (default: everything).
|
|
62
|
+
* `false` stores nothing; `{ state: false }` keeps only the size.
|
|
63
|
+
*/
|
|
64
|
+
persist?: boolean | ShellPanelPersist;
|
|
65
|
+
/**
|
|
66
|
+
* Keep the edge's panel content mounted (and hidden) while the edge is
|
|
67
|
+
* collapsed, instead of unmounting it. Use it when the panel holds state
|
|
68
|
+
* that must survive closing, such as an assistant chat's draft on the
|
|
69
|
+
* phone sheet. Applies to the expanded content (`appPanel`,
|
|
70
|
+
* `tenantPanel`, the focus panel, `systemPanel`); the rail still renders
|
|
71
|
+
* as usual. A hidden edge unmounts everything.
|
|
72
|
+
*/
|
|
73
|
+
keepMounted?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/** Limits for a resizable side edge, in CSS pixels. */
|
|
76
|
+
export interface ShellPanelResize {
|
|
77
|
+
/** Smallest expanded width (default 240). */
|
|
78
|
+
min?: number;
|
|
79
|
+
/** Largest expanded width (default 720). */
|
|
80
|
+
max?: number;
|
|
81
|
+
/** Arrow-key step (default 16; Shift multiplies by 4). */
|
|
82
|
+
step?: number;
|
|
83
|
+
}
|
|
84
|
+
/** Which of an edge's user settings the settings adapter stores. */
|
|
85
|
+
export interface ShellPanelPersist {
|
|
86
|
+
/** Open/closed state (default true). */
|
|
87
|
+
state?: boolean;
|
|
88
|
+
/** Resized width (default true). */
|
|
89
|
+
size?: boolean;
|
|
25
90
|
}
|
|
26
91
|
export type ShellPanelDefaults = Partial<Record<PanelEdge, Partial<ShellPanelConfig> | false>>;
|
|
27
92
|
export interface ShellSettingsDelta {
|
|
28
93
|
hotkeysEnabled?: boolean;
|
|
29
94
|
keymap?: Partial<Record<PanelEdge, ShellHotkeyBinding | null>>;
|
|
30
95
|
panels?: Partial<Record<PanelEdge, VisiblePanelState>>;
|
|
96
|
+
/** Resized expanded widths in px; `null` resets to the configured size. */
|
|
97
|
+
sizes?: Partial<Record<PanelEdge, number | null>>;
|
|
31
98
|
activeFocusToolId?: string | null;
|
|
32
99
|
}
|
|
33
100
|
export interface ShellSettingsAdapter {
|
|
@@ -48,6 +115,13 @@ export interface ShellNavItem {
|
|
|
48
115
|
icon?: string;
|
|
49
116
|
description?: string;
|
|
50
117
|
badge?: number | string | null;
|
|
118
|
+
/**
|
|
119
|
+
* Show a "needs attention" dot on the item (also over its icon when the
|
|
120
|
+
* nav is collapsed). `true` announces the default label ("Needs
|
|
121
|
+
* attention"); a string is the accessible label to announce instead
|
|
122
|
+
* (e.g. "A background job failed recently").
|
|
123
|
+
*/
|
|
124
|
+
attention?: boolean | string | null;
|
|
51
125
|
children?: ShellNavItem[];
|
|
52
126
|
}
|
|
53
127
|
/** Tenant option rendered by {@link WorkspaceAccountMenu}. */
|
|
@@ -129,9 +203,19 @@ export interface ShellSystemPanel {
|
|
|
129
203
|
}
|
|
130
204
|
export interface ShellStateSnapshot {
|
|
131
205
|
panels: Record<PanelEdge, PanelState>;
|
|
206
|
+
viewport: ShellViewport;
|
|
132
207
|
activeFocusToolId: string | null;
|
|
133
208
|
settings: ShellSettingsDelta;
|
|
134
209
|
}
|
|
210
|
+
/** Phone behavior switches for `AdminShell` (all off by default). */
|
|
211
|
+
export interface AdminShellPhoneOptions {
|
|
212
|
+
/** Dim the page behind an open side drawer or sheet; a tap closes it. */
|
|
213
|
+
scrim?: boolean;
|
|
214
|
+
/** Close drawers by swiping them away (left drawer left, right drawer right, sheet down). */
|
|
215
|
+
swipeToClose?: boolean;
|
|
216
|
+
/** Hide the `phoneTopBar` while scrolling down (default true). */
|
|
217
|
+
hideOnScroll?: boolean;
|
|
218
|
+
}
|
|
135
219
|
export interface AdminShellProps {
|
|
136
220
|
title?: string;
|
|
137
221
|
subtitle?: string;
|
|
@@ -143,4 +227,17 @@ export interface AdminShellProps {
|
|
|
143
227
|
export declare const PANEL_EDGES: PanelEdge[];
|
|
144
228
|
export declare const EDGE_SCOPES: Record<PanelEdge, ShellScope>;
|
|
145
229
|
export declare const SCOPE_EDGES: Record<ShellScope, PanelEdge>;
|
|
230
|
+
/**
|
|
231
|
+
* Public element ids of AdminShell's regions, stable for `aria-controls`,
|
|
232
|
+
* skip links, and host styling. `main` is the page scroller: the shell is
|
|
233
|
+
* pinned to the viewport and page content scrolls inside it.
|
|
234
|
+
*/
|
|
235
|
+
export declare const ADMIN_SHELL_REGION_IDS: {
|
|
236
|
+
readonly header: "smrt-admin-shell-header";
|
|
237
|
+
readonly top: "smrt-admin-shell-top-panel";
|
|
238
|
+
readonly left: "smrt-admin-shell-left-panel";
|
|
239
|
+
readonly right: "smrt-admin-shell-right-panel";
|
|
240
|
+
readonly bottom: "smrt-admin-shell-bottom-panel";
|
|
241
|
+
readonly main: "smrt-admin-shell-main";
|
|
242
|
+
};
|
|
146
243
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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, 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';
|
|
@@ -34,6 +34,15 @@ export declare const M: {
|
|
|
34
34
|
readonly 'ui.admin_shell.close_shortcuts': "ui.admin_shell.close_shortcuts";
|
|
35
35
|
readonly 'ui.admin_shell.shortcuts': "ui.admin_shell.shortcuts";
|
|
36
36
|
readonly 'ui.admin_shell.close': "ui.admin_shell.close";
|
|
37
|
+
readonly 'ui.admin_shell.close_panel': "ui.admin_shell.close_panel";
|
|
38
|
+
readonly 'ui.admin_shell.resize_panel': "ui.admin_shell.resize_panel";
|
|
39
|
+
readonly 'ui.shell_nav_toggle.collapse': "ui.shell_nav_toggle.collapse";
|
|
40
|
+
readonly 'ui.shell_nav_toggle.expand': "ui.shell_nav_toggle.expand";
|
|
41
|
+
readonly 'ui.shell_nav_toggle.navigation': "ui.shell_nav_toggle.navigation";
|
|
42
|
+
readonly 'ui.phone_top_bar.back': "ui.phone_top_bar.back";
|
|
43
|
+
readonly 'ui.phone_bottom_bar.label': "ui.phone_bottom_bar.label";
|
|
44
|
+
readonly 'ui.phone_bottom_bar.unread': "ui.phone_bottom_bar.unread";
|
|
45
|
+
readonly 'ui.phone_bottom_bar.new': "ui.phone_bottom_bar.new";
|
|
37
46
|
readonly 'ui.activity_toasts.dismiss': "ui.activity_toasts.dismiss";
|
|
38
47
|
readonly 'ui.activity_toasts.dismiss_action': "ui.activity_toasts.dismiss_action";
|
|
39
48
|
readonly 'ui.activity_item.view': "ui.activity_item.view";
|
|
@@ -57,6 +66,7 @@ export declare const M: {
|
|
|
57
66
|
readonly 'ui.system_scope_panel.no_running_work': "ui.system_scope_panel.no_running_work";
|
|
58
67
|
readonly 'ui.system_status_chips.system_status': "ui.system_status_chips.system_status";
|
|
59
68
|
readonly 'ui.tenant_nav.tenant_navigation': "ui.tenant_nav.tenant_navigation";
|
|
69
|
+
readonly 'ui.tenant_nav.needs_attention': "ui.tenant_nav.needs_attention";
|
|
60
70
|
readonly 'ui.workspace_account_menu.open': "ui.workspace_account_menu.open";
|
|
61
71
|
readonly 'ui.workspace_account_menu.current_tenant': "ui.workspace_account_menu.current_tenant";
|
|
62
72
|
readonly 'ui.workspace_account_menu.sign_out': "ui.workspace_account_menu.sign_out";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC
|
|
1
|
+
{"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGZ,CAAC"}
|
|
@@ -39,6 +39,15 @@ 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.close_panel': 'Close {label}',
|
|
43
|
+
'ui.admin_shell.resize_panel': 'Resize {label}',
|
|
44
|
+
'ui.shell_nav_toggle.collapse': 'Collapse {label}',
|
|
45
|
+
'ui.shell_nav_toggle.expand': 'Expand {label}',
|
|
46
|
+
'ui.shell_nav_toggle.navigation': 'navigation',
|
|
47
|
+
'ui.phone_top_bar.back': 'Back to {label}',
|
|
48
|
+
'ui.phone_bottom_bar.label': 'Main',
|
|
49
|
+
'ui.phone_bottom_bar.unread': '{count} unread',
|
|
50
|
+
'ui.phone_bottom_bar.new': 'new',
|
|
42
51
|
'ui.activity_toasts.dismiss': 'Dismiss activity notification',
|
|
43
52
|
'ui.activity_toasts.dismiss_action': 'Dismiss',
|
|
44
53
|
'ui.activity_item.view': 'View',
|
|
@@ -62,6 +71,7 @@ export const M = defineMessages({
|
|
|
62
71
|
'ui.system_scope_panel.no_running_work': 'No running work',
|
|
63
72
|
'ui.system_status_chips.system_status': 'System status',
|
|
64
73
|
'ui.tenant_nav.tenant_navigation': 'Tenant navigation',
|
|
74
|
+
'ui.tenant_nav.needs_attention': 'Needs attention',
|
|
65
75
|
'ui.workspace_account_menu.open': 'Open account menu',
|
|
66
76
|
'ui.workspace_account_menu.current_tenant': '{tenant} — current',
|
|
67
77
|
'ui.workspace_account_menu.sign_out': 'Sign out',
|