@happyvertical/smrt-svelte 0.37.8 → 0.37.10
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 +22 -86
- package/README.md +14 -10
- package/dist/components/workspace/MIGRATION.md +55 -0
- package/dist/components/workspace/README.md +22 -25
- package/dist/components/workspace/__tests__/AdminShell.test.js +55 -0
- package/dist/components/workspace/__tests__/admin-shell-hotkeys.test.js +34 -0
- package/dist/components/workspace/__tests__/admin-shell-settings.test.js +25 -0
- package/dist/components/workspace/__tests__/admin-shell-state.test.js +110 -0
- package/dist/components/workspace/__tests__/index.test.js +15 -24
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts +2 -1
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts.map +1 -1
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.js +1 -1
- package/dist/components/workspace/admin-shell/ActivityBadge.svelte +25 -0
- package/dist/components/workspace/admin-shell/ActivityBadge.svelte.d.ts +9 -0
- package/dist/components/workspace/admin-shell/ActivityBadge.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ActivityItem.svelte +85 -0
- package/dist/components/workspace/admin-shell/ActivityItem.svelte.d.ts +8 -0
- package/dist/components/workspace/admin-shell/ActivityItem.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ActivityList.svelte +41 -0
- package/dist/components/workspace/admin-shell/ActivityList.svelte.d.ts +10 -0
- package/dist/components/workspace/admin-shell/ActivityList.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ActivityToasts.svelte +140 -0
- package/dist/components/workspace/admin-shell/ActivityToasts.svelte.d.ts +16 -0
- package/dist/components/workspace/admin-shell/ActivityToasts.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte +691 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +24 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/AppScopePanel.svelte +94 -0
- package/dist/components/workspace/admin-shell/AppScopePanel.svelte.d.ts +14 -0
- package/dist/components/workspace/admin-shell/AppScopePanel.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/HotkeyInput.svelte +74 -0
- package/dist/components/workspace/admin-shell/HotkeyInput.svelte.d.ts +11 -0
- package/dist/components/workspace/admin-shell/HotkeyInput.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellCorner.svelte +25 -0
- package/dist/components/workspace/admin-shell/ShellCorner.svelte.d.ts +9 -0
- package/dist/components/workspace/admin-shell/ShellCorner.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellDockTool.svelte +19 -0
- package/dist/components/workspace/admin-shell/ShellDockTool.svelte.d.ts +7 -0
- package/dist/components/workspace/admin-shell/ShellDockTool.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte +146 -0
- package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte.d.ts +4 -0
- package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShortcutsOverlay.svelte +81 -0
- package/dist/components/workspace/admin-shell/ShortcutsOverlay.svelte.d.ts +7 -0
- package/dist/components/workspace/admin-shell/ShortcutsOverlay.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/SystemScopePanel.svelte +118 -0
- package/dist/components/workspace/admin-shell/SystemScopePanel.svelte.d.ts +9 -0
- package/dist/components/workspace/admin-shell/SystemScopePanel.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/SystemStatusChips.svelte +71 -0
- package/dist/components/workspace/admin-shell/SystemStatusChips.svelte.d.ts +8 -0
- package/dist/components/workspace/admin-shell/SystemStatusChips.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/TenantNav.svelte +101 -0
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +10 -0
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/context.d.ts +6 -0
- package/dist/components/workspace/admin-shell/context.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/context.js +16 -0
- package/dist/components/workspace/admin-shell/hotkeys.d.ts +14 -0
- package/dist/components/workspace/admin-shell/hotkeys.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/hotkeys.js +62 -0
- package/dist/components/workspace/admin-shell/settings.d.ts +14 -0
- package/dist/components/workspace/admin-shell/settings.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/settings.js +139 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts +47 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/state.svelte.js +252 -0
- package/dist/components/workspace/admin-shell/types.d.ts +137 -0
- package/dist/components/workspace/admin-shell/types.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/types.js +13 -0
- package/dist/components/workspace/index.d.ts +25 -11
- package/dist/components/workspace/index.d.ts.map +1 -1
- package/dist/components/workspace/index.js +24 -10
- package/dist/i18n/strings.workspace.d.ts +30 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +31 -0
- package/dist/internal/logger.d.ts +13 -6
- package/dist/internal/logger.d.ts.map +1 -1
- package/dist/internal/logger.js +33 -8
- package/dist/internal/logger.test.js +54 -0
- package/dist/web/__tests__/harness.svelte +25 -0
- package/dist/web/__tests__/harness.svelte.d.ts +15 -0
- package/dist/web/__tests__/harness.svelte.d.ts.map +1 -0
- package/dist/web/__tests__/live-collection.svelte.test.js +184 -0
- package/dist/web/index.d.ts +13 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +12 -0
- package/dist/web/live-collection.svelte.d.ts +132 -0
- package/dist/web/live-collection.svelte.d.ts.map +1 -0
- package/dist/web/live-collection.svelte.js +173 -0
- package/package.json +13 -4
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, resolveInitialPanelState, resolveShellConfig, } from './settings.js';
|
|
2
|
+
import { PANEL_EDGES, SCOPE_EDGES } from './types.js';
|
|
3
|
+
export class ShellState {
|
|
4
|
+
config;
|
|
5
|
+
adapter;
|
|
6
|
+
settings = $state({});
|
|
7
|
+
panels = $state({
|
|
8
|
+
top: 'collapsed',
|
|
9
|
+
left: 'collapsed',
|
|
10
|
+
right: 'collapsed',
|
|
11
|
+
bottom: 'collapsed',
|
|
12
|
+
});
|
|
13
|
+
focusTools = $state([]);
|
|
14
|
+
activeFocusToolId = $state(null);
|
|
15
|
+
activities = $state([]);
|
|
16
|
+
activityListeners = new Set();
|
|
17
|
+
constructor(options = {}) {
|
|
18
|
+
this.config = resolveShellConfig(options.config);
|
|
19
|
+
this.adapter =
|
|
20
|
+
options.settingsAdapter ??
|
|
21
|
+
(options.storageKey
|
|
22
|
+
? new LocalStorageShellSettingsAdapter(options.storageKey)
|
|
23
|
+
: null);
|
|
24
|
+
this.applySettings(options.settings ?? {}, { persist: false });
|
|
25
|
+
}
|
|
26
|
+
async hydrate() {
|
|
27
|
+
if (!this.adapter)
|
|
28
|
+
return;
|
|
29
|
+
const delta = await this.adapter.read();
|
|
30
|
+
if (delta)
|
|
31
|
+
this.applySettings(delta, { persist: false });
|
|
32
|
+
}
|
|
33
|
+
snapshot() {
|
|
34
|
+
return {
|
|
35
|
+
panels: { ...this.panels },
|
|
36
|
+
activeFocusToolId: this.activeFocusToolId,
|
|
37
|
+
settings: {
|
|
38
|
+
...this.settings,
|
|
39
|
+
keymap: this.settings.keymap ? { ...this.settings.keymap } : undefined,
|
|
40
|
+
panels: this.settings.panels ? { ...this.settings.panels } : undefined,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
applySettings(delta, options = {}) {
|
|
45
|
+
this.settings = mergeShellSettingsDelta(this.settings, delta);
|
|
46
|
+
for (const edge of PANEL_EDGES) {
|
|
47
|
+
this.panels[edge] = resolveInitialPanelState(edge, this.config.panels[edge], this.settings);
|
|
48
|
+
}
|
|
49
|
+
this.activeFocusToolId =
|
|
50
|
+
this.settings.activeFocusToolId ?? this.activeFocusToolId;
|
|
51
|
+
if (options.persist !== false)
|
|
52
|
+
void this.persistSettings();
|
|
53
|
+
}
|
|
54
|
+
setHotkeysEnabled(enabled) {
|
|
55
|
+
this.applySettings({ hotkeysEnabled: enabled });
|
|
56
|
+
}
|
|
57
|
+
setHotkey(edge, code) {
|
|
58
|
+
this.applySettings({
|
|
59
|
+
keymap: {
|
|
60
|
+
[edge]: code ? { code } : null,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
setPanel(edge, state) {
|
|
65
|
+
if (this.config.panels[edge].initial === 'hidden') {
|
|
66
|
+
this.panels[edge] = 'hidden';
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (state === 'expanded')
|
|
70
|
+
this.closeExclusivePeers(edge);
|
|
71
|
+
this.panels[edge] = state;
|
|
72
|
+
this.settings = mergeShellSettingsDelta(this.settings, {
|
|
73
|
+
panels: { [edge]: state },
|
|
74
|
+
});
|
|
75
|
+
void this.persistSettings();
|
|
76
|
+
}
|
|
77
|
+
togglePanel(edge) {
|
|
78
|
+
if (this.panels[edge] === 'hidden')
|
|
79
|
+
return;
|
|
80
|
+
this.setPanel(edge, this.panels[edge] === 'expanded' ? 'collapsed' : 'expanded');
|
|
81
|
+
}
|
|
82
|
+
expandPanel(edge) {
|
|
83
|
+
this.setPanel(edge, 'expanded');
|
|
84
|
+
}
|
|
85
|
+
collapsePanel(edge) {
|
|
86
|
+
this.setPanel(edge, 'collapsed');
|
|
87
|
+
}
|
|
88
|
+
closeTopmostExpanded() {
|
|
89
|
+
for (const edge of [...PANEL_EDGES].reverse()) {
|
|
90
|
+
if (this.panels[edge] === 'expanded') {
|
|
91
|
+
this.collapsePanel(edge);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
registerFocusTool(tool) {
|
|
98
|
+
this.focusTools = [
|
|
99
|
+
...this.focusTools.filter((existing) => existing.id !== tool.id),
|
|
100
|
+
tool,
|
|
101
|
+
].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
102
|
+
if (!this.activeFocusToolId)
|
|
103
|
+
this.activeFocusToolId = tool.id;
|
|
104
|
+
return () => this.unregisterFocusTool(tool.id);
|
|
105
|
+
}
|
|
106
|
+
unregisterFocusTool(id) {
|
|
107
|
+
this.focusTools = this.focusTools.filter((tool) => tool.id !== id);
|
|
108
|
+
if (this.activeFocusToolId === id) {
|
|
109
|
+
this.activeFocusToolId = this.focusTools[0]?.id ?? null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
openFocusTool(id) {
|
|
113
|
+
if (!this.focusTools.some((tool) => tool.id === id))
|
|
114
|
+
return;
|
|
115
|
+
this.activeFocusToolId = id;
|
|
116
|
+
this.settings = mergeShellSettingsDelta(this.settings, {
|
|
117
|
+
activeFocusToolId: id,
|
|
118
|
+
});
|
|
119
|
+
this.expandPanel('right');
|
|
120
|
+
void this.persistSettings();
|
|
121
|
+
}
|
|
122
|
+
upsertActivity(activity) {
|
|
123
|
+
const now = new Date().toISOString();
|
|
124
|
+
const normalized = {
|
|
125
|
+
...activity,
|
|
126
|
+
edge: activity.edge ?? this.homeEdgeForScope(activity.scope),
|
|
127
|
+
createdAt: activity.createdAt ?? now,
|
|
128
|
+
updatedAt: activity.updatedAt ?? now,
|
|
129
|
+
};
|
|
130
|
+
const previous = this.activities.find((item) => item.id === activity.id);
|
|
131
|
+
this.activities = [
|
|
132
|
+
...this.activities.filter((item) => item.id !== activity.id),
|
|
133
|
+
normalized,
|
|
134
|
+
];
|
|
135
|
+
this.emitActivity({
|
|
136
|
+
type: previous && previous.status !== normalized.status
|
|
137
|
+
? 'transition'
|
|
138
|
+
: 'upsert',
|
|
139
|
+
activity: normalized,
|
|
140
|
+
previous,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
updateActivity(id, patch) {
|
|
144
|
+
const current = this.activities.find((activity) => activity.id === id);
|
|
145
|
+
if (!current)
|
|
146
|
+
return;
|
|
147
|
+
this.upsertActivity({
|
|
148
|
+
...current,
|
|
149
|
+
...patch,
|
|
150
|
+
id,
|
|
151
|
+
updatedAt: new Date().toISOString(),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
removeActivity(id) {
|
|
155
|
+
const current = this.activities.find((activity) => activity.id === id);
|
|
156
|
+
if (!current)
|
|
157
|
+
return;
|
|
158
|
+
this.activities = this.activities.filter((activity) => activity.id !== id);
|
|
159
|
+
this.emitActivity({ type: 'remove', activity: current });
|
|
160
|
+
}
|
|
161
|
+
watchActivities(listener) {
|
|
162
|
+
this.activityListeners.add(listener);
|
|
163
|
+
return () => this.activityListeners.delete(listener);
|
|
164
|
+
}
|
|
165
|
+
listActivities(filter = {}) {
|
|
166
|
+
return this.activities
|
|
167
|
+
.map((activity) => ({
|
|
168
|
+
...activity,
|
|
169
|
+
edge: activity.edge ?? this.homeEdgeForScope(activity.scope),
|
|
170
|
+
}))
|
|
171
|
+
.filter((activity) => activityMatchesFilter(activity, filter));
|
|
172
|
+
}
|
|
173
|
+
activityBadge(edge) {
|
|
174
|
+
const activities = this.listActivities({ edge }).filter((activity) => isActiveStatus(activity.status));
|
|
175
|
+
const determinate = activities
|
|
176
|
+
.map((activity) => activity.progress)
|
|
177
|
+
.filter((progress) => typeof progress === 'number');
|
|
178
|
+
return {
|
|
179
|
+
count: activities.length,
|
|
180
|
+
running: activities.filter((activity) => activity.status === 'running')
|
|
181
|
+
.length,
|
|
182
|
+
hasFailed: this.listActivities({ edge }).some((activity) => activity.status === 'failed'),
|
|
183
|
+
progress: determinate.length === 0
|
|
184
|
+
? null
|
|
185
|
+
: determinate.reduce((total, progress) => total + progress, 0) /
|
|
186
|
+
determinate.length,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
homeEdgeForScope(scope) {
|
|
190
|
+
const preferred = SCOPE_EDGES[scope];
|
|
191
|
+
if (this.panels[preferred] !== 'hidden')
|
|
192
|
+
return preferred;
|
|
193
|
+
if (this.panels.bottom !== 'hidden')
|
|
194
|
+
return 'bottom';
|
|
195
|
+
// Both the scope's edge and System are hidden — fall back to any visible
|
|
196
|
+
// edge so the activity still surfaces somewhere rather than homing to a
|
|
197
|
+
// hidden edge where its badge never renders.
|
|
198
|
+
const visible = PANEL_EDGES.find((edge) => this.panels[edge] !== 'hidden');
|
|
199
|
+
return visible ?? preferred;
|
|
200
|
+
}
|
|
201
|
+
closeExclusivePeers(edge) {
|
|
202
|
+
const group = this.config.panels[edge].exclusiveGroup;
|
|
203
|
+
if (!group)
|
|
204
|
+
return;
|
|
205
|
+
for (const peer of PANEL_EDGES) {
|
|
206
|
+
if (peer !== edge &&
|
|
207
|
+
this.config.panels[peer].exclusiveGroup === group &&
|
|
208
|
+
this.panels[peer] === 'expanded') {
|
|
209
|
+
this.panels[peer] = 'collapsed';
|
|
210
|
+
// Persist the peer collapse too, otherwise its stale 'expanded' delta
|
|
211
|
+
// survives and both panels reopen on reload, defeating exclusivity.
|
|
212
|
+
this.settings = mergeShellSettingsDelta(this.settings, {
|
|
213
|
+
panels: { [peer]: 'collapsed' },
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async persistSettings() {
|
|
219
|
+
await this.adapter?.write(this.settings);
|
|
220
|
+
}
|
|
221
|
+
emitActivity(event) {
|
|
222
|
+
for (const listener of this.activityListeners)
|
|
223
|
+
listener(event);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
export function createShellState(options = {}) {
|
|
227
|
+
return new ShellState(options);
|
|
228
|
+
}
|
|
229
|
+
function activityMatchesFilter(activity, filter) {
|
|
230
|
+
if (filter.edge && activity.edge !== filter.edge)
|
|
231
|
+
return false;
|
|
232
|
+
if (filter.scope && activity.scope !== filter.scope)
|
|
233
|
+
return false;
|
|
234
|
+
if (filter.kind && !matchesOne(activity.kind, filter.kind))
|
|
235
|
+
return false;
|
|
236
|
+
if (filter.status && !matchesOne(activity.status, filter.status)) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
if (filter.subject) {
|
|
240
|
+
return (activity.subject?.type === filter.subject.type &&
|
|
241
|
+
activity.subject.id === filter.subject.id);
|
|
242
|
+
}
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
function matchesOne(value, expected) {
|
|
246
|
+
return Array.isArray(expected)
|
|
247
|
+
? expected.includes(value)
|
|
248
|
+
: value === expected;
|
|
249
|
+
}
|
|
250
|
+
function isActiveStatus(status) {
|
|
251
|
+
return status === 'queued' || status === 'running';
|
|
252
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { Component, Snippet } from 'svelte';
|
|
2
|
+
export type PanelEdge = 'top' | 'left' | 'right' | 'bottom';
|
|
3
|
+
export type ShellScope = 'app' | 'tenant' | 'focus' | 'system';
|
|
4
|
+
export type PanelState = 'hidden' | 'collapsed' | 'expanded';
|
|
5
|
+
export type VisiblePanelState = Exclude<PanelState, 'hidden'>;
|
|
6
|
+
export type PanelPresentation = 'push' | 'overlay';
|
|
7
|
+
export type ActivityStatus = 'queued' | 'running' | 'completed' | 'failed' | 'canceled';
|
|
8
|
+
export interface ShellHotkeyBinding {
|
|
9
|
+
code: string;
|
|
10
|
+
altKey?: boolean;
|
|
11
|
+
ctrlKey?: boolean;
|
|
12
|
+
metaKey?: boolean;
|
|
13
|
+
shiftKey?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ShellPanelConfig {
|
|
16
|
+
edge: PanelEdge;
|
|
17
|
+
scope: ShellScope;
|
|
18
|
+
label: string;
|
|
19
|
+
initial: PanelState;
|
|
20
|
+
presentation: PanelPresentation;
|
|
21
|
+
hotkey: ShellHotkeyBinding | null;
|
|
22
|
+
collapsedSize: string;
|
|
23
|
+
expandedSize: string;
|
|
24
|
+
exclusiveGroup?: string;
|
|
25
|
+
}
|
|
26
|
+
export type ShellPanelDefaults = Partial<Record<PanelEdge, Partial<ShellPanelConfig> | false>>;
|
|
27
|
+
export interface ShellSettingsDelta {
|
|
28
|
+
hotkeysEnabled?: boolean;
|
|
29
|
+
keymap?: Partial<Record<PanelEdge, ShellHotkeyBinding | null>>;
|
|
30
|
+
panels?: Partial<Record<PanelEdge, VisiblePanelState>>;
|
|
31
|
+
activeFocusToolId?: string | null;
|
|
32
|
+
}
|
|
33
|
+
export interface ShellSettingsAdapter {
|
|
34
|
+
read(): ShellSettingsDelta | null | Promise<ShellSettingsDelta | null>;
|
|
35
|
+
write(delta: ShellSettingsDelta): void | Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export interface ResolvedShellConfig {
|
|
38
|
+
panels: Record<PanelEdge, ShellPanelConfig>;
|
|
39
|
+
}
|
|
40
|
+
export interface ShellFocusToolSubject {
|
|
41
|
+
type: string;
|
|
42
|
+
id: string;
|
|
43
|
+
label?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ShellNavItem {
|
|
46
|
+
href: string;
|
|
47
|
+
label: string;
|
|
48
|
+
icon?: string;
|
|
49
|
+
description?: string;
|
|
50
|
+
badge?: number | string | null;
|
|
51
|
+
children?: ShellNavItem[];
|
|
52
|
+
}
|
|
53
|
+
export interface ShellFocusTool {
|
|
54
|
+
id: string;
|
|
55
|
+
label: string;
|
|
56
|
+
description?: string;
|
|
57
|
+
order?: number;
|
|
58
|
+
badge?: number | string | null;
|
|
59
|
+
component?: Component | null;
|
|
60
|
+
render?: Snippet<[{
|
|
61
|
+
tool: ShellFocusTool;
|
|
62
|
+
}]>;
|
|
63
|
+
scopeId?: string;
|
|
64
|
+
subject?: ShellFocusToolSubject;
|
|
65
|
+
activityKinds?: string[];
|
|
66
|
+
}
|
|
67
|
+
export interface ShellActivity {
|
|
68
|
+
id: string;
|
|
69
|
+
label: string;
|
|
70
|
+
kind: string;
|
|
71
|
+
scope: ShellScope;
|
|
72
|
+
status: ActivityStatus;
|
|
73
|
+
subject?: ShellFocusToolSubject;
|
|
74
|
+
edge?: PanelEdge;
|
|
75
|
+
progress?: number | null;
|
|
76
|
+
detailHref?: string;
|
|
77
|
+
message?: string;
|
|
78
|
+
createdAt?: string;
|
|
79
|
+
updatedAt?: string;
|
|
80
|
+
cancel?: () => void | Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
export interface ShellActivityFilter {
|
|
83
|
+
edge?: PanelEdge;
|
|
84
|
+
scope?: ShellScope;
|
|
85
|
+
kind?: string | string[];
|
|
86
|
+
status?: ActivityStatus | ActivityStatus[];
|
|
87
|
+
subject?: ShellFocusToolSubject;
|
|
88
|
+
}
|
|
89
|
+
export interface ShellActivityBadge {
|
|
90
|
+
count: number;
|
|
91
|
+
running: number;
|
|
92
|
+
hasFailed: boolean;
|
|
93
|
+
progress: number | null;
|
|
94
|
+
}
|
|
95
|
+
export interface ShellActivityEvent {
|
|
96
|
+
type: 'upsert' | 'transition' | 'remove';
|
|
97
|
+
activity: ShellActivity;
|
|
98
|
+
previous?: ShellActivity;
|
|
99
|
+
}
|
|
100
|
+
export type ShellStatusTone = 'neutral' | 'success' | 'warning' | 'error' | 'info';
|
|
101
|
+
export interface ShellStatusChip {
|
|
102
|
+
id: string;
|
|
103
|
+
label: string;
|
|
104
|
+
value?: string | number;
|
|
105
|
+
tone?: ShellStatusTone;
|
|
106
|
+
href?: string;
|
|
107
|
+
}
|
|
108
|
+
export interface ShellSystemItem {
|
|
109
|
+
id: string;
|
|
110
|
+
label: string;
|
|
111
|
+
status: string;
|
|
112
|
+
detail?: string;
|
|
113
|
+
href?: string;
|
|
114
|
+
updatedAt?: string;
|
|
115
|
+
}
|
|
116
|
+
export interface ShellSystemPanel {
|
|
117
|
+
id: string;
|
|
118
|
+
label: string;
|
|
119
|
+
items: ShellSystemItem[];
|
|
120
|
+
}
|
|
121
|
+
export interface ShellStateSnapshot {
|
|
122
|
+
panels: Record<PanelEdge, PanelState>;
|
|
123
|
+
activeFocusToolId: string | null;
|
|
124
|
+
settings: ShellSettingsDelta;
|
|
125
|
+
}
|
|
126
|
+
export interface AdminShellProps {
|
|
127
|
+
title?: string;
|
|
128
|
+
subtitle?: string;
|
|
129
|
+
config?: ShellPanelDefaults;
|
|
130
|
+
settings?: ShellSettingsDelta;
|
|
131
|
+
settingsAdapter?: ShellSettingsAdapter;
|
|
132
|
+
storageKey?: string;
|
|
133
|
+
}
|
|
134
|
+
export declare const PANEL_EDGES: PanelEdge[];
|
|
135
|
+
export declare const EDGE_SCOPES: Record<PanelEdge, ShellScope>;
|
|
136
|
+
export declare const SCOPE_EDGES: Record<ShellScope, PanelEdge>;
|
|
137
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const PANEL_EDGES = ['top', 'left', 'right', 'bottom'];
|
|
2
|
+
export const EDGE_SCOPES = {
|
|
3
|
+
top: 'app',
|
|
4
|
+
left: 'tenant',
|
|
5
|
+
right: 'focus',
|
|
6
|
+
bottom: 'system',
|
|
7
|
+
};
|
|
8
|
+
export const SCOPE_EDGES = {
|
|
9
|
+
app: 'top',
|
|
10
|
+
tenant: 'left',
|
|
11
|
+
focus: 'right',
|
|
12
|
+
system: 'bottom',
|
|
13
|
+
};
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @happyvertical/smrt-svelte/workspace
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Canonical AdminShell family for SMRT admin UIs. The first-generation
|
|
5
|
+
* WorkspaceShell / RoleShell / NavTree / ToolsDock source files remain in this
|
|
6
|
+
* package as migration references, but the public workspace surface now points
|
|
7
|
+
* at the four-edge AdminShell contract.
|
|
6
8
|
*/
|
|
7
|
-
export { default as
|
|
8
|
-
export {
|
|
9
|
-
export { default as
|
|
10
|
-
export { default as
|
|
11
|
-
export {
|
|
12
|
-
export { default as
|
|
13
|
-
export {
|
|
14
|
-
export
|
|
15
|
-
export {
|
|
9
|
+
export { default as ActivityBadge } from './admin-shell/ActivityBadge.svelte';
|
|
10
|
+
export { default as ActivityItem } from './admin-shell/ActivityItem.svelte';
|
|
11
|
+
export { default as ActivityList } from './admin-shell/ActivityList.svelte';
|
|
12
|
+
export { default as ActivityToasts } from './admin-shell/ActivityToasts.svelte';
|
|
13
|
+
export { default as AdminShell } from './admin-shell/AdminShell.svelte';
|
|
14
|
+
export { default as AppScopePanel } from './admin-shell/AppScopePanel.svelte';
|
|
15
|
+
export { ADMIN_SHELL_CONTEXT, setAdminShell, tryUseAdminShell, useAdminShell, } from './admin-shell/context.js';
|
|
16
|
+
export { default as HotkeyInput } from './admin-shell/HotkeyInput.svelte';
|
|
17
|
+
export { formatHotkeyBinding, hotkeyMatchesEvent, isEditableTarget, isShortcutsEvent, type ShellHotkeyAction, shellActionFromKeyboardEvent, shouldIgnoreShellHotkey, } from './admin-shell/hotkeys.js';
|
|
18
|
+
export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
|
|
19
|
+
export { default as ShellDockTool } from './admin-shell/ShellDockTool.svelte';
|
|
20
|
+
export { default as ShellSettingsPanel } from './admin-shell/ShellSettingsPanel.svelte';
|
|
21
|
+
export { default as ShortcutsOverlay } from './admin-shell/ShortcutsOverlay.svelte';
|
|
22
|
+
export { default as SystemScopePanel } from './admin-shell/SystemScopePanel.svelte';
|
|
23
|
+
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';
|
|
26
|
+
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, } from './admin-shell/types.js';
|
|
28
|
+
export { EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES } from './admin-shell/types.js';
|
|
29
|
+
export { type NavSection, type NavTreeFromManifestOptions, navTreeFromManifest as tenantNavFromManifest, pluralizeClassName, type SmrtManifestEntryLike, type SmrtManifestLike, } from './manifest-nav.js';
|
|
16
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,iBAAiB,EACtB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EACV,cAAc,EACd,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE/E,OAAO,EACL,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,mBAAmB,IAAI,qBAAqB,EAC5C,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @happyvertical/smrt-svelte/workspace
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Canonical AdminShell family for SMRT admin UIs. The first-generation
|
|
5
|
+
* WorkspaceShell / RoleShell / NavTree / ToolsDock source files remain in this
|
|
6
|
+
* package as migration references, but the public workspace surface now points
|
|
7
|
+
* at the four-edge AdminShell contract.
|
|
6
8
|
*/
|
|
7
|
-
export { default as
|
|
8
|
-
export {
|
|
9
|
-
export { default as
|
|
10
|
-
export { default as
|
|
11
|
-
export {
|
|
12
|
-
export { default as
|
|
13
|
-
export {
|
|
14
|
-
export { default as
|
|
9
|
+
export { default as ActivityBadge } from './admin-shell/ActivityBadge.svelte';
|
|
10
|
+
export { default as ActivityItem } from './admin-shell/ActivityItem.svelte';
|
|
11
|
+
export { default as ActivityList } from './admin-shell/ActivityList.svelte';
|
|
12
|
+
export { default as ActivityToasts } from './admin-shell/ActivityToasts.svelte';
|
|
13
|
+
export { default as AdminShell } from './admin-shell/AdminShell.svelte';
|
|
14
|
+
export { default as AppScopePanel } from './admin-shell/AppScopePanel.svelte';
|
|
15
|
+
export { ADMIN_SHELL_CONTEXT, setAdminShell, tryUseAdminShell, useAdminShell, } from './admin-shell/context.js';
|
|
16
|
+
export { default as HotkeyInput } from './admin-shell/HotkeyInput.svelte';
|
|
17
|
+
export { formatHotkeyBinding, hotkeyMatchesEvent, isEditableTarget, isShortcutsEvent, shellActionFromKeyboardEvent, shouldIgnoreShellHotkey, } from './admin-shell/hotkeys.js';
|
|
18
|
+
export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
|
|
19
|
+
export { default as ShellDockTool } from './admin-shell/ShellDockTool.svelte';
|
|
20
|
+
export { default as ShellSettingsPanel } from './admin-shell/ShellSettingsPanel.svelte';
|
|
21
|
+
export { default as ShortcutsOverlay } from './admin-shell/ShortcutsOverlay.svelte';
|
|
22
|
+
export { default as SystemScopePanel } from './admin-shell/SystemScopePanel.svelte';
|
|
23
|
+
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';
|
|
26
|
+
export { default as TenantNav } from './admin-shell/TenantNav.svelte';
|
|
27
|
+
export { EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES } from './admin-shell/types.js';
|
|
28
|
+
export { navTreeFromManifest as tenantNavFromManifest, pluralizeClassName, } from './manifest-nav.js';
|
|
@@ -26,5 +26,35 @@ export declare const M: {
|
|
|
26
26
|
readonly 'ui.tools_dock.no_tools_context': "ui.tools_dock.no_tools_context";
|
|
27
27
|
readonly 'ui.tools_dock.select_tool': "ui.tools_dock.select_tool";
|
|
28
28
|
readonly 'ui.tools_dock.workspace_tools': "ui.tools_dock.workspace_tools";
|
|
29
|
+
readonly 'ui.admin_shell.no_focus_tools': "ui.admin_shell.no_focus_tools";
|
|
30
|
+
readonly 'ui.admin_shell.no_app_panel': "ui.admin_shell.no_app_panel";
|
|
31
|
+
readonly 'ui.admin_shell.no_system_panel': "ui.admin_shell.no_system_panel";
|
|
32
|
+
readonly 'ui.admin_shell.shell_shortcuts': "ui.admin_shell.shell_shortcuts";
|
|
33
|
+
readonly 'ui.admin_shell.close_shortcuts': "ui.admin_shell.close_shortcuts";
|
|
34
|
+
readonly 'ui.admin_shell.shortcuts': "ui.admin_shell.shortcuts";
|
|
35
|
+
readonly 'ui.admin_shell.close': "ui.admin_shell.close";
|
|
36
|
+
readonly 'ui.activity_toasts.dismiss': "ui.activity_toasts.dismiss";
|
|
37
|
+
readonly 'ui.activity_toasts.dismiss_action': "ui.activity_toasts.dismiss_action";
|
|
38
|
+
readonly 'ui.activity_item.view': "ui.activity_item.view";
|
|
39
|
+
readonly 'ui.activity_item.cancel': "ui.activity_item.cancel";
|
|
40
|
+
readonly 'ui.activity_list.empty': "ui.activity_list.empty";
|
|
41
|
+
readonly 'ui.app_scope_panel.app_scope': "ui.app_scope_panel.app_scope";
|
|
42
|
+
readonly 'ui.hotkey_input.capture_title': "ui.hotkey_input.capture_title";
|
|
43
|
+
readonly 'ui.hotkey_input.conflicts_with': "ui.hotkey_input.conflicts_with";
|
|
44
|
+
readonly 'ui.shell_settings_panel.shell_settings': "ui.shell_settings_panel.shell_settings";
|
|
45
|
+
readonly 'ui.shell_settings_panel.description': "ui.shell_settings_panel.description";
|
|
46
|
+
readonly 'ui.shell_settings_panel.disable_hotkeys': "ui.shell_settings_panel.disable_hotkeys";
|
|
47
|
+
readonly 'ui.shell_settings_panel.enable_hotkeys': "ui.shell_settings_panel.enable_hotkeys";
|
|
48
|
+
readonly 'ui.shell_settings_panel.collapse': "ui.shell_settings_panel.collapse";
|
|
49
|
+
readonly 'ui.shell_settings_panel.expand': "ui.shell_settings_panel.expand";
|
|
50
|
+
readonly 'ui.shortcuts_overlay.open_shortcuts': "ui.shortcuts_overlay.open_shortcuts";
|
|
51
|
+
readonly 'ui.shortcuts_overlay.close_drawer': "ui.shortcuts_overlay.close_drawer";
|
|
52
|
+
readonly 'ui.shortcuts_overlay.close': "ui.shortcuts_overlay.close";
|
|
53
|
+
readonly 'ui.shortcuts_overlay.escape': "ui.shortcuts_overlay.escape";
|
|
54
|
+
readonly 'ui.system_scope_panel.system_scope': "ui.system_scope_panel.system_scope";
|
|
55
|
+
readonly 'ui.system_scope_panel.activities': "ui.system_scope_panel.activities";
|
|
56
|
+
readonly 'ui.system_scope_panel.no_running_work': "ui.system_scope_panel.no_running_work";
|
|
57
|
+
readonly 'ui.system_status_chips.system_status': "ui.system_status_chips.system_status";
|
|
58
|
+
readonly 'ui.tenant_nav.tenant_navigation': "ui.tenant_nav.tenant_navigation";
|
|
29
59
|
};
|
|
30
60
|
//# sourceMappingURL=strings.workspace.d.ts.map
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDZ,CAAC"}
|
|
@@ -30,4 +30,35 @@ export const M = defineMessages({
|
|
|
30
30
|
'ui.tools_dock.no_tools_context': 'No tools are available for the current context.',
|
|
31
31
|
'ui.tools_dock.select_tool': 'Select a tool to begin.',
|
|
32
32
|
'ui.tools_dock.workspace_tools': 'Workspace tools',
|
|
33
|
+
// components/workspace/admin-shell/*
|
|
34
|
+
'ui.admin_shell.no_focus_tools': 'No focus tools',
|
|
35
|
+
'ui.admin_shell.no_app_panel': 'No app panel',
|
|
36
|
+
'ui.admin_shell.no_system_panel': 'No system panel',
|
|
37
|
+
'ui.admin_shell.shell_shortcuts': 'Shell shortcuts',
|
|
38
|
+
'ui.admin_shell.close_shortcuts': 'Close shortcuts',
|
|
39
|
+
'ui.admin_shell.shortcuts': 'Shortcuts',
|
|
40
|
+
'ui.admin_shell.close': 'Close',
|
|
41
|
+
'ui.activity_toasts.dismiss': 'Dismiss activity notification',
|
|
42
|
+
'ui.activity_toasts.dismiss_action': 'Dismiss',
|
|
43
|
+
'ui.activity_item.view': 'View',
|
|
44
|
+
'ui.activity_item.cancel': 'Cancel',
|
|
45
|
+
'ui.activity_list.empty': 'No activities',
|
|
46
|
+
'ui.app_scope_panel.app_scope': 'App scope',
|
|
47
|
+
'ui.hotkey_input.capture_title': 'Press a key to capture it',
|
|
48
|
+
'ui.hotkey_input.conflicts_with': 'Conflicts with',
|
|
49
|
+
'ui.shell_settings_panel.shell_settings': 'Shell settings',
|
|
50
|
+
'ui.shell_settings_panel.description': 'Panel preferences and physical-key shortcuts.',
|
|
51
|
+
'ui.shell_settings_panel.disable_hotkeys': 'Disable hotkeys',
|
|
52
|
+
'ui.shell_settings_panel.enable_hotkeys': 'Enable hotkeys',
|
|
53
|
+
'ui.shell_settings_panel.collapse': 'Collapse',
|
|
54
|
+
'ui.shell_settings_panel.expand': 'Expand',
|
|
55
|
+
'ui.shortcuts_overlay.open_shortcuts': 'Open shortcuts',
|
|
56
|
+
'ui.shortcuts_overlay.close_drawer': 'Close drawer',
|
|
57
|
+
'ui.shortcuts_overlay.close': 'Close',
|
|
58
|
+
'ui.shortcuts_overlay.escape': 'Esc',
|
|
59
|
+
'ui.system_scope_panel.system_scope': 'System scope',
|
|
60
|
+
'ui.system_scope_panel.activities': 'Activities',
|
|
61
|
+
'ui.system_scope_panel.no_running_work': 'No running work',
|
|
62
|
+
'ui.system_status_chips.system_status': 'System status',
|
|
63
|
+
'ui.tenant_nav.tenant_navigation': 'Tenant navigation',
|
|
33
64
|
});
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared package logger for `@happyvertical/smrt-svelte`.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* This module is browser-reachable (Provider + the form components import it),
|
|
5
|
+
* so it must never touch Node globals at module scope. `createLogger()` reads
|
|
6
|
+
* `HAVE_LOGGER_LEVEL` from `process.env`, and `process` does not exist in
|
|
7
|
+
* browsers — calling it during module init threw
|
|
8
|
+
* `ReferenceError: process is not defined` under `vite dev` and killed
|
|
9
|
+
* client-side hydration for every consuming app. The logger is therefore
|
|
10
|
+
* created lazily on first use, and the env-config path is only consulted when
|
|
11
|
+
* a usable `process.env` actually exists; browsers get the plain console
|
|
12
|
+
* logger at the same level.
|
|
13
|
+
*
|
|
14
|
+
* Centralising the instance keeps voice/AI error reporting consistent across
|
|
15
|
+
* the form components (mic permission denials, STT init failures) instead of
|
|
16
|
+
* swallowing them in empty `catch` blocks or scattering raw `console.*` calls.
|
|
10
17
|
*/
|
|
11
18
|
import { type Logger } from '@happyvertical/logger';
|
|
12
19
|
export declare const logger: Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/internal/logger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/internal/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAmB/B,eAAO,MAAM,MAAM,EAAE,MAKpB,CAAC"}
|