@happyvertical/smrt-svelte 0.55.16 → 0.55.18
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 +5 -3
- package/agents/cookbook-shell.md +7 -1
- package/agents/overview-surfaces.md +5 -0
- package/agents/workspace.md +155 -11
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte +22 -19
- package/dist/browser-ai/svelte/components/ModelStatusControl.svelte +16 -13
- package/dist/browser-ai/svelte/components/STTTest.svelte +41 -38
- package/dist/browser-ai/svelte/components/VoiceInput.svelte +17 -14
- package/dist/components/activity/ActivityList.svelte +1 -1
- package/dist/components/app/AppShell.svelte +279 -14
- package/dist/components/app/AppShell.svelte.d.ts +63 -2
- package/dist/components/app/AppShell.svelte.d.ts.map +1 -1
- package/dist/components/app/DockToggles.svelte +53 -11
- package/dist/components/app/DockToggles.svelte.d.ts.map +1 -1
- package/dist/components/app/OwnerSetupForm.svelte +98 -34
- package/dist/components/app/OwnerSetupForm.svelte.d.ts +4 -0
- package/dist/components/app/OwnerSetupForm.svelte.d.ts.map +1 -1
- package/dist/components/app/PhoneTabBar.svelte +136 -0
- package/dist/components/app/PhoneTabBar.svelte.d.ts +22 -0
- package/dist/components/app/PhoneTabBar.svelte.d.ts.map +1 -0
- package/dist/components/app/ShellSettingsPage.svelte +17 -2
- package/dist/components/app/ShellSettingsPage.svelte.d.ts +11 -16
- package/dist/components/app/ShellSettingsPage.svelte.d.ts.map +1 -1
- package/dist/components/app/dock-toggle.d.ts +3 -2
- package/dist/components/app/dock-toggle.d.ts.map +1 -1
- package/dist/components/app/index.d.ts +2 -1
- package/dist/components/app/index.d.ts.map +1 -1
- package/dist/components/app/index.js +1 -0
- package/dist/components/app/owner-setup-types.d.ts +5 -0
- package/dist/components/app/owner-setup-types.d.ts.map +1 -1
- package/dist/components/app/phone-tabs.d.ts +41 -0
- package/dist/components/app/phone-tabs.d.ts.map +1 -0
- package/dist/components/app/phone-tabs.js +66 -0
- package/dist/components/app/slot-item.d.ts +16 -0
- package/dist/components/app/slot-item.d.ts.map +1 -1
- package/dist/components/app/view-transition.d.ts +43 -0
- package/dist/components/app/view-transition.d.ts.map +1 -0
- package/dist/components/app/view-transition.js +76 -0
- package/dist/components/audit/AuditList.svelte +4 -1
- package/dist/components/audit/RecordHistory.svelte +4 -1
- package/dist/components/board/Board.svelte +4 -1
- package/dist/components/command-palette/CommandPalette.svelte +4 -1
- package/dist/components/command-palette/CommandPalette.svelte.d.ts +2 -0
- package/dist/components/command-palette/CommandPalette.svelte.d.ts.map +1 -1
- package/dist/components/command-palette/CommandPaletteDialog.svelte +3 -0
- package/dist/components/command-palette/CommandPaletteTrigger.svelte +3 -0
- package/dist/components/cookbook/CookbookApp.svelte +2 -1
- package/dist/components/cookbook/CookbookApp.svelte.d.ts.map +1 -1
- package/dist/components/cookbook/CookbookSectionPage.svelte +4 -1
- package/dist/components/cookbook/brand-theme.d.ts.map +1 -1
- package/dist/components/cookbook/brand-theme.js +21 -2
- package/dist/components/cookbook/build.js +1 -1
- package/dist/components/cookbook/theme.d.ts.map +1 -1
- package/dist/components/cookbook/theme.js +9 -5
- package/dist/components/cookbook/types.d.ts +5 -1
- package/dist/components/cookbook/types.d.ts.map +1 -1
- package/dist/components/forms/AddressInput.svelte +25 -22
- package/dist/components/forms/CheckboxInput.svelte +8 -5
- package/dist/components/forms/DateRangeInput.svelte +41 -38
- package/dist/components/forms/DateTimeInput.svelte +29 -26
- package/dist/components/forms/FileUpload.svelte +24 -21
- package/dist/components/forms/Form.svelte +34 -31
- package/dist/components/forms/FormMicButton.svelte +10 -7
- package/dist/components/forms/FormScope.svelte +4 -1
- package/dist/components/forms/MeasurementInput.svelte +26 -23
- package/dist/components/forms/MoneyInput.svelte +18 -15
- package/dist/components/forms/NumberInput.svelte +17 -14
- package/dist/components/forms/PhoneInput.svelte +37 -34
- package/dist/components/forms/SearchInput.svelte +16 -13
- package/dist/components/forms/SelectInput.svelte +17 -14
- package/dist/components/forms/TextInput.svelte +19 -16
- package/dist/components/forms/TextareaInput.svelte +21 -18
- package/dist/components/import-export/ImportExport.svelte +4 -1
- package/dist/components/module/ModulePanel.svelte +14 -11
- package/dist/components/notifications/NotificationBell.svelte +4 -1
- package/dist/components/overview/OverviewAssistantUndo.svelte +4 -1
- package/dist/components/overview/OverviewGrid.svelte +11 -6
- package/dist/components/overview/OverviewGrid.svelte.d.ts.map +1 -1
- package/dist/components/overview/WidgetOptionsForm.svelte +3 -0
- package/dist/components/overview/widgets/ChartWidget.svelte +7 -4
- package/dist/components/overview/widgets/MetricWidget.svelte +5 -2
- package/dist/components/overview/widgets/NoteWidget.svelte +5 -2
- package/dist/components/overview/widgets/RecordListWidget.svelte +6 -3
- package/dist/components/overview/widgets/ShortcutsWidget.svelte +12 -6
- package/dist/components/overview/widgets/ShortcutsWidget.svelte.d.ts.map +1 -1
- package/dist/components/screens/DetailScreen.svelte +6 -3
- package/dist/components/screens/EditForm.svelte +6 -3
- package/dist/components/screens/ListScreen.svelte +4 -1
- package/dist/components/screens/RecipeScreens.svelte +1 -1
- package/dist/components/settings/SettingsCatalog.svelte +4 -1
- package/dist/components/sortable/Sortable.svelte +11 -5
- package/dist/components/sortable/Sortable.svelte.d.ts.map +1 -1
- package/dist/components/workspace/Breadcrumbs.svelte +4 -1
- package/dist/components/workspace/NavTree.svelte +4 -1
- package/dist/components/workspace/RoleShell.svelte +4 -1
- package/dist/components/workspace/WorkspaceShell.svelte +43 -40
- package/dist/components/workspace/admin-shell/ActivityItem.svelte +4 -1
- package/dist/components/workspace/admin-shell/ActivityList.svelte +5 -2
- package/dist/components/workspace/admin-shell/ActivityTicker.svelte +6 -3
- package/dist/components/workspace/admin-shell/ActivityToasts.svelte +9 -4
- package/dist/components/workspace/admin-shell/AdminShell.svelte +642 -126
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +7 -1
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/AppScopePanel.svelte +4 -1
- package/dist/components/workspace/admin-shell/HotkeyInput.svelte +4 -1
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte +58 -14
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts +9 -2
- package/dist/components/workspace/admin-shell/PhoneBottomBar.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/PhoneTopBar.svelte +15 -6
- package/dist/components/workspace/admin-shell/ShellBrand.svelte +3 -0
- package/dist/components/workspace/admin-shell/ShellCorner.svelte +4 -1
- package/dist/components/workspace/admin-shell/ShellIconButton.svelte +11 -7
- package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte +6 -3
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte +19 -13
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte.d.ts +1 -1
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/ShellNavToggle.svelte +8 -5
- package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte +4 -1
- package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte +24 -17
- package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte +236 -48
- package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte.d.ts +11 -1
- package/dist/components/workspace/admin-shell/ShellSettingsPanel.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/ShellTitle.svelte +4 -1
- package/dist/components/workspace/admin-shell/ShortcutsOverlay.svelte +4 -1
- package/dist/components/workspace/admin-shell/SystemScopePanel.svelte +4 -1
- package/dist/components/workspace/admin-shell/SystemStatusChips.svelte +5 -2
- package/dist/components/workspace/admin-shell/TenantNav.svelte +112 -43
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +4 -3
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte +322 -55
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts +15 -2
- package/dist/components/workspace/admin-shell/WorkspaceAccountMenu.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/motion.d.ts +19 -0
- package/dist/components/workspace/admin-shell/motion.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/motion.js +44 -0
- package/dist/components/workspace/admin-shell/settings.d.ts +1 -0
- package/dist/components/workspace/admin-shell/settings.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/settings.js +1 -1
- package/dist/components/workspace/admin-shell/shell-icons.d.ts +8 -0
- package/dist/components/workspace/admin-shell/shell-icons.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/shell-icons.js +8 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts +6 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/state.svelte.js +15 -0
- package/dist/components/workspace/admin-shell/types.d.ts +13 -3
- package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
- package/dist/components/workspace/tools-dock/ToolsDock.svelte +41 -38
- package/dist/i18n/strings.workspace.d.ts +37 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +42 -2
- package/dist/mcp-apps/McpAppsBridge.svelte +4 -1
- package/package.json +14 -14
|
@@ -136,7 +136,7 @@ function handleChange(e: Event) {
|
|
|
136
136
|
class:smrt-mode={isSmrt}
|
|
137
137
|
class:focused={isFocused}
|
|
138
138
|
class:disabled
|
|
139
|
-
class:has-value={!!value}
|
|
139
|
+
class:has-value={!!value} data-smrt-component="SelectInput"
|
|
140
140
|
>
|
|
141
141
|
{#if label}
|
|
142
142
|
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
@@ -180,10 +180,12 @@ function handleChange(e: Event) {
|
|
|
180
180
|
</div>
|
|
181
181
|
|
|
182
182
|
<style>
|
|
183
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
184
|
+
@layer smrt.theme {
|
|
183
185
|
.smrt-select-field {
|
|
184
|
-
--field-color: var(--smrt-color-on-surface-variant);
|
|
185
|
-
--field-bg: var(--smrt-color-surface-container-highest);
|
|
186
|
-
--field-active: var(--smrt-color-primary);
|
|
186
|
+
--smrt-select-input-field-color: var(--smrt-color-on-surface-variant);
|
|
187
|
+
--smrt-select-input-field-bg: var(--smrt-color-surface-container-highest);
|
|
188
|
+
--smrt-select-input-field-active: var(--smrt-color-primary);
|
|
187
189
|
|
|
188
190
|
display: flex;
|
|
189
191
|
flex-direction: column;
|
|
@@ -195,11 +197,11 @@ function handleChange(e: Event) {
|
|
|
195
197
|
position: relative;
|
|
196
198
|
display: flex;
|
|
197
199
|
align-items: center;
|
|
198
|
-
background-color: var(--smrt-color-surface
|
|
199
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
200
|
-
border-radius: var(--smrt-radius-small
|
|
200
|
+
background-color: var(--smrt-color-surface);
|
|
201
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
202
|
+
border-radius: var(--smrt-radius-small);
|
|
201
203
|
min-height: 40px;
|
|
202
|
-
padding: 0 var(--smrt-spacing-3
|
|
204
|
+
padding: 0 var(--smrt-spacing-3);
|
|
203
205
|
transition: background-color var(--smrt-duration-short3, 200ms) var(--smrt-easing-standard, cubic-bezier(0.2, 0, 0, 1));
|
|
204
206
|
}
|
|
205
207
|
|
|
@@ -221,7 +223,7 @@ function handleChange(e: Event) {
|
|
|
221
223
|
background: transparent;
|
|
222
224
|
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
223
225
|
line-height: var(--smrt-typography-body-large-line-height, 1.5);
|
|
224
|
-
letter-spacing: var(--smrt-typography-body-large-tracking
|
|
226
|
+
letter-spacing: var(--smrt-typography-body-large-tracking);
|
|
225
227
|
color: var(--smrt-color-on-surface);
|
|
226
228
|
width: 100%;
|
|
227
229
|
padding: 0;
|
|
@@ -239,7 +241,7 @@ function handleChange(e: Event) {
|
|
|
239
241
|
display: flex;
|
|
240
242
|
align-items: center;
|
|
241
243
|
justify-content: center;
|
|
242
|
-
color: var(--field-color);
|
|
244
|
+
color: var(--smrt-select-input-field-color);
|
|
243
245
|
pointer-events: none;
|
|
244
246
|
margin-right: -4px;
|
|
245
247
|
}
|
|
@@ -247,12 +249,12 @@ function handleChange(e: Event) {
|
|
|
247
249
|
.active-indicator { display: none; }
|
|
248
250
|
|
|
249
251
|
.focused .container {
|
|
250
|
-
border-color: var(--field-active);
|
|
251
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--field-active) 10%, transparent);
|
|
252
|
+
border-color: var(--smrt-select-input-field-active);
|
|
253
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--smrt-select-input-field-active) 10%, transparent);
|
|
252
254
|
}
|
|
253
255
|
|
|
254
256
|
.supporting-text {
|
|
255
|
-
padding: var(--smrt-spacing-1
|
|
257
|
+
padding: var(--smrt-spacing-1) 0 0;
|
|
256
258
|
font-size: var(--smrt-typography-body-small-size, 0.75rem);
|
|
257
259
|
}
|
|
258
260
|
|
|
@@ -265,6 +267,7 @@ function handleChange(e: Event) {
|
|
|
265
267
|
|
|
266
268
|
/* Smrt mode overrides */
|
|
267
269
|
.smrt-mode {
|
|
268
|
-
--field-active: var(--smrt-color-tertiary);
|
|
270
|
+
--smrt-select-input-field-active: var(--smrt-color-tertiary);
|
|
269
271
|
}
|
|
272
|
+
}
|
|
270
273
|
</style>
|
|
@@ -265,7 +265,7 @@ function handleInput(e: Event) {
|
|
|
265
265
|
class:invalid={showInvalid}
|
|
266
266
|
class:disabled
|
|
267
267
|
class:has-value={!!value}
|
|
268
|
-
class:listening={isHolding}
|
|
268
|
+
class:listening={isHolding} data-smrt-component="TextInput"
|
|
269
269
|
>
|
|
270
270
|
{#if label}
|
|
271
271
|
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
@@ -337,10 +337,12 @@ function handleInput(e: Event) {
|
|
|
337
337
|
</div>
|
|
338
338
|
|
|
339
339
|
<style>
|
|
340
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
341
|
+
@layer smrt.theme {
|
|
340
342
|
.smrt-text-field {
|
|
341
|
-
--field-color: var(--smrt-color-on-surface-variant);
|
|
342
|
-
--field-bg: var(--smrt-color-surface-container-highest);
|
|
343
|
-
--field-active: var(--smrt-color-primary);
|
|
343
|
+
--smrt-text-input-field-color: var(--smrt-color-on-surface-variant);
|
|
344
|
+
--smrt-text-input-field-bg: var(--smrt-color-surface-container-highest);
|
|
345
|
+
--smrt-text-input-field-active: var(--smrt-color-primary);
|
|
344
346
|
|
|
345
347
|
display: flex;
|
|
346
348
|
flex-direction: column;
|
|
@@ -352,11 +354,11 @@ function handleInput(e: Event) {
|
|
|
352
354
|
position: relative;
|
|
353
355
|
display: flex;
|
|
354
356
|
align-items: center;
|
|
355
|
-
background-color: var(--smrt-color-surface
|
|
356
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
357
|
-
border-radius: var(--smrt-radius-small
|
|
357
|
+
background-color: var(--smrt-color-surface);
|
|
358
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
359
|
+
border-radius: var(--smrt-radius-small);
|
|
358
360
|
min-height: 40px;
|
|
359
|
-
padding: 0 var(--smrt-spacing-3
|
|
361
|
+
padding: 0 var(--smrt-spacing-3);
|
|
360
362
|
transition: background-color var(--smrt-duration-short3, 200ms) var(--smrt-easing-standard, cubic-bezier(0.2, 0, 0, 1));
|
|
361
363
|
}
|
|
362
364
|
|
|
@@ -378,7 +380,7 @@ function handleInput(e: Event) {
|
|
|
378
380
|
background: transparent;
|
|
379
381
|
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
380
382
|
line-height: var(--smrt-typography-body-large-line-height, 1.5);
|
|
381
|
-
letter-spacing: var(--smrt-typography-body-large-tracking
|
|
383
|
+
letter-spacing: var(--smrt-typography-body-large-tracking);
|
|
382
384
|
color: var(--smrt-color-on-surface);
|
|
383
385
|
width: 100%;
|
|
384
386
|
padding: 0;
|
|
@@ -393,8 +395,8 @@ function handleInput(e: Event) {
|
|
|
393
395
|
.active-indicator { display: none; }
|
|
394
396
|
|
|
395
397
|
.focused .container {
|
|
396
|
-
border-color: var(--field-active);
|
|
397
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--field-active) 10%, transparent);
|
|
398
|
+
border-color: var(--smrt-text-input-field-active);
|
|
399
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--smrt-text-input-field-active) 10%, transparent);
|
|
398
400
|
}
|
|
399
401
|
|
|
400
402
|
.mic-btn {
|
|
@@ -405,8 +407,8 @@ function handleInput(e: Event) {
|
|
|
405
407
|
justify-content: center;
|
|
406
408
|
border: none;
|
|
407
409
|
background: transparent;
|
|
408
|
-
color: var(--field-color);
|
|
409
|
-
border-radius: var(--smrt-radius-full
|
|
410
|
+
color: var(--smrt-text-input-field-color);
|
|
411
|
+
border-radius: var(--smrt-radius-full);
|
|
410
412
|
cursor: pointer;
|
|
411
413
|
margin-right: -8px;
|
|
412
414
|
transition: all 200ms;
|
|
@@ -418,7 +420,7 @@ function handleInput(e: Event) {
|
|
|
418
420
|
}
|
|
419
421
|
|
|
420
422
|
.supporting-text {
|
|
421
|
-
padding: var(--smrt-spacing-1
|
|
423
|
+
padding: var(--smrt-spacing-1) 0 0;
|
|
422
424
|
font-size: var(--smrt-typography-body-small-size, 0.75rem);
|
|
423
425
|
min-height: 16px;
|
|
424
426
|
}
|
|
@@ -429,8 +431,8 @@ function handleInput(e: Event) {
|
|
|
429
431
|
|
|
430
432
|
/* States */
|
|
431
433
|
.invalid {
|
|
432
|
-
--field-active: var(--smrt-color-error);
|
|
433
|
-
--field-color: var(--smrt-color-error);
|
|
434
|
+
--smrt-text-input-field-active: var(--smrt-color-error);
|
|
435
|
+
--smrt-text-input-field-color: var(--smrt-color-error);
|
|
434
436
|
}
|
|
435
437
|
|
|
436
438
|
.listening {
|
|
@@ -441,4 +443,5 @@ function handleInput(e: Event) {
|
|
|
441
443
|
opacity: 0.38;
|
|
442
444
|
pointer-events: none;
|
|
443
445
|
}
|
|
446
|
+
}
|
|
444
447
|
</style>
|
|
@@ -228,7 +228,7 @@ function handleInput(e: Event) {
|
|
|
228
228
|
class:focused={isFocused}
|
|
229
229
|
class:disabled
|
|
230
230
|
class:has-value={!!value}
|
|
231
|
-
class:listening={isHolding}
|
|
231
|
+
class:listening={isHolding} data-smrt-component="TextareaInput"
|
|
232
232
|
>
|
|
233
233
|
{#if label}
|
|
234
234
|
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
@@ -297,10 +297,12 @@ function handleInput(e: Event) {
|
|
|
297
297
|
</div>
|
|
298
298
|
|
|
299
299
|
<style>
|
|
300
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
301
|
+
@layer smrt.theme {
|
|
300
302
|
.smrt-text-field {
|
|
301
|
-
--field-color: var(--smrt-color-on-surface-variant);
|
|
302
|
-
--field-bg: var(--smrt-color-surface-container-highest);
|
|
303
|
-
--field-active: var(--smrt-color-primary);
|
|
303
|
+
--smrt-textarea-input-field-color: var(--smrt-color-on-surface-variant);
|
|
304
|
+
--smrt-textarea-input-field-bg: var(--smrt-color-surface-container-highest);
|
|
305
|
+
--smrt-textarea-input-field-active: var(--smrt-color-primary);
|
|
304
306
|
|
|
305
307
|
display: flex;
|
|
306
308
|
flex-direction: column;
|
|
@@ -312,11 +314,11 @@ function handleInput(e: Event) {
|
|
|
312
314
|
position: relative;
|
|
313
315
|
display: flex;
|
|
314
316
|
align-items: flex-start;
|
|
315
|
-
background-color: var(--smrt-color-surface
|
|
316
|
-
border: 1px solid var(--smrt-color-outline-variant
|
|
317
|
-
border-radius: var(--smrt-radius-small
|
|
317
|
+
background-color: var(--smrt-color-surface);
|
|
318
|
+
border: 1px solid var(--smrt-color-outline-variant);
|
|
319
|
+
border-radius: var(--smrt-radius-small);
|
|
318
320
|
min-height: 40px;
|
|
319
|
-
padding: 0 var(--smrt-spacing-3
|
|
321
|
+
padding: 0 var(--smrt-spacing-3);
|
|
320
322
|
transition: background-color var(--smrt-duration-short3, 200ms) var(--smrt-easing-standard, cubic-bezier(0.2, 0, 0, 1));
|
|
321
323
|
}
|
|
322
324
|
|
|
@@ -328,8 +330,8 @@ function handleInput(e: Event) {
|
|
|
328
330
|
flex: 1;
|
|
329
331
|
display: flex;
|
|
330
332
|
flex-direction: column;
|
|
331
|
-
padding-top: var(--smrt-spacing-2
|
|
332
|
-
padding-bottom: var(--smrt-spacing-2
|
|
333
|
+
padding-top: var(--smrt-spacing-2);
|
|
334
|
+
padding-bottom: var(--smrt-spacing-2);
|
|
333
335
|
}
|
|
334
336
|
|
|
335
337
|
|
|
@@ -338,7 +340,7 @@ function handleInput(e: Event) {
|
|
|
338
340
|
background: transparent;
|
|
339
341
|
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
340
342
|
line-height: var(--smrt-typography-body-large-line-height, 1.5);
|
|
341
|
-
letter-spacing: var(--smrt-typography-body-large-tracking
|
|
343
|
+
letter-spacing: var(--smrt-typography-body-large-tracking);
|
|
342
344
|
color: var(--smrt-color-on-surface);
|
|
343
345
|
width: 100%;
|
|
344
346
|
padding: 0;
|
|
@@ -354,8 +356,8 @@ function handleInput(e: Event) {
|
|
|
354
356
|
.active-indicator { display: none; }
|
|
355
357
|
|
|
356
358
|
.focused .container {
|
|
357
|
-
border-color: var(--field-active);
|
|
358
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--field-active) 10%, transparent);
|
|
359
|
+
border-color: var(--smrt-textarea-input-field-active);
|
|
360
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--smrt-textarea-input-field-active) 10%, transparent);
|
|
359
361
|
}
|
|
360
362
|
|
|
361
363
|
.mic-btn {
|
|
@@ -366,11 +368,11 @@ function handleInput(e: Event) {
|
|
|
366
368
|
justify-content: center;
|
|
367
369
|
border: none;
|
|
368
370
|
background: transparent;
|
|
369
|
-
color: var(--field-color);
|
|
370
|
-
border-radius: var(--smrt-radius-full
|
|
371
|
+
color: var(--smrt-textarea-input-field-color);
|
|
372
|
+
border-radius: var(--smrt-radius-full);
|
|
371
373
|
cursor: pointer;
|
|
372
374
|
margin-right: -8px;
|
|
373
|
-
margin-top: var(--smrt-spacing-2
|
|
375
|
+
margin-top: var(--smrt-spacing-2);
|
|
374
376
|
transition: all 200ms;
|
|
375
377
|
}
|
|
376
378
|
|
|
@@ -380,7 +382,7 @@ function handleInput(e: Event) {
|
|
|
380
382
|
}
|
|
381
383
|
|
|
382
384
|
.supporting-text {
|
|
383
|
-
padding: var(--smrt-spacing-1
|
|
385
|
+
padding: var(--smrt-spacing-1) 0 0;
|
|
384
386
|
font-size: var(--smrt-typography-body-small-size, 0.75rem);
|
|
385
387
|
min-height: 16px;
|
|
386
388
|
}
|
|
@@ -399,6 +401,7 @@ function handleInput(e: Event) {
|
|
|
399
401
|
}
|
|
400
402
|
|
|
401
403
|
.smrt-mode {
|
|
402
|
-
--field-active: var(--smrt-color-tertiary);
|
|
404
|
+
--smrt-textarea-input-field-active: var(--smrt-color-tertiary);
|
|
403
405
|
}
|
|
406
|
+
}
|
|
404
407
|
</style>
|
|
@@ -319,7 +319,7 @@ async function startExport() {
|
|
|
319
319
|
}
|
|
320
320
|
</script>
|
|
321
321
|
|
|
322
|
-
<section class="smrt-import-export" aria-label={collectionLabel ? `${t(M['ui.importExport.label'])}: ${collectionLabel}` : t(M['ui.importExport.label'])}>
|
|
322
|
+
<section class="smrt-import-export" aria-label={collectionLabel ? `${t(M['ui.importExport.label'])}: ${collectionLabel}` : t(M['ui.importExport.label'])} data-smrt-component="ImportExport">
|
|
323
323
|
{#if canImport && canExport}
|
|
324
324
|
<SegmentedControl
|
|
325
325
|
label={t(M['ui.importExport.mode'])}
|
|
@@ -637,6 +637,8 @@ async function startExport() {
|
|
|
637
637
|
</section>
|
|
638
638
|
|
|
639
639
|
<style>
|
|
640
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
641
|
+
@layer smrt.theme {
|
|
640
642
|
.smrt-import-export {
|
|
641
643
|
display: flex;
|
|
642
644
|
flex-direction: column;
|
|
@@ -675,4 +677,5 @@ async function startExport() {
|
|
|
675
677
|
padding: 0;
|
|
676
678
|
margin: 0;
|
|
677
679
|
}
|
|
680
|
+
}
|
|
678
681
|
</style>
|
|
@@ -56,7 +56,7 @@ const slotMeta = $derived(moduleMeta?.uiSlots?.[slotId]);
|
|
|
56
56
|
class={className}
|
|
57
57
|
/>
|
|
58
58
|
{:else}
|
|
59
|
-
<div class="module-panel-placeholder {className}">
|
|
59
|
+
<div class="module-panel-placeholder {className}" data-smrt-component="ModulePanel">
|
|
60
60
|
<div class="module-panel-placeholder__icon">
|
|
61
61
|
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
|
|
62
62
|
<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/>
|
|
@@ -85,6 +85,8 @@ const slotMeta = $derived(moduleMeta?.uiSlots?.[slotId]);
|
|
|
85
85
|
{/if}
|
|
86
86
|
|
|
87
87
|
<style>
|
|
88
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
89
|
+
@layer smrt.theme {
|
|
88
90
|
.module-panel-placeholder {
|
|
89
91
|
display: flex;
|
|
90
92
|
flex-direction: column;
|
|
@@ -92,15 +94,15 @@ const slotMeta = $derived(moduleMeta?.uiSlots?.[slotId]);
|
|
|
92
94
|
justify-content: center;
|
|
93
95
|
padding: 2rem;
|
|
94
96
|
text-align: center;
|
|
95
|
-
background: var(--smrt-color-surface-container-low
|
|
96
|
-
border: 1px dashed var(--smrt-color-outline-variant
|
|
97
|
-
border-radius: var(--smrt-radius-medium
|
|
97
|
+
background: var(--smrt-color-surface-container-low);
|
|
98
|
+
border: 1px dashed var(--smrt-color-outline-variant);
|
|
99
|
+
border-radius: var(--smrt-radius-medium);
|
|
98
100
|
min-height: 150px;
|
|
99
101
|
gap: 0.75rem;
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
.module-panel-placeholder__icon {
|
|
103
|
-
color: var(--smrt-color-on-surface-variant
|
|
105
|
+
color: var(--smrt-color-on-surface-variant);
|
|
104
106
|
opacity: 0.6;
|
|
105
107
|
}
|
|
106
108
|
|
|
@@ -108,27 +110,28 @@ const slotMeta = $derived(moduleMeta?.uiSlots?.[slotId]);
|
|
|
108
110
|
margin: 0;
|
|
109
111
|
font-size: var(--smrt-typography-title-medium-size, 1rem);
|
|
110
112
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
111
|
-
color: var(--smrt-color-on-surface
|
|
113
|
+
color: var(--smrt-color-on-surface);
|
|
112
114
|
}
|
|
113
115
|
|
|
114
116
|
.module-panel-placeholder__code {
|
|
115
117
|
font-family: var(--smrt-font-family-mono, 'SF Mono', 'Monaco', 'Consolas', monospace);
|
|
116
118
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
117
119
|
padding: var(--smrt-spacing-1, 0.25rem) var(--smrt-spacing-2, 0.5rem);
|
|
118
|
-
background: var(--smrt-color-surface-container-high
|
|
119
|
-
border-radius: var(--smrt-radius-small
|
|
120
|
-
color: var(--smrt-color-on-surface-variant
|
|
120
|
+
background: var(--smrt-color-surface-container-high);
|
|
121
|
+
border-radius: var(--smrt-radius-small);
|
|
122
|
+
color: var(--smrt-color-on-surface-variant);
|
|
121
123
|
}
|
|
122
124
|
|
|
123
125
|
.module-panel-placeholder__hint {
|
|
124
126
|
margin: 0;
|
|
125
127
|
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
126
|
-
color: var(--smrt-color-on-surface-variant
|
|
128
|
+
color: var(--smrt-color-on-surface-variant);
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
.module-panel-placeholder__meta {
|
|
130
132
|
margin: 0;
|
|
131
133
|
font-size: var(--smrt-typography-body-small-size, 0.75rem);
|
|
132
|
-
color: var(--smrt-color-on-surface-variant
|
|
134
|
+
color: var(--smrt-color-on-surface-variant);
|
|
133
135
|
}
|
|
136
|
+
}
|
|
134
137
|
</style>
|
|
@@ -106,7 +106,7 @@ $effect(() => {
|
|
|
106
106
|
});
|
|
107
107
|
</script>
|
|
108
108
|
|
|
109
|
-
<div class="smrt-notification-bell">
|
|
109
|
+
<div class="smrt-notification-bell" data-smrt-component="NotificationBell">
|
|
110
110
|
<Button id={`${instanceId}-trigger`} aria-controls={`${instanceId}-panel`} variant="ghost" aria-haspopup="dialog" aria-expanded={open} onclick={() => (open = !open)}>
|
|
111
111
|
{heading}{#if unread > 0}<span aria-label={t(M['ui.notification_bell.unread'], { count: unread })}> ({unread})</span>{/if}
|
|
112
112
|
</Button>
|
|
@@ -126,6 +126,8 @@ $effect(() => {
|
|
|
126
126
|
</div>
|
|
127
127
|
|
|
128
128
|
<style>
|
|
129
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
130
|
+
@layer smrt.theme {
|
|
129
131
|
.smrt-notification-bell { position: relative; }
|
|
130
132
|
.smrt-notification-bell__panel { position: absolute; z-index: 1; inset-block-start: 100%; inset-inline-end: 0; inline-size: min(24rem, 90vw); padding: var(--smrt-spacing-3); background: var(--smrt-color-surface); border: 1px solid var(--smrt-color-outline); border-radius: var(--smrt-radius-medium); }
|
|
131
133
|
header { display: flex; justify-content: space-between; gap: var(--smrt-spacing-2); }
|
|
@@ -133,4 +135,5 @@ $effect(() => {
|
|
|
133
135
|
li { padding-block: var(--smrt-spacing-2); border-block-end: 1px solid var(--smrt-color-outline-variant); }
|
|
134
136
|
li[data-read='false'] { border-inline-start: 3px solid var(--smrt-color-primary); padding-inline-start: var(--smrt-spacing-2); }
|
|
135
137
|
p { overflow-wrap: anywhere; }
|
|
138
|
+
}
|
|
136
139
|
</style>
|
|
@@ -44,7 +44,7 @@ $effect(() => {
|
|
|
44
44
|
});
|
|
45
45
|
</script>
|
|
46
46
|
|
|
47
|
-
<div class="smrt-overview-assistant-undo {className}" data-active={batch ? '' : undefined}>
|
|
47
|
+
<div class="smrt-overview-assistant-undo {className}" data-active={batch ? '' : undefined} data-smrt-component="OverviewAssistantUndo">
|
|
48
48
|
<!-- The live region stays mounted so each new message is announced. -->
|
|
49
49
|
<span class="smrt-overview-assistant-undo__message" role="status" aria-live="polite">
|
|
50
50
|
{#if batch}
|
|
@@ -64,6 +64,8 @@ $effect(() => {
|
|
|
64
64
|
</div>
|
|
65
65
|
|
|
66
66
|
<style>
|
|
67
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
68
|
+
@layer smrt.theme {
|
|
67
69
|
.smrt-overview-assistant-undo {
|
|
68
70
|
display: flex;
|
|
69
71
|
flex-wrap: wrap;
|
|
@@ -74,4 +76,5 @@ $effect(() => {
|
|
|
74
76
|
.smrt-overview-assistant-undo__message {
|
|
75
77
|
flex: 1 1 12rem;
|
|
76
78
|
}
|
|
79
|
+
}
|
|
77
80
|
</style>
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
type SortableAnnouncement,
|
|
27
27
|
} from '../sortable/controller.svelte.js';
|
|
28
28
|
import { tryUseShellLayout } from '../workspace/admin-shell/layout-context.js';
|
|
29
|
+
import { flipRow } from '../workspace/admin-shell/motion.js';
|
|
29
30
|
import ShellIconButton from '../workspace/admin-shell/ShellIconButton.svelte';
|
|
30
31
|
import ShellSectionIcon from '../workspace/admin-shell/ShellSectionIcon.svelte';
|
|
31
32
|
import type { OverviewOpResult } from './controller.svelte.js';
|
|
@@ -378,7 +379,7 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
378
379
|
</article>
|
|
379
380
|
{/snippet}
|
|
380
381
|
|
|
381
|
-
<div class="smrt-overview" bind:this={rootEl} data-editing={editing ? '' : undefined} data-presentation={presentation}>
|
|
382
|
+
<div class="smrt-overview" bind:this={rootEl} data-editing={editing ? '' : undefined} data-presentation={presentation} data-smrt-component="OverviewGrid">
|
|
382
383
|
{#if editing}
|
|
383
384
|
<div class="smrt-overview__toolbar" role="toolbar" aria-label={t(M['ui.overview.toolbar'])}>
|
|
384
385
|
<ShellIconButton
|
|
@@ -415,11 +416,12 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
415
416
|
<div
|
|
416
417
|
role="listitem"
|
|
417
418
|
class="smrt-overview__item"
|
|
419
|
+
animate:flipRow
|
|
418
420
|
data-span={spanOf(row)}
|
|
419
421
|
data-smrt-overview-item={row.widget.id}
|
|
420
422
|
data-dragging={dragged === row.widget.id ? '' : undefined}
|
|
421
423
|
data-drop={mark}
|
|
422
|
-
style:--span={spanOf(row)}
|
|
424
|
+
style:--smrt-overview-grid-span={spanOf(row)}
|
|
423
425
|
ondragover={(event) => event.preventDefault()}
|
|
424
426
|
ondrop={(event) => {
|
|
425
427
|
if (!sortable.drag) return;
|
|
@@ -537,15 +539,17 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
537
539
|
{/if}
|
|
538
540
|
|
|
539
541
|
<style>
|
|
542
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
543
|
+
@layer smrt.theme {
|
|
540
544
|
.smrt-overview { container-type: inline-size; min-inline-size: 0; }
|
|
541
545
|
.smrt-overview__toolbar { display: flex; gap: var(--smrt-spacing-1); margin-block-end: var(--smrt-spacing-2); }
|
|
542
546
|
.smrt-overview__empty { margin: 0; color: var(--smrt-color-on-surface-variant); }
|
|
543
547
|
/* Gaps are tile padding, not grid gap, so a pointer never crosses a dead
|
|
544
548
|
zone between tiles while dragging. */
|
|
545
|
-
.smrt-overview__list { --
|
|
546
|
-
.smrt-overview__item { position: relative; grid-column: span var(--span, 1); min-inline-size: 0; padding: var(--
|
|
549
|
+
.smrt-overview__list { --smrt-overview-grid-pad: var(--smrt-spacing-2); display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: calc(-1 * var(--smrt-overview-grid-pad)); }
|
|
550
|
+
.smrt-overview__item { position: relative; grid-column: span var(--smrt-overview-grid-span, 1); min-inline-size: 0; padding: var(--smrt-overview-grid-pad); }
|
|
547
551
|
.smrt-overview__item[data-dragging] { opacity: 0.5; }
|
|
548
|
-
.smrt-overview__item[data-drop]::before { content: ''; position: absolute; inset-block: var(--
|
|
552
|
+
.smrt-overview__item[data-drop]::before { content: ''; position: absolute; inset-block: var(--smrt-overview-grid-pad); inline-size: 0.1875rem; border-radius: var(--smrt-radius-full); background: var(--smrt-color-primary); }
|
|
549
553
|
.smrt-overview__item[data-drop='before']::before { inset-inline-start: 0; }
|
|
550
554
|
.smrt-overview__item[data-drop='after']::before { inset-inline-end: 0; }
|
|
551
555
|
.smrt-overview__tile { position: relative; block-size: 100%; box-sizing: border-box; padding: var(--smrt-spacing-3); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-large, var(--smrt-radius-medium)); background: var(--smrt-color-surface); color: var(--smrt-color-on-surface); }
|
|
@@ -561,7 +565,7 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
561
565
|
.smrt-overview__handle:hover { background: var(--smrt-color-surface-container-high); }
|
|
562
566
|
.smrt-overview__handle:focus-visible { outline: 2px solid var(--smrt-color-primary); outline-offset: 2px; }
|
|
563
567
|
.smrt-overview__handle[aria-pressed='true'] { background: var(--smrt-color-primary-container); color: var(--smrt-color-on-primary-container); }
|
|
564
|
-
.smrt-overview__resize { position: absolute; inset-block-start: 50%; inset-inline-end: -0.4375rem; inline-size: 0.875rem; block-size: 2.75rem; transform: translateY(-50%); border: 1px solid var(--smrt-color-outline); border-radius: var(--smrt-radius-full
|
|
568
|
+
.smrt-overview__resize { position: absolute; inset-block-start: 50%; inset-inline-end: -0.4375rem; inline-size: 0.875rem; block-size: 2.75rem; transform: translateY(-50%); border: 1px solid var(--smrt-color-outline); border-radius: var(--smrt-radius-full); background: var(--smrt-color-surface-container-high); cursor: ew-resize; touch-action: none; }
|
|
565
569
|
.smrt-overview__resize:hover { background: var(--smrt-color-primary-container); }
|
|
566
570
|
.smrt-overview__resize:focus-visible { outline: 2px solid var(--smrt-color-primary); outline-offset: 2px; }
|
|
567
571
|
.smrt-overview__choices { display: grid; gap: var(--smrt-spacing-1); margin: 0; padding: 0; list-style: none; }
|
|
@@ -579,4 +583,5 @@ const headingTag = $derived(`h${headingLevel}`);
|
|
|
579
583
|
.smrt-overview__list { grid-template-columns: minmax(0, 1fr); }
|
|
580
584
|
.smrt-overview__list .smrt-overview__item[data-span] { grid-column: span 1; }
|
|
581
585
|
}
|
|
586
|
+
}
|
|
582
587
|
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverviewGrid.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/overview/OverviewGrid.svelte.ts"],"names":[],"mappings":"
|
|
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;AA6bzD,QAAA,MAAM,YAAY,uDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -186,8 +186,11 @@ const modelValues = $derived(
|
|
|
186
186
|
</Form>
|
|
187
187
|
|
|
188
188
|
<style>
|
|
189
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
190
|
+
@layer smrt.theme {
|
|
189
191
|
.smrt-widget-form__check { display: flex; flex-direction: column; gap: var(--smrt-spacing-1); }
|
|
190
192
|
.smrt-widget-form__hint { color: var(--smrt-color-on-surface-variant); }
|
|
191
193
|
.smrt-widget-form__error { color: var(--smrt-color-error); }
|
|
192
194
|
.smrt-widget-form__none { margin: 0; color: var(--smrt-color-on-surface-variant); }
|
|
195
|
+
}
|
|
193
196
|
</style>
|
|
@@ -57,9 +57,9 @@ const summary = $derived(
|
|
|
57
57
|
</script>
|
|
58
58
|
|
|
59
59
|
{#if points.length === 0}
|
|
60
|
-
<p class="smrt-chart__empty">{t(M['ui.overview.no_data'])}</p>
|
|
60
|
+
<p class="smrt-chart__empty" data-smrt-component="ChartWidget">{t(M['ui.overview.no_data'])}</p>
|
|
61
61
|
{:else if style === 'line'}
|
|
62
|
-
<div class="smrt-chart">
|
|
62
|
+
<div class="smrt-chart" data-smrt-component="ChartWidget">
|
|
63
63
|
<svg class="smrt-chart__line" viewBox="0 0 100 40" preserveAspectRatio="none" role="img" aria-label={summary}>
|
|
64
64
|
<polyline points={polyline} fill="none" stroke="currentColor" stroke-width="2" vector-effect="non-scaling-stroke" />
|
|
65
65
|
</svg>
|
|
@@ -83,7 +83,7 @@ const summary = $derived(
|
|
|
83
83
|
</table>
|
|
84
84
|
</div>
|
|
85
85
|
{:else}
|
|
86
|
-
<ul class="smrt-chart__bars" aria-label={summary}>
|
|
86
|
+
<ul class="smrt-chart__bars" aria-label={summary} data-smrt-component="ChartWidget">
|
|
87
87
|
{#each points as point, index (index)}
|
|
88
88
|
<li class="smrt-chart__row">
|
|
89
89
|
<span class="smrt-chart__label">{point.label}</span>
|
|
@@ -97,15 +97,18 @@ const summary = $derived(
|
|
|
97
97
|
{/if}
|
|
98
98
|
|
|
99
99
|
<style>
|
|
100
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
101
|
+
@layer smrt.theme {
|
|
100
102
|
.smrt-chart { display: grid; gap: var(--smrt-spacing-1); color: var(--smrt-color-primary); }
|
|
101
103
|
.smrt-chart__line { inline-size: 100%; block-size: 7rem; overflow: visible; }
|
|
102
104
|
.smrt-chart__axis { display: flex; justify-content: space-between; margin: 0; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-label-large-size, 0.75rem); }
|
|
103
105
|
.smrt-chart__bars { display: grid; gap: var(--smrt-spacing-2); margin: 0; padding: 0; list-style: none; }
|
|
104
106
|
.smrt-chart__row { display: grid; grid-template-columns: minmax(4rem, 30%) minmax(0, 1fr) auto; align-items: center; gap: var(--smrt-spacing-2); font-size: var(--smrt-typography-body-medium-size, 0.875rem); color: var(--smrt-color-on-surface); }
|
|
105
107
|
.smrt-chart__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
106
|
-
.smrt-chart__track { display: block; block-size: 0.625rem; border-radius: var(--smrt-radius-full
|
|
108
|
+
.smrt-chart__track { display: block; block-size: 0.625rem; border-radius: var(--smrt-radius-full); background: var(--smrt-color-surface-container-high); overflow: hidden; }
|
|
107
109
|
.smrt-chart__bar { display: block; block-size: 100%; border-radius: inherit; background: var(--smrt-color-primary); }
|
|
108
110
|
.smrt-chart__value { font-variant-numeric: tabular-nums; color: var(--smrt-color-on-surface-variant); }
|
|
109
111
|
.smrt-chart__empty { margin: 0; color: var(--smrt-color-on-surface-variant); }
|
|
110
112
|
.smrt-chart__table { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
|
|
113
|
+
}
|
|
111
114
|
</style>
|
|
@@ -56,7 +56,7 @@ const href = $derived(
|
|
|
56
56
|
</script>
|
|
57
57
|
|
|
58
58
|
{#if valid && metric}
|
|
59
|
-
<div class="smrt-metric">
|
|
59
|
+
<div class="smrt-metric" data-smrt-component="MetricWidget">
|
|
60
60
|
{#if href}
|
|
61
61
|
<a class="smrt-metric__value" {href}>{text}</a>
|
|
62
62
|
{:else}
|
|
@@ -73,14 +73,17 @@ const href = $derived(
|
|
|
73
73
|
{/if}
|
|
74
74
|
</div>
|
|
75
75
|
{:else}
|
|
76
|
-
<p class="smrt-metric__label">{t(M['ui.overview.no_data'])}</p>
|
|
76
|
+
<p class="smrt-metric__label" data-smrt-component="MetricWidget">{t(M['ui.overview.no_data'])}</p>
|
|
77
77
|
{/if}
|
|
78
78
|
|
|
79
79
|
<style>
|
|
80
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
81
|
+
@layer smrt.theme {
|
|
80
82
|
.smrt-metric { display: grid; gap: var(--smrt-spacing-1); }
|
|
81
83
|
.smrt-metric__value { margin: 0; color: var(--smrt-color-on-surface); font-size: var(--smrt-typography-display-small-size, 2rem); font-weight: var(--smrt-typography-weight-medium, 500); line-height: 1.1; text-decoration: none; font-variant-numeric: tabular-nums; }
|
|
82
84
|
a.smrt-metric__value:hover { text-decoration: underline; }
|
|
83
85
|
a.smrt-metric__value:focus-visible { outline: 2px solid var(--smrt-color-primary); outline-offset: 2px; border-radius: var(--smrt-radius-small, 0.25rem); }
|
|
84
86
|
.smrt-metric__label { margin: 0; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-body-medium-size, 0.875rem); }
|
|
85
87
|
.smrt-metric__change { margin: 0; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-label-large-size, 0.875rem); }
|
|
88
|
+
}
|
|
86
89
|
</style>
|
|
@@ -24,9 +24,9 @@ const blocks = $derived(
|
|
|
24
24
|
{/snippet}
|
|
25
25
|
|
|
26
26
|
{#if blocks.length === 0}
|
|
27
|
-
<p class="smrt-note__empty">{t(M['ui.overview.no_data'])}</p>
|
|
27
|
+
<p class="smrt-note__empty" data-smrt-component="NoteWidget">{t(M['ui.overview.no_data'])}</p>
|
|
28
28
|
{:else}
|
|
29
|
-
<div class="smrt-note">
|
|
29
|
+
<div class="smrt-note" data-smrt-component="NoteWidget">
|
|
30
30
|
{#each blocks as block, index (index)}
|
|
31
31
|
{#if block.type === 'heading'}
|
|
32
32
|
<p class="smrt-note__heading" data-level={block.level}><strong>{@render inline(block.children)}</strong></p>
|
|
@@ -48,6 +48,8 @@ const blocks = $derived(
|
|
|
48
48
|
{/if}
|
|
49
49
|
|
|
50
50
|
<style>
|
|
51
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
52
|
+
@layer smrt.theme {
|
|
51
53
|
.smrt-note { display: grid; gap: var(--smrt-spacing-2); color: var(--smrt-color-on-surface); font-size: var(--smrt-typography-body-medium-size, 0.875rem); overflow-wrap: anywhere; }
|
|
52
54
|
.smrt-note p, .smrt-note ul, .smrt-note ol, .smrt-note blockquote, .smrt-note pre { margin: 0; }
|
|
53
55
|
.smrt-note ul, .smrt-note ol { padding-inline-start: var(--smrt-spacing-5, 1.25rem); }
|
|
@@ -58,4 +60,5 @@ const blocks = $derived(
|
|
|
58
60
|
.smrt-note__heading[data-level='1'] { font-size: var(--smrt-typography-title-large-size, 1.25rem); }
|
|
59
61
|
.smrt-note__heading[data-level='2'] { font-size: var(--smrt-typography-title-medium-size, 1.125rem); }
|
|
60
62
|
.smrt-note__empty { margin: 0; color: var(--smrt-color-on-surface-variant); }
|
|
63
|
+
}
|
|
61
64
|
</style>
|
|
@@ -49,9 +49,9 @@ const viewAll = $derived(
|
|
|
49
49
|
</script>
|
|
50
50
|
|
|
51
51
|
{#if rows.length === 0}
|
|
52
|
-
<p class="smrt-records__empty">{t(M['ui.overview.records.empty'])}</p>
|
|
52
|
+
<p class="smrt-records__empty" data-smrt-component="RecordListWidget">{t(M['ui.overview.records.empty'])}</p>
|
|
53
53
|
{:else}
|
|
54
|
-
<ul class="smrt-records">
|
|
54
|
+
<ul class="smrt-records" data-smrt-component="RecordListWidget">
|
|
55
55
|
{#each rows as row (row.id)}
|
|
56
56
|
<li class="smrt-records__row">
|
|
57
57
|
<span class="smrt-records__main">
|
|
@@ -68,7 +68,7 @@ const viewAll = $derived(
|
|
|
68
68
|
</ul>
|
|
69
69
|
{/if}
|
|
70
70
|
{#if total !== null || viewAll}
|
|
71
|
-
<p class="smrt-records__foot">
|
|
71
|
+
<p class="smrt-records__foot" data-smrt-component="RecordListWidget">
|
|
72
72
|
{#if total !== null}
|
|
73
73
|
<span>{t(M['ui.overview.records.total'], { count: new Intl.NumberFormat(locale).format(total) })}</span>
|
|
74
74
|
{/if}
|
|
@@ -77,6 +77,8 @@ const viewAll = $derived(
|
|
|
77
77
|
{/if}
|
|
78
78
|
|
|
79
79
|
<style>
|
|
80
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
81
|
+
@layer smrt.theme {
|
|
80
82
|
.smrt-records { display: grid; margin: 0; padding: 0; list-style: none; }
|
|
81
83
|
.smrt-records__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-2) 0; border-block-end: 1px solid var(--smrt-color-outline-variant); }
|
|
82
84
|
.smrt-records__row:last-child { border-block-end: 0; }
|
|
@@ -88,4 +90,5 @@ const viewAll = $derived(
|
|
|
88
90
|
.smrt-records__foot { display: flex; justify-content: space-between; gap: var(--smrt-spacing-3); margin: var(--smrt-spacing-2) 0 0; color: var(--smrt-color-on-surface-variant); font-size: var(--smrt-typography-body-medium-size, 0.875rem); }
|
|
89
91
|
.smrt-records__foot a { color: var(--smrt-color-primary); }
|
|
90
92
|
.smrt-records__empty { margin: 0; color: var(--smrt-color-on-surface-variant); }
|
|
93
|
+
}
|
|
91
94
|
</style>
|