@happyvertical/smrt-svelte 0.55.6 → 0.55.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +17 -2
- package/README.md +83 -4
- package/agents/workspace.md +202 -5
- package/dist/browser-ai/adapters/stt/dictation-source.d.ts.map +1 -1
- package/dist/browser-ai/adapters/stt/dictation-source.js +8 -2
- package/dist/browser-ai/adapters/stt/factory.d.ts +6 -3
- package/dist/browser-ai/adapters/stt/factory.d.ts.map +1 -1
- package/dist/browser-ai/adapters/stt/factory.js +19 -9
- package/dist/browser-ai/adapters/stt/index.d.ts +3 -1
- package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -1
- package/dist/browser-ai/adapters/stt/index.js +3 -1
- package/dist/browser-ai/adapters/stt/local-speech-model.d.ts +111 -0
- package/dist/browser-ai/adapters/stt/local-speech-model.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/local-speech-model.js +377 -0
- package/dist/browser-ai/adapters/stt/local-speech.d.ts +82 -0
- package/dist/browser-ai/adapters/stt/local-speech.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/local-speech.js +317 -0
- package/dist/browser-ai/adapters/stt/local-speech.worker.d.ts +2 -0
- package/dist/browser-ai/adapters/stt/local-speech.worker.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/local-speech.worker.js +32 -0
- package/dist/browser-ai/adapters/stt/transformers-env.d.ts +8 -0
- package/dist/browser-ai/adapters/stt/transformers-env.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/transformers-env.js +17 -0
- package/dist/browser-ai/adapters/stt/types.d.ts +54 -9
- package/dist/browser-ai/adapters/stt/types.d.ts.map +1 -1
- package/dist/browser-ai/capabilities/speech-probe.d.ts +29 -0
- package/dist/browser-ai/capabilities/speech-probe.d.ts.map +1 -0
- package/dist/browser-ai/capabilities/speech-probe.js +19 -0
- package/dist/browser-ai/core/errors.d.ts +9 -0
- package/dist/browser-ai/core/errors.d.ts.map +1 -1
- package/dist/browser-ai/core/errors.js +12 -0
- package/dist/browser-ai/index.d.ts +1 -0
- package/dist/browser-ai/index.d.ts.map +1 -1
- package/dist/browser-ai/index.js +1 -0
- package/dist/components/app/AppShell.svelte +587 -33
- package/dist/components/app/AppShell.svelte.d.ts +75 -4
- package/dist/components/app/AppShell.svelte.d.ts.map +1 -1
- package/dist/components/app/DockToggles.svelte +0 -1
- package/dist/components/app/dock-toggle.d.ts +7 -1
- 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/slot-item.d.ts +21 -0
- package/dist/components/app/slot-item.d.ts.map +1 -0
- package/dist/components/app/slot-item.js +1 -0
- package/dist/components/forms/AddressInput.svelte +2 -15
- package/dist/components/forms/AddressInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/DateRangeInput.svelte +2 -15
- package/dist/components/forms/DateRangeInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/DateTimeInput.svelte +8 -15
- package/dist/components/forms/DateTimeInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/MeasurementInput.svelte +2 -15
- package/dist/components/forms/MeasurementInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/MoneyInput.svelte +8 -25
- package/dist/components/forms/MoneyInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/NumberInput.svelte +7 -15
- package/dist/components/forms/NumberInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/PhoneInput.svelte +7 -15
- package/dist/components/forms/PhoneInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/SelectInput.svelte +34 -40
- package/dist/components/forms/SelectInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/TextInput.svelte +20 -37
- package/dist/components/forms/TextInput.svelte.d.ts.map +1 -1
- package/dist/components/forms/TextareaInput.svelte +19 -35
- package/dist/components/forms/TextareaInput.svelte.d.ts.map +1 -1
- package/dist/components/sortable/Sortable.svelte +6 -33
- package/dist/components/sortable/Sortable.svelte.d.ts.map +1 -1
- package/dist/components/sortable/announce.d.ts +5 -0
- package/dist/components/sortable/announce.d.ts.map +1 -0
- package/dist/components/sortable/announce.js +33 -0
- package/dist/components/workspace/admin-shell/AdminShell.svelte +424 -58
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +27 -2
- package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/ShellBrand.svelte +86 -0
- package/dist/components/workspace/admin-shell/ShellBrand.svelte.d.ts +18 -0
- package/dist/components/workspace/admin-shell/ShellBrand.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellIconButton.svelte +77 -0
- package/dist/components/workspace/admin-shell/ShellIconButton.svelte.d.ts +26 -0
- package/dist/components/workspace/admin-shell/ShellIconButton.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte +88 -16
- package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte +531 -0
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte.d.ts +26 -0
- package/dist/components/workspace/admin-shell/ShellNavEditor.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte +57 -0
- package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte.d.ts +22 -0
- package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte +290 -0
- package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte.d.ts +32 -0
- package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/TenantNav.svelte +67 -2
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +8 -0
- package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/layout-controller.svelte.d.ts +67 -0
- package/dist/components/workspace/admin-shell/layout-controller.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/layout-controller.svelte.js +129 -1
- package/dist/components/workspace/admin-shell/layout.d.ts +122 -0
- package/dist/components/workspace/admin-shell/layout.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/layout.js +410 -10
- package/dist/components/workspace/admin-shell/settings.js +4 -4
- package/dist/components/workspace/admin-shell/shell-icons.d.ts +45 -0
- package/dist/components/workspace/admin-shell/shell-icons.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/shell-icons.js +66 -0
- package/dist/components/workspace/admin-shell/slot-labels.d.ts +33 -0
- package/dist/components/workspace/admin-shell/slot-labels.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/slot-labels.js +33 -0
- package/dist/components/workspace/admin-shell/slots.d.ts +50 -0
- package/dist/components/workspace/admin-shell/slots.d.ts.map +1 -0
- package/dist/components/workspace/admin-shell/slots.js +77 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts +35 -0
- package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
- package/dist/components/workspace/admin-shell/state.svelte.js +111 -0
- package/dist/components/workspace/admin-shell/types.d.ts +101 -1
- package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
- package/dist/components/workspace/index.d.ts +9 -2
- package/dist/components/workspace/index.d.ts.map +1 -1
- package/dist/components/workspace/index.js +6 -0
- package/dist/i18n/strings.workspace.d.ts +49 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -1
- package/dist/i18n/strings.workspace.js +49 -0
- package/package.json +30 -19
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts +0 -51
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts.map +0 -1
- package/dist/browser-ai/adapters/stt/whisper-wasm.js +0 -380
|
@@ -3,17 +3,25 @@ import '@happyvertical/smrt-ui/themes/styles/all.css';
|
|
|
3
3
|
import '@happyvertical/smrt-ui/themes/styles/base.css';
|
|
4
4
|
import '@happyvertical/smrt-ui/themes/styles/fonts.css';
|
|
5
5
|
import type { DataSurfaceRegistry } from '@happyvertical/smrt-ui/data';
|
|
6
|
-
import { type Snippet } from 'svelte';
|
|
6
|
+
import { type Component, type Snippet } from 'svelte';
|
|
7
7
|
import type { User } from '../../state/app-state.js';
|
|
8
8
|
import type { WebMcpProviderConfig } from '../../web/webmcp-provider.js';
|
|
9
9
|
import { type ShellLayout } from '../workspace/admin-shell/layout.js';
|
|
10
|
-
import { type
|
|
10
|
+
import { type ShellSlot } from '../workspace/admin-shell/slots.js';
|
|
11
|
+
import { type AdminShellProps, type ShellNavGroup, type ShellNavItem, type ShellPanelDefaults, type ShellSectionActionsContext } from '../workspace/admin-shell/types.js';
|
|
11
12
|
import type { DockToggle } from './dock-toggle.js';
|
|
13
|
+
import type { ShellSlotItem } from './slot-item.js';
|
|
12
14
|
interface Props {
|
|
13
15
|
/** Application name shown in the shell brand and app panel. */
|
|
14
16
|
title?: string;
|
|
15
17
|
/** Secondary line under the application name in the shell brand. */
|
|
16
18
|
subtitle?: string;
|
|
19
|
+
/** Logo shown before the title in the shell brand (and as the compact rail mark). */
|
|
20
|
+
logoSrc?: string;
|
|
21
|
+
/** Alternative text for the logo (decorative by default: the title names the app). */
|
|
22
|
+
logoAlt?: string;
|
|
23
|
+
/** Where the brand links to (e.g. the app's home); unlinked when omitted. */
|
|
24
|
+
homeHref?: string;
|
|
17
25
|
/** localStorage key for the user's shell layout preferences. */
|
|
18
26
|
storageKey?: string;
|
|
19
27
|
/** Navigation rendered in the tenant (left) panel. */
|
|
@@ -65,7 +73,7 @@ interface Props {
|
|
|
65
73
|
*/
|
|
66
74
|
dock?: Snippet<[DataSurfaceRegistry]>;
|
|
67
75
|
/**
|
|
68
|
-
* Icon buttons
|
|
76
|
+
* Icon buttons, each placed in a shell `slot` (default `header.end`), each toggling
|
|
69
77
|
* the `ShellDockTool` with the same id open and closed. `aria-pressed` and
|
|
70
78
|
* `aria-expanded` follow the dock, focus moves into the dock when it
|
|
71
79
|
* opens and back to the button when it closes (Escape included). The
|
|
@@ -73,9 +81,72 @@ interface Props {
|
|
|
73
81
|
* drive the same dock from code with `useShellDock()`.
|
|
74
82
|
*/
|
|
75
83
|
dockToggles?: DockToggle[];
|
|
84
|
+
/**
|
|
85
|
+
* Host content for any shell slot (`header.start|center|end`,
|
|
86
|
+
* `footer.start|center|end`, `leftSidebar.header|footer`,
|
|
87
|
+
* `rightSidebar.header|footer`). Rendered before dock toggles placed in the
|
|
88
|
+
* same slot. Each snippet is one movable item with id `slot:<slot>`; use
|
|
89
|
+
* `slotItems` for individually movable content.
|
|
90
|
+
*/
|
|
91
|
+
slots?: Partial<Record<ShellSlot, Snippet>>;
|
|
92
|
+
/**
|
|
93
|
+
* Host items with stable ids, each in a default slot. Users can move them
|
|
94
|
+
* between slots in the layout editor (`ShellLayout.placements`). Rendered
|
|
95
|
+
* after `slots` content and before dock toggles in the same slot.
|
|
96
|
+
*/
|
|
97
|
+
slotItems?: ShellSlotItem[];
|
|
98
|
+
/**
|
|
99
|
+
* Opt in to editing the layout in place. Adds the built-in shell item
|
|
100
|
+
* `item:layout-edit` (a pencil toggle, default slot `header.end`, or
|
|
101
|
+
* `{ slot }`); while on, slots render as labelled drop zones, items and
|
|
102
|
+
* navigation get grips, section headings get overlay icons and a floating
|
|
103
|
+
* toolbar, and hidden regions render as strips with a show control. Hosts
|
|
104
|
+
* and assistants drive it with `useShellLayout()` (`editing`,
|
|
105
|
+
* `setEditing`). Off (the default) leaves existing apps unchanged.
|
|
106
|
+
*
|
|
107
|
+
* `{ floating: true }` instead renders the toggle as a fixed round button
|
|
108
|
+
* in the top-right corner of the shell: not a placeable item (no slot, no
|
|
109
|
+
* grip), so hidden regions never displace it. The header and right sidebar
|
|
110
|
+
* reserve room for it so it covers none of their controls.
|
|
111
|
+
*/
|
|
112
|
+
layoutEditing?: boolean | {
|
|
113
|
+
slot?: ShellSlot;
|
|
114
|
+
floating?: boolean;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Host icon buttons for each navigation section while the layout is edited
|
|
118
|
+
* (e.g. an Options gear or Help), rendered in the section's overlay icons
|
|
119
|
+
* and its floating toolbar. Receives the section id, label, whether it is
|
|
120
|
+
* user-created, and `editing`.
|
|
121
|
+
*/
|
|
122
|
+
sectionActions?: Snippet<[ShellSectionActionsContext]>;
|
|
123
|
+
/**
|
|
124
|
+
* `'items'` (default) lists every section's entries in the left sidebar.
|
|
125
|
+
* `'sections'` lists only the sections, one icon link each, to the
|
|
126
|
+
* section's own page (`ShellNavGroup.href`, else `sectionHref`, else its
|
|
127
|
+
* first entry); render the entries there with `ShellSectionMenu`. In edit
|
|
128
|
+
* mode the sidebar edits sections (grip, rename, hide, icon); entries are
|
|
129
|
+
* edited on the section page.
|
|
130
|
+
*/
|
|
131
|
+
navMode?: 'items' | 'sections';
|
|
132
|
+
/** Section page for groups without an `href` (e.g. user-created ones). */
|
|
133
|
+
sectionHref?: (sectionId: string) => string | undefined;
|
|
134
|
+
/** Renders host icon names for sections and entries. */
|
|
135
|
+
iconComponent?: Component<{
|
|
136
|
+
name: string;
|
|
137
|
+
size?: number;
|
|
138
|
+
}>;
|
|
139
|
+
/**
|
|
140
|
+
* Edge toggle buttons and WASD drop-down panels (see `AdminShell`).
|
|
141
|
+
* Default `false`: regions are laid out inline and no toggles or hotkeys
|
|
142
|
+
* exist. Pass `true` (or a per-edge map) for the previous behaviour.
|
|
143
|
+
*/
|
|
144
|
+
edgeToggles?: AdminShellProps['edgeToggles'];
|
|
145
|
+
/** Keyboard shortcuts; default follows `edgeToggles` (see `AdminShell`). */
|
|
146
|
+
hotkeys?: boolean;
|
|
76
147
|
children: Snippet;
|
|
77
148
|
}
|
|
78
|
-
declare const AppShell:
|
|
149
|
+
declare const AppShell: Component<Props, {}, "">;
|
|
79
150
|
type AppShell = ReturnType<typeof AppShell>;
|
|
80
151
|
export default AppShell;
|
|
81
152
|
//# sourceMappingURL=AppShell.svelte.d.ts.map
|
|
@@ -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,+CAA+C,CAAC;AACvD,OAAO,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,EAAE,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"AppShell.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/app/AppShell.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ShellSlot } from '../workspace/admin-shell/slots.js';
|
|
2
|
+
/** A button that toggles one dock tool. */
|
|
2
3
|
export interface DockToggle {
|
|
3
4
|
/** Id of the `ShellDockTool` to toggle. */
|
|
4
5
|
tool: string;
|
|
@@ -10,5 +11,10 @@ export interface DockToggle {
|
|
|
10
11
|
* label's first letter stands in.
|
|
11
12
|
*/
|
|
12
13
|
icon?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Shell slot the button renders in. Default `header.end`. If that slot's
|
|
16
|
+
* region is hidden the shell moves it along the slot fallback chain.
|
|
17
|
+
*/
|
|
18
|
+
slot?: ShellSlot;
|
|
13
19
|
}
|
|
14
20
|
//# sourceMappingURL=dock-toggle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dock-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/app/dock-toggle.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"dock-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/app/dock-toggle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAEnE,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* server or `$app/*` imports. Pair with the server `load`/`actions` from
|
|
6
6
|
* `@happyvertical/smrt-app-runtime/sveltekit`.
|
|
7
7
|
*/
|
|
8
|
-
export { type ShellLayout, ShellLayoutController, ShellLayoutEditor, tryUseShellLayout, useShellLayout, } from '../workspace/index.js';
|
|
8
|
+
export { type ShellLayout, ShellLayoutController, ShellLayoutEditor, type ShellSectionActionsContext, tryUseShellLayout, useShellLayout, } from '../workspace/index.js';
|
|
9
9
|
export { default as AppShell } from './AppShell.svelte';
|
|
10
10
|
export type { DockToggle } from './dock-toggle.js';
|
|
11
11
|
export { default as OwnerSetupForm } from './OwnerSetupForm.svelte';
|
|
@@ -13,4 +13,5 @@ export type { OwnerSetupData, OwnerSetupFormResult, } from './owner-setup-types.
|
|
|
13
13
|
export { default as RuntimeDiagnosticsWebMcp } from './RuntimeDiagnosticsWebMcp.svelte';
|
|
14
14
|
export { createRuntimeDiagnosticsWebMcpTool, type RegisterRuntimeDiagnosticsWebMcpOptions, RUNTIME_DIAGNOSTICS_ENDPOINT, RUNTIME_DIAGNOSTICS_WEBMCP_TOOL_NAME, type RuntimeDiagnosticsWebMcpOwner, registerRuntimeDiagnosticsWebMcp, } from './runtime-diagnostics-webmcp.js';
|
|
15
15
|
export { default as ShellSettingsPage } from './ShellSettingsPage.svelte';
|
|
16
|
+
export type { ShellSlotItem } from './slot-item.js';
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EACV,cAAc,EACd,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EACL,kCAAkC,EAClC,KAAK,uCAAuC,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,KAAK,6BAA6B,EAClC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/app/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,iBAAiB,EACjB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EACV,cAAc,EACd,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EACL,kCAAkC,EAClC,KAAK,uCAAuC,EAC5C,4BAA4B,EAC5B,oCAAoC,EACpC,KAAK,6BAA6B,EAClC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { ShellSlot } from '../workspace/admin-shell/slots.js';
|
|
3
|
+
/**
|
|
4
|
+
* A host item that lives in a shell slot and that users can move to another
|
|
5
|
+
* slot from the layout editor (`ShellLayout.placements`). Prefer this over the
|
|
6
|
+
* `slots` prop when the content should be individually movable.
|
|
7
|
+
*/
|
|
8
|
+
export interface ShellSlotItem {
|
|
9
|
+
/**
|
|
10
|
+
* Stable id; keep it unchanged across releases because a stored layout
|
|
11
|
+
* refers to it. Must not collide with `dock:` or `slot:` ids.
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/** Accessible, user-facing name shown in the layout editor. */
|
|
15
|
+
label: string;
|
|
16
|
+
/** Default slot; a user's layout can move it elsewhere. */
|
|
17
|
+
slot: ShellSlot;
|
|
18
|
+
/** The content. */
|
|
19
|
+
render: Snippet;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=slot-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slot-item.d.ts","sourceRoot":"","sources":["../../../src/components/app/slot-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAEnE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,SAAS,CAAC;IAChB,mBAAmB;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { untrack } from 'svelte';
|
|
4
5
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
@@ -396,10 +397,7 @@ function handleCountryChange(e: Event) {
|
|
|
396
397
|
|
|
397
398
|
<div class="smrt-address" data-smrt-field-owner={fieldOwnerToken}>
|
|
398
399
|
{#if label}
|
|
399
|
-
<
|
|
400
|
-
{label}
|
|
401
|
-
{#if required}<span class="required">*</span>{/if}
|
|
402
|
-
</label>
|
|
400
|
+
<FieldLabel for={primaryFieldId} {label} {required} />
|
|
403
401
|
{/if}
|
|
404
402
|
|
|
405
403
|
<div class="address-fields" class:smrt-mode={isSmrt}>
|
|
@@ -525,17 +523,6 @@ function handleCountryChange(e: Event) {
|
|
|
525
523
|
gap: var(--smrt-spacing-2, 8px);
|
|
526
524
|
}
|
|
527
525
|
|
|
528
|
-
.smrt-label {
|
|
529
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
530
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
531
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
532
|
-
}
|
|
533
|
-
|
|
534
|
-
.smrt-label .required {
|
|
535
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
536
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
537
|
-
}
|
|
538
|
-
|
|
539
526
|
.address-fields {
|
|
540
527
|
display: flex;
|
|
541
528
|
flex-direction: column;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/AddressInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddressInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/AddressInput.svelte.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,KAAK,YAAY,GAAG,MAAM,YAAY,CAAC;AAEvC,MAAM,WAAW,KAAK;IACpB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,0CAA0C;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;CACnD;AA+aD,QAAA,MAAM,YAAY,gDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
4
5
|
import { useSTT } from '../../hooks/useSTT.svelte.js';
|
|
@@ -452,10 +453,7 @@ const primaryControlId = $derived(isSmrt ? `${name}_voice` : `${name}_start`);
|
|
|
452
453
|
data-smrt-field-owner={fieldOwnerToken}
|
|
453
454
|
>
|
|
454
455
|
{#if label}
|
|
455
|
-
<
|
|
456
|
-
{label}
|
|
457
|
-
{#if required}<span class="required">*</span>{/if}
|
|
458
|
-
</label>
|
|
456
|
+
<FieldLabel for={primaryControlId} {label} {required} />
|
|
459
457
|
{/if}
|
|
460
458
|
|
|
461
459
|
<div class="range-wrapper" class:smrt-mode={isSmrt} class:invalid={showInvalid}>
|
|
@@ -575,17 +573,6 @@ const primaryControlId = $derived(isSmrt ? `${name}_voice` : `${name}_start`);
|
|
|
575
573
|
gap: var(--smrt-spacing-2, 8px);
|
|
576
574
|
}
|
|
577
575
|
|
|
578
|
-
.smrt-label {
|
|
579
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
580
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
581
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
.smrt-label .required {
|
|
585
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
586
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
576
|
.range-wrapper {
|
|
590
577
|
display: flex;
|
|
591
578
|
flex-direction: column;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangeInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/DateRangeInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DateRangeInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/DateRangeInput.svelte.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,WAAW,KAAK;IACpB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAgfD,QAAA,MAAM,cAAc,gEAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { importOptional } from '@happyvertical/smrt-ui/utils/import-optional.js';
|
|
4
5
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
@@ -48,6 +49,10 @@ let {
|
|
|
48
49
|
onchange,
|
|
49
50
|
}: Props = $props();
|
|
50
51
|
|
|
52
|
+
// Unique per instance: the control stays labelled even if `name` repeats on a page.
|
|
53
|
+
const uid = $props.id();
|
|
54
|
+
const labelId = `${uid}-label`;
|
|
55
|
+
|
|
51
56
|
const app = useAppState();
|
|
52
57
|
const stt = useSTT();
|
|
53
58
|
const formContext = tryGetFormContext();
|
|
@@ -346,10 +351,7 @@ function handleNativeChange(e: Event) {
|
|
|
346
351
|
|
|
347
352
|
<div class="smrt-datetime" class:listening={isHolding} class:parsing={isParsing}>
|
|
348
353
|
{#if label}
|
|
349
|
-
<
|
|
350
|
-
{label}
|
|
351
|
-
{#if required}<span class="required">*</span>{/if}
|
|
352
|
-
</label>
|
|
354
|
+
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
353
355
|
{/if}
|
|
354
356
|
|
|
355
357
|
<div class="input-wrapper">
|
|
@@ -358,6 +360,7 @@ function handleNativeChange(e: Event) {
|
|
|
358
360
|
<input
|
|
359
361
|
bind:this={inputEl}
|
|
360
362
|
id={name}
|
|
363
|
+
aria-labelledby={label ? labelId : undefined}
|
|
361
364
|
name={name}
|
|
362
365
|
type="text"
|
|
363
366
|
placeholder={placeholder}
|
|
@@ -423,6 +426,7 @@ function handleNativeChange(e: Event) {
|
|
|
423
426
|
<input
|
|
424
427
|
bind:this={inputEl}
|
|
425
428
|
id={name}
|
|
429
|
+
aria-labelledby={label ? labelId : undefined}
|
|
426
430
|
name={name}
|
|
427
431
|
type={includeTime ? 'datetime-local' : 'date'}
|
|
428
432
|
value={value}
|
|
@@ -455,17 +459,6 @@ function handleNativeChange(e: Event) {
|
|
|
455
459
|
position: relative;
|
|
456
460
|
}
|
|
457
461
|
|
|
458
|
-
.smrt-label {
|
|
459
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
460
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
461
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
.smrt-label .required {
|
|
465
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
466
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
467
|
-
}
|
|
468
|
-
|
|
469
462
|
.input-wrapper {
|
|
470
463
|
display: flex;
|
|
471
464
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/DateTimeInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DateTimeInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/DateTimeInput.svelte.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,KAAK;IACpB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAmXD,QAAA,MAAM,aAAa,gDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
4
5
|
import { M } from '../../i18n/strings.forms.js';
|
|
@@ -442,10 +443,7 @@ function handleUnitChange(e: Event) {
|
|
|
442
443
|
|
|
443
444
|
<div class="smrt-measurement" data-smrt-field-owner={fieldOwnerToken}>
|
|
444
445
|
{#if label}
|
|
445
|
-
<
|
|
446
|
-
{label}
|
|
447
|
-
{#if required}<span class="required">*</span>{/if}
|
|
448
|
-
</label>
|
|
446
|
+
<FieldLabel for={name} {label} {required} />
|
|
449
447
|
{/if}
|
|
450
448
|
|
|
451
449
|
<div class="input-wrapper" class:smrt-mode={isSmrt}>
|
|
@@ -505,17 +503,6 @@ function handleUnitChange(e: Event) {
|
|
|
505
503
|
gap: var(--smrt-spacing-1, 4px);
|
|
506
504
|
}
|
|
507
505
|
|
|
508
|
-
.smrt-label {
|
|
509
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
510
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
511
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
.smrt-label .required {
|
|
515
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
516
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
517
|
-
}
|
|
518
|
-
|
|
519
506
|
.input-wrapper {
|
|
520
507
|
display: flex;
|
|
521
508
|
gap: var(--smrt-spacing-2, 8px);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasurementInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/MeasurementInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MeasurementInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/MeasurementInput.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGpE,MAAM,WAAW,KAAK;IACpB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,qCAAqC;IACrC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3D;AA8bD,QAAA,MAAM,gBAAgB,yDAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
4
5
|
import { M } from '../../i18n/strings.forms.js';
|
|
@@ -52,6 +53,10 @@ let {
|
|
|
52
53
|
onchange,
|
|
53
54
|
}: Props = $props();
|
|
54
55
|
|
|
56
|
+
// Unique per instance: the control stays labelled even if `name` repeats on a page.
|
|
57
|
+
const uid = $props.id();
|
|
58
|
+
const labelId = `${uid}-label`;
|
|
59
|
+
|
|
55
60
|
const app = useAppState();
|
|
56
61
|
const formContext = tryGetFormContext();
|
|
57
62
|
|
|
@@ -305,16 +310,13 @@ function handleBlur() {
|
|
|
305
310
|
|
|
306
311
|
<div class="smrt-money">
|
|
307
312
|
{#if label}
|
|
308
|
-
<
|
|
309
|
-
{label}
|
|
310
|
-
{#if required}<span class="required">*</span>{/if}
|
|
311
|
-
</label>
|
|
313
|
+
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
312
314
|
{/if}
|
|
313
315
|
|
|
314
316
|
<div class="input-wrapper">
|
|
315
|
-
<span class="currency-symbol">{currencySymbol}</span>
|
|
316
317
|
<input
|
|
317
318
|
id={name}
|
|
319
|
+
aria-labelledby={label ? labelId : undefined}
|
|
318
320
|
{name}
|
|
319
321
|
type="text"
|
|
320
322
|
inputmode="decimal"
|
|
@@ -357,31 +359,12 @@ function handleBlur() {
|
|
|
357
359
|
gap: var(--smrt-spacing-1, 4px);
|
|
358
360
|
}
|
|
359
361
|
|
|
360
|
-
.smrt-label {
|
|
361
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
362
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
363
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
.smrt-label .required {
|
|
367
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
368
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
369
|
-
}
|
|
370
|
-
|
|
371
362
|
.input-wrapper {
|
|
372
363
|
display: flex;
|
|
373
364
|
position: relative;
|
|
374
365
|
align-items: center;
|
|
375
366
|
}
|
|
376
367
|
|
|
377
|
-
.currency-symbol {
|
|
378
|
-
position: absolute;
|
|
379
|
-
left: 12px;
|
|
380
|
-
color: var(--smrt-color-on-surface-variant, #6b7280);
|
|
381
|
-
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
382
|
-
pointer-events: none;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
368
|
.currency-code {
|
|
386
369
|
position: absolute;
|
|
387
370
|
right: 12px;
|
|
@@ -393,7 +376,7 @@ function handleBlur() {
|
|
|
393
376
|
|
|
394
377
|
.smrt-input {
|
|
395
378
|
flex: 1;
|
|
396
|
-
padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-12, 48px) var(--smrt-spacing-2, 8px) var(--smrt-spacing-
|
|
379
|
+
padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-12, 48px) var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px);
|
|
397
380
|
font-size: var(--smrt-typography-body-large-size, 1rem);
|
|
398
381
|
border: 1px solid var(--smrt-color-outline-variant, #d1d5db);
|
|
399
382
|
border-radius: var(--smrt-radius-small, 6px);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoneyInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/MoneyInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MoneyInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/MoneyInput.svelte.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,KAAK;IACpB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACzB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AAwTD,QAAA,MAAM,UAAU,gDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
4
5
|
import { M } from '../../i18n/strings.forms.js';
|
|
@@ -49,6 +50,10 @@ let {
|
|
|
49
50
|
onchange,
|
|
50
51
|
}: Props = $props();
|
|
51
52
|
|
|
53
|
+
// Unique per instance: the control stays labelled even if `name` repeats on a page.
|
|
54
|
+
const uid = $props.id();
|
|
55
|
+
const labelId = `${uid}-label`;
|
|
56
|
+
|
|
52
57
|
const app = useAppState();
|
|
53
58
|
const formContext = tryGetFormContext();
|
|
54
59
|
|
|
@@ -230,15 +235,13 @@ function handleInput(e: Event) {
|
|
|
230
235
|
|
|
231
236
|
<div class="smrt-number">
|
|
232
237
|
{#if label}
|
|
233
|
-
<
|
|
234
|
-
{label}
|
|
235
|
-
{#if required}<span class="required">*</span>{/if}
|
|
236
|
-
</label>
|
|
238
|
+
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
237
239
|
{/if}
|
|
238
240
|
|
|
239
241
|
<div class="input-wrapper">
|
|
240
242
|
<input
|
|
241
243
|
id={name}
|
|
244
|
+
aria-labelledby={label ? labelId : undefined}
|
|
242
245
|
{name}
|
|
243
246
|
type="number"
|
|
244
247
|
{placeholder}
|
|
@@ -277,17 +280,6 @@ function handleInput(e: Event) {
|
|
|
277
280
|
gap: var(--smrt-spacing-1, 4px);
|
|
278
281
|
}
|
|
279
282
|
|
|
280
|
-
.smrt-label {
|
|
281
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
282
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
283
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
.smrt-label .required {
|
|
287
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
288
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
283
|
.input-wrapper {
|
|
292
284
|
display: flex;
|
|
293
285
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/NumberInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NumberInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/NumberInput.svelte.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,KAAK;IACpB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AAyOD,QAAA,MAAM,WAAW,gDAAwC,CAAC;AAC1D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAClD,eAAe,WAAW,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { FieldLabel } from '@happyvertical/smrt-ui/forms';
|
|
2
3
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
3
4
|
import { useAppState } from '../../hooks/useAppState.svelte.js';
|
|
4
5
|
import { useSTT } from '../../hooks/useSTT.svelte.js';
|
|
@@ -45,6 +46,10 @@ let {
|
|
|
45
46
|
onchange,
|
|
46
47
|
}: Props = $props();
|
|
47
48
|
|
|
49
|
+
// Unique per instance: the control stays labelled even if `name` repeats on a page.
|
|
50
|
+
const uid = $props.id();
|
|
51
|
+
const labelId = `${uid}-label`;
|
|
52
|
+
|
|
48
53
|
const app = useAppState();
|
|
49
54
|
const stt = useSTT();
|
|
50
55
|
const formContext = tryGetFormContext();
|
|
@@ -295,16 +300,14 @@ function handleInput(e: Event) {
|
|
|
295
300
|
|
|
296
301
|
<div class="smrt-phone" class:listening={isHolding}>
|
|
297
302
|
{#if label}
|
|
298
|
-
<
|
|
299
|
-
{label}
|
|
300
|
-
{#if required}<span class="required">*</span>{/if}
|
|
301
|
-
</label>
|
|
303
|
+
<FieldLabel id={labelId} for={name} {label} {required} />
|
|
302
304
|
{/if}
|
|
303
305
|
|
|
304
306
|
<div class="input-wrapper">
|
|
305
307
|
<input
|
|
306
308
|
bind:this={inputEl}
|
|
307
309
|
id={name}
|
|
310
|
+
aria-labelledby={label ? labelId : undefined}
|
|
308
311
|
{name}
|
|
309
312
|
type="tel"
|
|
310
313
|
{placeholder}
|
|
@@ -395,17 +398,6 @@ function handleInput(e: Event) {
|
|
|
395
398
|
position: relative;
|
|
396
399
|
}
|
|
397
400
|
|
|
398
|
-
.smrt-label {
|
|
399
|
-
font-size: var(--smrt-typography-body-medium-size, 0.875rem);
|
|
400
|
-
font-weight: var(--smrt-typography-body-medium-weight, 500);
|
|
401
|
-
color: var(--smrt-color-on-surface, #374151);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
.smrt-label .required {
|
|
405
|
-
color: var(--smrt-color-error, #ba1a1a);
|
|
406
|
-
margin-left: var(--smrt-spacing-1, 4px);
|
|
407
|
-
}
|
|
408
|
-
|
|
409
401
|
.input-wrapper {
|
|
410
402
|
display: flex;
|
|
411
403
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhoneInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/PhoneInput.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PhoneInput.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/forms/PhoneInput.svelte.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,KAAK;IACpB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AA0UD,QAAA,MAAM,UAAU,gDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}
|