@happyvertical/smrt-svelte 0.57.4 → 0.57.6
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 +7 -1
- package/agents/workspace.md +20 -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/overview/OverviewGrid.svelte +3 -2
- package/dist/components/overview/OverviewGrid.svelte.d.ts.map +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 +44 -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/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/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 +16 -16
|
@@ -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
|
package/agents/workspace.md
CHANGED
|
@@ -181,10 +181,13 @@ in the tooltip, there is no visible `<kbd>`), and off phones it closes the
|
|
|
181
181
|
navigation region: it sits at the end of the nav (`margin-block-start: auto`),
|
|
182
182
|
above the `leftSidebar.footer` slot, never below it. Order top to bottom, expanded
|
|
183
183
|
and collapsed: nav, chevron, footer (the account menu; the compact avatar last
|
|
184
|
-
in the collapsed rail).
|
|
185
|
-
(
|
|
186
|
-
|
|
187
|
-
|
|
184
|
+
in the collapsed rail). It sits in the utility row
|
|
185
|
+
(`.smrt-admin-shell__tenant-utilities`, after any `tenantUtilities` icons such
|
|
186
|
+
as the color-scheme toggle). Expanded the row lives inside the sidebar body
|
|
187
|
+
(`tenant-stack`) and the chevron hugs its inner edge; collapsed the row is the
|
|
188
|
+
middle row of the rail stack (content, utilities, `tenantRailFooter`), stacked
|
|
189
|
+
and centred. Only a rail with neither nav, utilities nor footer content draws
|
|
190
|
+
the chevron alone at the bottom. Phones replace it with the drawer's
|
|
188
191
|
icon-only "Close menu" at the top, so opening the drawer still focuses a close control. The
|
|
189
192
|
header, footer and right toggles keep their region label and hotkey hint.
|
|
190
193
|
|
|
@@ -205,7 +208,7 @@ keep them stable), all movable in the layout editor like `item:brand`:
|
|
|
205
208
|
| Item | Default slot | Phone | Opt out |
|
|
206
209
|
| --- | --- | --- | --- |
|
|
207
210
|
| `item:account` | `leftSidebar.footer` | compact avatar, last in the header band (`header.end`) | `accountMenu={false}`; `accountMenu={{ slot }}` sets the default |
|
|
208
|
-
| `item:color-scheme` | `
|
|
211
|
+
| `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
212
|
| `item:command-palette` | `header.center` | search glyph button | off unless `commandPalette` is passed |
|
|
210
213
|
|
|
211
214
|
`item:account` renders `WorkspaceAccountMenu` only when `user` is set (nothing
|
|
@@ -218,8 +221,18 @@ it shows the full identity (menu opens upward); everywhere else, and in the
|
|
|
218
221
|
collapsed rail, it is the compact avatar. In the collapsed rail `AppShell`
|
|
219
222
|
passes it as `tenantRailFooter` (outside the rail's scroll clip; the menu opens
|
|
220
223
|
to the inline end over the workspace) instead of letting the footer slot fall
|
|
221
|
-
back to another region. `item:color-scheme`
|
|
222
|
-
|
|
224
|
+
back to another region. `item:color-scheme` is `ShellColorSchemeToggle`
|
|
225
|
+
(`src/components/app/`): an icon-only `ShellIconButton` over the
|
|
226
|
+
`ThemeProvider` context (no second scheme store), named "Dark mode" with
|
|
227
|
+
`aria-pressed`, showing the mode a press switches to (moon in light, sun in
|
|
228
|
+
dark: `darkMode` / `lightMode` in the shell icon set) with a "Switch to dark
|
|
229
|
+
mode" / "Switch to light mode" tooltip. Left in `leftSidebar.footer` on desktop
|
|
230
|
+
it renders in `AdminShell`'s `tenantUtilities` row (#4107): toggle first, the
|
|
231
|
+
collapse chevron at the inner edge, at the end of the nav region above the
|
|
232
|
+
account; in the collapsed rail the row stacks (toggle, chevron) above the
|
|
233
|
+
compact avatar. It never falls back to the header or footer while the left
|
|
234
|
+
edge is shown; in edit mode it is an ordinary movable item in the footer drop
|
|
235
|
+
zone. Will's standing default: never a labelled Light/Dark pill in the header. `item:command-palette`
|
|
223
236
|
mounts the existing `CommandPalette` (`commandPalette: { providers, placeholder? }`,
|
|
224
237
|
types `AppShellCommandPalette`/`AppShellAccountMenu` from `./app`): it owns the
|
|
225
238
|
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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -100,6 +100,14 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
100
100
|
tenantRail?: Snippet;
|
|
101
101
|
/** Content pinned below the collapsed tenant rail. */
|
|
102
102
|
tenantRailFooter?: Snippet;
|
|
103
|
+
/**
|
|
104
|
+
* Icon controls in the left sidebar's utility row: with the collapse
|
|
105
|
+
* chevron at the end of the nav region, above the sidebar footer, in the
|
|
106
|
+
* expanded sidebar (start of the row; the chevron keeps the inner edge)
|
|
107
|
+
* and in the collapsed rail (stacked above the chevron). Desktop only;
|
|
108
|
+
* `AppShell` puts its color-scheme item here.
|
|
109
|
+
*/
|
|
110
|
+
tenantUtilities?: Snippet;
|
|
103
111
|
/** Content for the left tenant panel. */
|
|
104
112
|
tenantPanel?: Snippet;
|
|
105
113
|
/**
|
|
@@ -213,6 +221,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
213
221
|
appPanel,
|
|
214
222
|
tenantRail,
|
|
215
223
|
tenantRailFooter,
|
|
224
|
+
tenantUtilities,
|
|
216
225
|
tenantPanel,
|
|
217
226
|
tenantFooter,
|
|
218
227
|
slots,
|
|
@@ -1123,6 +1132,15 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1123
1132
|
{/if}
|
|
1124
1133
|
{/snippet}
|
|
1125
1134
|
|
|
1135
|
+
<!-- The left sidebar's utility row: host icon controls (the color scheme)
|
|
1136
|
+
then the chevron, closing the nav region above the footer slot. -->
|
|
1137
|
+
{#snippet tenantUtilityRow()}
|
|
1138
|
+
<div class="smrt-admin-shell__tenant-utilities" data-smrt-part="utilities">
|
|
1139
|
+
{#if tenantUtilities}{@render tenantUtilities()}{/if}
|
|
1140
|
+
{#if showToggle('left')}{@render edgeToggle('left')}{/if}
|
|
1141
|
+
</div>
|
|
1142
|
+
{/snippet}
|
|
1143
|
+
|
|
1126
1144
|
{#snippet menuOpener()}
|
|
1127
1145
|
<!-- raw-primitive-allow: shell chrome control, not a content button -->
|
|
1128
1146
|
<button
|
|
@@ -1383,7 +1401,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1383
1401
|
{@render tenantRail()}
|
|
1384
1402
|
{/if}
|
|
1385
1403
|
</div>
|
|
1386
|
-
{#if
|
|
1404
|
+
{#if shownOpen('left') && !isPhone && (tenantUtilities || showToggle('left'))}{@render tenantUtilityRow()}{/if}
|
|
1387
1405
|
{#if tenantFooter && !footerInHeader}
|
|
1388
1406
|
<div class="smrt-admin-shell__tenant-footer">
|
|
1389
1407
|
{@render tenantFooter()}
|
|
@@ -1392,12 +1410,12 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1392
1410
|
{@render slotGroup('leftSidebar.footer')}
|
|
1393
1411
|
</div>
|
|
1394
1412
|
{/if}
|
|
1395
|
-
{#if !shownOpen('left') && (tenantRail || tenantRailFooter)}
|
|
1413
|
+
{#if !shownOpen('left') && (tenantRail || tenantRailFooter || tenantUtilities)}
|
|
1396
1414
|
<div class="smrt-admin-shell__tenant-rail-stack">
|
|
1397
1415
|
<div class="smrt-admin-shell__tenant-rail-content">
|
|
1398
1416
|
{#if tenantRail}{@render tenantRail()}{/if}
|
|
1399
1417
|
</div>
|
|
1400
|
-
{#if showToggle('left')
|
|
1418
|
+
{#if !isPhone && (tenantUtilities || showToggle('left'))}{@render tenantUtilityRow()}{/if}
|
|
1401
1419
|
{#if tenantRailFooter}
|
|
1402
1420
|
<div class="smrt-admin-shell__tenant-rail-footer">
|
|
1403
1421
|
{@render tenantRailFooter()}
|
|
@@ -1408,7 +1426,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
1408
1426
|
<!-- The chevron closes the nav region, above the footer slot: inside
|
|
1409
1427
|
the expanded stack or the collapsed rail stack. Only when neither
|
|
1410
1428
|
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}
|
|
1429
|
+
{#if showToggle('left') && !isPhone && !shownOpen('left') && !(tenantRail || tenantRailFooter || tenantUtilities)}{@render edgeToggle('left')}{/if}
|
|
1412
1430
|
</div>
|
|
1413
1431
|
</aside>
|
|
1414
1432
|
{/if}
|
|
@@ -2302,6 +2320,18 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2302
2320
|
`margin-block-start: auto` pins it to the end of the nav region even when
|
|
2303
2321
|
nothing above it grows. Expanded it hugs the inner edge and points left;
|
|
2304
2322
|
collapsed it is centred in the narrow rail and points right. */
|
|
2323
|
+
.smrt-admin-shell__tenant-utilities {
|
|
2324
|
+
display: flex;
|
|
2325
|
+
flex: 0 0 auto;
|
|
2326
|
+
align-items: center;
|
|
2327
|
+
gap: var(--smrt-spacing-1);
|
|
2328
|
+
min-width: 0;
|
|
2329
|
+
margin-block-start: auto;
|
|
2330
|
+
}
|
|
2331
|
+
.smrt-admin-shell__edge--left[data-state='collapsed'] .smrt-admin-shell__tenant-utilities {
|
|
2332
|
+
flex-direction: column;
|
|
2333
|
+
grid-row: 2;
|
|
2334
|
+
}
|
|
2305
2335
|
.smrt-admin-shell__edge--left :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2306
2336
|
flex: 0 0 auto;
|
|
2307
2337
|
margin-block-start: auto;
|
|
@@ -2319,6 +2349,16 @@ function buildLayoutStyle(shell: ModuleShellState): string {
|
|
|
2319
2349
|
.smrt-admin-shell__tenant-rail-stack > :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2320
2350
|
grid-row: 2;
|
|
2321
2351
|
}
|
|
2352
|
+
/* In the row the chevron keeps the inner edge (expanded) or the centre
|
|
2353
|
+
(rail); the row itself is what is pinned to the end of the nav region. */
|
|
2354
|
+
.smrt-admin-shell__tenant-utilities > :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2355
|
+
align-self: center;
|
|
2356
|
+
margin-block-start: 0;
|
|
2357
|
+
margin-inline-start: auto;
|
|
2358
|
+
}
|
|
2359
|
+
.smrt-admin-shell__edge--left[data-state='collapsed'] .smrt-admin-shell__tenant-utilities > :global(.smrt-admin-shell__edge-toggle--left) {
|
|
2360
|
+
margin-inline-start: 0;
|
|
2361
|
+
}
|
|
2322
2362
|
.smrt-admin-shell__edge--left[data-state='expanded'] :global(.smrt-admin-shell__edge-toggle-chevron) {
|
|
2323
2363
|
transform: scaleX(-1);
|
|
2324
2364
|
}
|
|
@@ -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":"AAkDA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAUtC,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,mBAAmB,CAAC;AActE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAGH,KAAK,SAAS,EAEf,MAAM,YAAY,CAAC;AACtB,OAAO,KAAK,EACR,sBAAsB,EACtB,eAAe,EAEf,sBAAsB,EACtB,cAAc,EACd,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,UAAU,KAAM,SAAQ,eAAe;IACrC,sEAAsE;IACtE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C;;;OAGG;IACH,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,6EAA6E;IAC7E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,2CAA2C;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;IACxD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC,CAAC;IAChD;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7C;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAAE,QAAQ,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC,CAAC;IAC5E,qFAAqF;IACrF,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"AdminShell.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/AdminShell.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -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. */
|
|
@@ -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.6",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Svelte 5 components for SMRT user management - auth, users, tenants, roles, permissions, groups",
|
|
6
6
|
"type": "module",
|
|
@@ -209,12 +209,12 @@
|
|
|
209
209
|
"access": "public"
|
|
210
210
|
},
|
|
211
211
|
"dependencies": {
|
|
212
|
-
"@happyvertical/logger": "^0.105.
|
|
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.
|
|
212
|
+
"@happyvertical/logger": "^0.105.2",
|
|
213
|
+
"@happyvertical/smrt-languages": "0.57.6",
|
|
214
|
+
"@happyvertical/smrt-mcp-apps": "0.57.6",
|
|
215
|
+
"@happyvertical/smrt-types": "0.57.6",
|
|
216
|
+
"@happyvertical/smrt-ui": "0.57.6",
|
|
217
|
+
"@happyvertical/smrt-web": "0.57.6",
|
|
218
218
|
"@tanstack/db": "^0.6.14",
|
|
219
219
|
"@tanstack/svelte-db": "^0.1.91",
|
|
220
220
|
"esm-env": "^1.2.2"
|
|
@@ -249,15 +249,15 @@
|
|
|
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.
|
|
260
|
-
"@happyvertical/speech": "^0.105.
|
|
252
|
+
"@happyvertical/smrt-agents": "0.57.6",
|
|
253
|
+
"@happyvertical/smrt-chat": "0.57.6",
|
|
254
|
+
"@happyvertical/smrt-content": "0.57.6",
|
|
255
|
+
"@happyvertical/smrt-core": "0.57.6",
|
|
256
|
+
"@happyvertical/smrt-reports": "0.57.6",
|
|
257
|
+
"@happyvertical/smrt-scanner": "0.57.6",
|
|
258
|
+
"@happyvertical/smrt-tenancy": "0.57.6",
|
|
259
|
+
"@happyvertical/smrt-users": "0.57.6",
|
|
260
|
+
"@happyvertical/speech": "^0.105.2",
|
|
261
261
|
"@sveltejs/package": "^2.5.8",
|
|
262
262
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
263
263
|
"@testing-library/jest-dom": "^7.0.1",
|