@happyvertical/smrt-svelte 0.57.5 → 0.57.7
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/overview-surfaces.md +8 -1
- package/agents/workspace.md +26 -7
- package/dist/components/app/AppShell.svelte +27 -16
- package/dist/components/app/AppShell.svelte.d.ts +7 -4
- package/dist/components/app/AppShell.svelte.d.ts.map +1 -1
- package/dist/components/app/ShellColorSchemeToggle.svelte +38 -0
- package/dist/components/app/ShellColorSchemeToggle.svelte.d.ts +4 -0
- package/dist/components/app/ShellColorSchemeToggle.svelte.d.ts.map +1 -0
- package/dist/components/cookbook/build.d.ts.map +1 -1
- package/dist/components/cookbook/build.js +12 -2
- package/dist/components/overview/OverviewGrid.svelte +3 -2
- package/dist/components/overview/OverviewGrid.svelte.d.ts.map +1 -1
- package/dist/components/overview/recipe-widgets.d.ts +9 -0
- package/dist/components/overview/recipe-widgets.d.ts.map +1 -1
- package/dist/components/overview/recipe-widgets.js +13 -0
- package/dist/components/overview/server.d.ts +1 -1
- package/dist/components/overview/server.d.ts.map +1 -1
- package/dist/components/overview/server.js +1 -1
- package/dist/components/overview/widgets/ShortcutsWidget.svelte +11 -5
- package/dist/components/overview/widgets/ShortcutsWidget.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/AdminShell.svelte +152 -4
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +8 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/navigation.d.ts +41 -0
- package/dist/components/workspace/admin-shell/navigation.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/navigation.js +55 -0
- package/dist/components/workspace/admin-shell/settings.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/settings.js +4 -0
- package/dist/components/workspace/admin-shell/shell-icons.d.ts +4 -0
- package/dist/components/workspace/admin-shell/shell-icons.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/shell-icons.js +4 -0
- package/dist/components/workspace/admin-shell/types.d.ts +7 -0
- package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
- package/dist/components/workspace/index.d.ts +1 -0
- package/dist/components/workspace/index.d.ts.map +1 -1
- package/dist/components/workspace/index.js +1 -0
- package/dist/i18n/strings.workspace.d.ts +3 -1
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +3 -1
- package/package.json +14 -14
|
@@ -182,7 +182,13 @@ Call `destroy()` when the owner unmounts.
|
|
|
182
182
|
The core shortcuts widget draws each shortcut with an inline icon/title heading.
|
|
183
183
|
The icon uses `--smrt-color-primary` from the active theme, matching the
|
|
184
184
|
`ShellSectionMenu` card layout; descriptions remain below the heading. Hosts
|
|
185
|
-
may still provide an icon component for their own glyphs.
|
|
185
|
+
may still provide an icon component for their own glyphs. The heading row is
|
|
186
|
+
the icon and the title alone: the record count is meta, so like
|
|
187
|
+
`ShellSectionMenu`'s card foot it sits on its own muted row at the card's foot
|
|
188
|
+
(#4120). Never put a count or other meta back on a title row — it takes a
|
|
189
|
+
fixed slice of the row and forces the title to wrap. Grid widget headings are
|
|
190
|
+
the same: the title owns its row and wraps rather than truncating; the
|
|
191
|
+
one-line edit-mode chrome label carries the full title as a tooltip.
|
|
186
192
|
|
|
187
193
|
Props in `grid-types.ts`. `editing` defaults to the shell's layout editor
|
|
188
194
|
(`tryUseShellLayout()?.editing`), so the same pencil edits the grid under an
|
|
@@ -327,6 +333,7 @@ turns the manifest's widget surfaces into `registry.register(...)` calls:
|
|
|
327
333
|
| `migrate` | `migrate`, **resolved eagerly** because the registry's `migrate` is synchronous |
|
|
328
334
|
| `allowedIn`, `defaultSpan`, `minSpan`, `maxSpan` | same names |
|
|
329
335
|
| `data.models` | not registered: documentation of what the loader reads; confine with the page's `models` |
|
|
336
|
+
| `sectionDefault` | not registered: `sectionDefaultWidget(recipe)` places it as the section page's default (the cookbook builder with `dataWidgets`, the planner) |
|
|
330
337
|
|
|
331
338
|
- **The module resolver is injected.** `resolveExport(specifier, exportName)` is
|
|
332
339
|
the host's: a static map of dynamic imports in a bundled app, a stub in tests.
|
package/agents/workspace.md
CHANGED
|
@@ -86,6 +86,12 @@ icon-only "Close menu". While the right edge has focus tools, phones get a
|
|
|
86
86
|
presents as a drawer (or sheet) with an icon-only "Close tools". Chrome buttons,
|
|
87
87
|
rail tool buttons and dock toggles use `--smrt-touch-target-min` on phones. A
|
|
88
88
|
tool without an icon uses the generic tool icon, never its first letter.
|
|
89
|
+
The dock (right edge) defaults to `overlayMedia: '(max-width: 79.9375rem)'`
|
|
90
|
+
(#4100): from the xl breakpoint (80rem) it sits beside the page and the main
|
|
91
|
+
area shrinks; below it slides over the page. A dock card that navigates calls
|
|
92
|
+
`announceShellNavigation(element, { focus? })` (`admin-shell/navigation.ts`):
|
|
93
|
+
the shell closes the dock only while it overlays the page (overlay or phone
|
|
94
|
+
sheet; `closeOnNavigate: false` keeps it), then focuses the announced `focus` target as soon as it matches, else the incoming page's heading (never one already on the page).
|
|
89
95
|
Phone drawers and the bottom drawer offset themselves by the header and phone
|
|
90
96
|
bar tracks. `shell.viewport` comes from `ADMIN_SHELL_PHONE_QUERY` (48rem, the
|
|
91
97
|
same boundary as the CSS media query — never make one configurable without the
|
|
@@ -181,10 +187,13 @@ in the tooltip, there is no visible `<kbd>`), and off phones it closes the
|
|
|
181
187
|
navigation region: it sits at the end of the nav (`margin-block-start: auto`),
|
|
182
188
|
above the `leftSidebar.footer` slot, never below it. Order top to bottom, expanded
|
|
183
189
|
and collapsed: nav, chevron, footer (the account menu; the compact avatar last
|
|
184
|
-
in the collapsed rail).
|
|
185
|
-
(
|
|
186
|
-
|
|
187
|
-
|
|
190
|
+
in the collapsed rail). It sits in the utility row
|
|
191
|
+
(`.smrt-admin-shell__tenant-utilities`, after any `tenantUtilities` icons such
|
|
192
|
+
as the color-scheme toggle). Expanded the row lives inside the sidebar body
|
|
193
|
+
(`tenant-stack`) and the chevron hugs its inner edge; collapsed the row is the
|
|
194
|
+
middle row of the rail stack (content, utilities, `tenantRailFooter`), stacked
|
|
195
|
+
and centred. Only a rail with neither nav, utilities nor footer content draws
|
|
196
|
+
the chevron alone at the bottom. Phones replace it with the drawer's
|
|
188
197
|
icon-only "Close menu" at the top, so opening the drawer still focuses a close control. The
|
|
189
198
|
header, footer and right toggles keep their region label and hotkey hint.
|
|
190
199
|
|
|
@@ -205,7 +214,7 @@ keep them stable), all movable in the layout editor like `item:brand`:
|
|
|
205
214
|
| Item | Default slot | Phone | Opt out |
|
|
206
215
|
| --- | --- | --- | --- |
|
|
207
216
|
| `item:account` | `leftSidebar.footer` | compact avatar, last in the header band (`header.end`) | `accountMenu={false}`; `accountMenu={{ slot }}` sets the default |
|
|
208
|
-
| `item:color-scheme` | `
|
|
217
|
+
| `item:color-scheme` | `leftSidebar.footer` (rendered in the sidebar utility row, see below) | icon button in the header band (`header.end`) | `colorSchemeToggle={false}`; `{ slot }` sets the default |
|
|
209
218
|
| `item:command-palette` | `header.center` | search glyph button | off unless `commandPalette` is passed |
|
|
210
219
|
|
|
211
220
|
`item:account` renders `WorkspaceAccountMenu` only when `user` is set (nothing
|
|
@@ -218,8 +227,18 @@ it shows the full identity (menu opens upward); everywhere else, and in the
|
|
|
218
227
|
collapsed rail, it is the compact avatar. In the collapsed rail `AppShell`
|
|
219
228
|
passes it as `tenantRailFooter` (outside the rail's scroll clip; the menu opens
|
|
220
229
|
to the inline end over the workspace) instead of letting the footer slot fall
|
|
221
|
-
back to another region. `item:color-scheme`
|
|
222
|
-
|
|
230
|
+
back to another region. `item:color-scheme` is `ShellColorSchemeToggle`
|
|
231
|
+
(`src/components/app/`): an icon-only `ShellIconButton` over the
|
|
232
|
+
`ThemeProvider` context (no second scheme store), named "Dark mode" with
|
|
233
|
+
`aria-pressed`, showing the mode a press switches to (moon in light, sun in
|
|
234
|
+
dark: `darkMode` / `lightMode` in the shell icon set) with a "Switch to dark
|
|
235
|
+
mode" / "Switch to light mode" tooltip. Left in `leftSidebar.footer` on desktop
|
|
236
|
+
it renders in `AdminShell`'s `tenantUtilities` row (#4107): toggle first, the
|
|
237
|
+
collapse chevron at the inner edge, at the end of the nav region above the
|
|
238
|
+
account; in the collapsed rail the row stacks (toggle, chevron) above the
|
|
239
|
+
compact avatar. It never falls back to the header or footer while the left
|
|
240
|
+
edge is shown; in edit mode it is an ordinary movable item in the footer drop
|
|
241
|
+
zone. Will's standing default: never a labelled Light/Dark pill in the header. `item:command-palette`
|
|
223
242
|
mounts the existing `CommandPalette` (`commandPalette: { providers, placeholder? }`,
|
|
224
243
|
types `AppShellCommandPalette`/`AppShellAccountMenu` from `./app`): it owns the
|
|
225
244
|
dialog and the global shortcut, so it mounts once. Planner-style hosts that
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import {
|
|
3
3
|
type ColorScheme,
|
|
4
|
-
ColorSchemeToggle,
|
|
5
4
|
type ContrastPreference,
|
|
6
5
|
type ThemeConfig,
|
|
7
6
|
type ThemePreset,
|
|
@@ -72,6 +71,7 @@ import {
|
|
|
72
71
|
resolvePhoneTabBar,
|
|
73
72
|
} from './phone-tabs.js';
|
|
74
73
|
import RuntimeDiagnosticsWebMcp from './RuntimeDiagnosticsWebMcp.svelte';
|
|
74
|
+
import ShellColorSchemeToggle from './ShellColorSchemeToggle.svelte';
|
|
75
75
|
import type { ShellUser } from './shell-user.js';
|
|
76
76
|
import type {
|
|
77
77
|
AppShellAccountMenu,
|
|
@@ -128,10 +128,13 @@ interface Props {
|
|
|
128
128
|
*/
|
|
129
129
|
signOutHref?: string;
|
|
130
130
|
/**
|
|
131
|
-
* The
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
131
|
+
* The light/dark switch as the built-in item `item:color-scheme`: an
|
|
132
|
+
* icon-only toggle (moon or sun, "Dark mode" with `aria-pressed`). Default
|
|
133
|
+
* slot `leftSidebar.footer`, where it renders in the sidebar's utility row
|
|
134
|
+
* beside the collapse chevron, above the account menu, and stays a compact
|
|
135
|
+
* icon in the collapsed rail; on phones it defaults to `header.end`. On by
|
|
136
|
+
* default; `false` opts out, `{ slot }` sets the default slot (users can
|
|
137
|
+
* still move it in the layout editor).
|
|
135
138
|
*/
|
|
136
139
|
colorSchemeToggle?: boolean | { slot?: ShellSlot };
|
|
137
140
|
/**
|
|
@@ -405,7 +408,8 @@ const entries = $derived.by(() => {
|
|
|
405
408
|
slot:
|
|
406
409
|
(typeof colorSchemeToggle === 'object'
|
|
407
410
|
? colorSchemeToggle.slot
|
|
408
|
-
: undefined) ??
|
|
411
|
+
: undefined) ??
|
|
412
|
+
(shell.viewport === 'phone' ? 'header.end' : 'leftSidebar.footer'),
|
|
409
413
|
render: colorSchemeItem,
|
|
410
414
|
});
|
|
411
415
|
}
|
|
@@ -477,7 +481,10 @@ const slotIds = $derived(resolveShellPlacements(entries, effectiveLayout));
|
|
|
477
481
|
const entriesFor = (name: ShellSlot): PlacedEntry[] => {
|
|
478
482
|
const byId = new Map(entries.map((entry) => [entry.id, entry]));
|
|
479
483
|
return slotIds[name].flatMap((id) =>
|
|
480
|
-
id === SHELL_ACCOUNT_ITEM_ID && accountInRail
|
|
484
|
+
(id === SHELL_ACCOUNT_ITEM_ID && accountInRail) ||
|
|
485
|
+
(id === SHELL_COLOR_SCHEME_ITEM_ID && colorSchemeInSidebar)
|
|
486
|
+
? []
|
|
487
|
+
: (byId.get(id) ?? []),
|
|
481
488
|
);
|
|
482
489
|
};
|
|
483
490
|
const slotSnippets: Record<ShellSlot, Snippet> = {
|
|
@@ -561,6 +568,17 @@ const accountInRail = $derived(
|
|
|
561
568
|
shell.isEdgeShown('left') &&
|
|
562
569
|
shell.panels.left === 'collapsed',
|
|
563
570
|
);
|
|
571
|
+
// ---- Color scheme ------------------------------------------------------
|
|
572
|
+
// Placed in the left sidebar footer (the default) on desktop, the toggle
|
|
573
|
+
// renders in the sidebar's utility row beside the chevron, expanded or as
|
|
574
|
+
// the rail, rather than in the footer slot or a fallback region. While the
|
|
575
|
+
// layout is edited it stays a movable item in the footer drop zone.
|
|
576
|
+
const colorSchemeInSidebar = $derived(
|
|
577
|
+
slotIds['leftSidebar.footer'].includes(SHELL_COLOR_SCHEME_ITEM_ID) &&
|
|
578
|
+
!editing &&
|
|
579
|
+
shell.viewport !== 'phone' &&
|
|
580
|
+
shell.isEdgeShown('left'),
|
|
581
|
+
);
|
|
564
582
|
// Full identity only inside an expanded sidebar; everywhere else the avatar.
|
|
565
583
|
const accountCompact = $derived.by(() => {
|
|
566
584
|
if (shell.viewport === 'phone' || !accountSlot) return true;
|
|
@@ -918,13 +936,7 @@ const EDGE_OF_REGION: Record<ShellRegion, PanelEdge> = {
|
|
|
918
936
|
{/snippet}
|
|
919
937
|
|
|
920
938
|
{#snippet colorSchemeItem()}
|
|
921
|
-
<
|
|
922
|
-
<ColorSchemeToggle
|
|
923
|
-
variant="switch"
|
|
924
|
-
showLabels={shell.viewport !== 'phone'}
|
|
925
|
-
ariaLabel={t(M['ui.app_shell.color_scheme_toggle'])}
|
|
926
|
-
/>
|
|
927
|
-
</span>
|
|
939
|
+
<ShellColorSchemeToggle />
|
|
928
940
|
{/snippet}
|
|
929
941
|
|
|
930
942
|
{#snippet commandPaletteItem()}
|
|
@@ -1011,6 +1023,7 @@ const EDGE_OF_REGION: Record<ShellRegion, PanelEdge> = {
|
|
|
1011
1023
|
phoneDockOpener={dockToggles.length === 0 && !tabBarOn}
|
|
1012
1024
|
phoneBottomBar={tabBarOn ? phoneTabs : undefined}
|
|
1013
1025
|
tenantRailFooter={accountInRail ? railAccount : undefined}
|
|
1026
|
+
tenantUtilities={colorSchemeInSidebar ? colorSchemeItem : undefined}
|
|
1014
1027
|
bind:rootElement={shellRoot}
|
|
1015
1028
|
{floatingReserve}
|
|
1016
1029
|
>
|
|
@@ -1092,8 +1105,6 @@ const EDGE_OF_REGION: Record<ShellRegion, PanelEdge> = {
|
|
|
1092
1105
|
.smrt-layout-toggle--floating { position: fixed; z-index: 45; inset-block-start: max(var(--smrt-spacing-3), env(safe-area-inset-top)); inset-inline-end: max(var(--smrt-spacing-3), env(safe-area-inset-right)); border: var(--smrt-hairline); border-radius: var(--smrt-radius-full); background: var(--smrt-surface-raised); box-shadow: var(--smrt-elevation-3), var(--smrt-inset-highlight); }
|
|
1093
1106
|
.smrt-layout-toggle--floating :global(.smrt-shell-icon-button) { border-radius: var(--smrt-radius-full); }
|
|
1094
1107
|
.smrt-layout-toggle :global(.smrt-shell-icon-button[aria-pressed='true']) { background: var(--smrt-color-primary-container); color: var(--smrt-color-on-primary-container); }
|
|
1095
|
-
.smrt-app-shell-color-scheme { display: inline-flex; align-items: center; }
|
|
1096
|
-
.smrt-app-shell-color-scheme :global(.smrt-color-scheme-toggle__switch) { min-block-size: var(--smrt-control-target-min); }
|
|
1097
1108
|
.smrt-app-shell-palette { display: inline-flex; min-inline-size: 0; }
|
|
1098
1109
|
.smrt-app-shell-palette[data-search] :global(.smrt-command-palette-trigger) { inline-size: min(28rem, 40vw); justify-content: flex-start; border: var(--smrt-hairline-strong); border-radius: var(--smrt-radius-full); background: var(--smrt-surface-control); color: var(--smrt-color-on-surface-variant); }
|
|
1099
1110
|
.smrt-app-shell-palette[data-search] :global(.smrt-command-palette-trigger__hint) { margin-inline-start: auto; }
|
|
@@ -60,10 +60,13 @@ interface Props {
|
|
|
60
60
|
*/
|
|
61
61
|
signOutHref?: string;
|
|
62
62
|
/**
|
|
63
|
-
* The
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
63
|
+
* The light/dark switch as the built-in item `item:color-scheme`: an
|
|
64
|
+
* icon-only toggle (moon or sun, "Dark mode" with `aria-pressed`). Default
|
|
65
|
+
* slot `leftSidebar.footer`, where it renders in the sidebar's utility row
|
|
66
|
+
* beside the collapse chevron, above the account menu, and stays a compact
|
|
67
|
+
* icon in the collapsed rail; on phones it defaults to `header.end`. On by
|
|
68
|
+
* default; `false` opts out, `{ slot }` sets the default slot (users can
|
|
69
|
+
* still move it in the layout editor).
|
|
67
70
|
*/
|
|
68
71
|
colorSchemeToggle?: boolean | {
|
|
69
72
|
slot?: ShellSlot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppShell.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/app/AppShell.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"AppShell.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/app/AppShell.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* The shell's light/dark switch (`AppShell` item `item:color-scheme`): an
|
|
4
|
+
* icon-only toggle button. Its name stays "Dark mode" with `aria-pressed`
|
|
5
|
+
* carrying the state; the icon and tooltip show the mode a press switches
|
|
6
|
+
* to (moon in light mode, sun in dark mode), as the chevron shows where the
|
|
7
|
+
* sidebar will move. Needs the `ThemeProvider` that `AppShell` mounts.
|
|
8
|
+
*/
|
|
9
|
+
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
10
|
+
import { getThemeContext } from '@happyvertical/smrt-ui/themes';
|
|
11
|
+
import { M } from '../../i18n/strings.workspace.js';
|
|
12
|
+
import ShellIconButton from '../workspace/admin-shell/ShellIconButton.svelte';
|
|
13
|
+
|
|
14
|
+
const theme = getThemeContext();
|
|
15
|
+
const { t } = useI18n();
|
|
16
|
+
const dark = $derived(theme.state.isDark);
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<span class="smrt-app-shell-color-scheme" data-smrt-component="ShellColorSchemeToggle">
|
|
20
|
+
<ShellIconButton
|
|
21
|
+
icon={dark ? 'lightMode' : 'darkMode'}
|
|
22
|
+
label={t(M['ui.app_shell.color_scheme_dark'])}
|
|
23
|
+
pressed={dark}
|
|
24
|
+
tooltip={t(
|
|
25
|
+
dark
|
|
26
|
+
? M['ui.app_shell.color_scheme_to_light']
|
|
27
|
+
: M['ui.app_shell.color_scheme_to_dark'],
|
|
28
|
+
)}
|
|
29
|
+
onclick={() => theme.toggleColorScheme()}
|
|
30
|
+
/>
|
|
31
|
+
</span>
|
|
32
|
+
|
|
33
|
+
<style>
|
|
34
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
35
|
+
@layer smrt.theme {
|
|
36
|
+
.smrt-app-shell-color-scheme { display: inline-flex; align-items: center; }
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
declare const ShellColorSchemeToggle: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type ShellColorSchemeToggle = ReturnType<typeof ShellColorSchemeToggle>;
|
|
3
|
+
export default ShellColorSchemeToggle;
|
|
4
|
+
//# sourceMappingURL=ShellColorSchemeToggle.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShellColorSchemeToggle.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/app/ShellColorSchemeToggle.svelte.ts"],"names":[],"mappings":"AAuCA,QAAA,MAAM,sBAAsB,2DAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/components/cookbook/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/components/cookbook/build.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EACV,yBAAyB,EAQzB,aAAa,EAEd,MAAM,YAAY,CAAC;AAEpB,2CAA2C;AAC3C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C;AA8ED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,aAAa,CAiPf"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defineOverview, isEmptyOverride, parseOverviewOverride, } from '../overview/model.js';
|
|
2
|
+
import { sectionDefaultWidget } from '../overview/recipe-widgets.js';
|
|
2
3
|
import { OVERVIEW_PAGE_ID_PATTERN, } from '../overview/types.js';
|
|
3
4
|
import { buildNavSections, DEFAULT_ENTRY_ICON, defaultEntryPath, defaultSectionPath, entryDescription, FEATURE_SECTION, navItemId, sectionLayoutId, } from './sections.js';
|
|
4
5
|
import { resolveCookbookTheme } from './theme.js';
|
|
@@ -54,7 +55,11 @@ function leadModel(recipes, models) {
|
|
|
54
55
|
}
|
|
55
56
|
return undefined;
|
|
56
57
|
}
|
|
57
|
-
function overviewDefaults(lead, dataWidgets) {
|
|
58
|
+
function overviewDefaults(lead, dataWidgets, page) {
|
|
59
|
+
// The leading recipe's own section page (a `sectionDefault` widget) needs
|
|
60
|
+
// its loader on the host, as the count and records do.
|
|
61
|
+
if (dataWidgets && page)
|
|
62
|
+
return [page];
|
|
58
63
|
const widgets = [
|
|
59
64
|
{ id: 'shortcuts', type: 'shortcuts', span: 4, options: {} },
|
|
60
65
|
];
|
|
@@ -144,6 +149,8 @@ export function buildCookbookShell(options) {
|
|
|
144
149
|
// Recipe sections: a section none of whose recipes has a menu entry (an
|
|
145
150
|
// assistant, a settings panel) is left out rather than shown empty.
|
|
146
151
|
const leads = new Map();
|
|
152
|
+
// A section led by a recipe that declares its own page (`sectionDefault`).
|
|
153
|
+
const pages = new Map();
|
|
147
154
|
for (const section of buildNavSections(recipes)) {
|
|
148
155
|
const items = [];
|
|
149
156
|
for (const recipe of section.recipes) {
|
|
@@ -169,6 +176,9 @@ export function buildCookbookShell(options) {
|
|
|
169
176
|
if (items.length === 0)
|
|
170
177
|
continue;
|
|
171
178
|
leads.set(sectionLayoutId(section.id), leadModel(section.recipes, models));
|
|
179
|
+
const page = sectionDefaultWidget(section.recipes[0]);
|
|
180
|
+
if (page)
|
|
181
|
+
pages.set(sectionLayoutId(section.id), page);
|
|
172
182
|
pushSection(section.id, section.label, section.icon, section.description ??
|
|
173
183
|
section.recipes.find((r) => r.group?.summary)?.group?.summary, section.recipes.map((r) => r.id), items);
|
|
174
184
|
}
|
|
@@ -206,7 +216,7 @@ export function buildCookbookShell(options) {
|
|
|
206
216
|
const definition = defineOverview({
|
|
207
217
|
id,
|
|
208
218
|
...(modelIds.length > 0 ? { models: modelIds } : {}),
|
|
209
|
-
defaults: overviewDefaults(leads.get(id), options.dataWidgets === true),
|
|
219
|
+
defaults: overviewDefaults(leads.get(id), options.dataWidgets === true, pages.get(id)),
|
|
210
220
|
});
|
|
211
221
|
const stored = cookbook.overviews?.[id];
|
|
212
222
|
const parsed = parseOverviewOverride(stored);
|
|
@@ -454,7 +454,8 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
454
454
|
ondragstart={(event) => sortable.dragStart(event, row.widget.id)}
|
|
455
455
|
ondragend={() => sortable.dragEnd()}
|
|
456
456
|
><span aria-hidden="true">⠿</span></button>
|
|
457
|
-
|
|
457
|
+
<!-- Truncated to one line beside the controls; the tooltip carries the full title. -->
|
|
458
|
+
<span class="smrt-overview__chrome-title" aria-hidden="true" title={row.title}>{row.title}</span>
|
|
458
459
|
{#if row.def && row.def.options.length > 0}
|
|
459
460
|
<ShellIconButton
|
|
460
461
|
icon="settings"
|
|
@@ -561,7 +562,7 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
561
562
|
[data-presentation='plain']:not([data-editing]) .smrt-overview__tile { padding: 0; border: 0; border-radius: 0; background: transparent; }
|
|
562
563
|
[data-editing] .smrt-overview__tile { border-style: dashed; }
|
|
563
564
|
.smrt-overview__widget { display: grid; gap: var(--smrt-spacing-2); align-content: start; min-inline-size: 0; }
|
|
564
|
-
.smrt-overview__title { margin: 0; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-title-small-size, 0.875rem); font-weight: var(--smrt-typography-weight-medium, 500); }
|
|
565
|
+
.smrt-overview__title { margin: 0; overflow-wrap: break-word; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-title-small-size, 0.875rem); font-weight: var(--smrt-typography-weight-medium, 500); }
|
|
565
566
|
.smrt-overview__state { margin: 0; color: var(--smrt-color-on-surface-variant); }
|
|
566
567
|
.smrt-overview__chrome { display: flex; align-items: center; gap: var(--smrt-spacing-1); margin-block-end: var(--smrt-spacing-2); }
|
|
567
568
|
.smrt-overview__chrome-title { flex: 1 1 auto; min-inline-size: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-label-large-size, 0.875rem); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverviewGrid.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/overview/OverviewGrid.svelte.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"OverviewGrid.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/overview/OverviewGrid.svelte.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAiczD,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { RecipeExportRef, RecipeSurface } from '@happyvertical/smrt-types';
|
|
14
14
|
import type { WidgetRegistry } from './registry.js';
|
|
15
|
+
import type { OverviewWidget } from './types.js';
|
|
15
16
|
/**
|
|
16
17
|
* Resolves one export of a module: `resolveExport('@acme/shop/svelte',
|
|
17
18
|
* 'SalesTotal')`. The host owns this (import map, dynamic import, or a test
|
|
@@ -54,6 +55,14 @@ export interface RecipeWidgetRegistration {
|
|
|
54
55
|
/** Removes exactly the registrations this call made. */
|
|
55
56
|
dispose: () => void;
|
|
56
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* The widget a recipe declares as its section page (`sectionDefault: true`),
|
|
60
|
+
* placed the way a section overview's defaults hold it: full width, with no
|
|
61
|
+
* options (each required option starts from its `default`), its type as id.
|
|
62
|
+
* `undefined` when the recipe declares none. A host uses it for the section
|
|
63
|
+
* the recipe leads, in place of the generic shortcuts, count and records.
|
|
64
|
+
*/
|
|
65
|
+
export declare function sectionDefaultWidget(recipe: RecipeWidgetSource | undefined): OverviewWidget | undefined;
|
|
57
66
|
/** Split `'<specifier>#<Name>'`; refuses relative and absolute specifiers. */
|
|
58
67
|
export declare function parseRecipeExportRef(ref: RecipeExportRef | string): {
|
|
59
68
|
specifier: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recipe-widgets.d.ts","sourceRoot":"","sources":["../../../src/components/overview/recipe-widgets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"recipe-widgets.d.ts","sourceRoot":"","sources":["../../../src/components/overview/recipe-widgets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAEV,cAAc,EAOf,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,KACf,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,yFAAyF;AACzF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AAED,MAAM,MAAM,sBAAsB;AAChC,wEAAwE;AACtE,gBAAgB;AAClB,2DAA2D;GACzD,SAAS;AACX,4EAA4E;GAC1E,YAAY,CAAC;AAEjB,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,sBAAsB,CAAC;IAC/B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,sDAAsD;IACtD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GACrC,cAAc,GAAG,SAAS,CAQ5B;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,GAAG,MAAM,GAC5B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUlD;AAkGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,aAAa,EAAE,oBAAoB,EACnC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,wBAAwB,CAAC,CAyDnC"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The widget a recipe declares as its section page (`sectionDefault: true`),
|
|
3
|
+
* placed the way a section overview's defaults hold it: full width, with no
|
|
4
|
+
* options (each required option starts from its `default`), its type as id.
|
|
5
|
+
* `undefined` when the recipe declares none. A host uses it for the section
|
|
6
|
+
* the recipe leads, in place of the generic shortcuts, count and records.
|
|
7
|
+
*/
|
|
8
|
+
export function sectionDefaultWidget(recipe) {
|
|
9
|
+
const surface = recipe?.surfaces?.find((candidate) => candidate.kind === 'widget' && candidate.sectionDefault === true);
|
|
10
|
+
return surface
|
|
11
|
+
? { id: surface.type, type: surface.type, span: 4, options: {} }
|
|
12
|
+
: undefined;
|
|
13
|
+
}
|
|
1
14
|
/** Split `'<specifier>#<Name>'`; refuses relative and absolute specifiers. */
|
|
2
15
|
export function parseRecipeExportRef(ref) {
|
|
3
16
|
const at = ref.lastIndexOf('#');
|
|
@@ -9,7 +9,7 @@ export { createOverviewAssistantSurface, type OverviewAssistantPersistResult, ty
|
|
|
9
9
|
export { type LoadOverviewOptions, loadOverview, type WidgetLoadInput, } from './load.js';
|
|
10
10
|
export { applyOverviewOverride, checkOverviewOverride, defineOverview, diffOverview, isEmptyOverride, nextWidgetId, type OverviewOverrideCheck, parseOverviewDocument, parseOverviewOverride, type ResolvedOverview, resolveOverview, type SanitizeOptions, sanitizeOverview, } from './model.js';
|
|
11
11
|
export { allowedWidgetTypes, type DescribeOverviewInput, describeOverview, OVERVIEW_MAX_OPERATIONS, OVERVIEW_OPERATION_KINDS, OVERVIEW_OPERATION_SCHEMA, type OverviewAddOperation, type OverviewConfigureOperation, type OverviewDescription, type OverviewMoveOperation, type OverviewOperation, type OverviewOperationIssue, type OverviewOperationIssueCode, type OverviewOperationKind, type OverviewOperationResult, type OverviewOptionDescription, type OverviewPlan, type OverviewRemoveOperation, type OverviewResizeOperation, type OverviewWidgetTypeDescription, type PlanOverviewOperationsInput, planOverviewOperations, } from './operations.js';
|
|
12
|
-
export { parseRecipeExportRef, type RecipeExportResolver, type RecipeWidgetRegistration, type RecipeWidgetSkip, type RecipeWidgetSkipReason, type RecipeWidgetSource, type RegisterRecipeWidgetsOptions, registerRecipeWidgets, } from './recipe-widgets.js';
|
|
12
|
+
export { parseRecipeExportRef, type RecipeExportResolver, type RecipeWidgetRegistration, type RecipeWidgetSkip, type RecipeWidgetSkipReason, type RecipeWidgetSource, type RegisterRecipeWidgetsOptions, registerRecipeWidgets, sectionDefaultWidget, } from './recipe-widgets.js';
|
|
13
13
|
export { RECORD_OVERVIEW_ALLOWED, RECORD_OVERVIEW_LIMIT, RECORD_OVERVIEW_MAX_METRICS, RECORD_OVERVIEW_PANEL_SPAN, type RecordOverviewOptions, recordOverview, recordOverviewId, } from './record.js';
|
|
14
14
|
export { createWidgetRegistry, defaultWidgetRegistry, registerWidget, resolveWidgetComponents, resolveWidgetOptionsEditors, type WidgetComponents, type WidgetOptionsEditors, WidgetRegistry, } from './registry.js';
|
|
15
15
|
export { assertWidgetOptionFields, defaultWidgetOptions, IDENTIFIER_PATTERN, MODEL_PATTERN, optionsEqual, validateWidgetOptions, } from './schema.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/components/overview/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/components/overview/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,GACrC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,KAAK,qBAAqB,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,4BAA4B,EACjC,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,cAAc,EACd,cAAc,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,cAAc,EACd,WAAW,EACX,UAAU,GACX,MAAM,2BAA2B,CAAC"}
|
|
@@ -9,7 +9,7 @@ export { createOverviewAssistantSurface, } from './assistant-surface.js';
|
|
|
9
9
|
export { loadOverview, } from './load.js';
|
|
10
10
|
export { applyOverviewOverride, checkOverviewOverride, defineOverview, diffOverview, isEmptyOverride, nextWidgetId, parseOverviewDocument, parseOverviewOverride, resolveOverview, sanitizeOverview, } from './model.js';
|
|
11
11
|
export { allowedWidgetTypes, describeOverview, OVERVIEW_MAX_OPERATIONS, OVERVIEW_OPERATION_KINDS, OVERVIEW_OPERATION_SCHEMA, planOverviewOperations, } from './operations.js';
|
|
12
|
-
export { parseRecipeExportRef, registerRecipeWidgets, } from './recipe-widgets.js';
|
|
12
|
+
export { parseRecipeExportRef, registerRecipeWidgets, sectionDefaultWidget, } from './recipe-widgets.js';
|
|
13
13
|
export { RECORD_OVERVIEW_ALLOWED, RECORD_OVERVIEW_LIMIT, RECORD_OVERVIEW_MAX_METRICS, RECORD_OVERVIEW_PANEL_SPAN, recordOverview, recordOverviewId, } from './record.js';
|
|
14
14
|
export { createWidgetRegistry, defaultWidgetRegistry, registerWidget, resolveWidgetComponents, resolveWidgetOptionsEditors, WidgetRegistry, } from './registry.js';
|
|
15
15
|
export { assertWidgetOptionFields, defaultWidgetOptions, IDENTIFIER_PATTERN, MODEL_PATTERN, optionsEqual, validateWidgetOptions, } from './schema.js';
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* Shortcuts widget (#3727): the section-overview cards as a widget. It draws
|
|
4
4
|
* the cards a loader produced (see `shortcutsFromNav`), with the same look as
|
|
5
5
|
* `ShellSectionMenu layout="cards"`, so a section's default overview is just
|
|
6
|
-
* this widget.
|
|
6
|
+
* this widget. As there, the heading row is the icon and the title alone; the
|
|
7
|
+
* record count is meta, so it sits in the card's foot under the description
|
|
8
|
+
* rather than taking a slice of the title's row (#4120).
|
|
7
9
|
*/
|
|
8
10
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
9
11
|
import { M } from '../../../i18n/strings.overview.js';
|
|
@@ -83,9 +85,12 @@ const cards = $derived.by((): Card[] => {
|
|
|
83
85
|
<ShellSectionIcon name={card.icon} size={28} {iconComponent} />
|
|
84
86
|
</span>
|
|
85
87
|
<span class="smrt-shortcuts__title">{card.label}</span>
|
|
86
|
-
{#if card.count !== undefined}<span class="smrt-shortcuts__count">{countLabel(card.count)}</span>{/if}
|
|
87
88
|
</span>
|
|
88
|
-
|
|
89
|
+
<!-- Clamped to two lines; the tooltip carries the rest. -->
|
|
90
|
+
{#if card.description}<span class="smrt-shortcuts__desc" title={card.description}>{card.description}</span>{/if}
|
|
91
|
+
{#if card.count !== undefined}
|
|
92
|
+
<span class="smrt-shortcuts__foot"><span class="smrt-shortcuts__count">{countLabel(card.count)}</span></span>
|
|
93
|
+
{/if}
|
|
89
94
|
</a>
|
|
90
95
|
</li>
|
|
91
96
|
{/each}
|
|
@@ -103,9 +108,10 @@ const cards = $derived.by((): Card[] => {
|
|
|
103
108
|
.smrt-shortcuts__heading { display: flex; align-items: center; gap: var(--smrt-spacing-2); min-inline-size: 0; }
|
|
104
109
|
.smrt-shortcuts__icon { display: inline-grid; place-items: center; flex: 0 0 28px; inline-size: 28px; block-size: 28px; color: var(--smrt-color-primary); }
|
|
105
110
|
.smrt-shortcuts__icon :global(.smrt-shell-section-icon) { inline-size: 28px; block-size: 28px; }
|
|
106
|
-
.smrt-shortcuts__title { font-weight: var(--smrt-typography-weight-medium, 500); overflow-wrap:
|
|
111
|
+
.smrt-shortcuts__title { flex: 1 1 auto; min-inline-size: 0; font-weight: var(--smrt-typography-weight-medium, 500); overflow-wrap: break-word; }
|
|
107
112
|
.smrt-shortcuts__desc { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-body-medium-size, 0.875rem); }
|
|
108
|
-
.smrt-
|
|
113
|
+
.smrt-shortcuts__foot { display: flex; flex-wrap: wrap; align-items: center; gap: var(--smrt-spacing-2); margin-block-start: auto; }
|
|
114
|
+
.smrt-shortcuts__count { color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-body-small-size, 0.75rem); font-variant-numeric: tabular-nums; }
|
|
109
115
|
/* Plain: entries sit directly on the panel, no frame per entry. */
|
|
110
116
|
.smrt-shortcuts[data-presentation='plain'] { gap: var(--smrt-spacing-1); }
|
|
111
117
|
.smrt-shortcuts[data-presentation='plain'] .smrt-shortcuts__card { border: 0; border-radius: var(--smrt-radius-medium); background: transparent; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShortcutsWidget.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/overview/widgets/ShortcutsWidget.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ShortcutsWidget.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/overview/widgets/ShortcutsWidget.svelte.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAY,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAkG/D,QAAA,MAAM,eAAe,+EAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
|
|
@@ -43,7 +43,18 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
43
43
|
</script>
|
|
44
44
|
|
|
45
45
|
<script lang="ts">
|
|
46
|
+
import {
|
|
47
|
+
ASSISTANT_REQUEST_EVENT,
|
|
48
|
+
type AssistantRequestDetail,
|
|
49
|
+
requestAssistant,
|
|
50
|
+
} from '@happyvertical/smrt-ui/chat';
|
|
46
51
|
import { swipeDismiss } from '@happyvertical/smrt-ui/feedback';
|
|
52
|
+
import {
|
|
53
|
+
focusWhenReady,
|
|
54
|
+
SHELL_NAVIGATED_EVENT,
|
|
55
|
+
SHELL_PAGE_HEADING,
|
|
56
|
+
type ShellNavigatedDetail,
|
|
57
|
+
} from './navigation.js';
|
|
47
58
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
48
59
|
import { Button } from '@happyvertical/smrt-ui/ui';
|
|
49
60
|
import { onMount, tick, untrack } from 'svelte';
|
|
@@ -100,6 +111,14 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
100
111
|
tenantRail?: Snippet;
|
|
101
112
|
/** Content pinned below the collapsed tenant rail. */
|
|
102
113
|
tenantRailFooter?: Snippet;
|
|
114
|
+
/**
|
|
115
|
+
* Icon controls in the left sidebar's utility row: with the collapse
|
|
116
|
+
* chevron at the end of the nav region, above the sidebar footer, in the
|
|
117
|
+
* expanded sidebar (start of the row; the chevron keeps the inner edge)
|
|
118
|
+
* and in the collapsed rail (stacked above the chevron). Desktop only;
|
|
119
|
+
* `AppShell` puts its color-scheme item here.
|
|
120
|
+
*/
|
|
121
|
+
tenantUtilities?: Snippet;
|
|
103
122
|
/** Content for the left tenant panel. */
|
|
104
123
|
tenantPanel?: Snippet;
|
|
105
124
|
/**
|
|
@@ -213,6 +232,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
213
232
|
appPanel,
|
|
214
233
|
tenantRail,
|
|
215
234
|
tenantRailFooter,
|
|
235
|
+
tenantUtilities,
|
|
216
236
|
tenantPanel,
|
|
217
237
|
tenantFooter,
|
|
218
238
|
slots,
|
|
@@ -353,6 +373,103 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
353
373
|
* Tablet/desktop: the side edge that is open as an overlay (its
|
|
354
374
|
* `overlayMedia` matches), laid over the page above a scrim.
|
|
355
375
|
*/
|
|
376
|
+
/**
|
|
377
|
+
* A dock card navigated the page (`announceShellNavigation`, #4100): close
|
|
378
|
+
* the dock only while it is laid over the page (an overlay, a phone sheet),
|
|
379
|
+
* never one sitting beside it, then focus the opened page's heading.
|
|
380
|
+
*/
|
|
381
|
+
function onShellNavigated(event: Event) {
|
|
382
|
+
const root = rootElement;
|
|
383
|
+
if (!root || !(event.target instanceof Node) || !root.contains(event.target)) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
const detail = (event as CustomEvent<ShellNavigatedDetail>).detail ?? {};
|
|
387
|
+
const dock = sideElements.right;
|
|
388
|
+
const overlaying =
|
|
389
|
+
edgeExpanded('right') &&
|
|
390
|
+
(isPhone || shell.presentationFor('right') === 'overlay');
|
|
391
|
+
if (
|
|
392
|
+
dock?.contains(event.target) &&
|
|
393
|
+
overlaying &&
|
|
394
|
+
shell.config.panels.right.closeOnNavigate !== false
|
|
395
|
+
) {
|
|
396
|
+
// The page is where focus goes, not back to the dock's toggle.
|
|
397
|
+
shell.dockReturnFocus = null;
|
|
398
|
+
overlayReturnFocus = null;
|
|
399
|
+
shell.collapsePanel('right');
|
|
400
|
+
}
|
|
401
|
+
const main = root.querySelector('.smrt-admin-shell__main') ?? root;
|
|
402
|
+
cancelNavigationFocus?.();
|
|
403
|
+
// A named destination is focused as soon as it matches (it may be the
|
|
404
|
+
// page already open); the generic heading must be a new one.
|
|
405
|
+
cancelNavigationFocus = focusWhenReady(
|
|
406
|
+
main,
|
|
407
|
+
detail.focus ?? SHELL_PAGE_HEADING,
|
|
408
|
+
3000,
|
|
409
|
+
{ skipExisting: !detail.focus },
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
let cancelNavigationFocus: (() => void) | null = null;
|
|
413
|
+
$effect(() => {
|
|
414
|
+
if (typeof document === 'undefined') return;
|
|
415
|
+
document.addEventListener(SHELL_NAVIGATED_EVENT, onShellNavigated);
|
|
416
|
+
return () => {
|
|
417
|
+
document.removeEventListener(SHELL_NAVIGATED_EVENT, onShellNavigated);
|
|
418
|
+
cancelNavigationFocus?.();
|
|
419
|
+
};
|
|
420
|
+
});
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* The page asks the assistant (smrt-ui `requestAssistant`) from outside the
|
|
424
|
+
* dock: open the dock's assistant tool (`assistant`, else the active or
|
|
425
|
+
* first tool, else the host's `focusPanel`), then hand the request on from
|
|
426
|
+
* inside the dock, which mounts
|
|
427
|
+
* its content only once open. Focus returns to the requester when the dock
|
|
428
|
+
* closes.
|
|
429
|
+
*/
|
|
430
|
+
async function onAssistantRequest(event: Event) {
|
|
431
|
+
const root = rootElement;
|
|
432
|
+
const target = event.target;
|
|
433
|
+
if (
|
|
434
|
+
event.defaultPrevented ||
|
|
435
|
+
!root ||
|
|
436
|
+
!(target instanceof Element) ||
|
|
437
|
+
sideElements.right?.contains(target) ||
|
|
438
|
+
!shell.dockAvailable
|
|
439
|
+
) {
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
const tools = shell.focusTools;
|
|
443
|
+
const tool =
|
|
444
|
+
tools.find((candidate) => candidate.id === 'assistant') ??
|
|
445
|
+
tools.find((candidate) => candidate.id === shell.activeFocusToolId) ??
|
|
446
|
+
tools[0];
|
|
447
|
+
// A dock with no tools is its host's `focusPanel`.
|
|
448
|
+
if (!tool && !focusPanel) return;
|
|
449
|
+
const detail = (event as CustomEvent<AssistantRequestDetail>).detail;
|
|
450
|
+
if (typeof detail?.prompt !== 'string') return;
|
|
451
|
+
event.preventDefault();
|
|
452
|
+
event.stopPropagation();
|
|
453
|
+
const returnFocus = target instanceof HTMLElement ? target : null;
|
|
454
|
+
if (tool) shell.openDockTool(tool.id, { focus: false, returnFocus });
|
|
455
|
+
else {
|
|
456
|
+
shell.expandPanel('right');
|
|
457
|
+
shell.dockReturnFocus = returnFocus;
|
|
458
|
+
}
|
|
459
|
+
// The dock's content mounts (and starts listening) after this update.
|
|
460
|
+
await tick();
|
|
461
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
462
|
+
const dock = sideElements.right;
|
|
463
|
+
if (dock?.isConnected) requestAssistant(dock, { prompt: detail.prompt });
|
|
464
|
+
}
|
|
465
|
+
$effect(() => {
|
|
466
|
+
const root = rootElement;
|
|
467
|
+
if (!root) return;
|
|
468
|
+
const listener = (event: Event) => void onAssistantRequest(event);
|
|
469
|
+
root.addEventListener(ASSISTANT_REQUEST_EVENT, listener);
|
|
470
|
+
return () => root.removeEventListener(ASSISTANT_REQUEST_EVENT, listener);
|
|
471
|
+
});
|
|
472
|
+
|
|
356
473
|
const overlayEdge = $derived<SideEdge | null>(
|
|
357
474
|
isPhone
|
|
358
475
|
? null
|
|
@@ -1123,6 +1240,15 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1123
1240
|
{/if}
|
|
1124
1241
|
{/snippet}
|
|
1125
1242
|
|
|
1243
|
+
<!-- The left sidebar's utility row: host icon controls (the color scheme)
|
|
1244
|
+
then the chevron, closing the nav region above the footer slot. -->
|
|
1245
|
+
{#snippet tenantUtilityRow()}
|
|
1246
|
+
<div class="smrt-admin-shell__tenant-utilities" data-smrt-part="utilities">
|
|
1247
|
+
{#if tenantUtilities}{@render tenantUtilities()}{/if}
|
|
1248
|
+
{#if showToggle('left')}{@render edgeToggle('left')}{/if}
|
|
1249
|
+
</div>
|
|
1250
|
+
{/snippet}
|
|
1251
|
+
|
|
1126
1252
|
{#snippet menuOpener()}
|
|
1127
1253
|
<!-- raw-primitive-allow: shell chrome control, not a content button -->
|
|
1128
1254
|
<button
|
|
@@ -1383,7 +1509,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1383
1509
|
{@render tenantRail()}
|
|
1384
1510
|
{/if}
|
|
1385
1511
|
</div>
|
|
1386
|
-
{#if
|
|
1512
|
+
{#if shownOpen('left') && !isPhone && (tenantUtilities || showToggle('left'))}{@render tenantUtilityRow()}{/if}
|
|
1387
1513
|
{#if tenantFooter && !footerInHeader}
|
|
1388
1514
|
<div class="smrt-admin-shell__tenant-footer">
|
|
1389
1515
|
{@render tenantFooter()}
|
|
@@ -1392,12 +1518,12 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1392
1518
|
{@render slotGroup('leftSidebar.footer')}
|
|
1393
1519
|
</div>
|
|
1394
1520
|
{/if}
|
|
1395
|
-
{#if !shownOpen('left') && (tenantRail || tenantRailFooter)}
|
|
1521
|
+
{#if !shownOpen('left') && (tenantRail || tenantRailFooter || tenantUtilities)}
|
|
1396
1522
|
<div class="smrt-admin-shell__tenant-rail-stack">
|
|
1397
1523
|
<div class="smrt-admin-shell__tenant-rail-content">
|
|
1398
1524
|
{#if tenantRail}{@render tenantRail()}{/if}
|
|
1399
1525
|
</div>
|
|
1400
|
-
{#if showToggle('left')
|
|
1526
|
+
{#if !isPhone && (tenantUtilities || showToggle('left'))}{@render tenantUtilityRow()}{/if}
|
|
1401
1527
|
{#if tenantRailFooter}
|
|
1402
1528
|
<div class="smrt-admin-shell__tenant-rail-footer">
|
|
1403
1529
|
{@render tenantRailFooter()}
|
|
@@ -1408,7 +1534,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1408
1534
|
<!-- The chevron closes the nav region, above the footer slot: inside
|
|
1409
1535
|
the expanded stack or the collapsed rail stack. Only when neither
|
|
1410
1536
|
is rendered does it stand alone at the bottom of the rail. -->
|
|
1411
|
-
{#if showToggle('left') && !isPhone && !shownOpen('left') && !(tenantRail || tenantRailFooter)}{@render edgeToggle('left')}{/if}
|
|
1537
|
+
{#if showToggle('left') && !isPhone && !shownOpen('left') && !(tenantRail || tenantRailFooter || tenantUtilities)}{@render edgeToggle('left')}{/if}
|
|
1412
1538
|
</div>
|
|
1413
1539
|
</aside>
|
|
1414
1540
|
{/if}
|
|
@@ -2302,6 +2428,18 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2302
2428
|
`margin-block-start: auto` pins it to the end of the nav region even when
|
|
2303
2429
|
nothing above it grows. Expanded it hugs the inner edge and points left;
|
|
2304
2430
|
collapsed it is centred in the narrow rail and points right. */
|
|
2431
|
+
.smrt-admin-shell__tenant-utilities {
|
|
2432
|
+
display: flex;
|
|
2433
|
+
flex: 0 0 auto;
|
|
2434
|
+
align-items: center;
|
|
2435
|
+
gap: var(--smrt-spacing-1);
|
|
2436
|
+
min-width: 0;
|
|
2437
|
+
margin-block-start: auto;
|
|
2438
|
+
}
|
|
2439
|
+
.smrt-admin-shell__edge--left[data-state='collapsed'] .smrt-admin-shell__tenant-utilities {
|
|
2440
|
+
flex-direction: column;
|
|
2441
|
+
grid-row: 2;
|
|
2442
|
+
}
|
|
2305
2443
|
.smrt-admin-shell__edge--left :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2306
2444
|
flex: 0 0 auto;
|
|
2307
2445
|
margin-block-start: auto;
|
|
@@ -2319,6 +2457,16 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2319
2457
|
.smrt-admin-shell__tenant-rail-stack > :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2320
2458
|
grid-row: 2;
|
|
2321
2459
|
}
|
|
2460
|
+
/* In the row the chevron keeps the inner edge (expanded) or the centre
|
|
2461
|
+
(rail); the row itself is what is pinned to the end of the nav region. */
|
|
2462
|
+
.smrt-admin-shell__tenant-utilities > :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2463
|
+
align-self: center;
|
|
2464
|
+
margin-block-start: 0;
|
|
2465
|
+
margin-inline-start: auto;
|
|
2466
|
+
}
|
|
2467
|
+
.smrt-admin-shell__edge--left[data-state='collapsed'] .smrt-admin-shell__tenant-utilities > :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2468
|
+
margin-inline-start: 0;
|
|
2469
|
+
}
|
|
2322
2470
|
.smrt-admin-shell__edge--left[data-state='expanded'] :global(.smrt-admin-shell__edge-toggle-chevron) {
|
|
2323
2471
|
transform: scaleX(-1);
|
|
2324
2472
|
}
|
|
@@ -16,6 +16,14 @@ interface Props extends AdminShellProps {
|
|
|
16
16
|
tenantRail?: Snippet;
|
|
17
17
|
/** Content pinned below the collapsed tenant rail. */
|
|
18
18
|
tenantRailFooter?: Snippet;
|
|
19
|
+
/**
|
|
20
|
+
* Icon controls in the left sidebar's utility row: with the collapse
|
|
21
|
+
* chevron at the end of the nav region, above the sidebar footer, in the
|
|
22
|
+
* expanded sidebar (start of the row; the chevron keeps the inner edge)
|
|
23
|
+
* and in the collapsed rail (stacked above the chevron). Desktop only;
|
|
24
|
+
* `AppShell` puts its color-scheme item here.
|
|
25
|
+
*/
|
|
26
|
+
tenantUtilities?: Snippet;
|
|
19
27
|
/** Content for the left tenant panel. */
|
|
20
28
|
tenantPanel?: Snippet;
|
|
21
29
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminShell.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/AdminShell.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AdminShell.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/AdminShell.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Something in the dock just navigated the page" (#4100).
|
|
3
|
+
*
|
|
4
|
+
* A dock card that opens a page (an approved report, a created record) calls
|
|
5
|
+
* `announceShellNavigation(element)` after navigating. `AdminShell` listens:
|
|
6
|
+
* when the dock is currently laid OVER the page (a slide-over below the
|
|
7
|
+
* `overlayMedia` breakpoint, or a phone sheet/drawer) and the right edge's
|
|
8
|
+
* `closeOnNavigate` is not false, it closes the dock so the page is visible;
|
|
9
|
+
* a dock sitting beside the page stays open. Either way focus moves to the
|
|
10
|
+
* opened page's heading (`focus`, else the main region's first heading).
|
|
11
|
+
* Pure DOM: any package inside the dock can announce without importing the
|
|
12
|
+
* shell.
|
|
13
|
+
*/
|
|
14
|
+
/** The bubbling DOM event a dock card dispatches after navigating. */
|
|
15
|
+
export declare const SHELL_NAVIGATED_EVENT = "smrt-shell-navigated";
|
|
16
|
+
export interface ShellNavigatedDetail {
|
|
17
|
+
/**
|
|
18
|
+
* Selector naming the destination's element to focus (e.g. the opened
|
|
19
|
+
* record's heading by its id). It is focused as soon as it matches, even
|
|
20
|
+
* when it is already on the page (navigating to the page already open).
|
|
21
|
+
* Omitted: the first page heading that was NOT on the page when the
|
|
22
|
+
* navigation was announced.
|
|
23
|
+
*/
|
|
24
|
+
focus?: string;
|
|
25
|
+
}
|
|
26
|
+
/** Announce from `from` (inside the dock) that the page navigated. */
|
|
27
|
+
export declare function announceShellNavigation(from: Element, detail?: ShellNavigatedDetail): void;
|
|
28
|
+
/** The heading a navigation lands on when the announcer names none. */
|
|
29
|
+
export declare const SHELL_PAGE_HEADING = "h1, h2";
|
|
30
|
+
/**
|
|
31
|
+
* Focus the first `selector` match inside `root` that was NOT already on the
|
|
32
|
+
* page when called (the navigation may not have finished: the outgoing page's
|
|
33
|
+
* heading must not take focus; `skipExisting: false` for a selector that
|
|
34
|
+
* names the destination itself), polling for up to `timeoutMs` while the new
|
|
35
|
+
* page loads. A heading that is not focusable gets `tabindex="-1"` first.
|
|
36
|
+
* Returns a cancel function.
|
|
37
|
+
*/
|
|
38
|
+
export declare function focusWhenReady(root: ParentNode, selector: string, timeoutMs?: number, { skipExisting }?: {
|
|
39
|
+
skipExisting?: boolean;
|
|
40
|
+
}): () => void;
|
|
41
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/navigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,sEAAsE;AACtE,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,oBAAyB,GAChC,IAAI,CAQN;AAED,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAO,EAChB,EAAE,YAAmB,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,MAAM,IAAI,CAqBZ"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Something in the dock just navigated the page" (#4100).
|
|
3
|
+
*
|
|
4
|
+
* A dock card that opens a page (an approved report, a created record) calls
|
|
5
|
+
* `announceShellNavigation(element)` after navigating. `AdminShell` listens:
|
|
6
|
+
* when the dock is currently laid OVER the page (a slide-over below the
|
|
7
|
+
* `overlayMedia` breakpoint, or a phone sheet/drawer) and the right edge's
|
|
8
|
+
* `closeOnNavigate` is not false, it closes the dock so the page is visible;
|
|
9
|
+
* a dock sitting beside the page stays open. Either way focus moves to the
|
|
10
|
+
* opened page's heading (`focus`, else the main region's first heading).
|
|
11
|
+
* Pure DOM: any package inside the dock can announce without importing the
|
|
12
|
+
* shell.
|
|
13
|
+
*/
|
|
14
|
+
/** The bubbling DOM event a dock card dispatches after navigating. */
|
|
15
|
+
export const SHELL_NAVIGATED_EVENT = 'smrt-shell-navigated';
|
|
16
|
+
/** Announce from `from` (inside the dock) that the page navigated. */
|
|
17
|
+
export function announceShellNavigation(from, detail = {}) {
|
|
18
|
+
from.dispatchEvent(new CustomEvent(SHELL_NAVIGATED_EVENT, {
|
|
19
|
+
bubbles: true,
|
|
20
|
+
composed: true,
|
|
21
|
+
detail,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
/** The heading a navigation lands on when the announcer names none. */
|
|
25
|
+
export const SHELL_PAGE_HEADING = 'h1, h2';
|
|
26
|
+
/**
|
|
27
|
+
* Focus the first `selector` match inside `root` that was NOT already on the
|
|
28
|
+
* page when called (the navigation may not have finished: the outgoing page's
|
|
29
|
+
* heading must not take focus; `skipExisting: false` for a selector that
|
|
30
|
+
* names the destination itself), polling for up to `timeoutMs` while the new
|
|
31
|
+
* page loads. A heading that is not focusable gets `tabindex="-1"` first.
|
|
32
|
+
* Returns a cancel function.
|
|
33
|
+
*/
|
|
34
|
+
export function focusWhenReady(root, selector, timeoutMs = 3000, { skipExisting = true } = {}) {
|
|
35
|
+
const started = Date.now();
|
|
36
|
+
const outgoing = new Set(skipExisting ? root.querySelectorAll(selector) : []);
|
|
37
|
+
let timer = null;
|
|
38
|
+
const attempt = () => {
|
|
39
|
+
const target = [...root.querySelectorAll(selector)].find((element) => !outgoing.has(element));
|
|
40
|
+
if (target) {
|
|
41
|
+
if (!target.hasAttribute('tabindex') && target.tabIndex < 0) {
|
|
42
|
+
target.setAttribute('tabindex', '-1');
|
|
43
|
+
}
|
|
44
|
+
target.focus({ preventScroll: false });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (Date.now() - started < timeoutMs)
|
|
48
|
+
timer = setTimeout(attempt, 50);
|
|
49
|
+
};
|
|
50
|
+
timer = setTimeout(attempt, 0);
|
|
51
|
+
return () => {
|
|
52
|
+
if (timer)
|
|
53
|
+
clearTimeout(timer);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAKtE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAKtE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,CA6CpE,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,WAAW,GAAE,kBAAuB,GACnC,mBAAmB,CA2BrB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,kBAAuB,EACjC,QAAQ,CAAC,EAAE,aAAa,EACxB,WAAW,CAAC,EAAE,gBAAgB,GAC7B,UAAU,CASZ;AAED,yDAAyD;AACzD,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,gBAAgB,CAIjE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,gBAAgB,GACvB,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAUnC;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,mBAAmB,GAC1B,kBAAkB,CAqBpB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,kBAAuB,GAChC,kBAAkB,GAAG,IAAI,CAM3B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,kBAAkB,GACvB,kBAAkB,CAiBpB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,CA2BpB;AAED,qBAAa,gCAAiC,YAAW,oBAAoB;IAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAExC,IAAI,IAAI,kBAAkB,GAAG,IAAI;IAWjC,KAAK,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;CAOvC"}
|
|
@@ -33,6 +33,10 @@ export const DEFAULT_PANEL_CONFIG = {
|
|
|
33
33
|
label: 'Right sidebar',
|
|
34
34
|
initial: 'collapsed',
|
|
35
35
|
presentation: 'push',
|
|
36
|
+
// The dock sits beside the page from the xl breakpoint (80rem, 1280px)
|
|
37
|
+
// and slides over it below (#4100); hosts override either.
|
|
38
|
+
overlayMedia: '(max-width: 79.9375rem)',
|
|
39
|
+
closeOnNavigate: true,
|
|
36
40
|
hotkey: DEFAULT_SHELL_KEYMAP.right,
|
|
37
41
|
collapsedSize: '4.25rem',
|
|
38
42
|
expandedSize: '20rem',
|
|
@@ -37,6 +37,10 @@ export declare const SHELL_ICON_PATHS: {
|
|
|
37
37
|
readonly chevronRight: "M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z";
|
|
38
38
|
readonly menu: "M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z";
|
|
39
39
|
readonly chat: "M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z";
|
|
40
|
+
/** Material `light_mode`: the sun the color-scheme toggle shows in dark mode. */
|
|
41
|
+
readonly lightMode: "M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1zm18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1zM11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1zM5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41L5.99 4.58zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41l-1.06-1.06zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06z";
|
|
42
|
+
/** Material `dark_mode`: the moon the color-scheme toggle shows in light mode. */
|
|
43
|
+
readonly darkMode: "M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z";
|
|
40
44
|
readonly close: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z";
|
|
41
45
|
};
|
|
42
46
|
export type ShellIconName = keyof typeof SHELL_ICON_PATHS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-icons.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/shell-icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"shell-icons.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/shell-icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoD3B,iFAAiF;;IAGjF,kFAAkF;;;CAK1E,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,EAAE,aAAwB,CAAC;AAE/D,sEAAsE;AACtE,eAAO,MAAM,0BAA0B,EAAE,aAAwB,CAAC;AAElE,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,EAAE,aAA6B,CAAC;AAEnE,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EAqBvD,CAAC;AAEF,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,aAAa,CAEnE"}
|
|
@@ -37,6 +37,10 @@ export const SHELL_ICON_PATHS = {
|
|
|
37
37
|
chevronRight: 'M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z',
|
|
38
38
|
menu: 'M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z',
|
|
39
39
|
chat: 'M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2z',
|
|
40
|
+
/** Material `light_mode`: the sun the color-scheme toggle shows in dark mode. */
|
|
41
|
+
lightMode: 'M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1zm18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1zM11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1zM5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41L5.99 4.58zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41l-1.06-1.06zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06z',
|
|
42
|
+
/** Material `dark_mode`: the moon the color-scheme toggle shows in light mode. */
|
|
43
|
+
darkMode: 'M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z',
|
|
40
44
|
close: 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z',
|
|
41
45
|
};
|
|
42
46
|
/** Icon used for a dock or focus tool that does not bring its own. */
|
|
@@ -54,6 +54,13 @@ export interface ShellPanelConfig {
|
|
|
54
54
|
* the Material 3 "Large" window class (under 1600px).
|
|
55
55
|
*/
|
|
56
56
|
overlayMedia?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Right edge (the dock): close it when a card inside announces that it
|
|
59
|
+
* navigated the page (`announceShellNavigation`), but only while the dock
|
|
60
|
+
* is laid over the page (an overlay or a phone sheet). Default `true`; a
|
|
61
|
+
* dock beside the page always stays open.
|
|
62
|
+
*/
|
|
63
|
+
closeOnNavigate?: boolean;
|
|
57
64
|
/**
|
|
58
65
|
* Drag-to-resize for a `push` side edge on tablet/desktop: a separator on
|
|
59
66
|
* the edge's inner border (pointer drag, arrow keys, Home/End, double-click
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export { SHELL_LAYOUT_CONTEXT, setShellLayout, tryUseShellLayout, useShellLayout
|
|
|
23
23
|
export { ShellLayoutController, type ShellLayoutControllerOptions, type ShellLayoutPanelView, type ShellPlacementView, } from './admin-shell/layout-controller.svelte.js';
|
|
24
24
|
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';
|
|
25
25
|
export { installKeyboardWatcher, installScrollChrome, installShellViewport, watchFormActionBar, } from './admin-shell/mobile-shell-dom.js';
|
|
26
|
+
export { announceShellNavigation, SHELL_NAVIGATED_EVENT, type ShellNavigatedDetail, } from './admin-shell/navigation.js';
|
|
26
27
|
export { default as PhoneBottomBar } from './admin-shell/PhoneBottomBar.svelte';
|
|
27
28
|
export { default as PhoneTopBar } from './admin-shell/PhoneTopBar.svelte';
|
|
28
29
|
export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ export { SHELL_LAYOUT_CONTEXT, setShellLayout, tryUseShellLayout, useShellLayout
|
|
|
25
25
|
export { ShellLayoutController, } from './admin-shell/layout-controller.svelte.js';
|
|
26
26
|
export { bottomBarMode, FORM_ACTION_BAR_SELECTOR, findShellNavTrail, keyboardLikelyOpen, normalizeShellPath, phoneTopBarFor, ScrollChrome, shellNavItemMatches, shellPageTrailFor, viewportFor, } from './admin-shell/mobile-shell.js';
|
|
27
27
|
export { installKeyboardWatcher, installScrollChrome, installShellViewport, watchFormActionBar, } from './admin-shell/mobile-shell-dom.js';
|
|
28
|
+
export { announceShellNavigation, SHELL_NAVIGATED_EVENT, } from './admin-shell/navigation.js';
|
|
28
29
|
export { default as PhoneBottomBar } from './admin-shell/PhoneBottomBar.svelte';
|
|
29
30
|
export { default as PhoneTopBar } from './admin-shell/PhoneTopBar.svelte';
|
|
30
31
|
export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
|
|
@@ -213,7 +213,9 @@ export declare const M: {
|
|
|
213
213
|
readonly 'ui.phone_tab_bar.more': "ui.phone_tab_bar.more";
|
|
214
214
|
readonly 'ui.app_shell.account_item': "ui.app_shell.account_item";
|
|
215
215
|
readonly 'ui.app_shell.color_scheme_item': "ui.app_shell.color_scheme_item";
|
|
216
|
-
readonly 'ui.app_shell.
|
|
216
|
+
readonly 'ui.app_shell.color_scheme_dark': "ui.app_shell.color_scheme_dark";
|
|
217
|
+
readonly 'ui.app_shell.color_scheme_to_dark': "ui.app_shell.color_scheme_to_dark";
|
|
218
|
+
readonly 'ui.app_shell.color_scheme_to_light': "ui.app_shell.color_scheme_to_light";
|
|
217
219
|
readonly 'ui.app_shell.command_palette_item': "ui.app_shell.command_palette_item";
|
|
218
220
|
readonly 'ui.app_shell.account_settings': "ui.app_shell.account_settings";
|
|
219
221
|
readonly 'ui.dock_toggles.set_up': "ui.dock_toggles.set_up";
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoPZ,CAAC"}
|
|
@@ -224,7 +224,9 @@ export const M = defineMessages({
|
|
|
224
224
|
// components/app/AppShell built-in header and account items (issue #3853)
|
|
225
225
|
'ui.app_shell.account_item': 'Account menu',
|
|
226
226
|
'ui.app_shell.color_scheme_item': 'Color scheme',
|
|
227
|
-
'ui.app_shell.
|
|
227
|
+
'ui.app_shell.color_scheme_dark': 'Dark mode',
|
|
228
|
+
'ui.app_shell.color_scheme_to_dark': 'Switch to dark mode',
|
|
229
|
+
'ui.app_shell.color_scheme_to_light': 'Switch to light mode',
|
|
228
230
|
'ui.app_shell.command_palette_item': 'Search',
|
|
229
231
|
'ui.app_shell.account_settings': 'Settings',
|
|
230
232
|
// components/app/DockToggles not-ready state (issue #3860)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-svelte",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.7",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Svelte 5 components for SMRT user management - auth, users, tenants, roles, permissions, groups",
|
|
6
6
|
"type": "module",
|
|
@@ -210,11 +210,11 @@
|
|
|
210
210
|
},
|
|
211
211
|
"dependencies": {
|
|
212
212
|
"@happyvertical/logger": "^0.105.2",
|
|
213
|
-
"@happyvertical/smrt-languages": "0.57.
|
|
214
|
-
"@happyvertical/smrt-mcp-apps": "0.57.
|
|
215
|
-
"@happyvertical/smrt-types": "0.57.
|
|
216
|
-
"@happyvertical/smrt-ui": "0.57.
|
|
217
|
-
"@happyvertical/smrt-web": "0.57.
|
|
213
|
+
"@happyvertical/smrt-languages": "0.57.7",
|
|
214
|
+
"@happyvertical/smrt-mcp-apps": "0.57.7",
|
|
215
|
+
"@happyvertical/smrt-types": "0.57.7",
|
|
216
|
+
"@happyvertical/smrt-ui": "0.57.7",
|
|
217
|
+
"@happyvertical/smrt-web": "0.57.7",
|
|
218
218
|
"@tanstack/db": "^0.6.14",
|
|
219
219
|
"@tanstack/svelte-db": "^0.1.91",
|
|
220
220
|
"esm-env": "^1.2.2"
|
|
@@ -249,14 +249,14 @@
|
|
|
249
249
|
}
|
|
250
250
|
},
|
|
251
251
|
"devDependencies": {
|
|
252
|
-
"@happyvertical/smrt-agents": "0.57.
|
|
253
|
-
"@happyvertical/smrt-chat": "0.57.
|
|
254
|
-
"@happyvertical/smrt-content": "0.57.
|
|
255
|
-
"@happyvertical/smrt-core": "0.57.
|
|
256
|
-
"@happyvertical/smrt-reports": "0.57.
|
|
257
|
-
"@happyvertical/smrt-scanner": "0.57.
|
|
258
|
-
"@happyvertical/smrt-tenancy": "0.57.
|
|
259
|
-
"@happyvertical/smrt-users": "0.57.
|
|
252
|
+
"@happyvertical/smrt-agents": "0.57.7",
|
|
253
|
+
"@happyvertical/smrt-chat": "0.57.7",
|
|
254
|
+
"@happyvertical/smrt-content": "0.57.7",
|
|
255
|
+
"@happyvertical/smrt-core": "0.57.7",
|
|
256
|
+
"@happyvertical/smrt-reports": "0.57.7",
|
|
257
|
+
"@happyvertical/smrt-scanner": "0.57.7",
|
|
258
|
+
"@happyvertical/smrt-tenancy": "0.57.7",
|
|
259
|
+
"@happyvertical/smrt-users": "0.57.7",
|
|
260
260
|
"@happyvertical/speech": "^0.105.2",
|
|
261
261
|
"@sveltejs/package": "^2.5.8",
|
|
262
262
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|