@happyvertical/smrt-svelte 0.53.4 → 0.53.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/README.md CHANGED
@@ -641,7 +641,8 @@ Use `shell.setPanelState(edge, 'hidden' | 'collapsed' | 'expanded')` to persist
641
641
  runtime panel preferences; app-configured hidden edges remain unavailable.
642
642
  AdminShell keeps a discoverable tenant collapse control with supplied navigation
643
643
  (`showTenantToggle={false}` opts out), a Menu opener in narrow layouts, and the
644
- system toggle alongside a custom `systemBar`. Closed narrow drawers are inert;
644
+ system toggle alongside a custom `systemBar` that has a `systemPanel` to open
645
+ (a `systemBar` with no `systemPanel` owns the bottom band and draws no toggle). Closed narrow drawers are inert;
645
646
  opening focuses the first control, and closing or Escape restores the opener.
646
647
  TenantNav accepts `density="touch"` for canonical 48px link targets, including
647
648
  collapsed rail links; omit density to inherit the theme's control density.
@@ -75,6 +75,26 @@ and touch input across mobile widths and desktop panel-state combinations.
75
75
 
76
76
  See `src/components/workspace/MIGRATION.md` for the old-to-new concept map.
77
77
 
78
+ ### Activity ticker
79
+
80
+ `ActivityTicker` accepts app-owned `activities: ReadonlyArray<ShellActivity>` plus
81
+ optional `label` and `emptyLabel`. It never fetches data or establishes authority.
82
+ Render it in `AdminShell`'s `systemBar` slot with `activities={shell.activities}`;
83
+ render `ActivityList filter={{ status: 'running' }}` in `systemPanel` for details.
84
+ Connect the same registry to actual jobs through an authenticated app adapter or
85
+ the `activityFeed` below. Queued and terminal records never appear as running.
86
+
87
+ A single running activity is static. Multiple activities scroll continuously with
88
+ a persistent Pause/Resume control and pause on hover/focus. A separate accessible
89
+ list contains each process once; visual loop copies are hidden from assistive
90
+ technology. Reduced motion disables animation and allows manual horizontal
91
+ scrolling. Optional finite 0–100 progress is shown; no progress is inferred.
92
+
93
+ Focused validation: `pnpm --filter @happyvertical/smrt-svelte exec vitest run
94
+ src/components/workspace/__tests__/ActivityTicker.test.ts
95
+ src/components/workspace/__tests__/index.test.ts`, then the activity ticker's
96
+ Chromium scenarios via the package's documented `test:e2e` command.
97
+
78
98
  ### Live activity feed adapter (`./web`, #1779)
79
99
 
80
100
  `activityFeed({ collection, map, shell })` (from `@happyvertical/smrt-svelte/web`)
@@ -150,6 +170,8 @@ success applies the new snapshot.
150
170
  Availability is never an authorization boundary—server operations must still
151
171
  enforce permissions.
152
172
 
173
+ `ActivityTicker` accepts optional `statuses` restricted to queued/running; running-only remains the default. Opting into queued work adds an explicit localized Queued label without progress. Terminal outcomes belong in expanded `ActivityList`, with retention controlled by the app-owned data source.
174
+
153
175
  ## App shell and owner setup (`./app`)
154
176
 
155
177
  `@happyvertical/smrt-svelte/app` (`src/components/app/`) is browser-only. It
@@ -163,7 +185,9 @@ lives beside, not inside, `./workspace` so the AdminShell barrel stays free of
163
185
  and an `AppScopePanel`. Panels start collapsed as in `AdminShell`; pass
164
186
  `config` to change that. `dock` is a snippet rendered inside the shell: a host
165
187
  places its assistant there in a `ShellDockTool`, so this package never
166
- imports `smrt-chat`. `runtimeDiagnostics` (default false) mounts the
188
+ imports `smrt-chat`. It receives the Provider's `DataSurfaceRegistry`
189
+ (`{#snippet dock(registry)}`), the instance mounted routes register on
190
+ when `webmcp` UI is on; pass it to `<AssistantDock {registry} />`. `runtimeDiagnostics` (default false) mounts the
167
191
  read-only `smrt.runtime.diagnostics.read` WebMCP tool. Server code that
