@marinoscar/platform-web 0.1.0-next.3 → 0.1.0-next.4
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/CHANGELOG.md +264 -0
- package/README.md +39 -6
- package/dist/ai/headless/adapters.d.ts +55 -0
- package/dist/ai/headless/adapters.d.ts.map +1 -0
- package/dist/ai/headless/adapters.js +44 -0
- package/dist/ai/headless/adapters.js.map +1 -0
- package/dist/ai/headless/ai-config-provider.d.ts +26 -0
- package/dist/ai/headless/ai-config-provider.d.ts.map +1 -0
- package/dist/ai/headless/ai-config-provider.js +27 -0
- package/dist/ai/headless/ai-config-provider.js.map +1 -0
- package/dist/ai/headless/capability-labels.d.ts +43 -0
- package/dist/ai/headless/capability-labels.d.ts.map +1 -0
- package/dist/ai/headless/capability-labels.js +69 -0
- package/dist/ai/headless/capability-labels.js.map +1 -0
- package/dist/ai/headless/chat-attachments.d.ts +116 -0
- package/dist/ai/headless/chat-attachments.d.ts.map +1 -0
- package/dist/ai/headless/chat-attachments.js +136 -0
- package/dist/ai/headless/chat-attachments.js.map +1 -0
- package/dist/ai/headless/client.d.ts +201 -0
- package/dist/ai/headless/client.d.ts.map +1 -0
- package/dist/ai/headless/client.js +321 -0
- package/dist/ai/headless/client.js.map +1 -0
- package/dist/ai/headless/errors.d.ts +32 -0
- package/dist/ai/headless/errors.d.ts.map +1 -0
- package/dist/ai/headless/errors.js +72 -0
- package/dist/ai/headless/errors.js.map +1 -0
- package/dist/ai/headless/index.d.ts +34 -0
- package/dist/ai/headless/index.d.ts.map +1 -0
- package/dist/ai/headless/index.js +34 -0
- package/dist/ai/headless/index.js.map +1 -0
- package/dist/ai/headless/schema-presets.d.ts +67 -0
- package/dist/ai/headless/schema-presets.d.ts.map +1 -0
- package/dist/ai/headless/schema-presets.js +86 -0
- package/dist/ai/headless/schema-presets.js.map +1 -0
- package/dist/ai/headless/types.d.ts +1770 -0
- package/dist/ai/headless/types.d.ts.map +1 -0
- package/dist/ai/headless/types.js +393 -0
- package/dist/ai/headless/types.js.map +1 -0
- package/dist/ai/headless/use-ai-admin-config.d.ts +115 -0
- package/dist/ai/headless/use-ai-admin-config.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-admin-config.js +260 -0
- package/dist/ai/headless/use-ai-admin-config.js.map +1 -0
- package/dist/ai/headless/use-ai-api.d.ts +22 -0
- package/dist/ai/headless/use-ai-api.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-api.js +31 -0
- package/dist/ai/headless/use-ai-api.js.map +1 -0
- package/dist/ai/headless/use-ai-capabilities.d.ts +23 -0
- package/dist/ai/headless/use-ai-capabilities.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-capabilities.js +62 -0
- package/dist/ai/headless/use-ai-capabilities.js.map +1 -0
- package/dist/ai/headless/use-ai-chat.d.ts +114 -0
- package/dist/ai/headless/use-ai-chat.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-chat.js +274 -0
- package/dist/ai/headless/use-ai-chat.js.map +1 -0
- package/dist/ai/headless/use-ai-config.d.ts +73 -0
- package/dist/ai/headless/use-ai-config.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-config.js +127 -0
- package/dist/ai/headless/use-ai-config.js.map +1 -0
- package/dist/ai/headless/use-ai-models.d.ts +68 -0
- package/dist/ai/headless/use-ai-models.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-models.js +191 -0
- package/dist/ai/headless/use-ai-models.js.map +1 -0
- package/dist/ai/headless/use-ai-realtime-session.d.ts +185 -0
- package/dist/ai/headless/use-ai-realtime-session.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-realtime-session.js +413 -0
- package/dist/ai/headless/use-ai-realtime-session.js.map +1 -0
- package/dist/ai/headless/use-ai-run.d.ts +80 -0
- package/dist/ai/headless/use-ai-run.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-run.js +212 -0
- package/dist/ai/headless/use-ai-run.js.map +1 -0
- package/dist/ai/headless/use-ai-storage.d.ts +13 -0
- package/dist/ai/headless/use-ai-storage.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-storage.js +19 -0
- package/dist/ai/headless/use-ai-storage.js.map +1 -0
- package/dist/ai/headless/use-ai-usage.d.ts +30 -0
- package/dist/ai/headless/use-ai-usage.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-usage.js +80 -0
- package/dist/ai/headless/use-ai-usage.js.map +1 -0
- package/dist/ai/headless/use-ai-user-settings.d.ts +38 -0
- package/dist/ai/headless/use-ai-user-settings.d.ts.map +1 -0
- package/dist/ai/headless/use-ai-user-settings.js +20 -0
- package/dist/ai/headless/use-ai-user-settings.js.map +1 -0
- package/dist/ai/headless/use-microphone-permission.d.ts +95 -0
- package/dist/ai/headless/use-microphone-permission.d.ts.map +1 -0
- package/dist/ai/headless/use-microphone-permission.js +200 -0
- package/dist/ai/headless/use-microphone-permission.js.map +1 -0
- package/dist/ai/headless/use-org-ai-keys.d.ts +47 -0
- package/dist/ai/headless/use-org-ai-keys.d.ts.map +1 -0
- package/dist/ai/headless/use-org-ai-keys.js +112 -0
- package/dist/ai/headless/use-org-ai-keys.js.map +1 -0
- package/dist/ai/headless/use-org-ai-policy.d.ts +33 -0
- package/dist/ai/headless/use-org-ai-policy.d.ts.map +1 -0
- package/dist/ai/headless/use-org-ai-policy.js +41 -0
- package/dist/ai/headless/use-org-ai-policy.js.map +1 -0
- package/dist/ai/headless/use-usable-ai-models.d.ts +24 -0
- package/dist/ai/headless/use-usable-ai-models.d.ts.map +1 -0
- package/dist/ai/headless/use-usable-ai-models.js +49 -0
- package/dist/ai/headless/use-usable-ai-models.js.map +1 -0
- package/dist/ai/headless/use-user-ai-keys.d.ts +35 -0
- package/dist/ai/headless/use-user-ai-keys.d.ts.map +1 -0
- package/dist/ai/headless/use-user-ai-keys.js +76 -0
- package/dist/ai/headless/use-user-ai-keys.js.map +1 -0
- package/dist/ai/internal/use-is-mounted.d.ts +9 -0
- package/dist/ai/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/ai/internal/use-is-mounted.js +19 -0
- package/dist/ai/internal/use-is-mounted.js.map +1 -0
- package/dist/ai/ui/AiConfigPage.d.ts +102 -0
- package/dist/ai/ui/AiConfigPage.d.ts.map +1 -0
- package/dist/ai/ui/AiConfigPage.js +379 -0
- package/dist/ai/ui/AiConfigPage.js.map +1 -0
- package/dist/ai/ui/AiModelsPage.d.ts +75 -0
- package/dist/ai/ui/AiModelsPage.d.ts.map +1 -0
- package/dist/ai/ui/AiModelsPage.js +210 -0
- package/dist/ai/ui/AiModelsPage.js.map +1 -0
- package/dist/ai/ui/AiPlaygroundPage.d.ts +33 -0
- package/dist/ai/ui/AiPlaygroundPage.d.ts.map +1 -0
- package/dist/ai/ui/AiPlaygroundPage.js +384 -0
- package/dist/ai/ui/AiPlaygroundPage.js.map +1 -0
- package/dist/ai/ui/AiUsagePage.d.ts +43 -0
- package/dist/ai/ui/AiUsagePage.d.ts.map +1 -0
- package/dist/ai/ui/AiUsagePage.js +93 -0
- package/dist/ai/ui/AiUsagePage.js.map +1 -0
- package/dist/ai/ui/OrgAiKeysPage.d.ts +56 -0
- package/dist/ai/ui/OrgAiKeysPage.d.ts.map +1 -0
- package/dist/ai/ui/OrgAiKeysPage.js +59 -0
- package/dist/ai/ui/OrgAiKeysPage.js.map +1 -0
- package/dist/ai/ui/RequireAiEnabled.d.ts +48 -0
- package/dist/ai/ui/RequireAiEnabled.d.ts.map +1 -0
- package/dist/ai/ui/RequireAiEnabled.js +30 -0
- package/dist/ai/ui/RequireAiEnabled.js.map +1 -0
- package/dist/ai/ui/UserAiKeysPage.d.ts +32 -0
- package/dist/ai/ui/UserAiKeysPage.d.ts.map +1 -0
- package/dist/ai/ui/UserAiKeysPage.js +74 -0
- package/dist/ai/ui/UserAiKeysPage.js.map +1 -0
- package/dist/ai/ui/admin/AiGenericProviderCard.d.ts +49 -0
- package/dist/ai/ui/admin/AiGenericProviderCard.d.ts.map +1 -0
- package/dist/ai/ui/admin/AiGenericProviderCard.js +123 -0
- package/dist/ai/ui/admin/AiGenericProviderCard.js.map +1 -0
- package/dist/ai/ui/admin/AiModelOverrideDialog.d.ts +44 -0
- package/dist/ai/ui/admin/AiModelOverrideDialog.d.ts.map +1 -0
- package/dist/ai/ui/admin/AiModelOverrideDialog.js +132 -0
- package/dist/ai/ui/admin/AiModelOverrideDialog.js.map +1 -0
- package/dist/ai/ui/admin/AiProbeResult.d.ts +19 -0
- package/dist/ai/ui/admin/AiProbeResult.d.ts.map +1 -0
- package/dist/ai/ui/admin/AiProbeResult.js +50 -0
- package/dist/ai/ui/admin/AiProbeResult.js.map +1 -0
- package/dist/ai/ui/admin/AiProviderCard.d.ts +103 -0
- package/dist/ai/ui/admin/AiProviderCard.d.ts.map +1 -0
- package/dist/ai/ui/admin/AiProviderCard.js +128 -0
- package/dist/ai/ui/admin/AiProviderCard.js.map +1 -0
- package/dist/ai/ui/admin/AiProviderKeyActions.d.ts +50 -0
- package/dist/ai/ui/admin/AiProviderKeyActions.d.ts.map +1 -0
- package/dist/ai/ui/admin/AiProviderKeyActions.js +76 -0
- package/dist/ai/ui/admin/AiProviderKeyActions.js.map +1 -0
- package/dist/ai/ui/admin/aiModelColumns.d.ts +31 -0
- package/dist/ai/ui/admin/aiModelColumns.d.ts.map +1 -0
- package/dist/ai/ui/admin/aiModelColumns.js +97 -0
- package/dist/ai/ui/admin/aiModelColumns.js.map +1 -0
- package/dist/ai/ui/admin/aiProviderCardRegistry.d.ts +57 -0
- package/dist/ai/ui/admin/aiProviderCardRegistry.d.ts.map +1 -0
- package/dist/ai/ui/admin/aiProviderCardRegistry.js +76 -0
- package/dist/ai/ui/admin/aiProviderCardRegistry.js.map +1 -0
- package/dist/ai/ui/admin/aiProviderForm.d.ts +75 -0
- package/dist/ai/ui/admin/aiProviderForm.d.ts.map +1 -0
- package/dist/ai/ui/admin/aiProviderForm.js +227 -0
- package/dist/ai/ui/admin/aiProviderForm.js.map +1 -0
- package/dist/ai/ui/admin/builtinAiProviderCards.d.ts +5 -0
- package/dist/ai/ui/admin/builtinAiProviderCards.d.ts.map +1 -0
- package/dist/ai/ui/admin/builtinAiProviderCards.js +15 -0
- package/dist/ai/ui/admin/builtinAiProviderCards.js.map +1 -0
- package/dist/ai/ui/config-page.d.ts +2 -0
- package/dist/ai/ui/config-page.d.ts.map +1 -0
- package/dist/ai/ui/config-page.js +6 -0
- package/dist/ai/ui/config-page.js.map +1 -0
- package/dist/ai/ui/index.d.ts +19 -0
- package/dist/ai/ui/index.d.ts.map +1 -0
- package/dist/ai/ui/index.js +17 -0
- package/dist/ai/ui/index.js.map +1 -0
- package/dist/ai/ui/internal/AiSpinner.d.ts +5 -0
- package/dist/ai/ui/internal/AiSpinner.d.ts.map +1 -0
- package/dist/ai/ui/internal/AiSpinner.js +19 -0
- package/dist/ai/ui/internal/AiSpinner.js.map +1 -0
- package/dist/ai/ui/keys-page.d.ts +2 -0
- package/dist/ai/ui/keys-page.d.ts.map +1 -0
- package/dist/ai/ui/keys-page.js +6 -0
- package/dist/ai/ui/keys-page.js.map +1 -0
- package/dist/ai/ui/models-page.d.ts +2 -0
- package/dist/ai/ui/models-page.d.ts.map +1 -0
- package/dist/ai/ui/models-page.js +6 -0
- package/dist/ai/ui/models-page.js.map +1 -0
- package/dist/ai/ui/playground/AiEmbeddingsMode.d.ts +13 -0
- package/dist/ai/ui/playground/AiEmbeddingsMode.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiEmbeddingsMode.js +85 -0
- package/dist/ai/ui/playground/AiEmbeddingsMode.js.map +1 -0
- package/dist/ai/ui/playground/AiFilePicker.d.ts +11 -0
- package/dist/ai/ui/playground/AiFilePicker.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiFilePicker.js +12 -0
- package/dist/ai/ui/playground/AiFilePicker.js.map +1 -0
- package/dist/ai/ui/playground/AiImageMode.d.ts +22 -0
- package/dist/ai/ui/playground/AiImageMode.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiImageMode.js +130 -0
- package/dist/ai/ui/playground/AiImageMode.js.map +1 -0
- package/dist/ai/ui/playground/AiPlaygroundModeSelector.d.ts +14 -0
- package/dist/ai/ui/playground/AiPlaygroundModeSelector.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiPlaygroundModeSelector.js +54 -0
- package/dist/ai/ui/playground/AiPlaygroundModeSelector.js.map +1 -0
- package/dist/ai/ui/playground/AiPlaygroundPanels.d.ts +20 -0
- package/dist/ai/ui/playground/AiPlaygroundPanels.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiPlaygroundPanels.js +28 -0
- package/dist/ai/ui/playground/AiPlaygroundPanels.js.map +1 -0
- package/dist/ai/ui/playground/AiSpeechMode.d.ts +14 -0
- package/dist/ai/ui/playground/AiSpeechMode.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiSpeechMode.js +75 -0
- package/dist/ai/ui/playground/AiSpeechMode.js.map +1 -0
- package/dist/ai/ui/playground/AiTranscribeMode.d.ts +41 -0
- package/dist/ai/ui/playground/AiTranscribeMode.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiTranscribeMode.js +115 -0
- package/dist/ai/ui/playground/AiTranscribeMode.js.map +1 -0
- package/dist/ai/ui/playground/AiVoiceMode.d.ts +25 -0
- package/dist/ai/ui/playground/AiVoiceMode.d.ts.map +1 -0
- package/dist/ai/ui/playground/AiVoiceMode.js +188 -0
- package/dist/ai/ui/playground/AiVoiceMode.js.map +1 -0
- package/dist/ai/ui/playground/aiPlaygroundModes.d.ts +170 -0
- package/dist/ai/ui/playground/aiPlaygroundModes.d.ts.map +1 -0
- package/dist/ai/ui/playground/aiPlaygroundModes.js +127 -0
- package/dist/ai/ui/playground/aiPlaygroundModes.js.map +1 -0
- package/dist/ai/ui/playground/builtinAiPlaygroundModes.d.ts +2 -0
- package/dist/ai/ui/playground/builtinAiPlaygroundModes.d.ts.map +1 -0
- package/dist/ai/ui/playground/builtinAiPlaygroundModes.js +73 -0
- package/dist/ai/ui/playground/builtinAiPlaygroundModes.js.map +1 -0
- package/dist/ai/ui/playground/embeddingMath.d.ts +15 -0
- package/dist/ai/ui/playground/embeddingMath.d.ts.map +1 -0
- package/dist/ai/ui/playground/embeddingMath.js +37 -0
- package/dist/ai/ui/playground/embeddingMath.js.map +1 -0
- package/dist/ai/ui/playground/usePlaygroundModel.d.ts +14 -0
- package/dist/ai/ui/playground/usePlaygroundModel.d.ts.map +1 -0
- package/dist/ai/ui/playground/usePlaygroundModel.js +27 -0
- package/dist/ai/ui/playground/usePlaygroundModel.js.map +1 -0
- package/dist/ai/ui/playground-modes.d.ts +3 -0
- package/dist/ai/ui/playground-modes.d.ts.map +1 -0
- package/dist/ai/ui/playground-modes.js +6 -0
- package/dist/ai/ui/playground-modes.js.map +1 -0
- package/dist/ai/ui/playground-page.d.ts +4 -0
- package/dist/ai/ui/playground-page.d.ts.map +1 -0
- package/dist/ai/ui/playground-page.js +9 -0
- package/dist/ai/ui/playground-page.js.map +1 -0
- package/dist/ai/ui/provider-cards.d.ts +6 -0
- package/dist/ai/ui/provider-cards.d.ts.map +1 -0
- package/dist/ai/ui/provider-cards.js +7 -0
- package/dist/ai/ui/provider-cards.js.map +1 -0
- package/dist/ai/ui/require-ai-enabled.d.ts +3 -0
- package/dist/ai/ui/require-ai-enabled.d.ts.map +1 -0
- package/dist/ai/ui/require-ai-enabled.js +5 -0
- package/dist/ai/ui/require-ai-enabled.js.map +1 -0
- package/dist/ai/ui/shared/AiAttachmentChips.d.ts +21 -0
- package/dist/ai/ui/shared/AiAttachmentChips.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiAttachmentChips.js +28 -0
- package/dist/ai/ui/shared/AiAttachmentChips.js.map +1 -0
- package/dist/ai/ui/shared/AiCapabilityChips.d.ts +13 -0
- package/dist/ai/ui/shared/AiCapabilityChips.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiCapabilityChips.js +47 -0
- package/dist/ai/ui/shared/AiCapabilityChips.js.map +1 -0
- package/dist/ai/ui/shared/AiChatAttachmentPicker.d.ts +21 -0
- package/dist/ai/ui/shared/AiChatAttachmentPicker.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiChatAttachmentPicker.js +49 -0
- package/dist/ai/ui/shared/AiChatAttachmentPicker.js.map +1 -0
- package/dist/ai/ui/shared/AiChatThread.d.ts +9 -0
- package/dist/ai/ui/shared/AiChatThread.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiChatThread.js +63 -0
- package/dist/ai/ui/shared/AiChatThread.js.map +1 -0
- package/dist/ai/ui/shared/AiEmbeddingsResult.d.ts +13 -0
- package/dist/ai/ui/shared/AiEmbeddingsResult.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiEmbeddingsResult.js +46 -0
- package/dist/ai/ui/shared/AiEmbeddingsResult.js.map +1 -0
- package/dist/ai/ui/shared/AiErrorAlert.d.ts +26 -0
- package/dist/ai/ui/shared/AiErrorAlert.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiErrorAlert.js +209 -0
- package/dist/ai/ui/shared/AiErrorAlert.js.map +1 -0
- package/dist/ai/ui/shared/AiHostedToolControls.d.ts +33 -0
- package/dist/ai/ui/shared/AiHostedToolControls.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiHostedToolControls.js +96 -0
- package/dist/ai/ui/shared/AiHostedToolControls.js.map +1 -0
- package/dist/ai/ui/shared/AiHostedToolOutputs.d.ts +11 -0
- package/dist/ai/ui/shared/AiHostedToolOutputs.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiHostedToolOutputs.js +138 -0
- package/dist/ai/ui/shared/AiHostedToolOutputs.js.map +1 -0
- package/dist/ai/ui/shared/AiImageGallery.d.ts +19 -0
- package/dist/ai/ui/shared/AiImageGallery.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiImageGallery.js +63 -0
- package/dist/ai/ui/shared/AiImageGallery.js.map +1 -0
- package/dist/ai/ui/shared/AiModelSelect.d.ts +22 -0
- package/dist/ai/ui/shared/AiModelSelect.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiModelSelect.js +61 -0
- package/dist/ai/ui/shared/AiModelSelect.js.map +1 -0
- package/dist/ai/ui/shared/AiReasoningPanel.d.ts +9 -0
- package/dist/ai/ui/shared/AiReasoningPanel.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiReasoningPanel.js +20 -0
- package/dist/ai/ui/shared/AiReasoningPanel.js.map +1 -0
- package/dist/ai/ui/shared/AiRunCard.d.ts +38 -0
- package/dist/ai/ui/shared/AiRunCard.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiRunCard.js +21 -0
- package/dist/ai/ui/shared/AiRunCard.js.map +1 -0
- package/dist/ai/ui/shared/AiSpeechPlayer.d.ts +9 -0
- package/dist/ai/ui/shared/AiSpeechPlayer.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiSpeechPlayer.js +50 -0
- package/dist/ai/ui/shared/AiSpeechPlayer.js.map +1 -0
- package/dist/ai/ui/shared/AiStructuredOutputPanel.d.ts +7 -0
- package/dist/ai/ui/shared/AiStructuredOutputPanel.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiStructuredOutputPanel.js +24 -0
- package/dist/ai/ui/shared/AiStructuredOutputPanel.js.map +1 -0
- package/dist/ai/ui/shared/AiTranscript.d.ts +9 -0
- package/dist/ai/ui/shared/AiTranscript.d.ts.map +1 -0
- package/dist/ai/ui/shared/AiTranscript.js +38 -0
- package/dist/ai/ui/shared/AiTranscript.js.map +1 -0
- package/dist/ai/ui/shared/aiCapabilities.d.ts +46 -0
- package/dist/ai/ui/shared/aiCapabilities.d.ts.map +1 -0
- package/dist/ai/ui/shared/aiCapabilities.js +89 -0
- package/dist/ai/ui/shared/aiCapabilities.js.map +1 -0
- package/dist/ai/ui/usage/AiUsageDailyChart.d.ts +11 -0
- package/dist/ai/ui/usage/AiUsageDailyChart.d.ts.map +1 -0
- package/dist/ai/ui/usage/AiUsageDailyChart.js +91 -0
- package/dist/ai/ui/usage/AiUsageDailyChart.js.map +1 -0
- package/dist/ai/ui/usage/AiUsageTable.d.ts +27 -0
- package/dist/ai/ui/usage/AiUsageTable.d.ts.map +1 -0
- package/dist/ai/ui/usage/AiUsageTable.js +107 -0
- package/dist/ai/ui/usage/AiUsageTable.js.map +1 -0
- package/dist/ai/ui/usage/AiUsageTotals.d.ts +17 -0
- package/dist/ai/ui/usage/AiUsageTotals.d.ts.map +1 -0
- package/dist/ai/ui/usage/AiUsageTotals.js +16 -0
- package/dist/ai/ui/usage/AiUsageTotals.js.map +1 -0
- package/dist/ai/ui/usage/aiUsageFormat.d.ts +32 -0
- package/dist/ai/ui/usage/aiUsageFormat.d.ts.map +1 -0
- package/dist/ai/ui/usage/aiUsageFormat.js +84 -0
- package/dist/ai/ui/usage/aiUsageFormat.js.map +1 -0
- package/dist/ai/ui/usage/index.d.ts +5 -0
- package/dist/ai/ui/usage/index.d.ts.map +1 -0
- package/dist/ai/ui/usage/index.js +5 -0
- package/dist/ai/ui/usage/index.js.map +1 -0
- package/dist/ai/ui/usage-page.d.ts +2 -0
- package/dist/ai/ui/usage-page.d.ts.map +1 -0
- package/dist/ai/ui/usage-page.js +6 -0
- package/dist/ai/ui/usage-page.js.map +1 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.d.ts +13 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.d.ts.map +1 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.js +53 -0
- package/dist/ai/ui/user/DefaultAiModelPicker.js.map +1 -0
- package/dist/ai/ui/user/KeylessProviderCard.d.ts +10 -0
- package/dist/ai/ui/user/KeylessProviderCard.d.ts.map +1 -0
- package/dist/ai/ui/user/KeylessProviderCard.js +17 -0
- package/dist/ai/ui/user/KeylessProviderCard.js.map +1 -0
- package/dist/ai/ui/user/MyAiUsageSection.d.ts +4 -0
- package/dist/ai/ui/user/MyAiUsageSection.d.ts.map +1 -0
- package/dist/ai/ui/user/MyAiUsageSection.js +26 -0
- package/dist/ai/ui/user/MyAiUsageSection.js.map +1 -0
- package/dist/ai/ui/user/UsableAiModelsList.d.ts +10 -0
- package/dist/ai/ui/user/UsableAiModelsList.d.ts.map +1 -0
- package/dist/ai/ui/user/UsableAiModelsList.js +22 -0
- package/dist/ai/ui/user/UsableAiModelsList.js.map +1 -0
- package/dist/ai/ui/user/UserAiKeyCard.d.ts +24 -0
- package/dist/ai/ui/user/UserAiKeyCard.d.ts.map +1 -0
- package/dist/ai/ui/user/UserAiKeyCard.js +123 -0
- package/dist/ai/ui/user/UserAiKeyCard.js.map +1 -0
- package/dist/ai/ui/user/aiErrorText.d.ts +5 -0
- package/dist/ai/ui/user/aiErrorText.d.ts.map +1 -0
- package/dist/ai/ui/user/aiErrorText.js +33 -0
- package/dist/ai/ui/user/aiErrorText.js.map +1 -0
- package/dist/android-app/headless/client.d.ts +78 -0
- package/dist/android-app/headless/client.d.ts.map +1 -0
- package/dist/android-app/headless/client.js +54 -0
- package/dist/android-app/headless/client.js.map +1 -0
- package/dist/android-app/headless/hooks.d.ts +70 -0
- package/dist/android-app/headless/hooks.d.ts.map +1 -0
- package/dist/android-app/headless/hooks.js +104 -0
- package/dist/android-app/headless/hooks.js.map +1 -0
- package/dist/android-app/headless/identity.d.ts +20 -0
- package/dist/android-app/headless/identity.d.ts.map +1 -0
- package/dist/android-app/headless/identity.js +24 -0
- package/dist/android-app/headless/identity.js.map +1 -0
- package/dist/android-app/headless/index.d.ts +9 -0
- package/dist/android-app/headless/index.d.ts.map +1 -0
- package/dist/android-app/headless/index.js +9 -0
- package/dist/android-app/headless/index.js.map +1 -0
- package/dist/android-app/headless/twa.d.ts +80 -0
- package/dist/android-app/headless/twa.d.ts.map +1 -0
- package/dist/android-app/headless/twa.js +126 -0
- package/dist/android-app/headless/twa.js.map +1 -0
- package/dist/android-app/ui/AndroidAppPage.d.ts +114 -0
- package/dist/android-app/ui/AndroidAppPage.d.ts.map +1 -0
- package/dist/android-app/ui/AndroidAppPage.js +219 -0
- package/dist/android-app/ui/AndroidAppPage.js.map +1 -0
- package/dist/android-app/ui/AndroidUpdateBanner.d.ts +31 -0
- package/dist/android-app/ui/AndroidUpdateBanner.d.ts.map +1 -0
- package/dist/android-app/ui/AndroidUpdateBanner.js +77 -0
- package/dist/android-app/ui/AndroidUpdateBanner.js.map +1 -0
- package/dist/android-app/ui/DownloadApkButton.d.ts +27 -0
- package/dist/android-app/ui/DownloadApkButton.d.ts.map +1 -0
- package/dist/android-app/ui/DownloadApkButton.js +36 -0
- package/dist/android-app/ui/DownloadApkButton.js.map +1 -0
- package/dist/android-app/ui/copy.d.ts +37 -0
- package/dist/android-app/ui/copy.d.ts.map +1 -0
- package/dist/android-app/ui/copy.js +39 -0
- package/dist/android-app/ui/copy.js.map +1 -0
- package/dist/android-app/ui/index.d.ts +9 -0
- package/dist/android-app/ui/index.d.ts.map +1 -0
- package/dist/android-app/ui/index.js +9 -0
- package/dist/android-app/ui/index.js.map +1 -0
- package/dist/android-app/ui/settings-page.d.ts +19 -0
- package/dist/android-app/ui/settings-page.d.ts.map +1 -0
- package/dist/android-app/ui/settings-page.js +31 -0
- package/dist/android-app/ui/settings-page.js.map +1 -0
- package/dist/core/api-client.d.ts +20 -0
- package/dist/core/api-client.d.ts.map +1 -1
- package/dist/core/api-client.js.map +1 -1
- package/dist/core/host.d.ts +64 -0
- package/dist/core/host.d.ts.map +1 -1
- package/dist/core/host.js +50 -10
- package/dist/core/host.js.map +1 -1
- package/dist/core/http/client.d.ts +259 -0
- package/dist/core/http/client.d.ts.map +1 -0
- package/dist/core/http/client.js +366 -0
- package/dist/core/http/client.js.map +1 -0
- package/dist/core/http/platform-api-client.d.ts +61 -0
- package/dist/core/http/platform-api-client.d.ts.map +1 -0
- package/dist/core/http/platform-api-client.js +115 -0
- package/dist/core/http/platform-api-client.js.map +1 -0
- package/dist/core/http/sse.d.ts +284 -0
- package/dist/core/http/sse.d.ts.map +1 -0
- package/dist/core/http/sse.js +609 -0
- package/dist/core/http/sse.js.map +1 -0
- package/dist/core/index.d.ts +9 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +17 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/page-slots.d.ts +201 -0
- package/dist/core/page-slots.d.ts.map +1 -0
- package/dist/core/page-slots.js +121 -0
- package/dist/core/page-slots.js.map +1 -0
- package/dist/core/viewer.d.ts +12 -0
- package/dist/core/viewer.d.ts.map +1 -1
- package/dist/credentials/headless/index.d.ts +3 -0
- package/dist/credentials/headless/index.d.ts.map +1 -0
- package/dist/credentials/headless/index.js +5 -0
- package/dist/credentials/headless/index.js.map +1 -0
- package/dist/credentials/headless/saved-secret.d.ts +75 -0
- package/dist/credentials/headless/saved-secret.d.ts.map +1 -0
- package/dist/credentials/headless/saved-secret.js +67 -0
- package/dist/credentials/headless/saved-secret.js.map +1 -0
- package/dist/credentials/index.d.ts +5 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +9 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/ui/index.d.ts +3 -0
- package/dist/credentials/ui/index.d.ts.map +1 -0
- package/dist/credentials/ui/index.js +4 -0
- package/dist/credentials/ui/index.js.map +1 -0
- package/dist/credentials/ui/secret-field.d.ts +71 -0
- package/dist/credentials/ui/secret-field.d.ts.map +1 -0
- package/dist/credentials/ui/secret-field.js +47 -0
- package/dist/credentials/ui/secret-field.js.map +1 -0
- package/dist/datatable/headless/columns.d.ts +48 -0
- package/dist/datatable/headless/columns.d.ts.map +1 -0
- package/dist/datatable/headless/columns.js +70 -0
- package/dist/datatable/headless/columns.js.map +1 -0
- package/dist/datatable/headless/export/csv.d.ts +120 -0
- package/dist/datatable/headless/export/csv.d.ts.map +1 -0
- package/dist/datatable/headless/export/csv.js +151 -0
- package/dist/datatable/headless/export/csv.js.map +1 -0
- package/dist/datatable/headless/export/exportModel.d.ts +180 -0
- package/dist/datatable/headless/export/exportModel.d.ts.map +1 -0
- package/dist/datatable/headless/export/exportModel.js +230 -0
- package/dist/datatable/headless/export/exportModel.js.map +1 -0
- package/dist/datatable/headless/filter/filterMatch.d.ts +37 -0
- package/dist/datatable/headless/filter/filterMatch.d.ts.map +1 -0
- package/dist/datatable/headless/filter/filterMatch.js +49 -0
- package/dist/datatable/headless/filter/filterMatch.js.map +1 -0
- package/dist/datatable/headless/filter/filterModel.d.ts +114 -0
- package/dist/datatable/headless/filter/filterModel.d.ts.map +1 -0
- package/dist/datatable/headless/filter/filterModel.js +196 -0
- package/dist/datatable/headless/filter/filterModel.js.map +1 -0
- package/dist/datatable/headless/filter/filterTypes.d.ts +127 -0
- package/dist/datatable/headless/filter/filterTypes.d.ts.map +1 -0
- package/dist/datatable/headless/filter/filterTypes.js +308 -0
- package/dist/datatable/headless/filter/filterTypes.js.map +1 -0
- package/dist/datatable/headless/filter/filterUrl.d.ts +114 -0
- package/dist/datatable/headless/filter/filterUrl.d.ts.map +1 -0
- package/dist/datatable/headless/filter/filterUrl.js +176 -0
- package/dist/datatable/headless/filter/filterUrl.js.map +1 -0
- package/dist/datatable/headless/filter/operators.d.ts +115 -0
- package/dist/datatable/headless/filter/operators.d.ts.map +1 -0
- package/dist/datatable/headless/filter/operators.js +183 -0
- package/dist/datatable/headless/filter/operators.js.map +1 -0
- package/dist/datatable/headless/index.d.ts +22 -0
- package/dist/datatable/headless/index.d.ts.map +1 -0
- package/dist/datatable/headless/index.js +20 -0
- package/dist/datatable/headless/index.js.map +1 -0
- package/dist/datatable/headless/layout/layoutModel.d.ts +379 -0
- package/dist/datatable/headless/layout/layoutModel.d.ts.map +1 -0
- package/dist/datatable/headless/layout/layoutModel.js +459 -0
- package/dist/datatable/headless/layout/layoutModel.js.map +1 -0
- package/dist/datatable/headless/layout/preferences.d.ts +76 -0
- package/dist/datatable/headless/layout/preferences.d.ts.map +1 -0
- package/dist/datatable/headless/layout/preferences.js +65 -0
- package/dist/datatable/headless/layout/preferences.js.map +1 -0
- package/dist/datatable/headless/layout/useDataTableLayoutPrefs.d.ts +123 -0
- package/dist/datatable/headless/layout/useDataTableLayoutPrefs.d.ts.map +1 -0
- package/dist/datatable/headless/layout/useDataTableLayoutPrefs.js +434 -0
- package/dist/datatable/headless/layout/useDataTableLayoutPrefs.js.map +1 -0
- package/dist/datatable/headless/types.d.ts +757 -0
- package/dist/datatable/headless/types.d.ts.map +1 -0
- package/dist/datatable/headless/types.js +12 -0
- package/dist/datatable/headless/types.js.map +1 -0
- package/dist/datatable/headless/virtualization/cardVirtualization.d.ts +101 -0
- package/dist/datatable/headless/virtualization/cardVirtualization.d.ts.map +1 -0
- package/dist/datatable/headless/virtualization/cardVirtualization.js +139 -0
- package/dist/datatable/headless/virtualization/cardVirtualization.js.map +1 -0
- package/dist/datatable/headless/virtualization/gridVirtualization.d.ts +118 -0
- package/dist/datatable/headless/virtualization/gridVirtualization.d.ts.map +1 -0
- package/dist/datatable/headless/virtualization/gridVirtualization.js +107 -0
- package/dist/datatable/headless/virtualization/gridVirtualization.js.map +1 -0
- package/dist/datatable/index.d.ts +3 -0
- package/dist/datatable/index.d.ts.map +1 -0
- package/dist/datatable/index.js +9 -0
- package/dist/datatable/index.js.map +1 -0
- package/dist/datatable/testing/a11yGuards.d.ts +58 -0
- package/dist/datatable/testing/a11yGuards.d.ts.map +1 -0
- package/dist/datatable/testing/a11yGuards.js +59 -0
- package/dist/datatable/testing/a11yGuards.js.map +1 -0
- package/dist/datatable/testing/dom-matchers.d.ts +11 -0
- package/dist/datatable/testing/dom-matchers.d.ts.map +1 -0
- package/dist/datatable/testing/dom-matchers.js +9 -0
- package/dist/datatable/testing/dom-matchers.js.map +1 -0
- package/dist/datatable/testing/index.d.ts +6 -0
- package/dist/datatable/testing/index.d.ts.map +1 -0
- package/dist/datatable/testing/index.js +10 -0
- package/dist/datatable/testing/index.js.map +1 -0
- package/dist/datatable/testing/layoutStubs.d.ts +61 -0
- package/dist/datatable/testing/layoutStubs.d.ts.map +1 -0
- package/dist/datatable/testing/layoutStubs.js +154 -0
- package/dist/datatable/testing/layoutStubs.js.map +1 -0
- package/dist/datatable/testing/runDataTableConformanceSuite.d.ts +143 -0
- package/dist/datatable/testing/runDataTableConformanceSuite.d.ts.map +1 -0
- package/dist/datatable/testing/runDataTableConformanceSuite.js +782 -0
- package/dist/datatable/testing/runDataTableConformanceSuite.js.map +1 -0
- package/dist/datatable/ui/BulkActionBar.d.ts +57 -0
- package/dist/datatable/ui/BulkActionBar.d.ts.map +1 -0
- package/dist/datatable/ui/BulkActionBar.js +72 -0
- package/dist/datatable/ui/BulkActionBar.js.map +1 -0
- package/dist/datatable/ui/DataTable.d.ts +152 -0
- package/dist/datatable/ui/DataTable.d.ts.map +1 -0
- package/dist/datatable/ui/DataTable.js +211 -0
- package/dist/datatable/ui/DataTable.js.map +1 -0
- package/dist/datatable/ui/desktop/DesktopGridRenderer.d.ts +59 -0
- package/dist/datatable/ui/desktop/DesktopGridRenderer.d.ts.map +1 -0
- package/dist/datatable/ui/desktop/DesktopGridRenderer.js +370 -0
- package/dist/datatable/ui/desktop/DesktopGridRenderer.js.map +1 -0
- package/dist/datatable/ui/desktop/RowActionsCell.d.ts +56 -0
- package/dist/datatable/ui/desktop/RowActionsCell.d.ts.map +1 -0
- package/dist/datatable/ui/desktop/RowActionsCell.js +73 -0
- package/dist/datatable/ui/desktop/RowActionsCell.js.map +1 -0
- package/dist/datatable/ui/desktop/cells.d.ts +48 -0
- package/dist/datatable/ui/desktop/cells.d.ts.map +1 -0
- package/dist/datatable/ui/desktop/cells.js +62 -0
- package/dist/datatable/ui/desktop/cells.js.map +1 -0
- package/dist/datatable/ui/desktop/columnAdapter.d.ts +67 -0
- package/dist/datatable/ui/desktop/columnAdapter.d.ts.map +1 -0
- package/dist/datatable/ui/desktop/columnAdapter.js +116 -0
- package/dist/datatable/ui/desktop/columnAdapter.js.map +1 -0
- package/dist/datatable/ui/desktop/detailRow.d.ts +110 -0
- package/dist/datatable/ui/desktop/detailRow.d.ts.map +1 -0
- package/dist/datatable/ui/desktop/detailRow.js +88 -0
- package/dist/datatable/ui/desktop/detailRow.js.map +1 -0
- package/dist/datatable/ui/export/DataTableExportControl.d.ts +64 -0
- package/dist/datatable/ui/export/DataTableExportControl.d.ts.map +1 -0
- package/dist/datatable/ui/export/DataTableExportControl.js +123 -0
- package/dist/datatable/ui/export/DataTableExportControl.js.map +1 -0
- package/dist/datatable/ui/filter/DataTableFilterBar.d.ts +64 -0
- package/dist/datatable/ui/filter/DataTableFilterBar.d.ts.map +1 -0
- package/dist/datatable/ui/filter/DataTableFilterBar.js +95 -0
- package/dist/datatable/ui/filter/DataTableFilterBar.js.map +1 -0
- package/dist/datatable/ui/filter/FilterChips.d.ts +55 -0
- package/dist/datatable/ui/filter/FilterChips.d.ts.map +1 -0
- package/dist/datatable/ui/filter/FilterChips.js +70 -0
- package/dist/datatable/ui/filter/FilterChips.js.map +1 -0
- package/dist/datatable/ui/filter/FilterEditor.d.ts +65 -0
- package/dist/datatable/ui/filter/FilterEditor.d.ts.map +1 -0
- package/dist/datatable/ui/filter/FilterEditor.js +149 -0
- package/dist/datatable/ui/filter/FilterEditor.js.map +1 -0
- package/dist/datatable/ui/filter/QuickSearchField.d.ts +53 -0
- package/dist/datatable/ui/filter/QuickSearchField.d.ts.map +1 -0
- package/dist/datatable/ui/filter/QuickSearchField.js +100 -0
- package/dist/datatable/ui/filter/QuickSearchField.js.map +1 -0
- package/dist/datatable/ui/index.d.ts +39 -0
- package/dist/datatable/ui/index.d.ts.map +1 -0
- package/dist/datatable/ui/index.js +26 -0
- package/dist/datatable/ui/index.js.map +1 -0
- package/dist/datatable/ui/layout/DataTableViewBar.d.ts +72 -0
- package/dist/datatable/ui/layout/DataTableViewBar.d.ts.map +1 -0
- package/dist/datatable/ui/layout/DataTableViewBar.js +99 -0
- package/dist/datatable/ui/layout/DataTableViewBar.js.map +1 -0
- package/dist/datatable/ui/mobile/CardField.d.ts +95 -0
- package/dist/datatable/ui/mobile/CardField.d.ts.map +1 -0
- package/dist/datatable/ui/mobile/CardField.js +121 -0
- package/dist/datatable/ui/mobile/CardField.js.map +1 -0
- package/dist/datatable/ui/mobile/CardListRenderer.d.ts +34 -0
- package/dist/datatable/ui/mobile/CardListRenderer.d.ts.map +1 -0
- package/dist/datatable/ui/mobile/CardListRenderer.js +123 -0
- package/dist/datatable/ui/mobile/CardListRenderer.js.map +1 -0
- package/dist/datatable/ui/mobile/CardSortControl.d.ts +35 -0
- package/dist/datatable/ui/mobile/CardSortControl.d.ts.map +1 -0
- package/dist/datatable/ui/mobile/CardSortControl.js +46 -0
- package/dist/datatable/ui/mobile/CardSortControl.js.map +1 -0
- package/dist/datatable/ui/mobile/CompactPagination.d.ts +36 -0
- package/dist/datatable/ui/mobile/CompactPagination.d.ts.map +1 -0
- package/dist/datatable/ui/mobile/CompactPagination.js +47 -0
- package/dist/datatable/ui/mobile/CompactPagination.js.map +1 -0
- package/dist/datatable/ui/mobile/DataCard.d.ts +83 -0
- package/dist/datatable/ui/mobile/DataCard.d.ts.map +1 -0
- package/dist/datatable/ui/mobile/DataCard.js +122 -0
- package/dist/datatable/ui/mobile/DataCard.js.map +1 -0
- package/dist/datatable/ui/shared/IndeterminateCheckbox.d.ts +63 -0
- package/dist/datatable/ui/shared/IndeterminateCheckbox.d.ts.map +1 -0
- package/dist/datatable/ui/shared/IndeterminateCheckbox.js +62 -0
- package/dist/datatable/ui/shared/IndeterminateCheckbox.js.map +1 -0
- package/dist/datatable/ui/shared/rowActionConfirm.d.ts +49 -0
- package/dist/datatable/ui/shared/rowActionConfirm.d.ts.map +1 -0
- package/dist/datatable/ui/shared/rowActionConfirm.js +60 -0
- package/dist/datatable/ui/shared/rowActionConfirm.js.map +1 -0
- package/dist/datatable/ui/shared/visuallyHidden.d.ts +12 -0
- package/dist/datatable/ui/shared/visuallyHidden.d.ts.map +1 -0
- package/dist/datatable/ui/shared/visuallyHidden.js +16 -0
- package/dist/datatable/ui/shared/visuallyHidden.js.map +1 -0
- package/dist/datatable/ui/useContainerLayout.d.ts +105 -0
- package/dist/datatable/ui/useContainerLayout.d.ts.map +1 -0
- package/dist/datatable/ui/useContainerLayout.js +167 -0
- package/dist/datatable/ui/useContainerLayout.js.map +1 -0
- package/dist/db-backup/headless/adapters.d.ts +50 -0
- package/dist/db-backup/headless/adapters.d.ts.map +1 -0
- package/dist/db-backup/headless/adapters.js +45 -0
- package/dist/db-backup/headless/adapters.js.map +1 -0
- package/dist/db-backup/headless/db-backup-client.d.ts +740 -0
- package/dist/db-backup/headless/db-backup-client.d.ts.map +1 -0
- package/dist/db-backup/headless/db-backup-client.js +301 -0
- package/dist/db-backup/headless/db-backup-client.js.map +1 -0
- package/dist/db-backup/headless/index.d.ts +12 -0
- package/dist/db-backup/headless/index.d.ts.map +1 -0
- package/dist/db-backup/headless/index.js +9 -0
- package/dist/db-backup/headless/index.js.map +1 -0
- package/dist/db-backup/headless/table.d.ts +229 -0
- package/dist/db-backup/headless/table.d.ts.map +1 -0
- package/dist/db-backup/headless/table.js +11 -0
- package/dist/db-backup/headless/table.js.map +1 -0
- package/dist/db-backup/headless/use-db-backup.d.ts +177 -0
- package/dist/db-backup/headless/use-db-backup.d.ts.map +1 -0
- package/dist/db-backup/headless/use-db-backup.js +334 -0
- package/dist/db-backup/headless/use-db-backup.js.map +1 -0
- package/dist/db-backup/internal/format.d.ts +33 -0
- package/dist/db-backup/internal/format.d.ts.map +1 -0
- package/dist/db-backup/internal/format.js +68 -0
- package/dist/db-backup/internal/format.js.map +1 -0
- package/dist/db-backup/internal/use-is-mounted.d.ts +11 -0
- package/dist/db-backup/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/db-backup/internal/use-is-mounted.js +21 -0
- package/dist/db-backup/internal/use-is-mounted.js.map +1 -0
- package/dist/db-backup/internal/use-visible-polling.d.ts +60 -0
- package/dist/db-backup/internal/use-visible-polling.d.ts.map +1 -0
- package/dist/db-backup/internal/use-visible-polling.js +103 -0
- package/dist/db-backup/internal/use-visible-polling.js.map +1 -0
- package/dist/db-backup/ui/DbBackupConfigPanel.d.ts +69 -0
- package/dist/db-backup/ui/DbBackupConfigPanel.d.ts.map +1 -0
- package/dist/db-backup/ui/DbBackupConfigPanel.js +145 -0
- package/dist/db-backup/ui/DbBackupConfigPanel.js.map +1 -0
- package/dist/db-backup/ui/DbBackupPage.d.ts +214 -0
- package/dist/db-backup/ui/DbBackupPage.d.ts.map +1 -0
- package/dist/db-backup/ui/DbBackupPage.js +430 -0
- package/dist/db-backup/ui/DbBackupPage.js.map +1 -0
- package/dist/db-backup/ui/DbBackupRestoreDialog.d.ts +117 -0
- package/dist/db-backup/ui/DbBackupRestoreDialog.d.ts.map +1 -0
- package/dist/db-backup/ui/DbBackupRestoreDialog.js +243 -0
- package/dist/db-backup/ui/DbBackupRestoreDialog.js.map +1 -0
- package/dist/db-backup/ui/copy.d.ts +13 -0
- package/dist/db-backup/ui/copy.d.ts.map +1 -0
- package/dist/db-backup/ui/copy.js +15 -0
- package/dist/db-backup/ui/copy.js.map +1 -0
- package/dist/db-backup/ui/dbBackupTable.d.ts +192 -0
- package/dist/db-backup/ui/dbBackupTable.d.ts.map +1 -0
- package/dist/db-backup/ui/dbBackupTable.js +491 -0
- package/dist/db-backup/ui/dbBackupTable.js.map +1 -0
- package/dist/db-backup/ui/index.d.ts +14 -0
- package/dist/db-backup/ui/index.d.ts.map +1 -0
- package/dist/db-backup/ui/index.js +13 -0
- package/dist/db-backup/ui/index.js.map +1 -0
- package/dist/db-backup/ui/settings.d.ts +35 -0
- package/dist/db-backup/ui/settings.d.ts.map +1 -0
- package/dist/db-backup/ui/settings.js +36 -0
- package/dist/db-backup/ui/settings.js.map +1 -0
- package/dist/db-backup/ui/table.d.ts +9 -0
- package/dist/db-backup/ui/table.d.ts.map +1 -0
- package/dist/db-backup/ui/table.js +52 -0
- package/dist/db-backup/ui/table.js.map +1 -0
- package/dist/doctor/headless/check-renderers.d.ts +57 -0
- package/dist/doctor/headless/check-renderers.d.ts.map +1 -0
- package/dist/doctor/headless/check-renderers.js +69 -0
- package/dist/doctor/headless/check-renderers.js.map +1 -0
- package/dist/doctor/headless/index.d.ts +2 -0
- package/dist/doctor/headless/index.d.ts.map +1 -1
- package/dist/doctor/headless/index.js +2 -0
- package/dist/doctor/headless/index.js.map +1 -1
- package/dist/doctor/ui/check-row.d.ts +19 -2
- package/dist/doctor/ui/check-row.d.ts.map +1 -1
- package/dist/doctor/ui/check-row.js +9 -3
- package/dist/doctor/ui/check-row.js.map +1 -1
- package/dist/doctor/ui/doctor-page.d.ts +35 -7
- package/dist/doctor/ui/doctor-page.d.ts.map +1 -1
- package/dist/doctor/ui/doctor-page.js +7 -3
- package/dist/doctor/ui/doctor-page.js.map +1 -1
- package/dist/doctor/ui/index.d.ts +2 -2
- package/dist/doctor/ui/index.d.ts.map +1 -1
- package/dist/email/headless/index.d.ts +5 -0
- package/dist/email/headless/index.d.ts.map +1 -0
- package/dist/email/headless/index.js +5 -0
- package/dist/email/headless/index.js.map +1 -0
- package/dist/email/headless/normalize-email-settings.d.ts +18 -0
- package/dist/email/headless/normalize-email-settings.d.ts.map +1 -0
- package/dist/email/headless/normalize-email-settings.js +71 -0
- package/dist/email/headless/normalize-email-settings.js.map +1 -0
- package/dist/email/headless/use-email-settings.d.ts +95 -0
- package/dist/email/headless/use-email-settings.d.ts.map +1 -0
- package/dist/email/headless/use-email-settings.js +212 -0
- package/dist/email/headless/use-email-settings.js.map +1 -0
- package/dist/email/ui/EmailGenericTransportPanel.d.ts +42 -0
- package/dist/email/ui/EmailGenericTransportPanel.d.ts.map +1 -0
- package/dist/email/ui/EmailGenericTransportPanel.js +47 -0
- package/dist/email/ui/EmailGenericTransportPanel.js.map +1 -0
- package/dist/email/ui/EmailSettingsPage.d.ts +93 -0
- package/dist/email/ui/EmailSettingsPage.d.ts.map +1 -0
- package/dist/email/ui/EmailSettingsPage.js +391 -0
- package/dist/email/ui/EmailSettingsPage.js.map +1 -0
- package/dist/email/ui/SesTransportPanel.d.ts +31 -0
- package/dist/email/ui/SesTransportPanel.d.ts.map +1 -0
- package/dist/email/ui/SesTransportPanel.js +75 -0
- package/dist/email/ui/SesTransportPanel.js.map +1 -0
- package/dist/email/ui/SmtpTransportPanel.d.ts +38 -0
- package/dist/email/ui/SmtpTransportPanel.d.ts.map +1 -0
- package/dist/email/ui/SmtpTransportPanel.js +111 -0
- package/dist/email/ui/SmtpTransportPanel.js.map +1 -0
- package/dist/email/ui/builtinEmailTransportPanels.d.ts +5 -0
- package/dist/email/ui/builtinEmailTransportPanels.d.ts.map +1 -0
- package/dist/email/ui/builtinEmailTransportPanels.js +20 -0
- package/dist/email/ui/builtinEmailTransportPanels.js.map +1 -0
- package/dist/email/ui/emailTransportPanelRegistry.d.ts +126 -0
- package/dist/email/ui/emailTransportPanelRegistry.d.ts.map +1 -0
- package/dist/email/ui/emailTransportPanelRegistry.js +91 -0
- package/dist/email/ui/emailTransportPanelRegistry.js.map +1 -0
- package/dist/email/ui/index.d.ts +5 -0
- package/dist/email/ui/index.d.ts.map +1 -0
- package/dist/email/ui/index.js +9 -0
- package/dist/email/ui/index.js.map +1 -0
- package/dist/email/ui/transport-panels.d.ts +4 -0
- package/dist/email/ui/transport-panels.d.ts.map +1 -0
- package/dist/email/ui/transport-panels.js +7 -0
- package/dist/email/ui/transport-panels.js.map +1 -0
- package/dist/exports/headless/client.d.ts +61 -0
- package/dist/exports/headless/client.d.ts.map +1 -0
- package/dist/exports/headless/client.js +80 -0
- package/dist/exports/headless/client.js.map +1 -0
- package/dist/exports/headless/hooks.d.ts +118 -0
- package/dist/exports/headless/hooks.d.ts.map +1 -0
- package/dist/exports/headless/hooks.js +184 -0
- package/dist/exports/headless/hooks.js.map +1 -0
- package/dist/exports/headless/index.d.ts +5 -0
- package/dist/exports/headless/index.d.ts.map +1 -0
- package/dist/exports/headless/index.js +7 -0
- package/dist/exports/headless/index.js.map +1 -0
- package/dist/exports/ui/DataExportPage.d.ts +48 -0
- package/dist/exports/ui/DataExportPage.d.ts.map +1 -0
- package/dist/exports/ui/DataExportPage.js +40 -0
- package/dist/exports/ui/DataExportPage.js.map +1 -0
- package/dist/exports/ui/ExportDialog.d.ts +54 -0
- package/dist/exports/ui/ExportDialog.d.ts.map +1 -0
- package/dist/exports/ui/ExportDialog.js +88 -0
- package/dist/exports/ui/ExportDialog.js.map +1 -0
- package/dist/exports/ui/ExportsList.d.ts +65 -0
- package/dist/exports/ui/ExportsList.d.ts.map +1 -0
- package/dist/exports/ui/ExportsList.js +120 -0
- package/dist/exports/ui/ExportsList.js.map +1 -0
- package/dist/exports/ui/copy.d.ts +19 -0
- package/dist/exports/ui/copy.d.ts.map +1 -0
- package/dist/exports/ui/copy.js +20 -0
- package/dist/exports/ui/copy.js.map +1 -0
- package/dist/exports/ui/index.d.ts +9 -0
- package/dist/exports/ui/index.d.ts.map +1 -0
- package/dist/exports/ui/index.js +9 -0
- package/dist/exports/ui/index.js.map +1 -0
- package/dist/exports/ui/settings-pages.d.ts +17 -0
- package/dist/exports/ui/settings-pages.d.ts.map +1 -0
- package/dist/exports/ui/settings-pages.js +28 -0
- package/dist/exports/ui/settings-pages.js.map +1 -0
- package/dist/host/headless/contract.d.ts +328 -0
- package/dist/host/headless/contract.d.ts.map +1 -0
- package/dist/host/headless/contract.js +12 -0
- package/dist/host/headless/contract.js.map +1 -0
- package/dist/host/headless/host-client.d.ts +31 -0
- package/dist/host/headless/host-client.d.ts.map +1 -0
- package/dist/host/headless/host-client.js +42 -0
- package/dist/host/headless/host-client.js.map +1 -0
- package/dist/host/headless/index.d.ts +12 -0
- package/dist/host/headless/index.d.ts.map +1 -0
- package/dist/host/headless/index.js +8 -0
- package/dist/host/headless/index.js.map +1 -0
- package/dist/host/headless/maintenance-block.d.ts +205 -0
- package/dist/host/headless/maintenance-block.d.ts.map +1 -0
- package/dist/host/headless/maintenance-block.js +243 -0
- package/dist/host/headless/maintenance-block.js.map +1 -0
- package/dist/host/headless/use-about.d.ts +67 -0
- package/dist/host/headless/use-about.d.ts.map +1 -0
- package/dist/host/headless/use-about.js +87 -0
- package/dist/host/headless/use-about.js.map +1 -0
- package/dist/host/headless/use-maintenance.d.ts +122 -0
- package/dist/host/headless/use-maintenance.d.ts.map +1 -0
- package/dist/host/headless/use-maintenance.js +185 -0
- package/dist/host/headless/use-maintenance.js.map +1 -0
- package/dist/host/internal/format-duration.d.ts +2 -0
- package/dist/host/internal/format-duration.d.ts.map +1 -0
- package/dist/host/internal/format-duration.js +25 -0
- package/dist/host/internal/format-duration.js.map +1 -0
- package/dist/host/internal/relative-time.d.ts +2 -0
- package/dist/host/internal/relative-time.d.ts.map +1 -0
- package/dist/host/internal/relative-time.js +29 -0
- package/dist/host/internal/relative-time.js.map +1 -0
- package/dist/host/internal/use-is-mounted.d.ts +9 -0
- package/dist/host/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/host/internal/use-is-mounted.js +19 -0
- package/dist/host/internal/use-is-mounted.js.map +1 -0
- package/dist/host/ui/about-page.d.ts +146 -0
- package/dist/host/ui/about-page.d.ts.map +1 -0
- package/dist/host/ui/about-page.js +351 -0
- package/dist/host/ui/about-page.js.map +1 -0
- package/dist/host/ui/index.d.ts +15 -0
- package/dist/host/ui/index.d.ts.map +1 -0
- package/dist/host/ui/index.js +12 -0
- package/dist/host/ui/index.js.map +1 -0
- package/dist/host/ui/install-prompt.d.ts +57 -0
- package/dist/host/ui/install-prompt.d.ts.map +1 -0
- package/dist/host/ui/install-prompt.js +156 -0
- package/dist/host/ui/install-prompt.js.map +1 -0
- package/dist/host/ui/loading-spinner.d.ts +2 -0
- package/dist/host/ui/loading-spinner.d.ts.map +1 -0
- package/dist/host/ui/loading-spinner.js +9 -0
- package/dist/host/ui/loading-spinner.js.map +1 -0
- package/dist/host/ui/maintenance-banner.d.ts +84 -0
- package/dist/host/ui/maintenance-banner.d.ts.map +1 -0
- package/dist/host/ui/maintenance-banner.js +54 -0
- package/dist/host/ui/maintenance-banner.js.map +1 -0
- package/dist/host/ui/maintenance-gate.d.ts +76 -0
- package/dist/host/ui/maintenance-gate.d.ts.map +1 -0
- package/dist/host/ui/maintenance-gate.js +38 -0
- package/dist/host/ui/maintenance-gate.js.map +1 -0
- package/dist/host/ui/maintenance-page.d.ts +96 -0
- package/dist/host/ui/maintenance-page.d.ts.map +1 -0
- package/dist/host/ui/maintenance-page.js +179 -0
- package/dist/host/ui/maintenance-page.js.map +1 -0
- package/dist/host/ui/maintenance-screen.d.ts +79 -0
- package/dist/host/ui/maintenance-screen.d.ts.map +1 -0
- package/dist/host/ui/maintenance-screen.js +48 -0
- package/dist/host/ui/maintenance-screen.js.map +1 -0
- package/dist/host/ui/update-prompt.d.ts +109 -0
- package/dist/host/ui/update-prompt.d.ts.map +1 -0
- package/dist/host/ui/update-prompt.js +121 -0
- package/dist/host/ui/update-prompt.js.map +1 -0
- package/dist/identity/headless/adapters.d.ts +85 -0
- package/dist/identity/headless/adapters.d.ts.map +1 -0
- package/dist/identity/headless/adapters.js +71 -0
- package/dist/identity/headless/adapters.js.map +1 -0
- package/dist/identity/headless/api.d.ts +492 -0
- package/dist/identity/headless/api.d.ts.map +1 -0
- package/dist/identity/headless/api.js +115 -0
- package/dist/identity/headless/api.js.map +1 -0
- package/dist/identity/headless/auth-context.d.ts +80 -0
- package/dist/identity/headless/auth-context.d.ts.map +1 -0
- package/dist/identity/headless/auth-context.js +235 -0
- package/dist/identity/headless/auth-context.js.map +1 -0
- package/dist/identity/headless/auth-provider-registry.d.ts +67 -0
- package/dist/identity/headless/auth-provider-registry.d.ts.map +1 -0
- package/dist/identity/headless/auth-provider-registry.js +60 -0
- package/dist/identity/headless/auth-provider-registry.js.map +1 -0
- package/dist/identity/headless/device-credential.d.ts +144 -0
- package/dist/identity/headless/device-credential.d.ts.map +1 -0
- package/dist/identity/headless/device-credential.js +174 -0
- package/dist/identity/headless/device-credential.js.map +1 -0
- package/dist/identity/headless/guards.d.ts +122 -0
- package/dist/identity/headless/guards.d.ts.map +1 -0
- package/dist/identity/headless/guards.js +115 -0
- package/dist/identity/headless/guards.js.map +1 -0
- package/dist/identity/headless/hooks/use-allowlist.d.ts +39 -0
- package/dist/identity/headless/hooks/use-allowlist.d.ts.map +1 -0
- package/dist/identity/headless/hooks/use-allowlist.js +78 -0
- package/dist/identity/headless/hooks/use-allowlist.js.map +1 -0
- package/dist/identity/headless/hooks/use-organizations.d.ts +107 -0
- package/dist/identity/headless/hooks/use-organizations.d.ts.map +1 -0
- package/dist/identity/headless/hooks/use-organizations.js +216 -0
- package/dist/identity/headless/hooks/use-organizations.js.map +1 -0
- package/dist/identity/headless/hooks/use-personal-access-tokens.d.ts +31 -0
- package/dist/identity/headless/hooks/use-personal-access-tokens.d.ts.map +1 -0
- package/dist/identity/headless/hooks/use-personal-access-tokens.js +73 -0
- package/dist/identity/headless/hooks/use-personal-access-tokens.js.map +1 -0
- package/dist/identity/headless/hooks/use-roles.d.ts +47 -0
- package/dist/identity/headless/hooks/use-roles.d.ts.map +1 -0
- package/dist/identity/headless/hooks/use-roles.js +64 -0
- package/dist/identity/headless/hooks/use-roles.js.map +1 -0
- package/dist/identity/headless/hooks/use-users.d.ts +42 -0
- package/dist/identity/headless/hooks/use-users.d.ts.map +1 -0
- package/dist/identity/headless/hooks/use-users.js +86 -0
- package/dist/identity/headless/hooks/use-users.js.map +1 -0
- package/dist/identity/headless/index.d.ts +29 -0
- package/dist/identity/headless/index.d.ts.map +1 -0
- package/dist/identity/headless/index.js +20 -0
- package/dist/identity/headless/index.js.map +1 -0
- package/dist/identity/headless/last-provider.d.ts +28 -0
- package/dist/identity/headless/last-provider.d.ts.map +1 -0
- package/dist/identity/headless/last-provider.js +52 -0
- package/dist/identity/headless/last-provider.js.map +1 -0
- package/dist/identity/headless/table.d.ts +222 -0
- package/dist/identity/headless/table.d.ts.map +1 -0
- package/dist/identity/headless/table.js +12 -0
- package/dist/identity/headless/table.js.map +1 -0
- package/dist/identity/headless/types.d.ts +186 -0
- package/dist/identity/headless/types.d.ts.map +1 -0
- package/dist/identity/headless/types.js +5 -0
- package/dist/identity/headless/types.js.map +1 -0
- package/dist/identity/headless/use-permissions.d.ts +42 -0
- package/dist/identity/headless/use-permissions.d.ts.map +1 -0
- package/dist/identity/headless/use-permissions.js +58 -0
- package/dist/identity/headless/use-permissions.js.map +1 -0
- package/dist/identity/headless/user-extensions.d.ts +44 -0
- package/dist/identity/headless/user-extensions.d.ts.map +1 -0
- package/dist/identity/headless/user-extensions.js +61 -0
- package/dist/identity/headless/user-extensions.js.map +1 -0
- package/dist/identity/index.d.ts +4 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +11 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/internal/use-is-mounted.d.ts +9 -0
- package/dist/identity/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/identity/internal/use-is-mounted.js +19 -0
- package/dist/identity/internal/use-is-mounted.js.map +1 -0
- package/dist/identity/ui/ActivateDevicePage.d.ts +34 -0
- package/dist/identity/ui/ActivateDevicePage.d.ts.map +1 -0
- package/dist/identity/ui/ActivateDevicePage.js +118 -0
- package/dist/identity/ui/ActivateDevicePage.js.map +1 -0
- package/dist/identity/ui/AuthCallbackPage.d.ts +45 -0
- package/dist/identity/ui/AuthCallbackPage.d.ts.map +1 -0
- package/dist/identity/ui/AuthCallbackPage.js +75 -0
- package/dist/identity/ui/AuthCallbackPage.js.map +1 -0
- package/dist/identity/ui/LoginPage.d.ts +74 -0
- package/dist/identity/ui/LoginPage.d.ts.map +1 -0
- package/dist/identity/ui/LoginPage.js +69 -0
- package/dist/identity/ui/LoginPage.js.map +1 -0
- package/dist/identity/ui/OAuthButton.d.ts +31 -0
- package/dist/identity/ui/OAuthButton.d.ts.map +1 -0
- package/dist/identity/ui/OAuthButton.js +77 -0
- package/dist/identity/ui/OAuthButton.js.map +1 -0
- package/dist/identity/ui/OrgSwitcher.d.ts +31 -0
- package/dist/identity/ui/OrgSwitcher.d.ts.map +1 -0
- package/dist/identity/ui/OrgSwitcher.js +49 -0
- package/dist/identity/ui/OrgSwitcher.js.map +1 -0
- package/dist/identity/ui/PageHeader.d.ts +14 -0
- package/dist/identity/ui/PageHeader.d.ts.map +1 -0
- package/dist/identity/ui/PageHeader.js +11 -0
- package/dist/identity/ui/PageHeader.js.map +1 -0
- package/dist/identity/ui/SignInErrorView.d.ts +37 -0
- package/dist/identity/ui/SignInErrorView.d.ts.map +1 -0
- package/dist/identity/ui/SignInErrorView.js +53 -0
- package/dist/identity/ui/SignInErrorView.js.map +1 -0
- package/dist/identity/ui/device/ActivationSuccess.d.ts +7 -0
- package/dist/identity/ui/device/ActivationSuccess.d.ts.map +1 -0
- package/dist/identity/ui/device/ActivationSuccess.js +19 -0
- package/dist/identity/ui/device/ActivationSuccess.js.map +1 -0
- package/dist/identity/ui/device/CredentialGrantNotice.d.ts +37 -0
- package/dist/identity/ui/device/CredentialGrantNotice.d.ts.map +1 -0
- package/dist/identity/ui/device/CredentialGrantNotice.js +72 -0
- package/dist/identity/ui/device/CredentialGrantNotice.js.map +1 -0
- package/dist/identity/ui/device/DeviceCodeInput.d.ts +8 -0
- package/dist/identity/ui/device/DeviceCodeInput.d.ts.map +1 -0
- package/dist/identity/ui/device/DeviceCodeInput.js +41 -0
- package/dist/identity/ui/device/DeviceCodeInput.js.map +1 -0
- package/dist/identity/ui/device/DeviceInfoCard.d.ts +32 -0
- package/dist/identity/ui/device/DeviceInfoCard.d.ts.map +1 -0
- package/dist/identity/ui/device/DeviceInfoCard.js +112 -0
- package/dist/identity/ui/device/DeviceInfoCard.js.map +1 -0
- package/dist/identity/ui/index.d.ts +33 -0
- package/dist/identity/ui/index.d.ts.map +1 -0
- package/dist/identity/ui/index.js +24 -0
- package/dist/identity/ui/index.js.map +1 -0
- package/dist/identity/ui/org/InviteMemberDialog.d.ts +15 -0
- package/dist/identity/ui/org/InviteMemberDialog.d.ts.map +1 -0
- package/dist/identity/ui/org/InviteMemberDialog.js +60 -0
- package/dist/identity/ui/org/InviteMemberDialog.js.map +1 -0
- package/dist/identity/ui/org/OrgInvitesPanel.d.ts +32 -0
- package/dist/identity/ui/org/OrgInvitesPanel.d.ts.map +1 -0
- package/dist/identity/ui/org/OrgInvitesPanel.js +48 -0
- package/dist/identity/ui/org/OrgInvitesPanel.js.map +1 -0
- package/dist/identity/ui/org/OrgMembersPanel.d.ts +58 -0
- package/dist/identity/ui/org/OrgMembersPanel.d.ts.map +1 -0
- package/dist/identity/ui/org/OrgMembersPanel.js +59 -0
- package/dist/identity/ui/org/OrgMembersPanel.js.map +1 -0
- package/dist/identity/ui/org/OrganizationPage.d.ts +54 -0
- package/dist/identity/ui/org/OrganizationPage.d.ts.map +1 -0
- package/dist/identity/ui/org/OrganizationPage.js +45 -0
- package/dist/identity/ui/org/OrganizationPage.js.map +1 -0
- package/dist/identity/ui/org/OrganizationsPage.d.ts +53 -0
- package/dist/identity/ui/org/OrganizationsPage.d.ts.map +1 -0
- package/dist/identity/ui/org/OrganizationsPage.js +117 -0
- package/dist/identity/ui/org/OrganizationsPage.js.map +1 -0
- package/dist/identity/ui/org/orgLabels.d.ts +15 -0
- package/dist/identity/ui/org/orgLabels.d.ts.map +1 -0
- package/dist/identity/ui/org/orgLabels.js +25 -0
- package/dist/identity/ui/org/orgLabels.js.map +1 -0
- package/dist/identity/ui/settings.d.ts +53 -0
- package/dist/identity/ui/settings.d.ts.map +1 -0
- package/dist/identity/ui/settings.js +91 -0
- package/dist/identity/ui/settings.js.map +1 -0
- package/dist/identity/ui/sign-in-error-content.d.ts +76 -0
- package/dist/identity/ui/sign-in-error-content.d.ts.map +1 -0
- package/dist/identity/ui/sign-in-error-content.js +110 -0
- package/dist/identity/ui/sign-in-error-content.js.map +1 -0
- package/dist/identity/ui/table.d.ts +5 -0
- package/dist/identity/ui/table.d.ts.map +1 -0
- package/dist/identity/ui/table.js +25 -0
- package/dist/identity/ui/table.js.map +1 -0
- package/dist/identity/ui/tokens/CreatePatDialog.d.ts +14 -0
- package/dist/identity/ui/tokens/CreatePatDialog.d.ts.map +1 -0
- package/dist/identity/ui/tokens/CreatePatDialog.js +83 -0
- package/dist/identity/ui/tokens/CreatePatDialog.js.map +1 -0
- package/dist/identity/ui/tokens/PatTokenRevealDialog.d.ts +8 -0
- package/dist/identity/ui/tokens/PatTokenRevealDialog.d.ts.map +1 -0
- package/dist/identity/ui/tokens/PatTokenRevealDialog.js +32 -0
- package/dist/identity/ui/tokens/PatTokenRevealDialog.js.map +1 -0
- package/dist/identity/ui/tokens/PersonalAccessTokens.d.ts +34 -0
- package/dist/identity/ui/tokens/PersonalAccessTokens.d.ts.map +1 -0
- package/dist/identity/ui/tokens/PersonalAccessTokens.js +64 -0
- package/dist/identity/ui/tokens/PersonalAccessTokens.js.map +1 -0
- package/dist/identity/ui/tokens/UserTokensPage.d.ts +54 -0
- package/dist/identity/ui/tokens/UserTokensPage.d.ts.map +1 -0
- package/dist/identity/ui/tokens/UserTokensPage.js +25 -0
- package/dist/identity/ui/tokens/UserTokensPage.js.map +1 -0
- package/dist/identity/ui/tokens/patColumns.d.ts +70 -0
- package/dist/identity/ui/tokens/patColumns.d.ts.map +1 -0
- package/dist/identity/ui/tokens/patColumns.js +142 -0
- package/dist/identity/ui/tokens/patColumns.js.map +1 -0
- package/dist/identity/ui/users/AddEmailDialog.d.ts +8 -0
- package/dist/identity/ui/users/AddEmailDialog.d.ts.map +1 -0
- package/dist/identity/ui/users/AddEmailDialog.js +51 -0
- package/dist/identity/ui/users/AddEmailDialog.js.map +1 -0
- package/dist/identity/ui/users/AllowlistTable.d.ts +36 -0
- package/dist/identity/ui/users/AllowlistTable.d.ts.map +1 -0
- package/dist/identity/ui/users/AllowlistTable.js +115 -0
- package/dist/identity/ui/users/AllowlistTable.js.map +1 -0
- package/dist/identity/ui/users/ManageRolesDialog.d.ts +42 -0
- package/dist/identity/ui/users/ManageRolesDialog.d.ts.map +1 -0
- package/dist/identity/ui/users/ManageRolesDialog.js +73 -0
- package/dist/identity/ui/users/ManageRolesDialog.js.map +1 -0
- package/dist/identity/ui/users/UserList.d.ts +68 -0
- package/dist/identity/ui/users/UserList.d.ts.map +1 -0
- package/dist/identity/ui/users/UserList.js +169 -0
- package/dist/identity/ui/users/UserList.js.map +1 -0
- package/dist/identity/ui/users/UsersPage.d.ts +90 -0
- package/dist/identity/ui/users/UsersPage.d.ts.map +1 -0
- package/dist/identity/ui/users/UsersPage.js +55 -0
- package/dist/identity/ui/users/UsersPage.js.map +1 -0
- package/dist/identity/ui/users/allowlistColumns.d.ts +46 -0
- package/dist/identity/ui/users/allowlistColumns.d.ts.map +1 -0
- package/dist/identity/ui/users/allowlistColumns.js +121 -0
- package/dist/identity/ui/users/allowlistColumns.js.map +1 -0
- package/dist/identity/ui/users/userListColumns.d.ts +55 -0
- package/dist/identity/ui/users/userListColumns.d.ts.map +1 -0
- package/dist/identity/ui/users/userListColumns.js +158 -0
- package/dist/identity/ui/users/userListColumns.js.map +1 -0
- package/dist/jobs/headless/adapters.d.ts +76 -0
- package/dist/jobs/headless/adapters.d.ts.map +1 -0
- package/dist/jobs/headless/adapters.js +82 -0
- package/dist/jobs/headless/adapters.js.map +1 -0
- package/dist/jobs/headless/api.d.ts +44 -0
- package/dist/jobs/headless/api.d.ts.map +1 -0
- package/dist/jobs/headless/api.js +94 -0
- package/dist/jobs/headless/api.js.map +1 -0
- package/dist/jobs/headless/format.d.ts +33 -0
- package/dist/jobs/headless/format.d.ts.map +1 -0
- package/dist/jobs/headless/format.js +65 -0
- package/dist/jobs/headless/format.js.map +1 -0
- package/dist/jobs/headless/index.d.ts +16 -0
- package/dist/jobs/headless/index.d.ts.map +1 -0
- package/dist/jobs/headless/index.js +16 -0
- package/dist/jobs/headless/index.js.map +1 -0
- package/dist/jobs/headless/table.d.ts +229 -0
- package/dist/jobs/headless/table.d.ts.map +1 -0
- package/dist/jobs/headless/table.js +14 -0
- package/dist/jobs/headless/table.js.map +1 -0
- package/dist/jobs/headless/types.d.ts +112 -0
- package/dist/jobs/headless/types.d.ts.map +1 -0
- package/dist/jobs/headless/types.js +37 -0
- package/dist/jobs/headless/types.js.map +1 -0
- package/dist/jobs/headless/use-job-insights.d.ts +73 -0
- package/dist/jobs/headless/use-job-insights.d.ts.map +1 -0
- package/dist/jobs/headless/use-job-insights.js +122 -0
- package/dist/jobs/headless/use-job-insights.js.map +1 -0
- package/dist/jobs/headless/use-jobs.d.ts +146 -0
- package/dist/jobs/headless/use-jobs.d.ts.map +1 -0
- package/dist/jobs/headless/use-jobs.js +236 -0
- package/dist/jobs/headless/use-jobs.js.map +1 -0
- package/dist/jobs/headless/use-visible-polling.d.ts +61 -0
- package/dist/jobs/headless/use-visible-polling.d.ts.map +1 -0
- package/dist/jobs/headless/use-visible-polling.js +102 -0
- package/dist/jobs/headless/use-visible-polling.js.map +1 -0
- package/dist/jobs/internal/use-is-mounted.d.ts +9 -0
- package/dist/jobs/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/jobs/internal/use-is-mounted.js +19 -0
- package/dist/jobs/internal/use-is-mounted.js.map +1 -0
- package/dist/jobs/ui/JobInsightsPage.d.ts +178 -0
- package/dist/jobs/ui/JobInsightsPage.d.ts.map +1 -0
- package/dist/jobs/ui/JobInsightsPage.js +333 -0
- package/dist/jobs/ui/JobInsightsPage.js.map +1 -0
- package/dist/jobs/ui/JobsPage.d.ts +145 -0
- package/dist/jobs/ui/JobsPage.d.ts.map +1 -0
- package/dist/jobs/ui/JobsPage.js +296 -0
- package/dist/jobs/ui/JobsPage.js.map +1 -0
- package/dist/jobs/ui/PageHeader.d.ts +23 -0
- package/dist/jobs/ui/PageHeader.d.ts.map +1 -0
- package/dist/jobs/ui/PageHeader.js +7 -0
- package/dist/jobs/ui/PageHeader.js.map +1 -0
- package/dist/jobs/ui/copy.d.ts +5 -0
- package/dist/jobs/ui/copy.d.ts.map +1 -0
- package/dist/jobs/ui/copy.js +10 -0
- package/dist/jobs/ui/copy.js.map +1 -0
- package/dist/jobs/ui/index.d.ts +10 -0
- package/dist/jobs/ui/index.d.ts.map +1 -0
- package/dist/jobs/ui/index.js +11 -0
- package/dist/jobs/ui/index.js.map +1 -0
- package/dist/jobs/ui/jobsTable.d.ts +128 -0
- package/dist/jobs/ui/jobsTable.d.ts.map +1 -0
- package/dist/jobs/ui/jobsTable.js +321 -0
- package/dist/jobs/ui/jobsTable.js.map +1 -0
- package/dist/jobs/ui/settings.d.ts +33 -0
- package/dist/jobs/ui/settings.d.ts.map +1 -0
- package/dist/jobs/ui/settings.js +65 -0
- package/dist/jobs/ui/settings.js.map +1 -0
- package/dist/jobs/ui/spinner.d.ts +3 -0
- package/dist/jobs/ui/spinner.d.ts.map +1 -0
- package/dist/jobs/ui/spinner.js +10 -0
- package/dist/jobs/ui/spinner.js.map +1 -0
- package/dist/jobs/ui/table.d.ts +5 -0
- package/dist/jobs/ui/table.d.ts.map +1 -0
- package/dist/jobs/ui/table.js +47 -0
- package/dist/jobs/ui/table.js.map +1 -0
- package/dist/nodes/headless/adapters.d.ts +76 -0
- package/dist/nodes/headless/adapters.d.ts.map +1 -0
- package/dist/nodes/headless/adapters.js +70 -0
- package/dist/nodes/headless/adapters.js.map +1 -0
- package/dist/nodes/headless/api.d.ts +39 -0
- package/dist/nodes/headless/api.d.ts.map +1 -0
- package/dist/nodes/headless/api.js +53 -0
- package/dist/nodes/headless/api.js.map +1 -0
- package/dist/nodes/headless/capabilities.d.ts +35 -0
- package/dist/nodes/headless/capabilities.d.ts.map +1 -0
- package/dist/nodes/headless/capabilities.js +65 -0
- package/dist/nodes/headless/capabilities.js.map +1 -0
- package/dist/nodes/headless/format.d.ts +33 -0
- package/dist/nodes/headless/format.d.ts.map +1 -0
- package/dist/nodes/headless/format.js +64 -0
- package/dist/nodes/headless/format.js.map +1 -0
- package/dist/nodes/headless/index.d.ts +16 -0
- package/dist/nodes/headless/index.d.ts.map +1 -0
- package/dist/nodes/headless/index.js +14 -0
- package/dist/nodes/headless/index.js.map +1 -0
- package/dist/nodes/headless/node-vitals.d.ts +91 -0
- package/dist/nodes/headless/node-vitals.d.ts.map +1 -0
- package/dist/nodes/headless/node-vitals.js +129 -0
- package/dist/nodes/headless/node-vitals.js.map +1 -0
- package/dist/nodes/headless/table.d.ts +229 -0
- package/dist/nodes/headless/table.d.ts.map +1 -0
- package/dist/nodes/headless/table.js +15 -0
- package/dist/nodes/headless/table.js.map +1 -0
- package/dist/nodes/headless/types.d.ts +46 -0
- package/dist/nodes/headless/types.d.ts.map +1 -0
- package/dist/nodes/headless/types.js +46 -0
- package/dist/nodes/headless/types.js.map +1 -0
- package/dist/nodes/headless/use-visible-polling.d.ts +60 -0
- package/dist/nodes/headless/use-visible-polling.d.ts.map +1 -0
- package/dist/nodes/headless/use-visible-polling.js +101 -0
- package/dist/nodes/headless/use-visible-polling.js.map +1 -0
- package/dist/nodes/headless/use-worker-nodes.d.ts +207 -0
- package/dist/nodes/headless/use-worker-nodes.d.ts.map +1 -0
- package/dist/nodes/headless/use-worker-nodes.js +324 -0
- package/dist/nodes/headless/use-worker-nodes.js.map +1 -0
- package/dist/nodes/index.d.ts +4 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +10 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/internal/format-bytes.d.ts +2 -0
- package/dist/nodes/internal/format-bytes.d.ts.map +1 -0
- package/dist/nodes/internal/format-bytes.js +17 -0
- package/dist/nodes/internal/format-bytes.js.map +1 -0
- package/dist/nodes/internal/relative-time.d.ts +2 -0
- package/dist/nodes/internal/relative-time.d.ts.map +1 -0
- package/dist/nodes/internal/relative-time.js +31 -0
- package/dist/nodes/internal/relative-time.js.map +1 -0
- package/dist/nodes/internal/use-is-mounted.d.ts +9 -0
- package/dist/nodes/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/nodes/internal/use-is-mounted.js +19 -0
- package/dist/nodes/internal/use-is-mounted.js.map +1 -0
- package/dist/nodes/ui/CreateNodeCredentialDialog.d.ts +63 -0
- package/dist/nodes/ui/CreateNodeCredentialDialog.d.ts.map +1 -0
- package/dist/nodes/ui/CreateNodeCredentialDialog.js +125 -0
- package/dist/nodes/ui/CreateNodeCredentialDialog.js.map +1 -0
- package/dist/nodes/ui/NodeCredentialRevealDialog.d.ts +46 -0
- package/dist/nodes/ui/NodeCredentialRevealDialog.d.ts.map +1 -0
- package/dist/nodes/ui/NodeCredentialRevealDialog.js +72 -0
- package/dist/nodes/ui/NodeCredentialRevealDialog.js.map +1 -0
- package/dist/nodes/ui/NodeCredentials.d.ts +89 -0
- package/dist/nodes/ui/NodeCredentials.d.ts.map +1 -0
- package/dist/nodes/ui/NodeCredentials.js +125 -0
- package/dist/nodes/ui/NodeCredentials.js.map +1 -0
- package/dist/nodes/ui/NodeVitalsDialog.d.ts +48 -0
- package/dist/nodes/ui/NodeVitalsDialog.d.ts.map +1 -0
- package/dist/nodes/ui/NodeVitalsDialog.js +73 -0
- package/dist/nodes/ui/NodeVitalsDialog.js.map +1 -0
- package/dist/nodes/ui/PageHeader.d.ts +23 -0
- package/dist/nodes/ui/PageHeader.d.ts.map +1 -0
- package/dist/nodes/ui/PageHeader.js +7 -0
- package/dist/nodes/ui/PageHeader.js.map +1 -0
- package/dist/nodes/ui/WorkersPage.d.ts +153 -0
- package/dist/nodes/ui/WorkersPage.d.ts.map +1 -0
- package/dist/nodes/ui/WorkersPage.js +306 -0
- package/dist/nodes/ui/WorkersPage.js.map +1 -0
- package/dist/nodes/ui/copy.d.ts +3 -0
- package/dist/nodes/ui/copy.d.ts.map +1 -0
- package/dist/nodes/ui/copy.js +6 -0
- package/dist/nodes/ui/copy.js.map +1 -0
- package/dist/nodes/ui/index.d.ts +9 -0
- package/dist/nodes/ui/index.d.ts.map +1 -0
- package/dist/nodes/ui/index.js +8 -0
- package/dist/nodes/ui/index.js.map +1 -0
- package/dist/nodes/ui/settings.d.ts +31 -0
- package/dist/nodes/ui/settings.d.ts.map +1 -0
- package/dist/nodes/ui/settings.js +42 -0
- package/dist/nodes/ui/settings.js.map +1 -0
- package/dist/nodes/ui/spinner.d.ts +3 -0
- package/dist/nodes/ui/spinner.d.ts.map +1 -0
- package/dist/nodes/ui/spinner.js +10 -0
- package/dist/nodes/ui/spinner.js.map +1 -0
- package/dist/nodes/ui/table.d.ts +5 -0
- package/dist/nodes/ui/table.d.ts.map +1 -0
- package/dist/nodes/ui/table.js +47 -0
- package/dist/nodes/ui/table.js.map +1 -0
- package/dist/nodes/ui/workerVitals.d.ts +120 -0
- package/dist/nodes/ui/workerVitals.d.ts.map +1 -0
- package/dist/nodes/ui/workerVitals.js +228 -0
- package/dist/nodes/ui/workerVitals.js.map +1 -0
- package/dist/nodes/ui/workersTable.d.ts +163 -0
- package/dist/nodes/ui/workersTable.d.ts.map +1 -0
- package/dist/nodes/ui/workersTable.js +572 -0
- package/dist/nodes/ui/workersTable.js.map +1 -0
- package/dist/notifications/headless/NotificationContext.d.ts +143 -0
- package/dist/notifications/headless/NotificationContext.d.ts.map +1 -0
- package/dist/notifications/headless/NotificationContext.js +723 -0
- package/dist/notifications/headless/NotificationContext.js.map +1 -0
- package/dist/notifications/headless/api.d.ts +170 -0
- package/dist/notifications/headless/api.d.ts.map +1 -0
- package/dist/notifications/headless/api.js +168 -0
- package/dist/notifications/headless/api.js.map +1 -0
- package/dist/notifications/headless/broadcasts.d.ts +272 -0
- package/dist/notifications/headless/broadcasts.d.ts.map +1 -0
- package/dist/notifications/headless/broadcasts.js +235 -0
- package/dist/notifications/headless/broadcasts.js.map +1 -0
- package/dist/notifications/headless/browserNotifications.d.ts +131 -0
- package/dist/notifications/headless/browserNotifications.d.ts.map +1 -0
- package/dist/notifications/headless/browserNotifications.js +326 -0
- package/dist/notifications/headless/browserNotifications.js.map +1 -0
- package/dist/notifications/headless/index.d.ts +15 -0
- package/dist/notifications/headless/index.d.ts.map +1 -0
- package/dist/notifications/headless/index.js +15 -0
- package/dist/notifications/headless/index.js.map +1 -0
- package/dist/notifications/headless/internalLink.d.ts +36 -0
- package/dist/notifications/headless/internalLink.d.ts.map +1 -0
- package/dist/notifications/headless/internalLink.js +43 -0
- package/dist/notifications/headless/internalLink.js.map +1 -0
- package/dist/notifications/headless/notificationStream.d.ts +144 -0
- package/dist/notifications/headless/notificationStream.d.ts.map +1 -0
- package/dist/notifications/headless/notificationStream.js +186 -0
- package/dist/notifications/headless/notificationStream.js.map +1 -0
- package/dist/notifications/headless/pushConfig.d.ts +190 -0
- package/dist/notifications/headless/pushConfig.d.ts.map +1 -0
- package/dist/notifications/headless/pushConfig.js +90 -0
- package/dist/notifications/headless/pushConfig.js.map +1 -0
- package/dist/notifications/headless/pushDiagnostics.d.ts +153 -0
- package/dist/notifications/headless/pushDiagnostics.d.ts.map +1 -0
- package/dist/notifications/headless/pushDiagnostics.js +709 -0
- package/dist/notifications/headless/pushDiagnostics.js.map +1 -0
- package/dist/notifications/headless/pushSubscription.d.ts +97 -0
- package/dist/notifications/headless/pushSubscription.d.ts.map +1 -0
- package/dist/notifications/headless/pushSubscription.js +281 -0
- package/dist/notifications/headless/pushSubscription.js.map +1 -0
- package/dist/notifications/headless/service-worker.d.ts +242 -0
- package/dist/notifications/headless/service-worker.d.ts.map +1 -0
- package/dist/notifications/headless/service-worker.js +226 -0
- package/dist/notifications/headless/service-worker.js.map +1 -0
- package/dist/notifications/headless/sse.d.ts +58 -0
- package/dist/notifications/headless/sse.d.ts.map +1 -0
- package/dist/notifications/headless/sse.js +23 -0
- package/dist/notifications/headless/sse.js.map +1 -0
- package/dist/notifications/headless/types.d.ts +424 -0
- package/dist/notifications/headless/types.d.ts.map +1 -0
- package/dist/notifications/headless/types.js +10 -0
- package/dist/notifications/headless/types.js.map +1 -0
- package/dist/notifications/headless/useBroadcasts.d.ts +90 -0
- package/dist/notifications/headless/useBroadcasts.d.ts.map +1 -0
- package/dist/notifications/headless/useBroadcasts.js +187 -0
- package/dist/notifications/headless/useBroadcasts.js.map +1 -0
- package/dist/notifications/headless/useBrowserNotificationPermission.d.ts +64 -0
- package/dist/notifications/headless/useBrowserNotificationPermission.d.ts.map +1 -0
- package/dist/notifications/headless/useBrowserNotificationPermission.js +119 -0
- package/dist/notifications/headless/useBrowserNotificationPermission.js.map +1 -0
- package/dist/notifications/headless/useIsMounted.d.ts +9 -0
- package/dist/notifications/headless/useIsMounted.d.ts.map +1 -0
- package/dist/notifications/headless/useIsMounted.js +19 -0
- package/dist/notifications/headless/useIsMounted.js.map +1 -0
- package/dist/notifications/headless/useNotificationCapability.d.ts +304 -0
- package/dist/notifications/headless/useNotificationCapability.d.ts.map +1 -0
- package/dist/notifications/headless/useNotificationCapability.js +411 -0
- package/dist/notifications/headless/useNotificationCapability.js.map +1 -0
- package/dist/notifications/headless/useNotificationChannels.d.ts +39 -0
- package/dist/notifications/headless/useNotificationChannels.d.ts.map +1 -0
- package/dist/notifications/headless/useNotificationChannels.js +48 -0
- package/dist/notifications/headless/useNotificationChannels.js.map +1 -0
- package/dist/notifications/headless/useNotificationConfig.d.ts +46 -0
- package/dist/notifications/headless/useNotificationConfig.d.ts.map +1 -0
- package/dist/notifications/headless/useNotificationConfig.js +66 -0
- package/dist/notifications/headless/useNotificationConfig.js.map +1 -0
- package/dist/notifications/headless/useNotificationEvents.d.ts +49 -0
- package/dist/notifications/headless/useNotificationEvents.d.ts.map +1 -0
- package/dist/notifications/headless/useNotificationEvents.js +64 -0
- package/dist/notifications/headless/useNotificationEvents.js.map +1 -0
- package/dist/notifications/headless/usePushConfig.d.ts +50 -0
- package/dist/notifications/headless/usePushConfig.d.ts.map +1 -0
- package/dist/notifications/headless/usePushConfig.js +143 -0
- package/dist/notifications/headless/usePushConfig.js.map +1 -0
- package/dist/notifications/headless/usePushSubscriptionSync.d.ts +54 -0
- package/dist/notifications/headless/usePushSubscriptionSync.d.ts.map +1 -0
- package/dist/notifications/headless/usePushSubscriptionSync.js +83 -0
- package/dist/notifications/headless/usePushSubscriptionSync.js.map +1 -0
- package/dist/notifications/headless/useVisiblePolling.d.ts +55 -0
- package/dist/notifications/headless/useVisiblePolling.d.ts.map +1 -0
- package/dist/notifications/headless/useVisiblePolling.js +96 -0
- package/dist/notifications/headless/useVisiblePolling.js.map +1 -0
- package/dist/notifications/ui/AddToHomeScreenPanel.d.ts +52 -0
- package/dist/notifications/ui/AddToHomeScreenPanel.d.ts.map +1 -0
- package/dist/notifications/ui/AddToHomeScreenPanel.js +61 -0
- package/dist/notifications/ui/AddToHomeScreenPanel.js.map +1 -0
- package/dist/notifications/ui/BroadcastComposer.d.ts +87 -0
- package/dist/notifications/ui/BroadcastComposer.d.ts.map +1 -0
- package/dist/notifications/ui/BroadcastComposer.js +331 -0
- package/dist/notifications/ui/BroadcastComposer.js.map +1 -0
- package/dist/notifications/ui/BroadcastDetailDialog.d.ts +33 -0
- package/dist/notifications/ui/BroadcastDetailDialog.d.ts.map +1 -0
- package/dist/notifications/ui/BroadcastDetailDialog.js +43 -0
- package/dist/notifications/ui/BroadcastDetailDialog.js.map +1 -0
- package/dist/notifications/ui/BroadcastsPage.d.ts +100 -0
- package/dist/notifications/ui/BroadcastsPage.d.ts.map +1 -0
- package/dist/notifications/ui/BroadcastsPage.js +340 -0
- package/dist/notifications/ui/BroadcastsPage.js.map +1 -0
- package/dist/notifications/ui/LoadingSpinner.d.ts +7 -0
- package/dist/notifications/ui/LoadingSpinner.d.ts.map +1 -0
- package/dist/notifications/ui/LoadingSpinner.js +15 -0
- package/dist/notifications/ui/LoadingSpinner.js.map +1 -0
- package/dist/notifications/ui/NotificationBell.d.ts +85 -0
- package/dist/notifications/ui/NotificationBell.d.ts.map +1 -0
- package/dist/notifications/ui/NotificationBell.js +161 -0
- package/dist/notifications/ui/NotificationBell.js.map +1 -0
- package/dist/notifications/ui/NotificationPermissionBanner.d.ts +56 -0
- package/dist/notifications/ui/NotificationPermissionBanner.d.ts.map +1 -0
- package/dist/notifications/ui/NotificationPermissionBanner.js +106 -0
- package/dist/notifications/ui/NotificationPermissionBanner.js.map +1 -0
- package/dist/notifications/ui/NotificationSettings.d.ts +304 -0
- package/dist/notifications/ui/NotificationSettings.d.ts.map +1 -0
- package/dist/notifications/ui/NotificationSettings.js +466 -0
- package/dist/notifications/ui/NotificationSettings.js.map +1 -0
- package/dist/notifications/ui/NotificationSettingsPage.d.ts +80 -0
- package/dist/notifications/ui/NotificationSettingsPage.d.ts.map +1 -0
- package/dist/notifications/ui/NotificationSettingsPage.js +166 -0
- package/dist/notifications/ui/NotificationSettingsPage.js.map +1 -0
- package/dist/notifications/ui/PushConfigConfirmDialog.d.ts +40 -0
- package/dist/notifications/ui/PushConfigConfirmDialog.d.ts.map +1 -0
- package/dist/notifications/ui/PushConfigConfirmDialog.js +72 -0
- package/dist/notifications/ui/PushConfigConfirmDialog.js.map +1 -0
- package/dist/notifications/ui/PushConfigPage.d.ts +84 -0
- package/dist/notifications/ui/PushConfigPage.d.ts.map +1 -0
- package/dist/notifications/ui/PushConfigPage.js +205 -0
- package/dist/notifications/ui/PushConfigPage.js.map +1 -0
- package/dist/notifications/ui/PushTestPanel.d.ts +25 -0
- package/dist/notifications/ui/PushTestPanel.d.ts.map +1 -0
- package/dist/notifications/ui/PushTestPanel.js +304 -0
- package/dist/notifications/ui/PushTestPanel.js.map +1 -0
- package/dist/notifications/ui/SystemSettingsSection.d.ts +69 -0
- package/dist/notifications/ui/SystemSettingsSection.d.ts.map +1 -0
- package/dist/notifications/ui/SystemSettingsSection.js +63 -0
- package/dist/notifications/ui/SystemSettingsSection.js.map +1 -0
- package/dist/notifications/ui/UserNotificationsPage.d.ts +101 -0
- package/dist/notifications/ui/UserNotificationsPage.d.ts.map +1 -0
- package/dist/notifications/ui/UserNotificationsPage.js +197 -0
- package/dist/notifications/ui/UserNotificationsPage.js.map +1 -0
- package/dist/notifications/ui/UserSettingsSection.d.ts +99 -0
- package/dist/notifications/ui/UserSettingsSection.d.ts.map +1 -0
- package/dist/notifications/ui/UserSettingsSection.js +78 -0
- package/dist/notifications/ui/UserSettingsSection.js.map +1 -0
- package/dist/notifications/ui/broadcastsTable.d.ts +117 -0
- package/dist/notifications/ui/broadcastsTable.d.ts.map +1 -0
- package/dist/notifications/ui/broadcastsTable.js +312 -0
- package/dist/notifications/ui/broadcastsTable.js.map +1 -0
- package/dist/notifications/ui/datatable.d.ts +14 -0
- package/dist/notifications/ui/datatable.d.ts.map +1 -0
- package/dist/notifications/ui/datatable.js +8 -0
- package/dist/notifications/ui/datatable.js.map +1 -0
- package/dist/notifications/ui/index.d.ts +14 -0
- package/dist/notifications/ui/index.d.ts.map +1 -0
- package/dist/notifications/ui/index.js +13 -0
- package/dist/notifications/ui/index.js.map +1 -0
- package/dist/notifications/ui/relativeTime.d.ts +25 -0
- package/dist/notifications/ui/relativeTime.d.ts.map +1 -0
- package/dist/notifications/ui/relativeTime.js +70 -0
- package/dist/notifications/ui/relativeTime.js.map +1 -0
- package/dist/onboarding/headless/client.d.ts +44 -0
- package/dist/onboarding/headless/client.d.ts.map +1 -0
- package/dist/onboarding/headless/client.js +44 -0
- package/dist/onboarding/headless/client.js.map +1 -0
- package/dist/onboarding/headless/feature-notices.d.ts +56 -0
- package/dist/onboarding/headless/feature-notices.d.ts.map +1 -0
- package/dist/onboarding/headless/feature-notices.js +62 -0
- package/dist/onboarding/headless/feature-notices.js.map +1 -0
- package/dist/onboarding/headless/getting-started.d.ts +35 -0
- package/dist/onboarding/headless/getting-started.d.ts.map +1 -0
- package/dist/onboarding/headless/getting-started.js +28 -0
- package/dist/onboarding/headless/getting-started.js.map +1 -0
- package/dist/onboarding/headless/index.d.ts +12 -0
- package/dist/onboarding/headless/index.d.ts.map +1 -0
- package/dist/onboarding/headless/index.js +10 -0
- package/dist/onboarding/headless/index.js.map +1 -0
- package/dist/onboarding/headless/provider.d.ts +94 -0
- package/dist/onboarding/headless/provider.d.ts.map +1 -0
- package/dist/onboarding/headless/provider.js +204 -0
- package/dist/onboarding/headless/provider.js.map +1 -0
- package/dist/onboarding/headless/use-onboarding-metrics.d.ts +35 -0
- package/dist/onboarding/headless/use-onboarding-metrics.d.ts.map +1 -0
- package/dist/onboarding/headless/use-onboarding-metrics.js +58 -0
- package/dist/onboarding/headless/use-onboarding-metrics.js.map +1 -0
- package/dist/onboarding/index.d.ts +3 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +8 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/internal/use-is-mounted.d.ts +3 -0
- package/dist/onboarding/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/onboarding/internal/use-is-mounted.js +13 -0
- package/dist/onboarding/internal/use-is-mounted.js.map +1 -0
- package/dist/onboarding/ui/ActivationMetrics.d.ts +40 -0
- package/dist/onboarding/ui/ActivationMetrics.d.ts.map +1 -0
- package/dist/onboarding/ui/ActivationMetrics.js +73 -0
- package/dist/onboarding/ui/ActivationMetrics.js.map +1 -0
- package/dist/onboarding/ui/FeatureUnavailableNotice.d.ts +30 -0
- package/dist/onboarding/ui/FeatureUnavailableNotice.d.ts.map +1 -0
- package/dist/onboarding/ui/FeatureUnavailableNotice.js +43 -0
- package/dist/onboarding/ui/FeatureUnavailableNotice.js.map +1 -0
- package/dist/onboarding/ui/GettingStartedMenuItem.d.ts +28 -0
- package/dist/onboarding/ui/GettingStartedMenuItem.d.ts.map +1 -0
- package/dist/onboarding/ui/GettingStartedMenuItem.js +30 -0
- package/dist/onboarding/ui/GettingStartedMenuItem.js.map +1 -0
- package/dist/onboarding/ui/GettingStartedPage.d.ts +42 -0
- package/dist/onboarding/ui/GettingStartedPage.d.ts.map +1 -0
- package/dist/onboarding/ui/GettingStartedPage.js +34 -0
- package/dist/onboarding/ui/GettingStartedPage.js.map +1 -0
- package/dist/onboarding/ui/OnboardingChecklist.d.ts +55 -0
- package/dist/onboarding/ui/OnboardingChecklist.d.ts.map +1 -0
- package/dist/onboarding/ui/OnboardingChecklist.js +91 -0
- package/dist/onboarding/ui/OnboardingChecklist.js.map +1 -0
- package/dist/onboarding/ui/SetupGuidePage.d.ts +46 -0
- package/dist/onboarding/ui/SetupGuidePage.d.ts.map +1 -0
- package/dist/onboarding/ui/SetupGuidePage.js +40 -0
- package/dist/onboarding/ui/SetupGuidePage.js.map +1 -0
- package/dist/onboarding/ui/WelcomeDialog.d.ts +56 -0
- package/dist/onboarding/ui/WelcomeDialog.d.ts.map +1 -0
- package/dist/onboarding/ui/WelcomeDialog.js +66 -0
- package/dist/onboarding/ui/WelcomeDialog.js.map +1 -0
- package/dist/onboarding/ui/copy.d.ts +67 -0
- package/dist/onboarding/ui/copy.d.ts.map +1 -0
- package/dist/onboarding/ui/copy.js +69 -0
- package/dist/onboarding/ui/copy.js.map +1 -0
- package/dist/onboarding/ui/index.d.ts +16 -0
- package/dist/onboarding/ui/index.d.ts.map +1 -0
- package/dist/onboarding/ui/index.js +14 -0
- package/dist/onboarding/ui/index.js.map +1 -0
- package/dist/onboarding/ui/settings-pages.d.ts +33 -0
- package/dist/onboarding/ui/settings-pages.d.ts.map +1 -0
- package/dist/onboarding/ui/settings-pages.js +56 -0
- package/dist/onboarding/ui/settings-pages.js.map +1 -0
- package/dist/settings/headless/features.d.ts +74 -0
- package/dist/settings/headless/features.d.ts.map +1 -0
- package/dist/settings/headless/features.js +94 -0
- package/dist/settings/headless/features.js.map +1 -0
- package/dist/settings/headless/index.d.ts +39 -0
- package/dist/settings/headless/index.d.ts.map +1 -0
- package/dist/settings/headless/index.js +12 -0
- package/dist/settings/headless/index.js.map +1 -0
- package/dist/settings/headless/org-field-renderers.d.ts +57 -0
- package/dist/settings/headless/org-field-renderers.d.ts.map +1 -0
- package/dist/settings/headless/org-field-renderers.js +59 -0
- package/dist/settings/headless/org-field-renderers.js.map +1 -0
- package/dist/settings/headless/profile-image.d.ts +62 -0
- package/dist/settings/headless/profile-image.d.ts.map +1 -0
- package/dist/settings/headless/profile-image.js +51 -0
- package/dist/settings/headless/profile-image.js.map +1 -0
- package/dist/settings/headless/theme-options.d.ts +33 -0
- package/dist/settings/headless/theme-options.d.ts.map +1 -0
- package/dist/settings/headless/theme-options.js +47 -0
- package/dist/settings/headless/theme-options.js.map +1 -0
- package/dist/settings/headless/use-org-settings.d.ts +41 -0
- package/dist/settings/headless/use-org-settings.d.ts.map +1 -0
- package/dist/settings/headless/use-org-settings.js +84 -0
- package/dist/settings/headless/use-org-settings.js.map +1 -0
- package/dist/settings/headless/use-pluggable-config-form.d.ts +72 -0
- package/dist/settings/headless/use-pluggable-config-form.d.ts.map +1 -0
- package/dist/settings/headless/use-pluggable-config-form.js +106 -0
- package/dist/settings/headless/use-pluggable-config-form.js.map +1 -0
- package/dist/settings/headless/use-storage-status.d.ts +30 -0
- package/dist/settings/headless/use-storage-status.d.ts.map +1 -0
- package/dist/settings/headless/use-storage-status.js +59 -0
- package/dist/settings/headless/use-storage-status.js.map +1 -0
- package/dist/settings/headless/use-system-settings.d.ts +70 -0
- package/dist/settings/headless/use-system-settings.d.ts.map +1 -0
- package/dist/settings/headless/use-system-settings.js +116 -0
- package/dist/settings/headless/use-system-settings.js.map +1 -0
- package/dist/settings/headless/use-user-settings.d.ts +96 -0
- package/dist/settings/headless/use-user-settings.d.ts.map +1 -0
- package/dist/settings/headless/use-user-settings.js +113 -0
- package/dist/settings/headless/use-user-settings.js.map +1 -0
- package/dist/settings/index.d.ts +9 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +17 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/internal/LoadingSpinner.d.ts +6 -0
- package/dist/settings/internal/LoadingSpinner.d.ts.map +1 -0
- package/dist/settings/internal/LoadingSpinner.js +9 -0
- package/dist/settings/internal/LoadingSpinner.js.map +1 -0
- package/dist/settings/internal/use-is-mounted.d.ts +2 -0
- package/dist/settings/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/settings/internal/use-is-mounted.js +14 -0
- package/dist/settings/internal/use-is-mounted.js.map +1 -0
- package/dist/settings/testing/index.d.ts +7 -0
- package/dist/settings/testing/index.d.ts.map +1 -0
- package/dist/settings/testing/index.js +12 -0
- package/dist/settings/testing/index.js.map +1 -0
- package/dist/settings/testing/routes.d.ts +28 -0
- package/dist/settings/testing/routes.d.ts.map +1 -0
- package/dist/settings/testing/routes.js +62 -0
- package/dist/settings/testing/routes.js.map +1 -0
- package/dist/settings/testing/sections.d.ts +28 -0
- package/dist/settings/testing/sections.d.ts.map +1 -0
- package/dist/settings/testing/sections.js +27 -0
- package/dist/settings/testing/sections.js.map +1 -0
- package/dist/settings/testing/settings-ai-cards.suite.d.ts +10 -0
- package/dist/settings/testing/settings-ai-cards.suite.d.ts.map +1 -0
- package/dist/settings/testing/settings-ai-cards.suite.js +143 -0
- package/dist/settings/testing/settings-ai-cards.suite.js.map +1 -0
- package/dist/settings/testing/settings-card-routes.suite.d.ts +10 -0
- package/dist/settings/testing/settings-card-routes.suite.d.ts.map +1 -0
- package/dist/settings/testing/settings-card-routes.suite.js +74 -0
- package/dist/settings/testing/settings-card-routes.suite.js.map +1 -0
- package/dist/settings/testing/settings-registry-gates.suite.d.ts +10 -0
- package/dist/settings/testing/settings-registry-gates.suite.d.ts.map +1 -0
- package/dist/settings/testing/settings-registry-gates.suite.js +277 -0
- package/dist/settings/testing/settings-registry-gates.suite.js.map +1 -0
- package/dist/settings/testing/settings-registry-shape.suite.d.ts +11 -0
- package/dist/settings/testing/settings-registry-shape.suite.d.ts.map +1 -0
- package/dist/settings/testing/settings-registry-shape.suite.js +115 -0
- package/dist/settings/testing/settings-registry-shape.suite.js.map +1 -0
- package/dist/settings/testing/settings-route-ownership.suite.d.ts +10 -0
- package/dist/settings/testing/settings-route-ownership.suite.d.ts.map +1 -0
- package/dist/settings/testing/settings-route-ownership.suite.js +115 -0
- package/dist/settings/testing/settings-route-ownership.suite.js.map +1 -0
- package/dist/settings/ui/ImageUpload.d.ts +49 -0
- package/dist/settings/ui/ImageUpload.d.ts.map +1 -0
- package/dist/settings/ui/ImageUpload.js +96 -0
- package/dist/settings/ui/ImageUpload.js.map +1 -0
- package/dist/settings/ui/OrgSettingsPage.d.ts +41 -0
- package/dist/settings/ui/OrgSettingsPage.d.ts.map +1 -0
- package/dist/settings/ui/OrgSettingsPage.js +99 -0
- package/dist/settings/ui/OrgSettingsPage.js.map +1 -0
- package/dist/settings/ui/PluggableConfigForm.d.ts +96 -0
- package/dist/settings/ui/PluggableConfigForm.d.ts.map +1 -0
- package/dist/settings/ui/PluggableConfigForm.js +95 -0
- package/dist/settings/ui/PluggableConfigForm.js.map +1 -0
- package/dist/settings/ui/ProfileSettings.d.ts +75 -0
- package/dist/settings/ui/ProfileSettings.d.ts.map +1 -0
- package/dist/settings/ui/ProfileSettings.js +270 -0
- package/dist/settings/ui/ProfileSettings.js.map +1 -0
- package/dist/settings/ui/SettingsHub.d.ts +97 -0
- package/dist/settings/ui/SettingsHub.d.ts.map +1 -0
- package/dist/settings/ui/SettingsHub.js +134 -0
- package/dist/settings/ui/SettingsHub.js.map +1 -0
- package/dist/settings/ui/ThemeSettings.d.ts +65 -0
- package/dist/settings/ui/ThemeSettings.d.ts.map +1 -0
- package/dist/settings/ui/ThemeSettings.js +26 -0
- package/dist/settings/ui/ThemeSettings.js.map +1 -0
- package/dist/settings/ui/UserAppearancePage.d.ts +65 -0
- package/dist/settings/ui/UserAppearancePage.d.ts.map +1 -0
- package/dist/settings/ui/UserAppearancePage.js +33 -0
- package/dist/settings/ui/UserAppearancePage.js.map +1 -0
- package/dist/settings/ui/UserProfilePage.d.ts +60 -0
- package/dist/settings/ui/UserProfilePage.d.ts.map +1 -0
- package/dist/settings/ui/UserProfilePage.js +29 -0
- package/dist/settings/ui/UserProfilePage.js.map +1 -0
- package/dist/settings/ui/UserSettingsSection.d.ts +141 -0
- package/dist/settings/ui/UserSettingsSection.d.ts.map +1 -0
- package/dist/settings/ui/UserSettingsSection.js +94 -0
- package/dist/settings/ui/UserSettingsSection.js.map +1 -0
- package/dist/settings/ui/index.d.ts +23 -0
- package/dist/settings/ui/index.d.ts.map +1 -0
- package/dist/settings/ui/index.js +16 -0
- package/dist/settings/ui/index.js.map +1 -0
- package/dist/settings/ui/registry.d.ts +102 -0
- package/dist/settings/ui/registry.d.ts.map +1 -0
- package/dist/settings/ui/registry.js +98 -0
- package/dist/settings/ui/registry.js.map +1 -0
- package/dist/sharing/headless/client.d.ts +181 -0
- package/dist/sharing/headless/client.d.ts.map +1 -0
- package/dist/sharing/headless/client.js +102 -0
- package/dist/sharing/headless/client.js.map +1 -0
- package/dist/sharing/headless/errors.d.ts +35 -0
- package/dist/sharing/headless/errors.d.ts.map +1 -0
- package/dist/sharing/headless/errors.js +93 -0
- package/dist/sharing/headless/errors.js.map +1 -0
- package/dist/sharing/headless/granteePickers.d.ts +127 -0
- package/dist/sharing/headless/granteePickers.d.ts.map +1 -0
- package/dist/sharing/headless/granteePickers.js +143 -0
- package/dist/sharing/headless/granteePickers.js.map +1 -0
- package/dist/sharing/headless/index.d.ts +22 -0
- package/dist/sharing/headless/index.d.ts.map +1 -0
- package/dist/sharing/headless/index.js +17 -0
- package/dist/sharing/headless/index.js.map +1 -0
- package/dist/sharing/headless/linkRenderers.d.ts +129 -0
- package/dist/sharing/headless/linkRenderers.d.ts.map +1 -0
- package/dist/sharing/headless/linkRenderers.js +143 -0
- package/dist/sharing/headless/linkRenderers.js.map +1 -0
- package/dist/sharing/headless/types.d.ts +63 -0
- package/dist/sharing/headless/types.d.ts.map +1 -0
- package/dist/sharing/headless/types.js +3 -0
- package/dist/sharing/headless/types.js.map +1 -0
- package/dist/sharing/headless/useGranteeKinds.d.ts +25 -0
- package/dist/sharing/headless/useGranteeKinds.d.ts.map +1 -0
- package/dist/sharing/headless/useGranteeKinds.js +29 -0
- package/dist/sharing/headless/useGranteeKinds.js.map +1 -0
- package/dist/sharing/headless/useGrants.d.ts +68 -0
- package/dist/sharing/headless/useGrants.d.ts.map +1 -0
- package/dist/sharing/headless/useGrants.js +61 -0
- package/dist/sharing/headless/useGrants.js.map +1 -0
- package/dist/sharing/headless/useGroupInvites.d.ts +36 -0
- package/dist/sharing/headless/useGroupInvites.d.ts.map +1 -0
- package/dist/sharing/headless/useGroupInvites.js +43 -0
- package/dist/sharing/headless/useGroupInvites.js.map +1 -0
- package/dist/sharing/headless/useGroupMembers.d.ts +22 -0
- package/dist/sharing/headless/useGroupMembers.d.ts.map +1 -0
- package/dist/sharing/headless/useGroupMembers.js +28 -0
- package/dist/sharing/headless/useGroupMembers.js.map +1 -0
- package/dist/sharing/headless/useGroupRoles.d.ts +25 -0
- package/dist/sharing/headless/useGroupRoles.d.ts.map +1 -0
- package/dist/sharing/headless/useGroupRoles.js +29 -0
- package/dist/sharing/headless/useGroupRoles.js.map +1 -0
- package/dist/sharing/headless/useGroups.d.ts +111 -0
- package/dist/sharing/headless/useGroups.d.ts.map +1 -0
- package/dist/sharing/headless/useGroups.js +79 -0
- package/dist/sharing/headless/useGroups.js.map +1 -0
- package/dist/sharing/headless/useLinkGrants.d.ts +43 -0
- package/dist/sharing/headless/useLinkGrants.d.ts.map +1 -0
- package/dist/sharing/headless/useLinkGrants.js +35 -0
- package/dist/sharing/headless/useLinkGrants.js.map +1 -0
- package/dist/sharing/headless/usePublicLink.d.ts +68 -0
- package/dist/sharing/headless/usePublicLink.d.ts.map +1 -0
- package/dist/sharing/headless/usePublicLink.js +145 -0
- package/dist/sharing/headless/usePublicLink.js.map +1 -0
- package/dist/sharing/headless/useSharedWithMe.d.ts +23 -0
- package/dist/sharing/headless/useSharedWithMe.d.ts.map +1 -0
- package/dist/sharing/headless/useSharedWithMe.js +26 -0
- package/dist/sharing/headless/useSharedWithMe.js.map +1 -0
- package/dist/sharing/internal/clipboard.d.ts +2 -0
- package/dist/sharing/internal/clipboard.d.ts.map +1 -0
- package/dist/sharing/internal/clipboard.js +34 -0
- package/dist/sharing/internal/clipboard.js.map +1 -0
- package/dist/sharing/internal/format.d.ts +8 -0
- package/dist/sharing/internal/format.d.ts.map +1 -0
- package/dist/sharing/internal/format.js +25 -0
- package/dist/sharing/internal/format.js.map +1 -0
- package/dist/sharing/internal/live-region.d.ts +6 -0
- package/dist/sharing/internal/live-region.d.ts.map +1 -0
- package/dist/sharing/internal/live-region.js +20 -0
- package/dist/sharing/internal/live-region.js.map +1 -0
- package/dist/sharing/internal/use-action-runner.d.ts +6 -0
- package/dist/sharing/internal/use-action-runner.d.ts.map +1 -0
- package/dist/sharing/internal/use-action-runner.js +28 -0
- package/dist/sharing/internal/use-action-runner.js.map +1 -0
- package/dist/sharing/internal/use-async-resource.d.ts +6 -0
- package/dist/sharing/internal/use-async-resource.d.ts.map +1 -0
- package/dist/sharing/internal/use-async-resource.js +52 -0
- package/dist/sharing/internal/use-async-resource.js.map +1 -0
- package/dist/sharing/internal/use-can.d.ts +3 -0
- package/dist/sharing/internal/use-can.d.ts.map +1 -0
- package/dist/sharing/internal/use-can.js +14 -0
- package/dist/sharing/internal/use-can.js.map +1 -0
- package/dist/sharing/internal/use-is-mounted.d.ts +2 -0
- package/dist/sharing/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/sharing/internal/use-is-mounted.js +15 -0
- package/dist/sharing/internal/use-is-mounted.js.map +1 -0
- package/dist/sharing/internal/use-sharing-client.d.ts +3 -0
- package/dist/sharing/internal/use-sharing-client.d.ts.map +1 -0
- package/dist/sharing/internal/use-sharing-client.js +18 -0
- package/dist/sharing/internal/use-sharing-client.js.map +1 -0
- package/dist/sharing/ui/GroupDetailPage.d.ts +119 -0
- package/dist/sharing/ui/GroupDetailPage.d.ts.map +1 -0
- package/dist/sharing/ui/GroupDetailPage.js +254 -0
- package/dist/sharing/ui/GroupDetailPage.js.map +1 -0
- package/dist/sharing/ui/GroupsPage.d.ts +70 -0
- package/dist/sharing/ui/GroupsPage.d.ts.map +1 -0
- package/dist/sharing/ui/GroupsPage.js +91 -0
- package/dist/sharing/ui/GroupsPage.js.map +1 -0
- package/dist/sharing/ui/PendingGroupInvites.d.ts +56 -0
- package/dist/sharing/ui/PendingGroupInvites.d.ts.map +1 -0
- package/dist/sharing/ui/PendingGroupInvites.js +56 -0
- package/dist/sharing/ui/PendingGroupInvites.js.map +1 -0
- package/dist/sharing/ui/PublicLinkPage.d.ts +76 -0
- package/dist/sharing/ui/PublicLinkPage.d.ts.map +1 -0
- package/dist/sharing/ui/PublicLinkPage.js +102 -0
- package/dist/sharing/ui/PublicLinkPage.js.map +1 -0
- package/dist/sharing/ui/ShareDialog.d.ts +129 -0
- package/dist/sharing/ui/ShareDialog.d.ts.map +1 -0
- package/dist/sharing/ui/ShareDialog.js +242 -0
- package/dist/sharing/ui/ShareDialog.js.map +1 -0
- package/dist/sharing/ui/SharedWithMeList.d.ts +64 -0
- package/dist/sharing/ui/SharedWithMeList.d.ts.map +1 -0
- package/dist/sharing/ui/SharedWithMeList.js +58 -0
- package/dist/sharing/ui/SharedWithMeList.js.map +1 -0
- package/dist/sharing/ui/copy.d.ts +26 -0
- package/dist/sharing/ui/copy.d.ts.map +1 -0
- package/dist/sharing/ui/copy.js +30 -0
- package/dist/sharing/ui/copy.js.map +1 -0
- package/dist/sharing/ui/index.d.ts +14 -0
- package/dist/sharing/ui/index.d.ts.map +1 -0
- package/dist/sharing/ui/index.js +11 -0
- package/dist/sharing/ui/index.js.map +1 -0
- package/dist/sharing/ui/settings-page.d.ts +20 -0
- package/dist/sharing/ui/settings-page.d.ts.map +1 -0
- package/dist/sharing/ui/settings-page.js +32 -0
- package/dist/sharing/ui/settings-page.js.map +1 -0
- package/dist/shell/headless/index.d.ts +9 -0
- package/dist/shell/headless/index.d.ts.map +1 -0
- package/dist/shell/headless/index.js +8 -0
- package/dist/shell/headless/index.js.map +1 -0
- package/dist/shell/headless/navigation.d.ts +270 -0
- package/dist/shell/headless/navigation.d.ts.map +1 -0
- package/dist/shell/headless/navigation.js +138 -0
- package/dist/shell/headless/navigation.js.map +1 -0
- package/dist/shell/headless/providers.d.ts +40 -0
- package/dist/shell/headless/providers.d.ts.map +1 -0
- package/dist/shell/headless/providers.js +27 -0
- package/dist/shell/headless/providers.js.map +1 -0
- package/dist/shell/headless/rail-preference.d.ts +34 -0
- package/dist/shell/headless/rail-preference.d.ts.map +1 -0
- package/dist/shell/headless/rail-preference.js +67 -0
- package/dist/shell/headless/rail-preference.js.map +1 -0
- package/dist/shell/headless/theme.d.ts +190 -0
- package/dist/shell/headless/theme.d.ts.map +1 -0
- package/dist/shell/headless/theme.js +235 -0
- package/dist/shell/headless/theme.js.map +1 -0
- package/dist/shell/internal/use-is-mounted.d.ts +3 -0
- package/dist/shell/internal/use-is-mounted.d.ts.map +1 -0
- package/dist/shell/internal/use-is-mounted.js +13 -0
- package/dist/shell/internal/use-is-mounted.js.map +1 -0
- package/dist/shell/ui/ShellAppBar.d.ts +58 -0
- package/dist/shell/ui/ShellAppBar.d.ts.map +1 -0
- package/dist/shell/ui/ShellAppBar.js +81 -0
- package/dist/shell/ui/ShellAppBar.js.map +1 -0
- package/dist/shell/ui/ShellBottomNav.d.ts +31 -0
- package/dist/shell/ui/ShellBottomNav.d.ts.map +1 -0
- package/dist/shell/ui/ShellBottomNav.js +144 -0
- package/dist/shell/ui/ShellBottomNav.js.map +1 -0
- package/dist/shell/ui/ShellLayout.d.ts +49 -0
- package/dist/shell/ui/ShellLayout.d.ts.map +1 -0
- package/dist/shell/ui/ShellLayout.js +95 -0
- package/dist/shell/ui/ShellLayout.js.map +1 -0
- package/dist/shell/ui/ShellNavigationRail.d.ts +34 -0
- package/dist/shell/ui/ShellNavigationRail.d.ts.map +1 -0
- package/dist/shell/ui/ShellNavigationRail.js +195 -0
- package/dist/shell/ui/ShellNavigationRail.js.map +1 -0
- package/dist/shell/ui/ShellThemeProvider.d.ts +64 -0
- package/dist/shell/ui/ShellThemeProvider.d.ts.map +1 -0
- package/dist/shell/ui/ShellThemeProvider.js +105 -0
- package/dist/shell/ui/ShellThemeProvider.js.map +1 -0
- package/dist/shell/ui/ShellUserMenu.d.ts +36 -0
- package/dist/shell/ui/ShellUserMenu.d.ts.map +1 -0
- package/dist/shell/ui/ShellUserMenu.js +76 -0
- package/dist/shell/ui/ShellUserMenu.js.map +1 -0
- package/dist/shell/ui/destination-parts.d.ts +48 -0
- package/dist/shell/ui/destination-parts.d.ts.map +1 -0
- package/dist/shell/ui/destination-parts.js +54 -0
- package/dist/shell/ui/destination-parts.js.map +1 -0
- package/dist/shell/ui/index.d.ts +13 -0
- package/dist/shell/ui/index.d.ts.map +1 -0
- package/dist/shell/ui/index.js +10 -0
- package/dist/shell/ui/index.js.map +1 -0
- package/dist/storage/headless/index.d.ts +7 -0
- package/dist/storage/headless/index.d.ts.map +1 -0
- package/dist/storage/headless/index.js +9 -0
- package/dist/storage/headless/index.js.map +1 -0
- package/dist/storage/headless/objects-client.d.ts +112 -0
- package/dist/storage/headless/objects-client.d.ts.map +1 -0
- package/dist/storage/headless/objects-client.js +93 -0
- package/dist/storage/headless/objects-client.js.map +1 -0
- package/dist/storage/headless/storage-config.d.ts +454 -0
- package/dist/storage/headless/storage-config.d.ts.map +1 -0
- package/dist/storage/headless/storage-config.js +143 -0
- package/dist/storage/headless/storage-config.js.map +1 -0
- package/dist/storage/headless/use-storage-config.d.ts +126 -0
- package/dist/storage/headless/use-storage-config.d.ts.map +1 -0
- package/dist/storage/headless/use-storage-config.js +248 -0
- package/dist/storage/headless/use-storage-config.js.map +1 -0
- package/dist/storage/index.d.ts +3 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +8 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/ui/S3FamilyDriverPanel.d.ts +67 -0
- package/dist/storage/ui/S3FamilyDriverPanel.d.ts.map +1 -0
- package/dist/storage/ui/S3FamilyDriverPanel.js +195 -0
- package/dist/storage/ui/S3FamilyDriverPanel.js.map +1 -0
- package/dist/storage/ui/StorageConfigPage.d.ts +95 -0
- package/dist/storage/ui/StorageConfigPage.d.ts.map +1 -0
- package/dist/storage/ui/StorageConfigPage.js +404 -0
- package/dist/storage/ui/StorageConfigPage.js.map +1 -0
- package/dist/storage/ui/StorageGenericDriverPanel.d.ts +42 -0
- package/dist/storage/ui/StorageGenericDriverPanel.d.ts.map +1 -0
- package/dist/storage/ui/StorageGenericDriverPanel.js +47 -0
- package/dist/storage/ui/StorageGenericDriverPanel.js.map +1 -0
- package/dist/storage/ui/StorageSwitchConfirmDialog.d.ts +55 -0
- package/dist/storage/ui/StorageSwitchConfirmDialog.d.ts.map +1 -0
- package/dist/storage/ui/StorageSwitchConfirmDialog.js +64 -0
- package/dist/storage/ui/StorageSwitchConfirmDialog.js.map +1 -0
- package/dist/storage/ui/builtinStorageDriverPanels.d.ts +5 -0
- package/dist/storage/ui/builtinStorageDriverPanels.d.ts.map +1 -0
- package/dist/storage/ui/builtinStorageDriverPanels.js +18 -0
- package/dist/storage/ui/builtinStorageDriverPanels.js.map +1 -0
- package/dist/storage/ui/driver-panels.d.ts +4 -0
- package/dist/storage/ui/driver-panels.d.ts.map +1 -0
- package/dist/storage/ui/driver-panels.js +7 -0
- package/dist/storage/ui/driver-panels.js.map +1 -0
- package/dist/storage/ui/index.d.ts +7 -0
- package/dist/storage/ui/index.d.ts.map +1 -0
- package/dist/storage/ui/index.js +11 -0
- package/dist/storage/ui/index.js.map +1 -0
- package/dist/storage/ui/storageDriverPanelRegistry.d.ts +107 -0
- package/dist/storage/ui/storageDriverPanelRegistry.d.ts.map +1 -0
- package/dist/storage/ui/storageDriverPanelRegistry.js +91 -0
- package/dist/storage/ui/storageDriverPanelRegistry.js.map +1 -0
- package/dist/telemetry/headless/context/metricUnitFormats.d.ts +28 -0
- package/dist/telemetry/headless/context/metricUnitFormats.d.ts.map +1 -0
- package/dist/telemetry/headless/context/metricUnitFormats.js +44 -0
- package/dist/telemetry/headless/context/metricUnitFormats.js.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +84 -2
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts.map +1 -1
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.js +24 -0
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.js.map +1 -1
- package/dist/telemetry/headless/hooks/useTelemetryStore.d.ts +35 -0
- package/dist/telemetry/headless/hooks/useTelemetryStore.d.ts.map +1 -0
- package/dist/telemetry/headless/hooks/useTelemetryStore.js +84 -0
- package/dist/telemetry/headless/hooks/useTelemetryStore.js.map +1 -0
- package/dist/telemetry/headless/index.d.ts +9 -1
- package/dist/telemetry/headless/index.d.ts.map +1 -1
- package/dist/telemetry/headless/index.js +7 -1
- package/dist/telemetry/headless/index.js.map +1 -1
- package/dist/telemetry/headless/lib/dashboardState.d.ts +14 -1
- package/dist/telemetry/headless/lib/dashboardState.d.ts.map +1 -1
- package/dist/telemetry/headless/lib/dashboardState.js.map +1 -1
- package/dist/telemetry/headless/lib/format.d.ts +37 -6
- package/dist/telemetry/headless/lib/format.d.ts.map +1 -1
- package/dist/telemetry/headless/lib/format.js +77 -3
- package/dist/telemetry/headless/lib/format.js.map +1 -1
- package/dist/telemetry/headless/lib/metrics/presentation.d.ts +137 -0
- package/dist/telemetry/headless/lib/metrics/presentation.d.ts.map +1 -0
- package/dist/telemetry/headless/lib/metrics/presentation.js +185 -0
- package/dist/telemetry/headless/lib/metrics/presentation.js.map +1 -0
- package/dist/telemetry/headless/services/client.d.ts +11 -2
- package/dist/telemetry/headless/services/client.d.ts.map +1 -1
- package/dist/telemetry/headless/services/client.js +5 -0
- package/dist/telemetry/headless/services/client.js.map +1 -1
- package/dist/telemetry/headless/services/telemetry.d.ts +22 -1
- package/dist/telemetry/headless/services/telemetry.d.ts.map +1 -1
- package/dist/telemetry/headless/services/telemetry.js +0 -12
- package/dist/telemetry/headless/services/telemetry.js.map +1 -1
- package/dist/telemetry/headless/services/telemetryDashboard.d.ts +28 -1
- package/dist/telemetry/headless/services/telemetryDashboard.d.ts.map +1 -1
- package/dist/telemetry/headless/services/telemetryDashboard.js.map +1 -1
- package/dist/telemetry/ui/components/TelemetryStoreSection.d.ts +24 -0
- package/dist/telemetry/ui/components/TelemetryStoreSection.d.ts.map +1 -0
- package/dist/telemetry/ui/components/TelemetryStoreSection.js +56 -0
- package/dist/telemetry/ui/components/TelemetryStoreSection.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts +5 -0
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/DashboardFilterBar.js.map +1 -1
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts +9 -0
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/DashboardPanel.js.map +1 -1
- package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts +3 -1
- package/dist/telemetry/ui/components/dashboard/KpiTiles.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/KpiTiles.js +11 -5
- package/dist/telemetry/ui/components/dashboard/KpiTiles.js.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +15 -36
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +92 -163
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js +4 -2
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSeriesChart.js.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js +16 -5
- package/dist/telemetry/ui/components/dashboard/metrics/MetricTable.js.map +1 -1
- package/dist/telemetry/ui/components/dashboard/panels/builtinPanelViews.d.ts +12 -0
- package/dist/telemetry/ui/components/dashboard/panels/builtinPanelViews.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/panels/builtinPanelViews.js +59 -0
- package/dist/telemetry/ui/components/dashboard/panels/builtinPanelViews.js.map +1 -0
- package/dist/telemetry/ui/components/dashboard/panels/dashboardPanelViews.d.ts +155 -0
- package/dist/telemetry/ui/components/dashboard/panels/dashboardPanelViews.d.ts.map +1 -0
- package/dist/telemetry/ui/components/dashboard/panels/dashboardPanelViews.js +74 -0
- package/dist/telemetry/ui/components/dashboard/panels/dashboardPanelViews.js.map +1 -0
- package/dist/telemetry/ui/dashboard-page.d.ts +1 -0
- package/dist/telemetry/ui/dashboard-page.d.ts.map +1 -1
- package/dist/telemetry/ui/dashboard-panels.d.ts +5 -0
- package/dist/telemetry/ui/dashboard-panels.d.ts.map +1 -0
- package/dist/telemetry/ui/dashboard-panels.js +8 -0
- package/dist/telemetry/ui/dashboard-panels.js.map +1 -0
- package/dist/telemetry/ui/explorer-page.d.ts +1 -0
- package/dist/telemetry/ui/explorer-page.d.ts.map +1 -1
- package/dist/telemetry/ui/index.d.ts +5 -0
- package/dist/telemetry/ui/index.d.ts.map +1 -1
- package/dist/telemetry/ui/index.js +3 -0
- package/dist/telemetry/ui/index.js.map +1 -1
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts +23 -1
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.d.ts.map +1 -1
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.js +135 -52
- package/dist/telemetry/ui/pages/TelemetryDashboardPage.js.map +1 -1
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts +30 -1
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.d.ts.map +1 -1
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.js +26 -8
- package/dist/telemetry/ui/pages/TelemetryExplorerPage.js.map +1 -1
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts +23 -1
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.d.ts.map +1 -1
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.js +40 -11
- package/dist/telemetry/ui/pages/TelemetrySettingsPage.js.map +1 -1
- package/dist/telemetry/ui/settings-page.d.ts +1 -0
- package/dist/telemetry/ui/settings-page.d.ts.map +1 -1
- package/dist/testing/conformance.d.ts +335 -0
- package/dist/testing/conformance.d.ts.map +1 -0
- package/dist/testing/conformance.js +150 -0
- package/dist/testing/conformance.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/test-platform-host.d.ts +9 -1
- package/dist/testing/test-platform-host.d.ts.map +1 -1
- package/dist/testing/test-platform-host.js +19 -5
- package/dist/testing/test-platform-host.js.map +1 -1
- package/dist/user-data/headless/client.d.ts +63 -0
- package/dist/user-data/headless/client.d.ts.map +1 -0
- package/dist/user-data/headless/client.js +44 -0
- package/dist/user-data/headless/client.js.map +1 -0
- package/dist/user-data/headless/index.d.ts +7 -0
- package/dist/user-data/headless/index.d.ts.map +1 -0
- package/dist/user-data/headless/index.js +7 -0
- package/dist/user-data/headless/index.js.map +1 -0
- package/dist/user-data/headless/sections.d.ts +54 -0
- package/dist/user-data/headless/sections.d.ts.map +1 -0
- package/dist/user-data/headless/sections.js +43 -0
- package/dist/user-data/headless/sections.js.map +1 -0
- package/dist/user-data/headless/use-destructive-job.d.ts +84 -0
- package/dist/user-data/headless/use-destructive-job.d.ts.map +1 -0
- package/dist/user-data/headless/use-destructive-job.js +110 -0
- package/dist/user-data/headless/use-destructive-job.js.map +1 -0
- package/dist/user-data/ui/FactoryResetPage.d.ts +66 -0
- package/dist/user-data/ui/FactoryResetPage.d.ts.map +1 -0
- package/dist/user-data/ui/FactoryResetPage.js +82 -0
- package/dist/user-data/ui/FactoryResetPage.js.map +1 -0
- package/dist/user-data/ui/OffboardOrganizationButton.d.ts +38 -0
- package/dist/user-data/ui/OffboardOrganizationButton.d.ts.map +1 -0
- package/dist/user-data/ui/OffboardOrganizationButton.js +27 -0
- package/dist/user-data/ui/OffboardOrganizationButton.js.map +1 -0
- package/dist/user-data/ui/OrgOffboardingDialog.d.ts +43 -0
- package/dist/user-data/ui/OrgOffboardingDialog.d.ts.map +1 -0
- package/dist/user-data/ui/OrgOffboardingDialog.js +56 -0
- package/dist/user-data/ui/OrgOffboardingDialog.js.map +1 -0
- package/dist/user-data/ui/TypedConfirmDialog.d.ts +62 -0
- package/dist/user-data/ui/TypedConfirmDialog.d.ts.map +1 -0
- package/dist/user-data/ui/TypedConfirmDialog.js +36 -0
- package/dist/user-data/ui/TypedConfirmDialog.js.map +1 -0
- package/dist/user-data/ui/UserDangerZonePage.d.ts +66 -0
- package/dist/user-data/ui/UserDangerZonePage.d.ts.map +1 -0
- package/dist/user-data/ui/UserDangerZonePage.js +102 -0
- package/dist/user-data/ui/UserDangerZonePage.js.map +1 -0
- package/dist/user-data/ui/copy.d.ts +15 -0
- package/dist/user-data/ui/copy.d.ts.map +1 -0
- package/dist/user-data/ui/copy.js +34 -0
- package/dist/user-data/ui/copy.js.map +1 -0
- package/dist/user-data/ui/index.d.ts +13 -0
- package/dist/user-data/ui/index.d.ts.map +1 -0
- package/dist/user-data/ui/index.js +12 -0
- package/dist/user-data/ui/index.js.map +1 -0
- package/dist/user-data/ui/settings-pages.d.ts +31 -0
- package/dist/user-data/ui/settings-pages.d.ts.map +1 -0
- package/dist/user-data/ui/settings-pages.js +52 -0
- package/dist/user-data/ui/settings-pages.js.map +1 -0
- package/package.json +229 -3
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Admin → Settings → Notifications (`/admin/settings/notifications`).
|
|
4
|
+
*
|
|
5
|
+
* Issue #225, epic #215. The `Notifications` card in `config/adminSections.tsx`
|
|
6
|
+
* routes here, and — per the MANDATORY settings-hub rules in `CLAUDE.md` — that
|
|
7
|
+
* registry entry is what makes this page reachable from the hub, the Console
|
|
8
|
+
* rail and the AppBar title resolver at once. It is deliberately NOT a fourth
|
|
9
|
+
* tab on an existing settings page: a tab gate is about CONTENT within one
|
|
10
|
+
* destination, and this is a destination of its own.
|
|
11
|
+
*
|
|
12
|
+
* NOTHING ENFORCES THESE VALUES YET, AND THAT IS NOT A BUG. #225 adds the
|
|
13
|
+
* setting, its persistence and this editor. The server-side enforcement — the
|
|
14
|
+
* browser channel consulting `browserEnabled` / `disabledEvents` before it
|
|
15
|
+
* writes a notification, and the non-admin read endpoint that lets the web app
|
|
16
|
+
* stop asking for OS permission when the capability is off — is issue #226.
|
|
17
|
+
* Until that lands, saving here changes the stored document and changes nothing
|
|
18
|
+
* an end user can observe.
|
|
19
|
+
*
|
|
20
|
+
* WHY THE CHECKBOX IS INVERTED RELATIVE TO THE STORED FIELD. The document
|
|
21
|
+
* stores `disabledEvents` (a suppression list), and this page renders a box
|
|
22
|
+
* that is CHECKED when the event is delivered. That matches
|
|
23
|
+
* `/settings/notifications`, where a switch being on means "you receive this" —
|
|
24
|
+
* two notification surfaces whose controls read in opposite directions would be
|
|
25
|
+
* a genuine hazard on a page whose whole job is silencing things. The inversion
|
|
26
|
+
* happens in exactly one place (`toggleEvent`), never in render.
|
|
27
|
+
*
|
|
28
|
+
* ONLY BROWSER-CAPABLE EVENTS ARE LISTED. `disabledEvents` suppresses the
|
|
29
|
+
* BROWSER notification; offering the control for an email-only event
|
|
30
|
+
* (`user.welcome`, `allowlist.invitation`) would render a checkbox that cannot
|
|
31
|
+
* do anything. The registry is the authority on which those are — this page
|
|
32
|
+
* filters on `declaredChannels.includes('browser')` and never restates the list.
|
|
33
|
+
*
|
|
34
|
+
* THE CHANNEL SWITCHES (PP-14.10). Beyond the browser switch, every channel an
|
|
35
|
+
* app registered (anything but the platform's `email`, `browser` and `push`,
|
|
36
|
+
* which are configured on their own pages) gets a switch of its own, drawn
|
|
37
|
+
* from `GET /api/notifications/channels` with the label the registry gave it.
|
|
38
|
+
* A switch writes `channels.<id>.enabled`; the section does not render at all
|
|
39
|
+
* while the deployment registers no such channel, so a deployment with only
|
|
40
|
+
* the platform's channels sees the page exactly as it was.
|
|
41
|
+
*
|
|
42
|
+
* `declaredChannels`, NOT `channels` (#521). `channels` is what a USER will
|
|
43
|
+
* receive: the API narrows it by this very policy, so a non-mandatory event
|
|
44
|
+
* this page has suppressed (or every one, while the switch is off) no longer
|
|
45
|
+
* lists `browser` there. Filtering on it made a suppressed event vanish from
|
|
46
|
+
* the one page that can lift the suppression. `declaredChannels` is the
|
|
47
|
+
* registry's declaration before policy, so a suppressed event stays listed,
|
|
48
|
+
* unchecked, and can be re-enabled.
|
|
49
|
+
*/
|
|
50
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
51
|
+
import { Alert, Box, Button, Checkbox, Chip, CircularProgress, Divider, FormControlLabel, Stack, Switch, Typography, } from '@mui/material';
|
|
52
|
+
import LockIcon from '@mui/icons-material/Lock';
|
|
53
|
+
import { SystemSettingsSection } from './SystemSettingsSection.js';
|
|
54
|
+
import { useNotificationChannels } from '../headless/useNotificationChannels.js';
|
|
55
|
+
import { useNotificationEvents } from '../headless/useNotificationEvents.js';
|
|
56
|
+
/**
|
|
57
|
+
* The channels the platform configures elsewhere (Email and Push on their own
|
|
58
|
+
* settings pages) or on this page's browser switch: no channel switch here.
|
|
59
|
+
*/
|
|
60
|
+
const PLATFORM_CHANNEL_IDS = ['email', 'browser', 'push'];
|
|
61
|
+
const PAGE_TITLE = 'Notifications';
|
|
62
|
+
const PAGE_DESCRIPTION = 'Turn browser notifications on or off for everyone, and suppress individual events.';
|
|
63
|
+
/**
|
|
64
|
+
* The block, defaulted.
|
|
65
|
+
*
|
|
66
|
+
* A UI that crashes because a field is missing is worse than one that shows the
|
|
67
|
+
* documented defaults: this build can be deployed in front of an API that
|
|
68
|
+
* predates #225, and the response schema is the API's promise, not a guarantee
|
|
69
|
+
* about every server this bundle will ever talk to.
|
|
70
|
+
*/
|
|
71
|
+
const FALLBACK = {
|
|
72
|
+
browserEnabled: true,
|
|
73
|
+
disabledEvents: [],
|
|
74
|
+
};
|
|
75
|
+
/** Order-insensitive set comparison, so re-ordering alone is not "dirty". */
|
|
76
|
+
function sameKeys(a, b) {
|
|
77
|
+
if (a.length !== b.length)
|
|
78
|
+
return false;
|
|
79
|
+
const left = [...a].sort();
|
|
80
|
+
const right = [...b].sort();
|
|
81
|
+
return left.every((key, index) => key === right[index]);
|
|
82
|
+
}
|
|
83
|
+
function EventRow({ event, enabled, disabled, onChange }) {
|
|
84
|
+
return (_jsx(Box, { sx: { py: 1.5 }, children: _jsx(FormControlLabel, { sx: { alignItems: 'flex-start', m: 0 }, control: _jsx(Checkbox, { checked: enabled, disabled: disabled, onChange: (e) => onChange(e.target.checked), slotProps: {
|
|
85
|
+
input: {
|
|
86
|
+
'aria-label': `Browser notification for ${event.label}`,
|
|
87
|
+
},
|
|
88
|
+
}, sx: { mt: -1 } }), label: _jsxs(Box, { children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center', flexWrap: 'wrap' }, children: [_jsx(Typography, { variant: "subtitle2", children: event.label }), event.mandatory && (_jsx(Chip, { size: "small", icon: _jsx(LockIcon, {}), label: "Users cannot opt out", variant: "outlined" }))] }), _jsx(Typography, { variant: "body2", color: "text.secondary", children: event.description }), _jsx(Typography, { variant: "caption", color: "text.disabled", children: event.key })] }) }) }));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The `/admin/settings/notifications` page: the deployment-wide browser channel switch and the per-event suppression list (`system_settings:read`; writes gated by `system_settings:write`).
|
|
92
|
+
*
|
|
93
|
+
* @returns the page.
|
|
94
|
+
*
|
|
95
|
+
* @extensionPoint component
|
|
96
|
+
* @stability experimental
|
|
97
|
+
*/
|
|
98
|
+
export default function NotificationSettingsPage(props = {}) {
|
|
99
|
+
return (_jsx(SystemSettingsSection, { slots: props.slots, title: PAGE_TITLE, description: PAGE_DESCRIPTION, requiredPermission: "system_settings:read", children: ({ settings, canWrite, isSaving, saveBranch }) => (_jsx(NotificationSettingsForm, { stored: settings.notifications ?? FALLBACK, canWrite: canWrite, isSaving: isSaving, onSave: (value) => saveBranch('notifications', value) })) }));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Split out from the page so the render prop stays a one-liner and the editing
|
|
103
|
+
* state has a component of its own to live in: the page owns the chrome, the
|
|
104
|
+
* form owns the pending edit.
|
|
105
|
+
*
|
|
106
|
+
* A BATCHED SAVE, unlike `/settings/notifications`, which PATCHes on every
|
|
107
|
+
* toggle. The reason is the shape of the data, not a style preference: the
|
|
108
|
+
* per-user matrix is a sparse map where each toggle is genuinely independent
|
|
109
|
+
* and a null-delete keeps absent keys absent, whereas `disabledEvents` is a
|
|
110
|
+
* single array that REPLACES wholesale. Saving per click would fire one full
|
|
111
|
+
* array write per checkbox and race with itself; here a local mirror is the
|
|
112
|
+
* correct model, because the local mirror IS the value being written.
|
|
113
|
+
*/
|
|
114
|
+
function NotificationSettingsForm({ stored, canWrite, isSaving, onSave }) {
|
|
115
|
+
const { events, isLoading, error } = useNotificationEvents();
|
|
116
|
+
const { channels: channelDescriptors } = useNotificationChannels();
|
|
117
|
+
// The channels an app registered, each with a switch of its own. Empty for a
|
|
118
|
+
// deployment with only the platform's channels (the section then renders
|
|
119
|
+
// nothing).
|
|
120
|
+
const appChannels = useMemo(() => (channelDescriptors ?? []).filter((channel) => !PLATFORM_CHANNEL_IDS.includes(channel.id)), [channelDescriptors]);
|
|
121
|
+
const [browserEnabled, setBrowserEnabled] = useState(stored.browserEnabled);
|
|
122
|
+
// Local edits of the channel switches, by channel id; a channel absent here
|
|
123
|
+
// shows its stored state (enabled when nothing is stored).
|
|
124
|
+
const [channelEdits, setChannelEdits] = useState({});
|
|
125
|
+
const storedChannelEnabled = (id) => stored.channels?.[id]?.enabled ?? true;
|
|
126
|
+
const channelEnabled = (id) => channelEdits[id] ?? storedChannelEnabled(id);
|
|
127
|
+
const [disabledEvents, setDisabledEvents] = useState(stored.disabledEvents);
|
|
128
|
+
// Re-seed from the server's answer whenever it changes — after a successful
|
|
129
|
+
// save, or after the hook re-fetches on a 409. The stored document is the
|
|
130
|
+
// source of truth and local state is only ever a pending edit of it.
|
|
131
|
+
useEffect(() => {
|
|
132
|
+
setBrowserEnabled(stored.browserEnabled);
|
|
133
|
+
setDisabledEvents(stored.disabledEvents);
|
|
134
|
+
setChannelEdits({});
|
|
135
|
+
}, [stored]);
|
|
136
|
+
// `declaredChannels`, not the policy-narrowed `channels`: see the file
|
|
137
|
+
// header. Filtering on `channels` would hide exactly the events this page
|
|
138
|
+
// has suppressed, leaving no way to re-enable them (#521).
|
|
139
|
+
const browserEvents = useMemo(() => (events ?? []).filter((event) => event.declaredChannels.includes('browser')), [events]);
|
|
140
|
+
// Only the switches that differ from what is stored: the PATCH merges per
|
|
141
|
+
// channel, so an unchanged channel is not sent.
|
|
142
|
+
const changedChannels = Object.fromEntries(Object.entries(channelEdits)
|
|
143
|
+
.filter(([id, enabled]) => enabled !== storedChannelEnabled(id))
|
|
144
|
+
.map(([id, enabled]) => [id, { enabled }]));
|
|
145
|
+
const hasChannelChanges = Object.keys(changedChannels).length > 0;
|
|
146
|
+
const isDirty = browserEnabled !== stored.browserEnabled ||
|
|
147
|
+
!sameKeys(disabledEvents, stored.disabledEvents) ||
|
|
148
|
+
hasChannelChanges;
|
|
149
|
+
const controlsDisabled = !canWrite || isSaving;
|
|
150
|
+
const toggleEvent = (key, enabled) => {
|
|
151
|
+
setDisabledEvents((current) => enabled ? current.filter((k) => k !== key) : [...new Set([...current, key])]);
|
|
152
|
+
};
|
|
153
|
+
const handleSave = () => {
|
|
154
|
+
void onSave({
|
|
155
|
+
browserEnabled,
|
|
156
|
+
disabledEvents,
|
|
157
|
+
...(hasChannelChanges ? { channels: changedChannels } : {}),
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
return (_jsxs(Box, { children: [_jsx(Typography, { variant: "h6", gutterBottom: true, children: "Browser notifications" }), _jsx(FormControlLabel, { control: _jsx(Switch, { checked: browserEnabled, disabled: controlsDisabled, onChange: (e) => setBrowserEnabled(e.target.checked) }), label: "Deliver browser notifications" }), _jsx(Typography, { variant: "body2", color: "text.secondary", sx: { ml: 4, mb: 2 }, children: "When off, no one receives browser notifications, whatever their own preferences say. Email is unaffected." }), appChannels.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Divider, { sx: { my: 3 } }), _jsx(Typography, { variant: "h6", gutterBottom: true, children: "Delivery channels" }), _jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 1 }, children: "Turn a channel off to stop every notification over it, for everyone. Browser, email and push are configured above and on their own pages." }), _jsx(Stack, { divider: _jsx(Divider, { flexItem: true }), children: appChannels.map((channel) => (_jsx(Box, { sx: { py: 1 }, children: _jsx(FormControlLabel, { sx: { alignItems: 'flex-start', m: 0 }, control: _jsx(Switch, { checked: channelEnabled(channel.id), disabled: controlsDisabled, onChange: (e) => setChannelEdits((current) => ({ ...current, [channel.id]: e.target.checked })), slotProps: { input: { 'aria-label': `Deliver ${channel.label} notifications` } } }), label: _jsxs(Box, { children: [_jsx(Typography, { variant: "subtitle2", children: channel.label }), _jsx(Typography, { variant: "body2", color: "text.secondary", children: channel.description })] }) }) }, channel.id))) })] })), _jsx(Divider, { sx: { my: 3 } }), _jsx(Typography, { variant: "h6", gutterBottom: true, children: "Events" }), _jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 1 }, children: "Clear an event to stop showing its browser notification for everyone. Events that can only be delivered by email are not listed." }), !browserEnabled && (_jsx(Alert, { severity: "info", sx: { my: 2 }, children: "Browser notifications are off for everyone, so these choices are not in effect. They are kept, and apply again if you turn the switch back on." })), isLoading && (_jsx(Box, { sx: { display: 'flex', justifyContent: 'center', py: 3 }, children: _jsx(CircularProgress, { size: 28 }) })), error && (_jsx(Alert, { severity: "error", sx: { my: 2 }, children: error })), !isLoading && !error && browserEvents.length === 0 && (_jsx(Alert, { severity: "info", sx: { my: 2 }, children: "No events in this deployment can be delivered as a browser notification, so there is nothing to suppress here." })), browserEvents.length > 0 && (_jsx(Stack, { divider: _jsx(Divider, { flexItem: true }), sx: { mt: 1 }, children: browserEvents.map((event) => (_jsx(EventRow, { event: event, enabled: !disabledEvents.includes(event.key),
|
|
161
|
+
// Greyed out, not hidden, when the channel is off: hiding them
|
|
162
|
+
// would make the saved suppression list invisible and unrecoverable
|
|
163
|
+
// without turning the switch back on first.
|
|
164
|
+
disabled: controlsDisabled || !browserEnabled, onChange: (enabled) => toggleEvent(event.key, enabled) }, event.key))) })), _jsx(Box, { sx: { mt: 3 }, children: _jsx(Button, { variant: "contained", onClick: handleSave, disabled: controlsDisabled || !isDirty, children: isSaving ? 'Saving...' : 'Save Changes' }) })] }));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=NotificationSettingsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotificationSettingsPage.js","sourceRoot":"","sources":["../../../src/notifications/ui/NotificationSettingsPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The rotate / remove confirmation dialog for Web Push (VAPID) config,
|
|
3
|
+
* issue #355.
|
|
4
|
+
*
|
|
5
|
+
* ONE COMPONENT FOR BOTH INTENTS, mirroring `DbBackupRestoreDialog`'s reason
|
|
6
|
+
* for being one: rotate and remove need exactly the same safety machinery —
|
|
7
|
+
* a stated consequence and a TYPED CONFIRMATION LITERAL — and differ only in
|
|
8
|
+
* their copy and which literal they require. `action` selects between them
|
|
9
|
+
* and nothing else forks.
|
|
10
|
+
*
|
|
11
|
+
* THE TWO LITERALS ARE DIFFERENT WORDS ON PURPOSE (`ROTATE_CONFIRMATION` /
|
|
12
|
+
* `REMOVE_CONFIRMATION`, `services/pushConfig.ts`) — the same reasoning as
|
|
13
|
+
* `RESTORE`/`ROLLBACK`: a confirmation typed for the wrong dialog, or a body
|
|
14
|
+
* copied from one route to the other, must not satisfy the other action.
|
|
15
|
+
* The typed text is cleared every time the dialog opens or `action` changes,
|
|
16
|
+
* so a value typed for Rotate can never be reused to confirm Remove.
|
|
17
|
+
*
|
|
18
|
+
* ⚠ THE ROTATE WARNING'S RECOVERY CLAIM IS DELIBERATELY MODEST. As of this
|
|
19
|
+
* writing there is no client-side re-subscribe-on-reopen mechanism anywhere
|
|
20
|
+
* in this codebase (`docs/runbooks/vapid-keys.md` §4, checked directly) — a
|
|
21
|
+
* subscriber's browser must call `pushManager.subscribe` again through
|
|
22
|
+
* whatever flow does that (e.g. toggling notifications off and back on), and
|
|
23
|
+
* nothing makes that happen automatically just because the app is reopened.
|
|
24
|
+
* Do not soften this copy to "reopening the app fixes it" without re-reading
|
|
25
|
+
* that section first; it will be wrong again the moment it is written.
|
|
26
|
+
*/
|
|
27
|
+
export type PushConfigDialogAction = 'rotate' | 'remove';
|
|
28
|
+
export interface PushConfigConfirmDialogProps {
|
|
29
|
+
/** `null` closes the dialog; a specific action opens it in that mode. */
|
|
30
|
+
action: PushConfigDialogAction | null;
|
|
31
|
+
isWorking: boolean;
|
|
32
|
+
/** The last failure from the hook's action, or `null`. */
|
|
33
|
+
error: string | null;
|
|
34
|
+
onConfirm: () => void;
|
|
35
|
+
onClose: () => void;
|
|
36
|
+
}
|
|
37
|
+
export declare function PushConfigConfirmDialog({ action, isWorking, error, onConfirm, onClose, }: PushConfigConfirmDialogProps): import("react").JSX.Element | null;
|
|
38
|
+
/** For a component test asserting Rotate's literal doesn't satisfy Remove's dialog, and vice versa. */
|
|
39
|
+
export declare const PUSH_CONFIG_CONFIRM_LITERALS: Record<PushConfigDialogAction, string>;
|
|
40
|
+
//# sourceMappingURL=PushConfigConfirmDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushConfigConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/notifications/ui/PushConfigConfirmDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAgBH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,4BAA4B;IAC3C,yEAAyE;IACzE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA2BD,wBAAgB,uBAAuB,CAAC,EACtC,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAS,EACT,OAAO,GACR,EAAE,4BAA4B,sCA0D9B;AAED,uGAAuG;AACvG,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAG/E,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The rotate / remove confirmation dialog for Web Push (VAPID) config,
|
|
4
|
+
* issue #355.
|
|
5
|
+
*
|
|
6
|
+
* ONE COMPONENT FOR BOTH INTENTS, mirroring `DbBackupRestoreDialog`'s reason
|
|
7
|
+
* for being one: rotate and remove need exactly the same safety machinery —
|
|
8
|
+
* a stated consequence and a TYPED CONFIRMATION LITERAL — and differ only in
|
|
9
|
+
* their copy and which literal they require. `action` selects between them
|
|
10
|
+
* and nothing else forks.
|
|
11
|
+
*
|
|
12
|
+
* THE TWO LITERALS ARE DIFFERENT WORDS ON PURPOSE (`ROTATE_CONFIRMATION` /
|
|
13
|
+
* `REMOVE_CONFIRMATION`, `services/pushConfig.ts`) — the same reasoning as
|
|
14
|
+
* `RESTORE`/`ROLLBACK`: a confirmation typed for the wrong dialog, or a body
|
|
15
|
+
* copied from one route to the other, must not satisfy the other action.
|
|
16
|
+
* The typed text is cleared every time the dialog opens or `action` changes,
|
|
17
|
+
* so a value typed for Rotate can never be reused to confirm Remove.
|
|
18
|
+
*
|
|
19
|
+
* ⚠ THE ROTATE WARNING'S RECOVERY CLAIM IS DELIBERATELY MODEST. As of this
|
|
20
|
+
* writing there is no client-side re-subscribe-on-reopen mechanism anywhere
|
|
21
|
+
* in this codebase (`docs/runbooks/vapid-keys.md` §4, checked directly) — a
|
|
22
|
+
* subscriber's browser must call `pushManager.subscribe` again through
|
|
23
|
+
* whatever flow does that (e.g. toggling notifications off and back on), and
|
|
24
|
+
* nothing makes that happen automatically just because the app is reopened.
|
|
25
|
+
* Do not soften this copy to "reopening the app fixes it" without re-reading
|
|
26
|
+
* that section first; it will be wrong again the moment it is written.
|
|
27
|
+
*/
|
|
28
|
+
import { useEffect, useState } from 'react';
|
|
29
|
+
import { Alert, AlertTitle, Box, Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField, } from '@mui/material';
|
|
30
|
+
import { REMOVE_CONFIRMATION, ROTATE_CONFIRMATION } from '../headless/pushConfig.js';
|
|
31
|
+
const COPY = {
|
|
32
|
+
rotate: {
|
|
33
|
+
title: 'Rotate the VAPID key pair?',
|
|
34
|
+
consequence: 'Rotating replaces the key pair. Every existing push subscriber stops receiving ' +
|
|
35
|
+
'notifications immediately. Recovery is not automatic — this app has no ' +
|
|
36
|
+
're-subscribe-on-reopen mechanism, so each subscriber has to re-trigger their ' +
|
|
37
|
+
"browser's subscribe flow (for example, turning notifications off and back on) " +
|
|
38
|
+
'before push works for them again.',
|
|
39
|
+
confirmLabel: 'Rotate keys',
|
|
40
|
+
},
|
|
41
|
+
remove: {
|
|
42
|
+
title: 'Remove the web push configuration?',
|
|
43
|
+
consequence: 'Removing deletes the stored key pair entirely — there is no key left to fall back ' +
|
|
44
|
+
'to. Every existing push subscriber stops receiving notifications, exactly as with ' +
|
|
45
|
+
'a rotation, and the same manual re-subscribe is needed to recover once a new key ' +
|
|
46
|
+
'pair is generated. This app keeps working; only web push stops.',
|
|
47
|
+
confirmLabel: 'Remove configuration',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
export function PushConfigConfirmDialog({ action, isWorking, error, onConfirm, onClose, }) {
|
|
51
|
+
const [typed, setTyped] = useState('');
|
|
52
|
+
// Every opening starts from nothing — cleared on open AND on a switch
|
|
53
|
+
// between actions, so a literal typed for one can never carry over and
|
|
54
|
+
// satisfy the other. Mirrors `DbBackupRestoreDialog`.
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!action)
|
|
57
|
+
return;
|
|
58
|
+
setTyped('');
|
|
59
|
+
}, [action]);
|
|
60
|
+
if (!action)
|
|
61
|
+
return null;
|
|
62
|
+
const literal = action === 'rotate' ? ROTATE_CONFIRMATION : REMOVE_CONFIRMATION;
|
|
63
|
+
const copy = COPY[action];
|
|
64
|
+
const typedMatches = typed.trim() === literal;
|
|
65
|
+
return (_jsxs(Dialog, { open: !!action, onClose: onClose, maxWidth: "sm", fullWidth: true, children: [_jsx(DialogTitle, { children: copy.title }), _jsxs(DialogContent, { dividers: true, children: [error && (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: error })), _jsxs(Alert, { severity: "warning", children: [_jsx(AlertTitle, { children: "This cannot be undone" }), copy.consequence] }), _jsx(Box, { sx: { mt: 3 }, children: _jsx(TextField, { fullWidth: true, label: `Type ${literal} to confirm`, value: typed, onChange: (e) => setTyped(e.target.value), autoComplete: "off", slotProps: { htmlInput: { 'aria-label': `Type ${literal} to confirm` } }, helperText: "This must be typed exactly, in capitals. Nothing happens until it matches." }) })] }), _jsxs(DialogActions, { children: [_jsx(Button, { onClick: onClose, disabled: isWorking, children: "Cancel" }), _jsx(Button, { variant: "contained", color: "error", disabled: !typedMatches || isWorking, onClick: onConfirm, children: isWorking ? 'Working…' : copy.confirmLabel })] })] }));
|
|
66
|
+
}
|
|
67
|
+
/** For a component test asserting Rotate's literal doesn't satisfy Remove's dialog, and vice versa. */
|
|
68
|
+
export const PUSH_CONFIG_CONFIRM_LITERALS = {
|
|
69
|
+
rotate: ROTATE_CONFIRMATION,
|
|
70
|
+
remove: REMOVE_CONFIRMATION,
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=PushConfigConfirmDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushConfigConfirmDialog.js","sourceRoot":"","sources":["../../../src/notifications/ui/PushConfigConfirmDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin → Settings → Web Push (`/admin/settings/push`).
|
|
3
|
+
*
|
|
4
|
+
* Issue #355. A STANDALONE PAGE, exactly like `EmailSettingsPage.tsx` and for
|
|
5
|
+
* the same reason: this hits its own controller (`/api/admin/push-config`)
|
|
6
|
+
* with its own document, not the generic `system_settings` blob `SettingsHub`
|
|
7
|
+
* pages share — see `CLAUDE.md`'s "MANDATORY: Settings UI Pattern" §2 and
|
|
8
|
+
* `docs/specs/settings-ui.md`. One entry in `ADMIN_SECTIONS`
|
|
9
|
+
* (`config/adminSections.tsx`), one route in `App.tsx` gated on the same
|
|
10
|
+
* `push:read` string, no tab anywhere.
|
|
11
|
+
*
|
|
12
|
+
* =============================================================================
|
|
13
|
+
* THE PRIVATE KEY NEVER APPEARS HERE. THE PUBLIC KEY IS SHOWN IN FULL.
|
|
14
|
+
* =============================================================================
|
|
15
|
+
*
|
|
16
|
+
* `PushConfigAdminView.privateKeyStatus` is the masked view `SmtpPasswordStatus`
|
|
17
|
+
* already established the shape for — a hint, a timestamp, who set it, never
|
|
18
|
+
* the secret itself. `publicKey`, by contrast, is NOT secret: it is what a
|
|
19
|
+
* client-side `pushManager.subscribe()` call is given, so it is rendered in
|
|
20
|
+
* full, monospace, with a copy affordance, the same treatment
|
|
21
|
+
* `DbBackupRestoreDialog`'s `CopyableBlock` gives a paste-ready command.
|
|
22
|
+
*
|
|
23
|
+
* =============================================================================
|
|
24
|
+
* FOUR CARDS, IN THE ORDER AN ADMIN USES THEM (issue #627)
|
|
25
|
+
* =============================================================================
|
|
26
|
+
*
|
|
27
|
+
* Each card is its own `Paper`, `mt: 3` apart, `p: { xs: 2, sm: 3 }` inside.
|
|
28
|
+
*
|
|
29
|
+
* CONFIGURED (`configured: true`):
|
|
30
|
+
*
|
|
31
|
+
* 1. ENABLE WEB PUSH — the enable/disable switch and subject, saved
|
|
32
|
+
* through `PUT` (non-destructive, keys retained either way). The
|
|
33
|
+
* control an admin comes here to change most often, so it is first.
|
|
34
|
+
* 2. STATUS — read-only: the VAPID public key, subject, private-key
|
|
35
|
+
* provenance, last update. Reference material, so it follows the
|
|
36
|
+
* primary control rather than pushing it below the fold on a phone.
|
|
37
|
+
* 3. TEST & DIAGNOSTICS — `PushTestPanel` (issue #618): verification,
|
|
38
|
+
* meaningful only once a key pair exists.
|
|
39
|
+
* 4. DANGER ZONE — the two destructive actions (Rotate, Remove) behind
|
|
40
|
+
* `PushConfigConfirmDialog` and its two DIFFERENT typed literals
|
|
41
|
+
* (`ROTATE` / `REMOVE`), so a confirmation typed for one can never
|
|
42
|
+
* satisfy the other — see that component's header. Last, and in a card
|
|
43
|
+
* of its own with an error-coloured outline, so it is never mistaken for
|
|
44
|
+
* part of the everyday form above it.
|
|
45
|
+
*
|
|
46
|
+
* NOT CONFIGURED (`configured: false`):
|
|
47
|
+
*
|
|
48
|
+
* 1. GENERATE & ENABLE — a single action, with an optional subject field.
|
|
49
|
+
* `POST /generate`.
|
|
50
|
+
* 2. STATUS — as above, stating that no key pair exists yet.
|
|
51
|
+
*
|
|
52
|
+
* Only one of the two sets is ever mounted, gated on `config.configured` —
|
|
53
|
+
* unlike `EmailSettingsPage`'s provider-specific fields, which stay mounted so
|
|
54
|
+
* switching between them loses nothing. There is no equivalent "switch back"
|
|
55
|
+
* gesture here: once a key pair exists, going back to unconfigured is what
|
|
56
|
+
* the Remove dialog is for, not a form control.
|
|
57
|
+
*/
|
|
58
|
+
import type { PageSlotsBase } from '../../core/index.js';
|
|
59
|
+
/**
|
|
60
|
+
* The slots of {@link PushConfigPage}: the page-slot contract. `Sections` is drawn at both ends of the body, around the enable form, the key display, the diagnostics and the danger zone. The loading spinner and the load-error screen are not slotted.
|
|
61
|
+
*
|
|
62
|
+
* @extensionPoint slot
|
|
63
|
+
* @stability experimental
|
|
64
|
+
*/
|
|
65
|
+
export type PushConfigPageSlots = PageSlotsBase;
|
|
66
|
+
/**
|
|
67
|
+
* The props of {@link PushConfigPage}.
|
|
68
|
+
*
|
|
69
|
+
* @stability experimental
|
|
70
|
+
*/
|
|
71
|
+
export interface PushConfigPageProps {
|
|
72
|
+
/** Optional extension slots; omitted, the page renders exactly as it always did. */
|
|
73
|
+
slots?: PushConfigPageSlots;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The `/admin/settings/push` page: the Web Push (VAPID) key pair, generated, rotated and removed at run time (never an environment variable), and the test-push diagnostics.
|
|
77
|
+
*
|
|
78
|
+
* @returns the page.
|
|
79
|
+
*
|
|
80
|
+
* @extensionPoint component
|
|
81
|
+
* @stability experimental
|
|
82
|
+
*/
|
|
83
|
+
export default function PushConfigPage(props?: PushConfigPageProps): import("react").JSX.Element;
|
|
84
|
+
//# sourceMappingURL=PushConfigPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PushConfigPage.d.ts","sourceRoot":"","sources":["../../../src/notifications/ui/PushConfigPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AA6BH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA+EzD;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEhD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,GAAE,mBAAwB,+BA0YrE"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Admin → Settings → Web Push (`/admin/settings/push`).
|
|
4
|
+
*
|
|
5
|
+
* Issue #355. A STANDALONE PAGE, exactly like `EmailSettingsPage.tsx` and for
|
|
6
|
+
* the same reason: this hits its own controller (`/api/admin/push-config`)
|
|
7
|
+
* with its own document, not the generic `system_settings` blob `SettingsHub`
|
|
8
|
+
* pages share — see `CLAUDE.md`'s "MANDATORY: Settings UI Pattern" §2 and
|
|
9
|
+
* `docs/specs/settings-ui.md`. One entry in `ADMIN_SECTIONS`
|
|
10
|
+
* (`config/adminSections.tsx`), one route in `App.tsx` gated on the same
|
|
11
|
+
* `push:read` string, no tab anywhere.
|
|
12
|
+
*
|
|
13
|
+
* =============================================================================
|
|
14
|
+
* THE PRIVATE KEY NEVER APPEARS HERE. THE PUBLIC KEY IS SHOWN IN FULL.
|
|
15
|
+
* =============================================================================
|
|
16
|
+
*
|
|
17
|
+
* `PushConfigAdminView.privateKeyStatus` is the masked view `SmtpPasswordStatus`
|
|
18
|
+
* already established the shape for — a hint, a timestamp, who set it, never
|
|
19
|
+
* the secret itself. `publicKey`, by contrast, is NOT secret: it is what a
|
|
20
|
+
* client-side `pushManager.subscribe()` call is given, so it is rendered in
|
|
21
|
+
* full, monospace, with a copy affordance, the same treatment
|
|
22
|
+
* `DbBackupRestoreDialog`'s `CopyableBlock` gives a paste-ready command.
|
|
23
|
+
*
|
|
24
|
+
* =============================================================================
|
|
25
|
+
* FOUR CARDS, IN THE ORDER AN ADMIN USES THEM (issue #627)
|
|
26
|
+
* =============================================================================
|
|
27
|
+
*
|
|
28
|
+
* Each card is its own `Paper`, `mt: 3` apart, `p: { xs: 2, sm: 3 }` inside.
|
|
29
|
+
*
|
|
30
|
+
* CONFIGURED (`configured: true`):
|
|
31
|
+
*
|
|
32
|
+
* 1. ENABLE WEB PUSH — the enable/disable switch and subject, saved
|
|
33
|
+
* through `PUT` (non-destructive, keys retained either way). The
|
|
34
|
+
* control an admin comes here to change most often, so it is first.
|
|
35
|
+
* 2. STATUS — read-only: the VAPID public key, subject, private-key
|
|
36
|
+
* provenance, last update. Reference material, so it follows the
|
|
37
|
+
* primary control rather than pushing it below the fold on a phone.
|
|
38
|
+
* 3. TEST & DIAGNOSTICS — `PushTestPanel` (issue #618): verification,
|
|
39
|
+
* meaningful only once a key pair exists.
|
|
40
|
+
* 4. DANGER ZONE — the two destructive actions (Rotate, Remove) behind
|
|
41
|
+
* `PushConfigConfirmDialog` and its two DIFFERENT typed literals
|
|
42
|
+
* (`ROTATE` / `REMOVE`), so a confirmation typed for one can never
|
|
43
|
+
* satisfy the other — see that component's header. Last, and in a card
|
|
44
|
+
* of its own with an error-coloured outline, so it is never mistaken for
|
|
45
|
+
* part of the everyday form above it.
|
|
46
|
+
*
|
|
47
|
+
* NOT CONFIGURED (`configured: false`):
|
|
48
|
+
*
|
|
49
|
+
* 1. GENERATE & ENABLE — a single action, with an optional subject field.
|
|
50
|
+
* `POST /generate`.
|
|
51
|
+
* 2. STATUS — as above, stating that no key pair exists yet.
|
|
52
|
+
*
|
|
53
|
+
* Only one of the two sets is ever mounted, gated on `config.configured` —
|
|
54
|
+
* unlike `EmailSettingsPage`'s provider-specific fields, which stay mounted so
|
|
55
|
+
* switching between them loses nothing. There is no equivalent "switch back"
|
|
56
|
+
* gesture here: once a key pair exists, going back to unconfigured is what
|
|
57
|
+
* the Remove dialog is for, not a form control.
|
|
58
|
+
*/
|
|
59
|
+
import { useEffect, useState } from 'react';
|
|
60
|
+
import { Alert, AlertTitle, Box, Button, Chip, Container, Divider, FormControlLabel, IconButton, Paper, Snackbar, Stack, Switch, TextField, Tooltip, Typography, } from '@mui/material';
|
|
61
|
+
import CheckIcon from '@mui/icons-material/Check';
|
|
62
|
+
import NotificationsActiveOutlinedIcon from '@mui/icons-material/NotificationsActiveOutlined';
|
|
63
|
+
import WarningAmberOutlinedIcon from '@mui/icons-material/WarningAmberOutlined';
|
|
64
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
|
65
|
+
import VpnKeyOutlinedIcon from '@mui/icons-material/VpnKeyOutlined';
|
|
66
|
+
import { Navigate } from 'react-router-dom';
|
|
67
|
+
import { PageSlotsFrame } from '../../core/index.js';
|
|
68
|
+
import { usePermissions } from '../../identity/index.js';
|
|
69
|
+
import { usePushConfig } from '../headless/usePushConfig.js';
|
|
70
|
+
import { LoadingSpinner } from './LoadingSpinner.js';
|
|
71
|
+
import { PushConfigConfirmDialog, } from './PushConfigConfirmDialog.js';
|
|
72
|
+
import { PushTestPanel } from './PushTestPanel.js';
|
|
73
|
+
/** A `mailto:` or `https:` address — the VAPID subject/contact, exactly what `web-push` requires. */
|
|
74
|
+
function validateSubject(raw) {
|
|
75
|
+
const trimmed = raw.trim();
|
|
76
|
+
if (!trimmed)
|
|
77
|
+
return null; // Optional — the API falls back to a default.
|
|
78
|
+
if (!/^mailto:[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed) && !/^https:\/\/\S+$/.test(trimmed)) {
|
|
79
|
+
return 'Must be a mailto: address or an https: URL, e.g. mailto:admin@example.com.';
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
/** What to say about the stored private key, mirroring `smtpPasswordHelperText` in `EmailSettingsPage.tsx`. */
|
|
84
|
+
function privateKeyProvenance(status) {
|
|
85
|
+
if (!status.configured)
|
|
86
|
+
return 'No private key is stored.';
|
|
87
|
+
const which = status.hint ? ` (${status.hint})` : '';
|
|
88
|
+
const when = status.updatedAt ? ` on ${new Date(status.updatedAt).toLocaleString()}` : '';
|
|
89
|
+
const who = status.updatedByUserId ? ` by user ${status.updatedByUserId}` : '';
|
|
90
|
+
return `Private key last set${which}${when}${who}.`;
|
|
91
|
+
}
|
|
92
|
+
/** A single-line monospace value with a copy affordance — the public key is not secret, so it renders in full. */
|
|
93
|
+
function CopyableField({ label, value }) {
|
|
94
|
+
const [copied, setCopied] = useState(false);
|
|
95
|
+
const handleCopy = async () => {
|
|
96
|
+
try {
|
|
97
|
+
await navigator.clipboard.writeText(value);
|
|
98
|
+
setCopied(true);
|
|
99
|
+
setTimeout(() => setCopied(false), 3000);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Clipboard access denied or unavailable — the field is still selectable text.
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
return (_jsxs(Box, { children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center', mb: 0.5 }, children: [_jsx(Typography, { variant: "subtitle2", sx: { flexGrow: 1 }, children: label }), _jsx(Tooltip, { title: copied ? 'Copied' : `Copy ${label.toLowerCase()}`, children: _jsx(IconButton, { size: "small", onClick: () => void handleCopy(), "aria-label": `Copy ${label}`, children: copied ? _jsx(CheckIcon, { fontSize: "small", color: "success" }) : _jsx(ContentCopyIcon, { fontSize: "small" }) }) })] }), _jsx(Paper, { variant: "outlined", sx: { p: 1.5, overflowX: 'auto', backgroundColor: 'action.hover' }, children: _jsx(Typography, { component: "pre", sx: { m: 0, fontFamily: 'monospace', fontSize: '0.8125rem', whiteSpace: 'pre-wrap', wordBreak: 'break-word' }, children: value }) })] }));
|
|
106
|
+
}
|
|
107
|
+
/** The page subtitle (mirrors the `Web Push` card in `config/adminSections.tsx`). */
|
|
108
|
+
const PUSH_DESCRIPTION = 'Generate a VAPID key pair, enable or rotate it, and control whether this deployment can send browser push notifications.';
|
|
109
|
+
/**
|
|
110
|
+
* The `/admin/settings/push` page: the Web Push (VAPID) key pair, generated, rotated and removed at run time (never an environment variable), and the test-push diagnostics.
|
|
111
|
+
*
|
|
112
|
+
* @returns the page.
|
|
113
|
+
*
|
|
114
|
+
* @extensionPoint component
|
|
115
|
+
* @stability experimental
|
|
116
|
+
*/
|
|
117
|
+
export default function PushConfigPage(props = {}) {
|
|
118
|
+
const { slots } = props;
|
|
119
|
+
const { hasPermission } = usePermissions();
|
|
120
|
+
const { config, isLoading, loadError, isSaving, saveError, save, clearSaveError, isActing, actionError, clearActionError, generate, rotate, remove, } = usePushConfig();
|
|
121
|
+
// Draft state for the EMPTY-state subject field (feeds `generate`).
|
|
122
|
+
const [generateSubject, setGenerateSubject] = useState('');
|
|
123
|
+
// Draft state for the CONFIGURED-state form (feeds `save`).
|
|
124
|
+
const [enabledDraft, setEnabledDraft] = useState(false);
|
|
125
|
+
const [subjectDraft, setSubjectDraft] = useState('');
|
|
126
|
+
const [dialogAction, setDialogAction] = useState(null);
|
|
127
|
+
const [savedMessage, setSavedMessage] = useState(null);
|
|
128
|
+
// The server's response is the new baseline after every load AND every
|
|
129
|
+
// write — including a successful rotate/remove, which is how the form
|
|
130
|
+
// resyncs to a brand new public key or drops back to the empty state with
|
|
131
|
+
// no reload. Mirrors `EmailSettingsPage`.
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
if (!config)
|
|
134
|
+
return;
|
|
135
|
+
if (!config.configured) {
|
|
136
|
+
setGenerateSubject('');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
setEnabledDraft(config.enabled);
|
|
140
|
+
setSubjectDraft(config.subject ?? '');
|
|
141
|
+
}, [config]);
|
|
142
|
+
// Defence, not the gate — `App.tsx` wraps the route in `RequirePermission`
|
|
143
|
+
// with this same string. This one catches the page mounted from anywhere
|
|
144
|
+
// else. It sits after every hook so the hook order never changes.
|
|
145
|
+
if (!hasPermission('push:read')) {
|
|
146
|
+
return _jsx(Navigate, { to: "/", replace: true });
|
|
147
|
+
}
|
|
148
|
+
const canWrite = hasPermission('push:write');
|
|
149
|
+
if (isLoading || !config) {
|
|
150
|
+
if (loadError) {
|
|
151
|
+
return (_jsx(Container, { maxWidth: "lg", children: _jsxs(Box, { sx: { py: 4 }, children: [_jsx(Typography, { variant: "h4", component: "h1", gutterBottom: true, children: "Web Push" }), _jsx(Alert, { severity: "error", children: loadError })] }) }));
|
|
152
|
+
}
|
|
153
|
+
return _jsx(LoadingSpinner, {});
|
|
154
|
+
}
|
|
155
|
+
const generateSubjectError = validateSubject(generateSubject);
|
|
156
|
+
const subjectError = validateSubject(subjectDraft);
|
|
157
|
+
const isFormDirty = enabledDraft !== config.enabled || subjectDraft.trim() !== (config.subject ?? '');
|
|
158
|
+
const handleGenerate = async (event) => {
|
|
159
|
+
event.preventDefault();
|
|
160
|
+
if (generateSubjectError || !canWrite)
|
|
161
|
+
return;
|
|
162
|
+
const trimmed = generateSubject.trim();
|
|
163
|
+
const ok = await generate(trimmed ? { subject: trimmed } : {});
|
|
164
|
+
if (ok)
|
|
165
|
+
setSavedMessage('Web push generated and enabled');
|
|
166
|
+
};
|
|
167
|
+
const handleSave = async (event) => {
|
|
168
|
+
event.preventDefault();
|
|
169
|
+
if (subjectError || !canWrite)
|
|
170
|
+
return;
|
|
171
|
+
const trimmed = subjectDraft.trim();
|
|
172
|
+
const ok = await save({ enabled: enabledDraft, subject: trimmed || null });
|
|
173
|
+
if (ok)
|
|
174
|
+
setSavedMessage('Web push configuration saved');
|
|
175
|
+
};
|
|
176
|
+
const handleDialogConfirm = async () => {
|
|
177
|
+
if (dialogAction === 'rotate') {
|
|
178
|
+
const ok = await rotate();
|
|
179
|
+
if (ok) {
|
|
180
|
+
setDialogAction(null);
|
|
181
|
+
setSavedMessage('Key pair rotated');
|
|
182
|
+
}
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (dialogAction === 'remove') {
|
|
186
|
+
const ok = await remove();
|
|
187
|
+
if (ok) {
|
|
188
|
+
setDialogAction(null);
|
|
189
|
+
setSavedMessage('Web push configuration removed');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
return (_jsx(Container, { maxWidth: "lg", children: _jsxs(Box, { sx: { py: 4 }, children: [_jsxs(PageSlotsFrame, { slots: slots, headerProps: { title: 'Web Push', description: PUSH_DESCRIPTION, readOnly: !canWrite, actions: null }, header: _jsxs(_Fragment, { children: [_jsx(Typography, { variant: "h4", component: "h1", gutterBottom: true, children: "Web Push" }), _jsxs(Typography, { color: "text.secondary", sx: { mb: 2 }, children: [PUSH_DESCRIPTION, !canWrite && ' (read-only)'] })] }), children: [loadError && (_jsx(Alert, { severity: "error", sx: { mb: 3 }, children: loadError })), config.settingsError && (_jsxs(Alert, { severity: "warning", sx: { mb: 3 }, children: [_jsx(AlertTitle, { children: "The stored web push configuration could not be read" }), config.settingsError, _jsx(Box, { sx: { mt: 1 }, children: "Until it is repaired, the fields below are defaults rather than your saved values." })] })), config.configured && (_jsx(Paper, { component: "section", "aria-labelledby": "push-enable-heading", sx: { p: { xs: 2, sm: 3 } }, children: _jsxs(Box, { component: "form", onSubmit: handleSave, noValidate: true, children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center', mb: 2 }, children: [_jsx(NotificationsActiveOutlinedIcon, { color: "action" }), _jsx(Typography, { variant: "h6", id: "push-enable-heading", children: "Enable web push" })] }), _jsx(FormControlLabel, { control: _jsx(Switch, { checked: enabledDraft, onChange: (e) => setEnabledDraft(e.target.checked), disabled: !canWrite }), label: "Enable web push for this deployment" }), !enabledDraft && (_jsx(Alert, { severity: "info", sx: { mt: 1, mb: 1 }, children: "Web push is switched off \u2014 no browser push notifications are sent. The key pair is kept as it is, so switching this back on needs no regenerating." })), _jsx(Divider, { sx: { my: 3 } }), _jsx(TextField, { fullWidth: true, label: "Subject (contact address)", placeholder: "mailto:admin@example.com", value: subjectDraft, onChange: (e) => setSubjectDraft(e.target.value), disabled: !canWrite, error: !!subjectError, helperText: subjectError ??
|
|
194
|
+
'A mailto: address or an https: URL push services may contact if something goes wrong.' }), saveError && (_jsxs(Alert, { severity: "error", sx: { mt: 3 }, onClose: clearSaveError, children: [_jsx(AlertTitle, { children: "Could not save" }), saveError] })), _jsx(Divider, { sx: { my: 3 } }), _jsx(Box, { sx: {
|
|
195
|
+
display: 'flex',
|
|
196
|
+
flexDirection: { xs: 'column', sm: 'row' },
|
|
197
|
+
alignItems: { xs: 'stretch', sm: 'center' },
|
|
198
|
+
gap: 2,
|
|
199
|
+
}, children: _jsx(Button, { type: "submit", variant: "contained", disabled: !canWrite || !isFormDirty || !!subjectError || isSaving, children: isSaving ? 'Saving…' : 'Save changes' }) })] }) })), !config.configured && (_jsx(Paper, { component: "section", "aria-labelledby": "push-generate-heading", sx: { p: { xs: 2, sm: 3 } }, children: _jsxs(Box, { component: "form", onSubmit: handleGenerate, noValidate: true, children: [_jsx(Typography, { variant: "h6", id: "push-generate-heading", gutterBottom: true, children: "Generate a key pair" }), _jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: "Creates a new VAPID key pair and switches web push on immediately. This is a one-time action for a fresh deployment \u2014 once a key pair exists, use Rotate to replace it." }), _jsx(TextField, { fullWidth: true, label: "Subject (contact address)", placeholder: "mailto:admin@example.com", value: generateSubject, onChange: (e) => setGenerateSubject(e.target.value), disabled: !canWrite || isActing, error: !!generateSubjectError, helperText: generateSubjectError ??
|
|
200
|
+
'A mailto: address or an https: URL push services may contact if something goes wrong. Optional — leave blank for the deployment default.', sx: { mb: 2 } }), actionError && (_jsx(Alert, { severity: "error", sx: { mb: 2 }, onClose: clearActionError, children: actionError })), _jsx(Button, { type: "submit", variant: "contained", disabled: !canWrite || isActing || !!generateSubjectError, children: isActing ? 'Generating…' : 'Generate & enable' })] }) })), _jsxs(Paper, { component: "section", "aria-labelledby": "push-status-heading", sx: { mt: 3, p: { xs: 2, sm: 3 } }, children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center', mb: 2 }, children: [_jsx(VpnKeyOutlinedIcon, { color: "action" }), _jsx(Typography, { variant: "h6", id: "push-status-heading", sx: { flexGrow: 1 }, children: "Status" }), !config.configured ? (_jsx(Chip, { label: "Not configured", color: "default", size: "small" })) : config.enabled ? (_jsx(Chip, { label: "Enabled", color: "success", size: "small" })) : (_jsx(Chip, { label: "Disabled", color: "warning", size: "small" }))] }), config.configured && config.publicKey ? (_jsxs(Stack, { spacing: 2, children: [_jsx(CopyableField, { label: "Public key", value: config.publicKey }), _jsxs(Typography, { variant: "body2", color: "text.secondary", children: ["Subject: ", config.subject || 'not set'] }), _jsx(Typography, { variant: "body2", color: "text.secondary", children: privateKeyProvenance(config.privateKeyStatus) })] })) : (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "No key pair has been generated yet. Web push is unavailable to every user until one is." })), config.updatedAt && (_jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { mt: 2 }, children: ["Last updated ", new Date(config.updatedAt).toLocaleString(), config.updatedBy?.email ? ` by ${config.updatedBy.email}` : ''] }))] }), config.configured && _jsx(PushTestPanel, { config: config, canWrite: canWrite }), config.configured && (_jsxs(Paper, { component: "section", variant: "outlined", "aria-labelledby": "push-danger-heading", sx: { mt: 3, p: { xs: 2, sm: 3 }, borderColor: 'error.main' }, children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { alignItems: 'center', mb: 1 }, children: [_jsx(WarningAmberOutlinedIcon, { color: "error" }), _jsx(Typography, { variant: "h6", id: "push-danger-heading", color: "error", children: "Danger zone" })] }), _jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: "Both actions below take every existing push subscriber offline until it re-subscribes. Neither can be undone." }), _jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 2, children: [_jsx(Button, { variant: "outlined", color: "error", disabled: !canWrite || isActing, onClick: () => setDialogAction('rotate'), children: "Rotate keys" }), _jsx(Button, { variant: "outlined", color: "error", disabled: !canWrite || isActing, onClick: () => setDialogAction('remove'), children: "Remove configuration" })] })] }))] }), _jsx(PushConfigConfirmDialog, { action: dialogAction, isWorking: isActing, error: actionError, onConfirm: () => void handleDialogConfirm(), onClose: () => {
|
|
201
|
+
setDialogAction(null);
|
|
202
|
+
clearActionError();
|
|
203
|
+
} }), _jsx(Snackbar, { open: !!savedMessage, autoHideDuration: 3000, onClose: () => setSavedMessage(null), message: savedMessage })] }) }));
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=PushConfigPage.js.map
|