@happyvertical/smrt-svelte 0.30.0
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 +317 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +185 -0
- package/dist/Provider.svelte +204 -0
- package/dist/Provider.svelte.d.ts +73 -0
- package/dist/Provider.svelte.d.ts.map +1 -0
- package/dist/__tests__/app-state.test.js +156 -0
- package/dist/__tests__/warm-clients.test.js +186 -0
- package/dist/browser-ai/adapters/llm/factory.d.ts +38 -0
- package/dist/browser-ai/adapters/llm/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/factory.js +91 -0
- package/dist/browser-ai/adapters/llm/index.d.ts +7 -0
- package/dist/browser-ai/adapters/llm/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/index.js +6 -0
- package/dist/browser-ai/adapters/llm/types.d.ts +182 -0
- package/dist/browser-ai/adapters/llm/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/types.js +43 -0
- package/dist/browser-ai/adapters/llm/webllm.d.ts +33 -0
- package/dist/browser-ai/adapters/llm/webllm.d.ts.map +1 -0
- package/dist/browser-ai/adapters/llm/webllm.js +225 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts +31 -0
- package/dist/browser-ai/adapters/stt/browser-speech.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/browser-speech.js +217 -0
- package/dist/browser-ai/adapters/stt/factory.d.ts +49 -0
- package/dist/browser-ai/adapters/stt/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/factory.js +110 -0
- package/dist/browser-ai/adapters/stt/index.d.ts +9 -0
- package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/index.js +8 -0
- package/dist/browser-ai/adapters/stt/types.d.ts +154 -0
- package/dist/browser-ai/adapters/stt/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/types.js +4 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts +46 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/whisper-cpp.js +348 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts +51 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts.map +1 -0
- package/dist/browser-ai/adapters/stt/whisper-wasm.js +380 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts +42 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/browser-synthesis.js +235 -0
- package/dist/browser-ai/adapters/tts/factory.d.ts +53 -0
- package/dist/browser-ai/adapters/tts/factory.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/factory.js +92 -0
- package/dist/browser-ai/adapters/tts/index.d.ts +7 -0
- package/dist/browser-ai/adapters/tts/index.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/index.js +6 -0
- package/dist/browser-ai/adapters/tts/types.d.ts +140 -0
- package/dist/browser-ai/adapters/tts/types.d.ts.map +1 -0
- package/dist/browser-ai/adapters/tts/types.js +4 -0
- package/dist/browser-ai/capabilities/detector.d.ts +38 -0
- package/dist/browser-ai/capabilities/detector.d.ts.map +1 -0
- package/dist/browser-ai/capabilities/detector.js +211 -0
- package/dist/browser-ai/core/errors.d.ts +62 -0
- package/dist/browser-ai/core/errors.d.ts.map +1 -0
- package/dist/browser-ai/core/errors.js +92 -0
- package/dist/browser-ai/core/index.d.ts +6 -0
- package/dist/browser-ai/core/index.d.ts.map +1 -0
- package/dist/browser-ai/core/index.js +5 -0
- package/dist/browser-ai/core/types.d.ts +115 -0
- package/dist/browser-ai/core/types.d.ts.map +1 -0
- package/dist/browser-ai/core/types.js +34 -0
- package/dist/browser-ai/index.d.ts +12 -0
- package/dist/browser-ai/index.d.ts.map +1 -0
- package/dist/browser-ai/index.js +16 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte +77 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts +16 -0
- package/dist/browser-ai/svelte/components/AILoadingOverlay.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte +57 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts +15 -0
- package/dist/browser-ai/svelte/components/CapabilityGate.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte +141 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts +15 -0
- package/dist/browser-ai/svelte/components/DownloadProgress.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte +379 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts +9 -0
- package/dist/browser-ai/svelte/components/STTTest.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte +200 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts +16 -0
- package/dist/browser-ai/svelte/components/VoiceInput.svelte.d.ts.map +1 -0
- package/dist/browser-ai/svelte/index.d.ts +15 -0
- package/dist/browser-ai/svelte/index.d.ts.map +1 -0
- package/dist/browser-ai/svelte/index.js +28 -0
- package/dist/browser-ai/ui.d.ts +16 -0
- package/dist/browser-ai/ui.d.ts.map +1 -0
- package/dist/browser-ai/ui.js +67 -0
- package/dist/components/admin/AgentAdminPanel.svelte +111 -0
- package/dist/components/admin/AgentAdminPanel.svelte.d.ts +25 -0
- package/dist/components/admin/AgentAdminPanel.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentAdminTabs.svelte +280 -0
- package/dist/components/admin/AgentAdminTabs.svelte.d.ts +23 -0
- package/dist/components/admin/AgentAdminTabs.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentSettingsShell.svelte +257 -0
- package/dist/components/admin/AgentSettingsShell.svelte.d.ts +33 -0
- package/dist/components/admin/AgentSettingsShell.svelte.d.ts.map +1 -0
- package/dist/components/admin/index.d.ts +5 -0
- package/dist/components/admin/index.d.ts.map +1 -0
- package/dist/components/admin/index.js +6 -0
- package/dist/components/forms/AddressInput.svelte +500 -0
- package/dist/components/forms/AddressInput.svelte.d.ts +36 -0
- package/dist/components/forms/AddressInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/CheckboxInput.svelte +208 -0
- package/dist/components/forms/CheckboxInput.svelte.d.ts +20 -0
- package/dist/components/forms/CheckboxInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/DateRangeInput.svelte +628 -0
- package/dist/components/forms/DateRangeInput.svelte.d.ts +33 -0
- package/dist/components/forms/DateRangeInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/DateTimeInput.svelte +521 -0
- package/dist/components/forms/DateTimeInput.svelte.d.ts +24 -0
- package/dist/components/forms/DateTimeInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/FileUpload.svelte +358 -0
- package/dist/components/forms/FileUpload.svelte.d.ts +22 -0
- package/dist/components/forms/FileUpload.svelte.d.ts.map +1 -0
- package/dist/components/forms/Form.svelte +771 -0
- package/dist/components/forms/Form.svelte.d.ts +26 -0
- package/dist/components/forms/Form.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormGroup.svelte +86 -0
- package/dist/components/forms/FormGroup.svelte.d.ts +13 -0
- package/dist/components/forms/FormGroup.svelte.d.ts.map +1 -0
- package/dist/components/forms/FormMicButton.svelte +179 -0
- package/dist/components/forms/FormMicButton.svelte.d.ts +10 -0
- package/dist/components/forms/FormMicButton.svelte.d.ts.map +1 -0
- package/dist/components/forms/Input.svelte +83 -0
- package/dist/components/forms/Input.svelte.d.ts +9 -0
- package/dist/components/forms/Input.svelte.d.ts.map +1 -0
- package/dist/components/forms/MeasurementInput.svelte +505 -0
- package/dist/components/forms/MeasurementInput.svelte.d.ts +35 -0
- package/dist/components/forms/MeasurementInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/MoneyInput.svelte +412 -0
- package/dist/components/forms/MoneyInput.svelte.d.ts +30 -0
- package/dist/components/forms/MoneyInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/NumberInput.svelte +310 -0
- package/dist/components/forms/NumberInput.svelte.d.ts +28 -0
- package/dist/components/forms/NumberInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/PhoneInput.svelte +530 -0
- package/dist/components/forms/PhoneInput.svelte.d.ts +22 -0
- package/dist/components/forms/PhoneInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/SearchInput.svelte +358 -0
- package/dist/components/forms/SearchInput.svelte.d.ts +33 -0
- package/dist/components/forms/SearchInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Select.svelte +83 -0
- package/dist/components/forms/Select.svelte.d.ts +11 -0
- package/dist/components/forms/Select.svelte.d.ts.map +1 -0
- package/dist/components/forms/SelectInput.svelte +254 -0
- package/dist/components/forms/SelectInput.svelte.d.ts +25 -0
- package/dist/components/forms/SelectInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/TextInput.svelte +415 -0
- package/dist/components/forms/TextInput.svelte.d.ts +26 -0
- package/dist/components/forms/TextInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Textarea.svelte +85 -0
- package/dist/components/forms/Textarea.svelte.d.ts +10 -0
- package/dist/components/forms/Textarea.svelte.d.ts.map +1 -0
- package/dist/components/forms/TextareaInput.svelte +386 -0
- package/dist/components/forms/TextareaInput.svelte.d.ts +26 -0
- package/dist/components/forms/TextareaInput.svelte.d.ts.map +1 -0
- package/dist/components/forms/Toggle.svelte +217 -0
- package/dist/components/forms/Toggle.svelte.d.ts +37 -0
- package/dist/components/forms/Toggle.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/AddressInput.behavior.test.js +122 -0
- package/dist/components/forms/__tests__/CheckboxInput.test.js +92 -0
- package/dist/components/forms/__tests__/DateRangeInput.behavior.test.js +135 -0
- package/dist/components/forms/__tests__/DateTimeInput.behavior.test.js +103 -0
- package/dist/components/forms/__tests__/FileUpload.test.js +90 -0
- package/dist/components/forms/__tests__/Form.behavior.test.js +137 -0
- package/dist/components/forms/__tests__/Form.test.js +58 -0
- package/dist/components/forms/__tests__/FormGroup.test.js +48 -0
- package/dist/components/forms/__tests__/FormMicButton.test.js +86 -0
- package/dist/components/forms/__tests__/Input.test.js +49 -0
- package/dist/components/forms/__tests__/MeasurementInput.behavior.test.js +129 -0
- package/dist/components/forms/__tests__/MoneyInput.behavior.test.js +124 -0
- package/dist/components/forms/__tests__/NumberInput.behavior.test.js +141 -0
- package/dist/components/forms/__tests__/PhoneInput.behavior.test.js +96 -0
- package/dist/components/forms/__tests__/SearchInput.test.js +79 -0
- package/dist/components/forms/__tests__/Select.test.js +37 -0
- package/dist/components/forms/__tests__/SelectInput.behavior.test.js +132 -0
- package/dist/components/forms/__tests__/TextInput.behavior.test.js +131 -0
- package/dist/components/forms/__tests__/Textarea.test.js +39 -0
- package/dist/components/forms/__tests__/TextareaInput.behavior.test.js +96 -0
- package/dist/components/forms/__tests__/Toggle.test.js +87 -0
- package/dist/components/forms/__tests__/composite-inputs-a11y.test.js +69 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte +16 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts +9 -0
- package/dist/components/forms/__tests__/form-group-input.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte +33 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts +12 -0
- package/dist/components/forms/__tests__/form-with-fields.fixture.svelte.d.ts.map +1 -0
- package/dist/components/forms/__tests__/rich-inputs-a11y.test.js +87 -0
- package/dist/components/forms/index.d.ts +25 -0
- package/dist/components/forms/index.d.ts.map +1 -0
- package/dist/components/forms/index.js +25 -0
- package/dist/components/forms/types.d.ts +33 -0
- package/dist/components/forms/types.d.ts.map +1 -0
- package/dist/components/forms/types.js +4 -0
- package/dist/components/module/ModulePanel.svelte +134 -0
- package/dist/components/module/ModulePanel.svelte.d.ts +22 -0
- package/dist/components/module/ModulePanel.svelte.d.ts.map +1 -0
- package/dist/components/module/index.d.ts +5 -0
- package/dist/components/module/index.d.ts.map +1 -0
- package/dist/components/module/index.js +4 -0
- package/dist/components/workspace/Breadcrumbs.svelte +141 -0
- package/dist/components/workspace/Breadcrumbs.svelte.d.ts +21 -0
- package/dist/components/workspace/Breadcrumbs.svelte.d.ts.map +1 -0
- package/dist/components/workspace/NavTree.svelte +354 -0
- package/dist/components/workspace/NavTree.svelte.d.ts +45 -0
- package/dist/components/workspace/NavTree.svelte.d.ts.map +1 -0
- package/dist/components/workspace/README.md +34 -0
- package/dist/components/workspace/RoleShell.svelte +309 -0
- package/dist/components/workspace/RoleShell.svelte.d.ts +91 -0
- package/dist/components/workspace/RoleShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/WorkspaceShell.svelte +951 -0
- package/dist/components/workspace/WorkspaceShell.svelte.d.ts +112 -0
- package/dist/components/workspace/WorkspaceShell.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/RoleShell.test.js +772 -0
- package/dist/components/workspace/__tests__/WorkspaceShell.test.js +630 -0
- package/dist/components/workspace/__tests__/breadcrumbs-helpers.test.js +141 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte +45 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts +21 -0
- package/dist/components/workspace/__tests__/context-forwarding-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/define-tools-dock.test.js +1010 -0
- package/dist/components/workspace/__tests__/harness.svelte +25 -0
- package/dist/components/workspace/__tests__/harness.svelte.d.ts +14 -0
- package/dist/components/workspace/__tests__/harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/index.test.js +37 -0
- package/dist/components/workspace/__tests__/manifest-nav-helpers.test.js +24 -0
- package/dist/components/workspace/__tests__/manifest-nav.test.js +599 -0
- package/dist/components/workspace/__tests__/nav-helpers.test.js +95 -0
- package/dist/components/workspace/__tests__/render-harness.svelte +66 -0
- package/dist/components/workspace/__tests__/render-harness.svelte.d.ts +32 -0
- package/dist/components/workspace/__tests__/render-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/render-tools-dock.test.js +243 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte +58 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts +16 -0
- package/dist/components/workspace/__tests__/role-shell-bind-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte +41 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts +13 -0
- package/dist/components/workspace/__tests__/role-shell-switch-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/test-icon.svelte +17 -0
- package/dist/components/workspace/__tests__/test-icon.svelte.d.ts +19 -0
- package/dist/components/workspace/__tests__/test-icon.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte +38 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts +22 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/TypedTool.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts +65 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/register-typed-tool.js +115 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts +15 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture/typed-tool-types.js +7 -0
- package/dist/components/workspace/__tests__/typed-tool-fixture.test.js +115 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte +9 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts +19 -0
- package/dist/components/workspace/__tests__/use-harness-orphan.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/use-harness.svelte +23 -0
- package/dist/components/workspace/__tests__/use-harness.svelte.d.ts +8 -0
- package/dist/components/workspace/__tests__/use-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/__tests__/use-tools-dock.test.js +33 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte +43 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts +11 -0
- package/dist/components/workspace/__tests__/workspace-shell-bind-harness.svelte.d.ts.map +1 -0
- package/dist/components/workspace/breadcrumbs-helpers.d.ts +44 -0
- package/dist/components/workspace/breadcrumbs-helpers.d.ts.map +1 -0
- package/dist/components/workspace/breadcrumbs-helpers.js +88 -0
- package/dist/components/workspace/index.d.ts +16 -0
- package/dist/components/workspace/index.d.ts.map +1 -0
- package/dist/components/workspace/index.js +14 -0
- package/dist/components/workspace/manifest-nav.d.ts +200 -0
- package/dist/components/workspace/manifest-nav.d.ts.map +1 -0
- package/dist/components/workspace/manifest-nav.js +408 -0
- package/dist/components/workspace/nav-helpers.d.ts +36 -0
- package/dist/components/workspace/nav-helpers.d.ts.map +1 -0
- package/dist/components/workspace/nav-helpers.js +60 -0
- package/dist/components/workspace/server/__tests__/compose-availability.test.js +383 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts +78 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.d.ts.map +1 -0
- package/dist/components/workspace/server/__tests__/typed-context-fixture.js +104 -0
- package/dist/components/workspace/server/compose-availability.d.ts +73 -0
- package/dist/components/workspace/server/compose-availability.d.ts.map +1 -0
- package/dist/components/workspace/server/compose-availability.js +114 -0
- package/dist/components/workspace/server/index.d.ts +13 -0
- package/dist/components/workspace/server/index.d.ts.map +1 -0
- package/dist/components/workspace/server/index.js +11 -0
- package/dist/components/workspace/server/types.d.ts +108 -0
- package/dist/components/workspace/server/types.d.ts.map +1 -0
- package/dist/components/workspace/server/types.js +11 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte +565 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts +14 -0
- package/dist/components/workspace/tools-dock/ToolsDock.svelte.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts +143 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/define-tools-dock.svelte.js +487 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.d.ts +41 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.d.ts.map +1 -0
- package/dist/components/workspace/tools-dock/use-tools-dock.js +50 -0
- package/dist/components/workspace/types.d.ts +372 -0
- package/dist/components/workspace/types.d.ts.map +1 -0
- package/dist/components/workspace/types.js +6 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +10 -0
- package/dist/hooks/useAppState.svelte.d.ts +46 -0
- package/dist/hooks/useAppState.svelte.d.ts.map +1 -0
- package/dist/hooks/useAppState.svelte.js +59 -0
- package/dist/hooks/useAuth.svelte.d.ts +41 -0
- package/dist/hooks/useAuth.svelte.d.ts.map +1 -0
- package/dist/hooks/useAuth.svelte.js +43 -0
- package/dist/hooks/useLLM.svelte.d.ts +69 -0
- package/dist/hooks/useLLM.svelte.d.ts.map +1 -0
- package/dist/hooks/useLLM.svelte.js +85 -0
- package/dist/hooks/useSTT.svelte.d.ts +68 -0
- package/dist/hooks/useSTT.svelte.d.ts.map +1 -0
- package/dist/hooks/useSTT.svelte.js +97 -0
- package/dist/hooks/useSocket.svelte.d.ts +45 -0
- package/dist/hooks/useSocket.svelte.d.ts.map +1 -0
- package/dist/hooks/useSocket.svelte.js +54 -0
- package/dist/hooks/useTTS.svelte.d.ts +65 -0
- package/dist/hooks/useTTS.svelte.d.ts.map +1 -0
- package/dist/hooks/useTTS.svelte.js +93 -0
- package/dist/hooks/useTheme.d.ts +13 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +16 -0
- package/dist/i18n/__tests__/server.spec.js +50 -0
- package/dist/i18n/server.d.ts +47 -0
- package/dist/i18n/server.d.ts.map +1 -0
- package/dist/i18n/server.js +58 -0
- package/dist/i18n/strings.forms.d.ts +33 -0
- package/dist/i18n/strings.forms.d.ts.map +1 -0
- package/dist/i18n/strings.forms.js +54 -0
- package/dist/i18n/strings.workspace.d.ts +34 -0
- package/dist/i18n/strings.workspace.d.ts.map +1 -0
- package/dist/i18n/strings.workspace.js +40 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/state/__tests__/warm-clients.test.js +40 -0
- package/dist/state/app-state.d.ts +308 -0
- package/dist/state/app-state.d.ts.map +1 -0
- package/dist/state/app-state.js +64 -0
- package/dist/state/app-state.svelte.d.ts +196 -0
- package/dist/state/app-state.svelte.d.ts.map +1 -0
- package/dist/state/app-state.svelte.js +774 -0
- package/dist/state/context.d.ts +23 -0
- package/dist/state/context.d.ts.map +1 -0
- package/dist/state/context.js +32 -0
- package/dist/state/form-context.d.ts +59 -0
- package/dist/state/form-context.d.ts.map +1 -0
- package/dist/state/form-context.js +31 -0
- package/dist/state/form-group-context.d.ts +13 -0
- package/dist/state/form-group-context.d.ts.map +1 -0
- package/dist/state/form-group-context.js +28 -0
- package/dist/state/index.d.ts +9 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +8 -0
- package/dist/state/warm-clients.d.ts +136 -0
- package/dist/state/warm-clients.d.ts.map +1 -0
- package/dist/state/warm-clients.js +231 -0
- package/package.json +137 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/**
|
|
3
|
+
* RoleShell — opinionated thin wrapper around `WorkspaceShell`, `NavTree`,
|
|
4
|
+
* and `Breadcrumbs` for multi-role admin dashboards.
|
|
5
|
+
*
|
|
6
|
+
* Lifts the `RoleConfig`-driven render pattern that's been duplicated in
|
|
7
|
+
* downstream apps (notably anytown.ai's dashboard) into the framework. Pass
|
|
8
|
+
* a list of `RoleConfig`s + the currently active role id; the shell looks
|
|
9
|
+
* up the role and wires its sections into the sidebar nav and breadcrumb
|
|
10
|
+
* trail. Optional `color` on the role propagates as a `--smrt-role-color`
|
|
11
|
+
* CSS custom property so consumer CSS can theme child components.
|
|
12
|
+
*
|
|
13
|
+
* Pure render layer — no SmrtObject coupling, no manifest access, no
|
|
14
|
+
* SvelteKit imports. Consumers pass `currentPath` explicitly (typically
|
|
15
|
+
* from `page.url.pathname`).
|
|
16
|
+
*
|
|
17
|
+
* **Missing-role behaviour**: in development a thrown error makes the
|
|
18
|
+
* misconfiguration loud and immediate. In production we fall back to the
|
|
19
|
+
* first role in `roles[]` (or, if `roles[]` is empty, a synthetic empty
|
|
20
|
+
* role) so a brief mismatch — role-switch race, SSR hydration with stale
|
|
21
|
+
* data, an empty array before data loads — degrades to a harmless empty
|
|
22
|
+
* shell instead of crashing the component tree. Svelte 5 has no built-in
|
|
23
|
+
* error boundary, so a hard throw inside `$derived.by` would unmount the
|
|
24
|
+
* whole shell. See `happyvertical/smrt#1238` review feedback.
|
|
25
|
+
*
|
|
26
|
+
* See `happyvertical/smrt#1226` (Phase 4b) for design notes. The
|
|
27
|
+
* SmrtObject-aware piece was originally scoped here but has been
|
|
28
|
+
* deferred — this primitive is intentionally cheap and low-blast-radius.
|
|
29
|
+
*/
|
|
30
|
+
import { DEV } from 'esm-env';
|
|
31
|
+
import type { Component, Snippet } from 'svelte';
|
|
32
|
+
import Breadcrumbs from './Breadcrumbs.svelte';
|
|
33
|
+
import NavTree from './NavTree.svelte';
|
|
34
|
+
import type { BreadcrumbItem, NavItem, RoleConfig } from './types.js';
|
|
35
|
+
import WorkspaceShell from './WorkspaceShell.svelte';
|
|
36
|
+
|
|
37
|
+
interface Props {
|
|
38
|
+
/** All available roles. Looked up by `id`. */
|
|
39
|
+
roles: RoleConfig[];
|
|
40
|
+
/** Currently active role's id. The shell renders that role's config. */
|
|
41
|
+
currentRole: string;
|
|
42
|
+
/** Current pathname (consumer provides; SvelteKit-agnostic). */
|
|
43
|
+
currentPath: string;
|
|
44
|
+
/** Optional: override the shell title; defaults to the current role's label. */
|
|
45
|
+
title?: string;
|
|
46
|
+
/** Optional: override the shell subtitle; defaults to the current role's description. */
|
|
47
|
+
subtitle?: string;
|
|
48
|
+
/** Optional: small uppercase eyebrow label rendered above the title — passes through to `WorkspaceShell`. */
|
|
49
|
+
eyebrow?: string;
|
|
50
|
+
/** Optional: topbar mode label — passes through. */
|
|
51
|
+
modeLabel?: string;
|
|
52
|
+
/** Optional: topbar mode status — passes through. */
|
|
53
|
+
modeStatus?:
|
|
54
|
+
| 'active'
|
|
55
|
+
| 'offline'
|
|
56
|
+
| 'local-only'
|
|
57
|
+
| 'attention'
|
|
58
|
+
| (string & {});
|
|
59
|
+
/** Optional: topbar mode detail — passes through. */
|
|
60
|
+
modeDetail?: string;
|
|
61
|
+
/** Optional: sidebar collapsed state — passes through to `WorkspaceShell`. */
|
|
62
|
+
collapsed?: boolean;
|
|
63
|
+
/** Optional: sidebar collapse handler — passes through to `WorkspaceShell`. */
|
|
64
|
+
onToggleCollapsed?: () => void;
|
|
65
|
+
/** Optional: whether the collapse toggle should render — passes through. */
|
|
66
|
+
collapsible?: boolean;
|
|
67
|
+
/** Optional: whether the inspector panel is currently shown — passes through. */
|
|
68
|
+
showInspector?: boolean;
|
|
69
|
+
/** Optional: inspector header label — passes through. */
|
|
70
|
+
inspectorTitle?: string;
|
|
71
|
+
/** Optional: inspector close handler — passes through. */
|
|
72
|
+
onCloseInspector?: () => void;
|
|
73
|
+
/** Optional: brand snippet — passes through to `WorkspaceShell`. When omitted, the default brand renders `role.icon` (if any) alongside the resolved title/subtitle. */
|
|
74
|
+
brand?: Snippet;
|
|
75
|
+
/** Optional: sidebar footer (account menu, tenant switcher) — passes through. */
|
|
76
|
+
sidebarFooter?: Snippet;
|
|
77
|
+
/** Optional: topbar actions — passes through. */
|
|
78
|
+
topbarActions?: Snippet;
|
|
79
|
+
/** Optional: inspector panel — passes through. Inspector content only renders when `showInspector` is also true. */
|
|
80
|
+
inspector?: Snippet;
|
|
81
|
+
/** Optional: inspector rail — passes through. */
|
|
82
|
+
inspectorRail?: Snippet;
|
|
83
|
+
/** Required: main content. */
|
|
84
|
+
children: Snippet;
|
|
85
|
+
/**
|
|
86
|
+
* Mobile drawer open state — bindable via Svelte 5 `$bindable`. Pass as
|
|
87
|
+
* `bind:mobileNavOpen={...}` to control externally (e.g. close the drawer
|
|
88
|
+
* after a route change). Defaults to `false`.
|
|
89
|
+
*/
|
|
90
|
+
mobileNavOpen?: boolean;
|
|
91
|
+
/** Optional: show breadcrumbs (default: true). */
|
|
92
|
+
showBreadcrumbs?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Optional: override the breadcrumb's root crumb. Defaults to
|
|
95
|
+
* `{ label: role.label, href: '/' + role.id }`. Set this when the shell
|
|
96
|
+
* is mounted under a prefix (e.g. `/dashboard/[role]/...`,
|
|
97
|
+
* `/t/:slug/admin`) so the root crumb points at a real route.
|
|
98
|
+
*/
|
|
99
|
+
rootCrumb?: BreadcrumbItem;
|
|
100
|
+
/**
|
|
101
|
+
* Optional: pathname prefix to skip when auto-walking breadcrumbs.
|
|
102
|
+
* Forwarded to `<Breadcrumbs startAfter={...}>`. Defaults to `role.id`
|
|
103
|
+
* so a pathname like `/super/tenants` doesn't render a duplicate
|
|
104
|
+
* `Super` crumb alongside the `rootCrumb`. Override when the shell is
|
|
105
|
+
* mounted under a deeper prefix (e.g. `'dashboard/super'` for
|
|
106
|
+
* `/dashboard/[role]/...`), or pass an empty string to opt out of the
|
|
107
|
+
* default skip entirely.
|
|
108
|
+
*/
|
|
109
|
+
breadcrumbStartAfter?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Optional: icon renderer for `NavItem.icon` values, forwarded to the
|
|
112
|
+
* inner `<NavTree>`. Pass an icon component (lucide-svelte etc.) when
|
|
113
|
+
* your nav configs use icon *names* rather than emoji glyphs.
|
|
114
|
+
*/
|
|
115
|
+
navIconComponent?: Component<{ name: string; size?: number }>;
|
|
116
|
+
/**
|
|
117
|
+
* Optional: extra side-effect to run after a nav link click. The shell
|
|
118
|
+
* always closes the mobile drawer on navigation; this callback fires
|
|
119
|
+
* after that internal close so consumers can layer in analytics,
|
|
120
|
+
* router-store updates, etc. without losing the drawer behaviour.
|
|
121
|
+
*/
|
|
122
|
+
onNavigate?: () => void;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
let {
|
|
126
|
+
roles,
|
|
127
|
+
currentRole,
|
|
128
|
+
currentPath,
|
|
129
|
+
title,
|
|
130
|
+
subtitle,
|
|
131
|
+
eyebrow,
|
|
132
|
+
modeLabel,
|
|
133
|
+
modeStatus,
|
|
134
|
+
modeDetail,
|
|
135
|
+
collapsed,
|
|
136
|
+
onToggleCollapsed,
|
|
137
|
+
collapsible,
|
|
138
|
+
showInspector,
|
|
139
|
+
inspectorTitle,
|
|
140
|
+
onCloseInspector,
|
|
141
|
+
// Renamed locally so the snippet block below can declare `{#snippet brand()}`
|
|
142
|
+
// without shadowing the prop (which would cause `{@render brand()}` to
|
|
143
|
+
// recurse into the new snippet instead of the consumer-supplied one).
|
|
144
|
+
brand: consumerBrand,
|
|
145
|
+
sidebarFooter,
|
|
146
|
+
topbarActions,
|
|
147
|
+
inspector,
|
|
148
|
+
inspectorRail,
|
|
149
|
+
children,
|
|
150
|
+
mobileNavOpen = $bindable(false),
|
|
151
|
+
showBreadcrumbs = true,
|
|
152
|
+
rootCrumb,
|
|
153
|
+
breadcrumbStartAfter,
|
|
154
|
+
navIconComponent,
|
|
155
|
+
onNavigate,
|
|
156
|
+
}: Props = $props();
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Stable empty fallback used when `roles[]` is empty *and* we're in
|
|
160
|
+
* production. Constructed once so identity comparisons stay stable across
|
|
161
|
+
* derivations.
|
|
162
|
+
*/
|
|
163
|
+
const EMPTY_ROLE: RoleConfig = {
|
|
164
|
+
id: '',
|
|
165
|
+
label: '',
|
|
166
|
+
sections: [] as NavItem[],
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const role = $derived.by((): RoleConfig => {
|
|
170
|
+
const found = roles.find((r) => r.id === currentRole);
|
|
171
|
+
if (found) return found;
|
|
172
|
+
// Dev: fail loud so misconfiguration is caught in test/dev. Prod: fall
|
|
173
|
+
// back so a brief mismatch (role-switch race, SSR with stale data,
|
|
174
|
+
// empty array before data loads) degrades to an empty shell rather
|
|
175
|
+
// than crashing the entire component tree. Svelte 5 has no error
|
|
176
|
+
// boundary, so a throw inside $derived.by would unmount the shell.
|
|
177
|
+
if (DEV) {
|
|
178
|
+
throw new Error(
|
|
179
|
+
`[RoleShell] No role found for id "${currentRole}". ` +
|
|
180
|
+
`Available role ids: ${roles.map((r) => r.id).join(', ') || '(none)'}.`,
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
return roles[0] ?? EMPTY_ROLE;
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
const resolvedTitle = $derived(title ?? role.label);
|
|
187
|
+
const resolvedSubtitle = $derived(subtitle ?? role.description ?? '');
|
|
188
|
+
const resolvedRootCrumb = $derived(
|
|
189
|
+
rootCrumb ?? { label: role.label, href: `/${role.id}` },
|
|
190
|
+
);
|
|
191
|
+
/**
|
|
192
|
+
* Default the breadcrumb's `startAfter` skip-prefix to the role id when
|
|
193
|
+
* the consumer doesn't supply one. Without this, the auto-walk on a
|
|
194
|
+
* pathname like `/super/tenants` produces `Super Admin / Super /
|
|
195
|
+
* Tenants` — the `rootCrumb` already represents the role, so the bare
|
|
196
|
+
* `/super` segment becomes a duplicate fallback crumb. Skipping
|
|
197
|
+
* through `role.id` collapses that.
|
|
198
|
+
*
|
|
199
|
+
* Consumers mounting the shell under a different prefix (e.g.
|
|
200
|
+
* `/dashboard/[role]/...`) still need to pass an explicit
|
|
201
|
+
* `breadcrumbStartAfter='dashboard/super'` — the default only covers
|
|
202
|
+
* the simpler `/[role]/...` case. Passing an empty string opts out:
|
|
203
|
+
* `??` preserves it because empty string is not nullish.
|
|
204
|
+
*/
|
|
205
|
+
const resolvedBreadcrumbStartAfter = $derived(breadcrumbStartAfter ?? role.id);
|
|
206
|
+
/**
|
|
207
|
+
* Set the role-color CSS custom property on the shell wrapper when the
|
|
208
|
+
* role config supplies one. Consumer stylesheets can read this via
|
|
209
|
+
* `var(--smrt-role-color)` (e.g. to recolor active-nav highlights). When
|
|
210
|
+
* omitted the wrapper renders no inline style, which keeps the DOM tidy
|
|
211
|
+
* for SSR snapshots.
|
|
212
|
+
*/
|
|
213
|
+
const wrapperStyle = $derived(
|
|
214
|
+
role.color ? `--smrt-role-color: ${role.color};` : undefined,
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
function handleNavigate(): void {
|
|
218
|
+
// Always close the mobile drawer on nav click — this is the behaviour
|
|
219
|
+
// consumers historically wired up by hand. The optional `onNavigate`
|
|
220
|
+
// prop lets them layer in additional side-effects (analytics, store
|
|
221
|
+
// updates, etc.) without losing the close.
|
|
222
|
+
mobileNavOpen = false;
|
|
223
|
+
onNavigate?.();
|
|
224
|
+
}
|
|
225
|
+
</script>
|
|
226
|
+
|
|
227
|
+
<div class="smrt-role-shell" data-role-id={role.id} style={wrapperStyle}>
|
|
228
|
+
<WorkspaceShell
|
|
229
|
+
title={resolvedTitle}
|
|
230
|
+
subtitle={resolvedSubtitle}
|
|
231
|
+
{eyebrow}
|
|
232
|
+
{modeLabel}
|
|
233
|
+
{modeStatus}
|
|
234
|
+
{modeDetail}
|
|
235
|
+
{collapsed}
|
|
236
|
+
{onToggleCollapsed}
|
|
237
|
+
{collapsible}
|
|
238
|
+
{showInspector}
|
|
239
|
+
{inspectorTitle}
|
|
240
|
+
{onCloseInspector}
|
|
241
|
+
{sidebarFooter}
|
|
242
|
+
{topbarActions}
|
|
243
|
+
{inspector}
|
|
244
|
+
{inspectorRail}
|
|
245
|
+
bind:mobileNavOpen
|
|
246
|
+
>
|
|
247
|
+
{#snippet brand()}
|
|
248
|
+
{#if consumerBrand}
|
|
249
|
+
{@render consumerBrand()}
|
|
250
|
+
{:else}
|
|
251
|
+
{#if role.icon}
|
|
252
|
+
<span class="smrt-role-shell-icon" aria-hidden="true">{role.icon}</span>
|
|
253
|
+
{/if}
|
|
254
|
+
{#if resolvedTitle}
|
|
255
|
+
<h1>{resolvedTitle}</h1>
|
|
256
|
+
{/if}
|
|
257
|
+
{#if resolvedSubtitle}
|
|
258
|
+
<p class="subtitle">{resolvedSubtitle}</p>
|
|
259
|
+
{/if}
|
|
260
|
+
{/if}
|
|
261
|
+
{/snippet}
|
|
262
|
+
|
|
263
|
+
{#snippet nav()}
|
|
264
|
+
<NavTree
|
|
265
|
+
items={role.sections}
|
|
266
|
+
{currentPath}
|
|
267
|
+
iconComponent={navIconComponent}
|
|
268
|
+
onNavigate={handleNavigate}
|
|
269
|
+
collapsed={collapsed ?? false}
|
|
270
|
+
/>
|
|
271
|
+
{/snippet}
|
|
272
|
+
|
|
273
|
+
{#if showBreadcrumbs}
|
|
274
|
+
<Breadcrumbs
|
|
275
|
+
nav={role.sections}
|
|
276
|
+
pathname={currentPath}
|
|
277
|
+
rootCrumb={resolvedRootCrumb}
|
|
278
|
+
startAfter={resolvedBreadcrumbStartAfter}
|
|
279
|
+
/>
|
|
280
|
+
{/if}
|
|
281
|
+
{@render children()}
|
|
282
|
+
</WorkspaceShell>
|
|
283
|
+
</div>
|
|
284
|
+
|
|
285
|
+
<style>
|
|
286
|
+
/*
|
|
287
|
+
* Display: contents lets the WorkspaceShell drive the grid/layout while
|
|
288
|
+
* still giving us a single DOM node to hang `--smrt-role-color` off.
|
|
289
|
+
* The wrapper element exists purely to scope the custom property; it
|
|
290
|
+
* never participates in layout.
|
|
291
|
+
*/
|
|
292
|
+
.smrt-role-shell {
|
|
293
|
+
display: contents;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/*
|
|
297
|
+
* The default brand snippet renders the role icon as a leading glyph.
|
|
298
|
+
* Sized to match `<h1>` line-height so the icon stays vertically aligned
|
|
299
|
+
* with the title baseline. Consumer-provided `brand` snippets bypass
|
|
300
|
+
* this entirely.
|
|
301
|
+
*/
|
|
302
|
+
.smrt-role-shell-icon {
|
|
303
|
+
display: inline-block;
|
|
304
|
+
margin-right: 0.4rem;
|
|
305
|
+
font-size: var(--smrt-typography-title-medium-size, 1.1rem);
|
|
306
|
+
line-height: 1;
|
|
307
|
+
color: var(--smrt-role-color, var(--smrt-color-on-surface, #111827));
|
|
308
|
+
}
|
|
309
|
+
</style>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { Component, Snippet } from 'svelte';
|
|
2
|
+
import type { BreadcrumbItem, RoleConfig } from './types.js';
|
|
3
|
+
interface Props {
|
|
4
|
+
/** All available roles. Looked up by `id`. */
|
|
5
|
+
roles: RoleConfig[];
|
|
6
|
+
/** Currently active role's id. The shell renders that role's config. */
|
|
7
|
+
currentRole: string;
|
|
8
|
+
/** Current pathname (consumer provides; SvelteKit-agnostic). */
|
|
9
|
+
currentPath: string;
|
|
10
|
+
/** Optional: override the shell title; defaults to the current role's label. */
|
|
11
|
+
title?: string;
|
|
12
|
+
/** Optional: override the shell subtitle; defaults to the current role's description. */
|
|
13
|
+
subtitle?: string;
|
|
14
|
+
/** Optional: small uppercase eyebrow label rendered above the title — passes through to `WorkspaceShell`. */
|
|
15
|
+
eyebrow?: string;
|
|
16
|
+
/** Optional: topbar mode label — passes through. */
|
|
17
|
+
modeLabel?: string;
|
|
18
|
+
/** Optional: topbar mode status — passes through. */
|
|
19
|
+
modeStatus?: 'active' | 'offline' | 'local-only' | 'attention' | (string & {});
|
|
20
|
+
/** Optional: topbar mode detail — passes through. */
|
|
21
|
+
modeDetail?: string;
|
|
22
|
+
/** Optional: sidebar collapsed state — passes through to `WorkspaceShell`. */
|
|
23
|
+
collapsed?: boolean;
|
|
24
|
+
/** Optional: sidebar collapse handler — passes through to `WorkspaceShell`. */
|
|
25
|
+
onToggleCollapsed?: () => void;
|
|
26
|
+
/** Optional: whether the collapse toggle should render — passes through. */
|
|
27
|
+
collapsible?: boolean;
|
|
28
|
+
/** Optional: whether the inspector panel is currently shown — passes through. */
|
|
29
|
+
showInspector?: boolean;
|
|
30
|
+
/** Optional: inspector header label — passes through. */
|
|
31
|
+
inspectorTitle?: string;
|
|
32
|
+
/** Optional: inspector close handler — passes through. */
|
|
33
|
+
onCloseInspector?: () => void;
|
|
34
|
+
/** Optional: brand snippet — passes through to `WorkspaceShell`. When omitted, the default brand renders `role.icon` (if any) alongside the resolved title/subtitle. */
|
|
35
|
+
brand?: Snippet;
|
|
36
|
+
/** Optional: sidebar footer (account menu, tenant switcher) — passes through. */
|
|
37
|
+
sidebarFooter?: Snippet;
|
|
38
|
+
/** Optional: topbar actions — passes through. */
|
|
39
|
+
topbarActions?: Snippet;
|
|
40
|
+
/** Optional: inspector panel — passes through. Inspector content only renders when `showInspector` is also true. */
|
|
41
|
+
inspector?: Snippet;
|
|
42
|
+
/** Optional: inspector rail — passes through. */
|
|
43
|
+
inspectorRail?: Snippet;
|
|
44
|
+
/** Required: main content. */
|
|
45
|
+
children: Snippet;
|
|
46
|
+
/**
|
|
47
|
+
* Mobile drawer open state — bindable via Svelte 5 `$bindable`. Pass as
|
|
48
|
+
* `bind:mobileNavOpen={...}` to control externally (e.g. close the drawer
|
|
49
|
+
* after a route change). Defaults to `false`.
|
|
50
|
+
*/
|
|
51
|
+
mobileNavOpen?: boolean;
|
|
52
|
+
/** Optional: show breadcrumbs (default: true). */
|
|
53
|
+
showBreadcrumbs?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Optional: override the breadcrumb's root crumb. Defaults to
|
|
56
|
+
* `{ label: role.label, href: '/' + role.id }`. Set this when the shell
|
|
57
|
+
* is mounted under a prefix (e.g. `/dashboard/[role]/...`,
|
|
58
|
+
* `/t/:slug/admin`) so the root crumb points at a real route.
|
|
59
|
+
*/
|
|
60
|
+
rootCrumb?: BreadcrumbItem;
|
|
61
|
+
/**
|
|
62
|
+
* Optional: pathname prefix to skip when auto-walking breadcrumbs.
|
|
63
|
+
* Forwarded to `<Breadcrumbs startAfter={...}>`. Defaults to `role.id`
|
|
64
|
+
* so a pathname like `/super/tenants` doesn't render a duplicate
|
|
65
|
+
* `Super` crumb alongside the `rootCrumb`. Override when the shell is
|
|
66
|
+
* mounted under a deeper prefix (e.g. `'dashboard/super'` for
|
|
67
|
+
* `/dashboard/[role]/...`), or pass an empty string to opt out of the
|
|
68
|
+
* default skip entirely.
|
|
69
|
+
*/
|
|
70
|
+
breadcrumbStartAfter?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Optional: icon renderer for `NavItem.icon` values, forwarded to the
|
|
73
|
+
* inner `<NavTree>`. Pass an icon component (lucide-svelte etc.) when
|
|
74
|
+
* your nav configs use icon *names* rather than emoji glyphs.
|
|
75
|
+
*/
|
|
76
|
+
navIconComponent?: Component<{
|
|
77
|
+
name: string;
|
|
78
|
+
size?: number;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* Optional: extra side-effect to run after a nav link click. The shell
|
|
82
|
+
* always closes the mobile drawer on navigation; this callback fires
|
|
83
|
+
* after that internal close so consumers can layer in analytics,
|
|
84
|
+
* router-store updates, etc. without losing the drawer behaviour.
|
|
85
|
+
*/
|
|
86
|
+
onNavigate?: () => void;
|
|
87
|
+
}
|
|
88
|
+
declare const RoleShell: Component<Props, {}, "mobileNavOpen">;
|
|
89
|
+
type RoleShell = ReturnType<typeof RoleShell>;
|
|
90
|
+
export default RoleShell;
|
|
91
|
+
//# sourceMappingURL=RoleShell.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoleShell.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/RoleShell.svelte.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAW,UAAU,EAAE,MAAM,YAAY,CAAC;AAItE,UAAU,KAAK;IACb,8CAA8C;IAC9C,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6GAA6G;IAC7G,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,UAAU,CAAC,EACP,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,WAAW,GACX,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,wKAAwK;IACxK,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oHAAoH;IACpH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kDAAkD;IAClD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAkJD,QAAA,MAAM,SAAS,uCAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
|