168
192
  lists that tool (the diagnostics route's `toolNames`) imports
169
193
  `RUNTIME_DIAGNOSTICS_WEBMCP_TOOL_NAME` from `./app/runtime-diagnostics`,
@@ -6,6 +6,7 @@ import {
6
6
  } from '@happyvertical/smrt-ui/themes';
7
7
  import '@happyvertical/smrt-ui/themes/styles/all.css';
8
8
  import '@happyvertical/smrt-ui/themes/styles/fonts.css';
9
+ import type { DataSurfaceRegistry } from '@happyvertical/smrt-ui/data';
9
10
  import { useI18n } from '@happyvertical/smrt-ui/i18n';
10
11
  import type { Snippet } from 'svelte';
11
12
  import { M } from '../../i18n/strings.workspace.js';
@@ -20,6 +21,7 @@ import type {
20
21
  ShellNavItem,
21
22
  ShellPanelDefaults,
22
23
  } from '../workspace/admin-shell/types.js';
24
+ import DockSlot from './DockSlot.svelte';
23
25
  import RuntimeDiagnosticsWebMcp from './RuntimeDiagnosticsWebMcp.svelte';
24
26
 
25
27
  interface Props {
@@ -59,9 +61,13 @@ interface Props {
59
61
  appPanelDocs?: Snippet;
60
62
  /**
61
63
  * Dock slot, rendered inside the shell so a host can place an assistant in
62
- * a `ShellDockTool` without this package depending on it.
64
+ * a `ShellDockTool` without this package depending on it. It receives the
65
+ * `DataSurfaceRegistry` of the Provider the shell mounts, the same instance
66
+ * mounted routes register their surfaces on, so
67
+ * `<AssistantDock {registry} />` sees them with no second registry. Routes
68
+ * register on it when the `webmcp` UI is enabled (`webmcp: true`).
63
69
  */
64
- dock?: Snippet;
70
+ dock?: Snippet<[DataSurfaceRegistry]>;
65
71
  children: Snippet;
66
72
  }
67
73
 
@@ -121,7 +127,9 @@ const hasNav = $derived(nav.length > 0 || navGroups.length > 0);
121
127
  {/if}
122
128
  {/snippet}
123
129
 
124
- {@render dock?.()}
130
+ {#if dock}
131
+ <DockSlot {dock} />
132
+ {/if}
125
133
  {@render children()}
126
134
  </AdminShell>
127
135
  </ThemeProvider>
@@ -1,6 +1,7 @@
1
1
  import { type ColorScheme, type ThemePreset } from '@happyvertical/smrt-ui/themes';
2
2
  import '@happyvertical/smrt-ui/themes/styles/all.css';
3
3
  import '@happyvertical/smrt-ui/themes/styles/fonts.css';
4
+ import type { DataSurfaceRegistry } from '@happyvertical/smrt-ui/data';
4
5
  import type { Snippet } from 'svelte';
5
6
  import type { User } from '../../state/app-state.js';
6
7
  import type { WebMcpProviderConfig } from '../../web/webmcp-provider.js';
@@ -42,9 +43,13 @@ interface Props {
42
43
  appPanelDocs?: Snippet;
43
44
  /**
44
45
  * Dock slot, rendered inside the shell so a host can place an assistant in
45
- * a `ShellDockTool` without this package depending on it.
46
+ * a `ShellDockTool` without this package depending on it. It receives the
47
+ * `DataSurfaceRegistry` of the Provider the shell mounts, the same instance
48
+ * mounted routes register their surfaces on, so
49
+ * `<AssistantDock {registry} />` sees them with no second registry. Routes
50
+ * register on it when the `webmcp` UI is enabled (`webmcp: true`).
46
51
  */
47
- dock?: Snippet;
52
+ dock?: Snippet<[DataSurfaceRegistry]>;
48
53
  children: Snippet;
49
54
  }
50
55
  declare const AppShell: import("svelte").Component<Props, {}, "">;
@@ -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,EAChB,KAAK,WAAW,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,8CAA8C,CAAC;AACtD,OAAO,gDAAgD,CAAC;AAExD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIzE,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAI3C,UAAU,KAAK;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC;IACrB,uEAAuE;IACvE,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACxC,yFAAyF;IACzF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sEAAsE;IACtE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,iDAAiD;IACjD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AA0ED,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"AppShell.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/app/AppShell.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,8CAA8C,CAAC;AACtD,OAAO,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIzE,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAK3C,UAAU,KAAK;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC;IACrB,uEAAuE;IACvE,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IACxC,yFAAyF;IACzF,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,sEAAsE;IACtE,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,iDAAiD;IACjD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AA8ED,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import type { DataSurfaceRegistry } from '@happyvertical/smrt-ui/data';
3
+ import type { Snippet } from 'svelte';
4
+ import { tryGetWebMcpUiContext } from '../../web/webmcp-ui-context.js';
5
+
6
+ interface Props {
7
+ /** The host's dock snippet; receives the Provider's data-surface registry. */
8
+ dock: Snippet<[DataSurfaceRegistry]>;
9
+ }
10
+
11
+ let { dock }: Props = $props();
12
+ // Rendered inside the Provider, so this is the registry mounted routes
13
+ // register their surfaces on (when the Provider's WebMCP UI is on).
14
+ const ui = tryGetWebMcpUiContext();
15
+ const registry = $derived(ui?.dataSurfaceRegistry);
16
+ </script>
17
+
18
+ {#if registry}
19
+ {@render dock(registry)}
20
+ {/if}
@@ -0,0 +1,10 @@
1
+ import type { DataSurfaceRegistry } from '@happyvertical/smrt-ui/data';
2
+ import type { Snippet } from 'svelte';
3
+ interface Props {
4
+ /** The host's dock snippet; receives the Provider's data-surface registry. */
5
+ dock: Snippet<[DataSurfaceRegistry]>;
6
+ }
7
+ declare const DockSlot: import("svelte").Component<Props, {}, "">;
8
+ type DockSlot = ReturnType<typeof DockSlot>;
9
+ export default DockSlot;
10
+ //# sourceMappingURL=DockSlot.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DockSlot.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/app/DockSlot.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAItC,UAAU,KAAK;IACb,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;CACtC;AAoBD,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -66,7 +66,7 @@ below is intentionally application code, not a `workspace/` export:
66
66
  import { AssistantDock } from '@happyvertical/smrt-chat/svelte';
67
67
  </script>
68
68
 
69
- <ShellDockTool id="assistant" label="Assistant" icon="bot">
69
+ <ShellDockTool id="assistant" label="Assistant">
70
70
  {#snippet render()}
71
71
  <AssistantDock {transport} {registry} />
72
72
  {/snippet}
@@ -74,7 +74,8 @@ below is intentionally application code, not a `workspace/` export:
74
74
  ```
75
75
 
76
76
  `registry` is the same `DataSurfaceRegistry` instance mounted routes register
77
- their descriptors on. See
77
+ their descriptors on; inside `AppShell` it is the argument of the `dock`
78
+ snippet (`{#snippet dock(registry)}`). `icon` takes a Svelte component. See
78
79
  [`docs/assistant-dock.md`](../../../../../docs/assistant-dock.md) for the full
79
80
  design.
80
81
 
@@ -0,0 +1,92 @@
1
+ <script lang="ts">
2
+ import { useI18n } from '@happyvertical/smrt-ui/i18n';
3
+ import { Button } from '@happyvertical/smrt-ui/ui';
4
+ import { M } from '../../../i18n/strings.workspace.js';
5
+ import type { ShellActivity } from './types.js';
6
+
7
+ interface Props {
8
+ /** Authenticated app-owned activities; this component never fetches process data. */
9
+ activities: ReadonlyArray<ShellActivity>;
10
+ /** Active statuses to display; defaults to running only. Terminal work is never active. */
11
+ statuses?: ReadonlyArray<'queued' | 'running'>;
12
+ /** Accessible region name. */
13
+ label?: string;
14
+ /** Message shown when no activities are running. */
15
+ emptyLabel?: string;
16
+ }
17
+ let { activities, statuses = ['running'], label, emptyLabel }: Props = $props();
18
+ const { t } = useI18n();
19
+ let paused = $state(false);
20
+ const running = $derived(
21
+ activities.filter(
22
+ (activity) =>
23
+ (activity.status === 'queued' || activity.status === 'running') &&
24
+ statuses.includes(activity.status),
25
+ ),
26
+ );
27
+ const multiple = $derived(running.length > 1);
28
+ function progress(activity: ShellActivity): string {
29
+ return activity.status === 'running' &&
30
+ typeof activity.progress === 'number' &&
31
+ Number.isFinite(activity.progress) &&
32
+ activity.progress >= 0 &&
33
+ activity.progress <= 100
34
+ ? ` · ${Math.round(activity.progress)}%`
35
+ : '';
36
+ }
37
+ function activityLabel(activity: ShellActivity): string {
38
+ return activity.status === 'queued'
39
+ ? `${t(M['ui.activity_ticker.queued'])} · ${activity.label}`
40
+ : activity.label;
41
+ }
42
+ </script>
43
+
44
+ <div class="smrt-activity-ticker-shell">
45
+ <div class="smrt-activity-ticker" class:multiple class:paused role="region" aria-label={label ?? t(M['ui.activity_ticker.label'])} style:--activity-ticker-duration={`${Math.max(20, running.length * 10)}s`}>
46
+ {#if running.length === 0}
47
+ <span class="smrt-activity-ticker__empty">{emptyLabel ?? t(M['ui.activity_ticker.empty'])}</span>
48
+ {:else}
49
+ <ul class="smrt-activity-ticker__accessible">
50
+ {#each running as activity (activity.id)}<li>{activityLabel(activity)}{progress(activity)}</li>{/each}
51
+ </ul>
52
+ <div class="smrt-activity-ticker__track" aria-hidden="true">
53
+ <span class="smrt-activity-ticker__group">
54
+ {#each running as activity (activity.id)}<span>{activityLabel(activity)}{progress(activity)}</span>{/each}
55
+ </span>
56
+ {#if multiple}
57
+ <span class="smrt-activity-ticker__group smrt-activity-ticker__copy">
58
+ {#each running as activity (activity.id)}<span>{activityLabel(activity)}{progress(activity)}</span>{/each}
59
+ </span>
60
+ {/if}
61
+ </div>
62
+ {/if}
63
+ </div>
64
+ {#if multiple}
65
+ <span class="smrt-activity-ticker__control">
66
+ <Button variant="ghost" size="sm" aria-label={t(paused ? M['ui.activity_ticker.resume'] : M['ui.activity_ticker.pause'])} title={t(paused ? M['ui.activity_ticker.resume'] : M['ui.activity_ticker.pause'])} onclick={() => paused = !paused}>
67
+ <svg viewBox="0 0 16 16" width="14" height="14" fill="currentColor" aria-hidden="true">
68
+ {#if paused}<path d="M4 2v12l10-6z" />{:else}<path d="M3 2h4v12H3zM9 2h4v12H9z" />{/if}
69
+ </svg>
70
+ </Button>
71
+ </span>
72
+ {/if}
73
+ </div>
74
+
75
+ <style>
76
+ .smrt-activity-ticker-shell { display:flex; align-items:center; flex:1; min-width:0; gap:var(--smrt-spacing-2); }
77
+ .smrt-activity-ticker { flex:1; min-width:0; overflow:hidden; color:var(--smrt-color-on-surface-variant); font-size:var(--smrt-typography-body-small-size); white-space:nowrap; }
78
+ .smrt-activity-ticker__track { display:flex; width:max-content; }
79
+ .smrt-activity-ticker__group { display:flex; gap:var(--smrt-spacing-6); flex-shrink:0; }
80
+ .multiple .smrt-activity-ticker__group { padding-inline-end:var(--smrt-spacing-6); }
81
+ .multiple .smrt-activity-ticker__track { animation:smrt-activity-scroll var(--activity-ticker-duration) linear infinite; }
82
+ .smrt-activity-ticker.paused .smrt-activity-ticker__track,
83
+ .smrt-activity-ticker:hover .smrt-activity-ticker__track,
84
+ .smrt-activity-ticker-shell:focus-within .smrt-activity-ticker__track { animation-play-state:paused; }
85
+ .smrt-activity-ticker__accessible { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:normal; }
86
+ @keyframes smrt-activity-scroll { to { transform:translateX(-50%); } }
87
+ @media (prefers-reduced-motion:reduce) {
88
+ .smrt-activity-ticker { overflow-x:auto; }
89
+ .multiple .smrt-activity-ticker__track { animation:none; }
90
+ .smrt-activity-ticker__copy, .smrt-activity-ticker__control { display:none; }
91
+ }
92
+ </style>
@@ -0,0 +1,15 @@
1
+ import type { ShellActivity } from './types.js';
2
+ interface Props {
3
+ /** Authenticated app-owned activities; this component never fetches process data. */
4
+ activities: ReadonlyArray<ShellActivity>;
5
+ /** Active statuses to display; defaults to running only. Terminal work is never active. */
6
+ statuses?: ReadonlyArray<'queued' | 'running'>;
7
+ /** Accessible region name. */
8
+ label?: string;
9
+ /** Message shown when no activities are running. */
10
+ emptyLabel?: string;
11
+ }
12
+ declare const ActivityTicker: import("svelte").Component<Props, {}, "">;
13
+ type ActivityTicker = ReturnType<typeof ActivityTicker>;
14
+ export default ActivityTicker;
15
+ //# sourceMappingURL=ActivityTicker.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActivityTicker.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/ActivityTicker.svelte.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,UAAU,KAAK;IACb,qFAAqF;IACrF,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACzC,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,aAAa,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IAC/C,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqED,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
@@ -89,7 +89,10 @@ function buildLayoutStyle(shell: ModuleShellState): string {
89
89
  focusRail?: Snippet;
90
90
  /** Content for the right focus panel, receives the active tool. */
91
91
  focusPanel?: Snippet<[{ tool: ShellFocusTool | null }]>;
92
- /** Content for the system bar. */
92
+ /**
93
+ * Content for the system bar. When supplied without a `systemPanel` it owns
94
+ * the bottom band: there is nothing to open, so no bottom toggle is drawn.
95
+ */
93
96
  systemBar?: Snippet;
94
97
  /** Content for the system panel. */
95
98
  systemPanel?: Snippet;
@@ -1008,7 +1011,7 @@ function buildLayoutStyle(shell: ModuleShellState): string {
1008
1011
  style:--band-column={2}
1009
1012
  >
1010
1013
  {#if systemBar}{@render systemBar()}{/if}
1011
- {@render edgeToggle('bottom')}
1014
+ {#if systemPanel || !systemBar}{@render edgeToggle('bottom')}{/if}
1012
1015
  </div>
1013
1016
  {#if bottomRightCorner}
1014
1017
  <div class="smrt-admin-shell__corner smrt-admin-shell__corner--bottom-right">
@@ -23,7 +23,10 @@ interface Props extends AdminShellProps {
23
23
  focusPanel?: Snippet<[{
24
24
  tool: ShellFocusTool | null;
25
25
  }]>;
26
- /** Content for the system bar. */
26
+ /**
27
+ * Content for the system bar. When supplied without a `systemPanel` it owns
28
+ * the bottom band: there is nothing to open, so no bottom toggle is drawn.
29
+ */
27
30
  systemBar?: Snippet;
28
31
  /** Content for the system panel. */
29
32
  systemPanel?: Snippet;
@@ -1 +1 @@
1
- {"version":3,"file":"AdminShell.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/AdminShell.svelte.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,mBAAmB,CAAC;AAStE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EACR,sBAAsB,EACtB,eAAe,EAEf,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,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,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,kCAAkC;IAClC,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;;;;OAIG;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,uEAAuE;IACvE,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+zBH,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"AdminShell.svelte.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/AdminShell.svelte.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,mBAAmB,CAAC;AAStE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EACR,sBAAsB,EACtB,eAAe,EAEf,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,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,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;;;;OAIG;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,uEAAuE;IACvE,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AA+zBH,QAAA,MAAM,UAAU,2CAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
@@ -10,6 +10,7 @@ export { type SwipeDirection, type SwipeDismissOptions, swipeDismiss, swipeDismi
10
10
  export { default as ActivityBadge } from './admin-shell/ActivityBadge.svelte';
11
11
  export { default as ActivityItem } from './admin-shell/ActivityItem.svelte';
12
12
  export { default as ActivityList } from './admin-shell/ActivityList.svelte';
13
+ export { default as ActivityTicker } from './admin-shell/ActivityTicker.svelte';
13
14
  export { default as ActivityToasts } from './admin-shell/ActivityToasts.svelte';
14
15
  export { default as AdminShell } from './admin-shell/AdminShell.svelte';
15
16
  export { default as AppScopePanel } from './admin-shell/AppScopePanel.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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"}
@@ -12,6 +12,7 @@ export { swipeDismiss, swipeDismisses, } from '@happyvertical/smrt-ui/feedback';
12
12
  export { default as ActivityBadge } from './admin-shell/ActivityBadge.svelte';
13
13
  export { default as ActivityItem } from './admin-shell/ActivityItem.svelte';
14
14
  export { default as ActivityList } from './admin-shell/ActivityList.svelte';
15
+ export { default as ActivityTicker } from './admin-shell/ActivityTicker.svelte';
15
16
  export { default as ActivityToasts } from './admin-shell/ActivityToasts.svelte';
16
17
  export { default as AdminShell } from './admin-shell/AdminShell.svelte';
17
18
  export { default as AppScopePanel } from './admin-shell/AppScopePanel.svelte';
@@ -52,6 +52,11 @@ export declare const M: {
52
52
  readonly 'ui.activity_item.view': "ui.activity_item.view";
53
53
  readonly 'ui.activity_item.cancel': "ui.activity_item.cancel";
54
54
  readonly 'ui.activity_list.empty': "ui.activity_list.empty";
55
+ readonly 'ui.activity_ticker.label': "ui.activity_ticker.label";
56
+ readonly 'ui.activity_ticker.empty': "ui.activity_ticker.empty";
57
+ readonly 'ui.activity_ticker.pause': "ui.activity_ticker.pause";
58
+ readonly 'ui.activity_ticker.resume': "ui.activity_ticker.resume";
59
+ readonly 'ui.activity_ticker.queued': "ui.activity_ticker.queued";
55
60
  readonly 'ui.app_scope_panel.app_scope': "ui.app_scope_panel.app_scope";
56
61
  readonly 'ui.app_shell.settings_link': "ui.app_shell.settings_link";
57
62
  readonly 'ui.app_shell.navigation': "ui.app_shell.navigation";
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HZ,CAAC"}
1
+ {"version":3,"file":"strings.workspace.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HZ,CAAC"}
@@ -57,6 +57,11 @@ export const M = defineMessages({
57
57
  'ui.activity_item.view': 'View',
58
58
  'ui.activity_item.cancel': 'Cancel',
59
59
  'ui.activity_list.empty': 'No activities',
60
+ 'ui.activity_ticker.label': 'Running processes',
61
+ 'ui.activity_ticker.empty': 'No active processes',
62
+ 'ui.activity_ticker.pause': 'Pause scrolling activities',
63
+ 'ui.activity_ticker.resume': 'Resume scrolling activities',
64
+ 'ui.activity_ticker.queued': 'Queued',
60
65
  'ui.app_scope_panel.app_scope': 'App scope',
61
66
  // components/app/*.svelte
62
67
  'ui.app_shell.settings_link': 'Shell settings',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-svelte",
3
- "version": "0.53.4",
3
+ "version": "0.53.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",
@@ -137,12 +137,12 @@
137
137
  "access": "public"
138
138
  },
139
139
  "dependencies": {
140
- "@happyvertical/logger": "^0.98.0",
141
- "@happyvertical/smrt-languages": "0.53.4",
142
- "@happyvertical/smrt-mcp-apps": "0.53.4",
143
- "@happyvertical/smrt-types": "0.53.4",
144
- "@happyvertical/smrt-ui": "0.53.4",
145
- "@happyvertical/smrt-web": "0.53.4",
140
+ "@happyvertical/logger": "^0.100.3",
141
+ "@happyvertical/smrt-languages": "0.53.6",
142
+ "@happyvertical/smrt-mcp-apps": "0.53.6",
143
+ "@happyvertical/smrt-types": "0.53.6",
144
+ "@happyvertical/smrt-ui": "0.53.6",
145
+ "@happyvertical/smrt-web": "0.53.6",
146
146
  "@tanstack/db": "^0.6.14",
147
147
  "@tanstack/svelte-db": "^0.1.91",
148
148
  "esm-env": "^1.2.2"
@@ -177,14 +177,14 @@
177
177
  }
178
178
  },
179
179
  "devDependencies": {
180
- "@happyvertical/smrt-agents": "0.53.4",
181
- "@happyvertical/smrt-chat": "0.53.4",
182
- "@happyvertical/smrt-content": "0.53.4",
183
- "@happyvertical/smrt-core": "0.53.4",
184
- "@happyvertical/smrt-reports": "0.53.4",
185
- "@happyvertical/smrt-scanner": "0.53.4",
186
- "@happyvertical/smrt-tenancy": "0.53.4",
187
- "@happyvertical/smrt-users": "0.53.4",
180
+ "@happyvertical/smrt-agents": "0.53.6",
181
+ "@happyvertical/smrt-chat": "0.53.6",
182
+ "@happyvertical/smrt-content": "0.53.6",
183
+ "@happyvertical/smrt-core": "0.53.6",
184
+ "@happyvertical/smrt-reports": "0.53.6",
185
+ "@happyvertical/smrt-scanner": "0.53.6",
186
+ "@happyvertical/smrt-tenancy": "0.53.6",
187
+ "@happyvertical/smrt-users": "0.53.6",
188
188
  "@sveltejs/package": "^2.5.8",
189
189
  "@sveltejs/vite-plugin-svelte": "^7.3.0",
190
190
  "@testing-library/jest-dom": "^7.0.1",