@k2b/ui 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/actions/ContextMenu.js +3 -1
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +3 -1
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +3 -1
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/filter-messages.js +20 -0
- package/dist/browser/actions/filter-messages.js.map +1 -0
- package/dist/browser/actions/spotlight-messages.js +16 -0
- package/dist/browser/actions/spotlight-messages.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +47 -41
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +25 -23
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatRoot.js +3 -3
- package/dist/browser/chat/ChatRoot.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js +12 -12
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +236 -0
- package/dist/browser/chat/chat-messages.js.map +1 -0
- package/dist/browser/content/Calendar.js +1096 -1060
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/CalendarDayView.js +1187 -0
- package/dist/browser/content/CalendarDayView.js.map +1 -0
- package/dist/browser/content/CalendarWeekView.js +1571 -0
- package/dist/browser/content/CalendarWeekView.js.map +1 -0
- package/dist/browser/content/Chart.js +15 -8
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +185 -85
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartExplorerControls.js +9 -7
- package/dist/browser/content/ChartExplorerControls.js.map +1 -1
- package/dist/browser/content/ChartFilterControls.js +93 -34
- package/dist/browser/content/ChartFilterControls.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js +3 -3
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/DataTable.js +238 -201
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/Docs.js +3 -1
- package/dist/browser/content/Docs.js.map +1 -1
- package/dist/browser/content/FileBrowser.js +30 -26
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileTree.js +9 -7
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js +37 -28
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/Lightbox.js +9 -7
- package/dist/browser/content/Lightbox.js.map +1 -1
- package/dist/browser/content/LogEntriesTable.js +3 -3
- package/dist/browser/content/LogEntriesTable.js.map +1 -1
- package/dist/browser/content/MessageRow.js +24 -22
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/Pagination.js +7 -7
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +15 -13
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/RangePicker.js +3 -1
- package/dist/browser/content/RangePicker.js.map +1 -1
- package/dist/browser/content/StructuredDataPreview.js +3 -1
- package/dist/browser/content/StructuredDataPreview.js.map +1 -1
- package/dist/browser/content/Timeline.js +13 -11
- package/dist/browser/content/Timeline.js.map +1 -1
- package/dist/browser/content/VideoPlayer.js +5 -5
- package/dist/browser/content/VideoPlayer.js.map +1 -1
- package/dist/browser/content/VirtualFeed.js +6 -4
- package/dist/browser/content/VirtualFeed.js.map +1 -1
- package/dist/browser/content/ZoomPanViewport.js +10 -7
- package/dist/browser/content/ZoomPanViewport.js.map +1 -1
- package/dist/browser/content/calendar-day-scroll.js +98 -0
- package/dist/browser/content/calendar-day-scroll.js.map +1 -0
- package/dist/browser/content/calendar-days.js +408 -0
- package/dist/browser/content/calendar-days.js.map +1 -0
- package/dist/browser/content/calendar-dialogs.js +236 -0
- package/dist/browser/content/calendar-dialogs.js.map +1 -0
- package/dist/browser/content/calendar-messages.js +249 -3
- package/dist/browser/content/calendar-messages.js.map +1 -1
- package/dist/browser/content/calendar-pointer.js +19 -6
- package/dist/browser/content/calendar-pointer.js.map +1 -1
- package/dist/browser/content/calendar-shared.js +328 -0
- package/dist/browser/content/calendar-shared.js.map +1 -0
- package/dist/browser/content/calendar-time-view.js +1649 -0
- package/dist/browser/content/calendar-time-view.js.map +1 -0
- package/dist/browser/content/chart-messages.js +146 -0
- package/dist/browser/content/chart-messages.js.map +1 -0
- package/dist/browser/content/collection-selection.js +2 -0
- package/dist/browser/content/collection-selection.js.map +1 -1
- package/dist/browser/content/data-table-messages.js +24 -0
- package/dist/browser/content/data-table-messages.js.map +1 -0
- package/dist/browser/content/docs-messages.js +24 -0
- package/dist/browser/content/docs-messages.js.map +1 -0
- package/dist/browser/content/feed-messages.js +34 -0
- package/dist/browser/content/feed-messages.js.map +1 -0
- package/dist/browser/content/file-browser-messages.js +69 -0
- package/dist/browser/content/file-browser-messages.js.map +1 -0
- package/dist/browser/content/file-view-messages.js +64 -0
- package/dist/browser/content/file-view-messages.js.map +1 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/lightbox-messages.js +36 -0
- package/dist/browser/content/lightbox-messages.js.map +1 -0
- package/dist/browser/content/log-entries-messages.js +20 -0
- package/dist/browser/content/log-entries-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-block-messages.js +24 -0
- package/dist/browser/content/markdown-info-block-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-blocks.js +3 -3
- package/dist/browser/content/markdown-info-blocks.js.map +1 -1
- package/dist/browser/content/markdown-links.js +2 -2
- package/dist/browser/content/markdown-links.js.map +1 -1
- package/dist/browser/content/markdown-reference-messages.js +30 -0
- package/dist/browser/content/markdown-reference-messages.js.map +1 -0
- package/dist/browser/content/pagination-messages.js +38 -0
- package/dist/browser/content/pagination-messages.js.map +1 -0
- package/dist/browser/content/pdf-messages.js +43 -0
- package/dist/browser/content/pdf-messages.js.map +1 -0
- package/dist/browser/content/range-picker-messages.js +20 -0
- package/dist/browser/content/range-picker-messages.js.map +1 -0
- package/dist/browser/content/structured-data-messages.js +22 -0
- package/dist/browser/content/structured-data-messages.js.map +1 -0
- package/dist/browser/content/timeline-messages.js +62 -0
- package/dist/browser/content/timeline-messages.js.map +1 -0
- package/dist/browser/content/video-messages.js +24 -0
- package/dist/browser/content/video-messages.js.map +1 -0
- package/dist/browser/content/viewport-messages.js +28 -0
- package/dist/browser/content/viewport-messages.js.map +1 -0
- package/dist/browser/feedback/HoverPreview.js +34 -6
- package/dist/browser/feedback/HoverPreview.js.map +1 -1
- package/dist/browser/feedback/InstallGuide.js +18 -18
- package/dist/browser/feedback/InstallGuide.js.map +1 -1
- package/dist/browser/feedback/install-messages.js +104 -0
- package/dist/browser/feedback/install-messages.js.map +1 -0
- package/dist/browser/feedback/prompt-messages.js +65 -0
- package/dist/browser/feedback/prompt-messages.js.map +1 -0
- package/dist/browser/feedback/prompts.js +14 -11
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast-messages.js +18 -0
- package/dist/browser/feedback/toast-messages.js.map +1 -0
- package/dist/browser/feedback/toast.js +4 -3
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js +6 -4
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/AutocompleteSelect.js +10 -8
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js +4 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/ChoiceInputs.js +5 -5
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
- package/dist/browser/inputs/Combobox.js +3 -2
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/FileDropTarget.js +6 -6
- package/dist/browser/inputs/FileDropTarget.js.map +1 -1
- package/dist/browser/inputs/FileInputs.js +30 -21
- package/dist/browser/inputs/FileInputs.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js +7 -5
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js +4 -2
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/QrScanner.js +5 -5
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/Select.js +7 -5
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +3 -3
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/SignatureInput.js +9 -3
- package/dist/browser/inputs/SignatureInput.js.map +1 -1
- package/dist/browser/inputs/SpecialInputs.js +4 -2
- package/dist/browser/inputs/SpecialInputs.js.map +1 -1
- package/dist/browser/inputs/TagEditor.js +8 -6
- package/dist/browser/inputs/TagEditor.js.map +1 -1
- package/dist/browser/inputs/TagsInput.js +5 -5
- package/dist/browser/inputs/TagsInput.js.map +1 -1
- package/dist/browser/inputs/TemplateEditor.js +5 -5
- package/dist/browser/inputs/TemplateEditor.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +3 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/completion-messages.js +24 -0
- package/dist/browser/inputs/completion-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop-messages.js +63 -0
- package/dist/browser/inputs/file-drop-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop.js.map +1 -1
- package/dist/browser/inputs/file-input-messages.js +60 -0
- package/dist/browser/inputs/file-input-messages.js.map +1 -0
- package/dist/browser/inputs/icon-messages.js +22 -0
- package/dist/browser/inputs/icon-messages.js.map +1 -0
- package/dist/browser/inputs/input-messages.js +38 -0
- package/dist/browser/inputs/input-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +10 -6
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/Toolbar.js +13 -13
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/browser/inputs/markdown/editor-messages.js +43 -0
- package/dist/browser/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/browser/inputs/qr-messages.js +26 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -0
- package/dist/browser/inputs/select-messages.js +63 -0
- package/dist/browser/inputs/select-messages.js.map +1 -0
- package/dist/browser/inputs/tag-messages.js +44 -0
- package/dist/browser/inputs/tag-messages.js.map +1 -0
- package/dist/browser/inputs/template-messages.js +22 -0
- package/dist/browser/inputs/template-messages.js.map +1 -0
- package/dist/browser/internal/render-error-messages.js +20 -0
- package/dist/browser/internal/render-error-messages.js.map +1 -0
- package/dist/browser/internal/render-error.js +3 -1
- package/dist/browser/internal/render-error.js.map +1 -1
- package/dist/browser/internal/text-selection.js +101 -0
- package/dist/browser/internal/text-selection.js.map +1 -0
- package/dist/browser/intl/messages.js +6 -1155
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +594 -425
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +6 -1
- package/dist/browser/layout/BottomSheet.js.map +1 -1
- package/dist/browser/layout/Discussion.js +8 -5
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/FloatingWindow.js +8 -5
- package/dist/browser/layout/FloatingWindow.js.map +1 -1
- package/dist/browser/layout/Navigation.js +7 -6
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +373 -0
- package/dist/browser/layout/PageTitle.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +8 -6
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/Panes.js +23 -15
- package/dist/browser/layout/Panes.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +13 -4
- package/dist/browser/layout/PullToRefresh.js.map +1 -1
- package/dist/browser/layout/Settings.js +14 -12
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SettingsCollection.js +6 -5
- package/dist/browser/layout/SettingsCollection.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js +3 -1
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +821 -12
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js +3 -2
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/floating-window-messages.js +28 -0
- package/dist/browser/layout/floating-window-messages.js.map +1 -0
- package/dist/browser/layout/index.js +2 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/page-title-controller.js +169 -0
- package/dist/browser/layout/page-title-controller.js.map +1 -0
- package/dist/browser/layout/panel-dialog-messages.js +20 -0
- package/dist/browser/layout/panel-dialog-messages.js.map +1 -0
- package/dist/browser/layout/panes-messages.js +48 -0
- package/dist/browser/layout/panes-messages.js.map +1 -0
- package/dist/browser/layout/refresh-messages.js +20 -0
- package/dist/browser/layout/refresh-messages.js.map +1 -0
- package/dist/browser/layout/settings-messages.js +54 -0
- package/dist/browser/layout/settings-messages.js.map +1 -0
- package/dist/browser/layout/workspace-messages.js +56 -0
- package/dist/browser/layout/workspace-messages.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +5 -5
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +4 -2
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/StatCell.js +18 -6
- package/dist/browser/surfaces/StatCell.js.map +1 -1
- package/dist/browser/surfaces/Tag.js +3 -3
- package/dist/browser/surfaces/Tag.js.map +1 -1
- package/dist/browser/surfaces/avatar-messages.js +26 -0
- package/dist/browser/surfaces/avatar-messages.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +26 -0
- package/dist/browser/surfaces/resource-messages.js.map +1 -0
- package/dist/browser/widgets/Widget.js +6 -0
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +3 -1
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +3 -1
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/filter-messages.js +20 -0
- package/dist/ssr/actions/filter-messages.js.map +1 -0
- package/dist/ssr/actions/spotlight-messages.js +16 -0
- package/dist/ssr/actions/spotlight-messages.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +47 -41
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +23 -21
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatRoot.js +3 -3
- package/dist/ssr/chat/ChatRoot.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +11 -11
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +236 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -0
- package/dist/ssr/content/Calendar.js +534 -346
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/CalendarDayView.js +800 -0
- package/dist/ssr/content/CalendarDayView.js.map +1 -0
- package/dist/ssr/content/CalendarWeekView.js +1069 -0
- package/dist/ssr/content/CalendarWeekView.js.map +1 -0
- package/dist/ssr/content/Chart.js +12 -5
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +98 -37
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartExplorerControls.js +9 -7
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
- package/dist/ssr/content/ChartFilterControls.js +52 -8
- package/dist/ssr/content/ChartFilterControls.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js +3 -3
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/DataTable.js +77 -53
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/Docs.js +3 -1
- package/dist/ssr/content/Docs.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +30 -26
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileTree.js +9 -7
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +37 -28
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/Lightbox.js +8 -6
- package/dist/ssr/content/Lightbox.js.map +1 -1
- package/dist/ssr/content/LogEntriesTable.js +3 -3
- package/dist/ssr/content/LogEntriesTable.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +24 -22
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/Pagination.js +6 -6
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +15 -13
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/RangePicker.js +3 -1
- package/dist/ssr/content/RangePicker.js.map +1 -1
- package/dist/ssr/content/StructuredDataPreview.js +3 -1
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
- package/dist/ssr/content/Timeline.js +13 -11
- package/dist/ssr/content/Timeline.js.map +1 -1
- package/dist/ssr/content/VideoPlayer.js +5 -5
- package/dist/ssr/content/VideoPlayer.js.map +1 -1
- package/dist/ssr/content/VirtualFeed.js +6 -4
- package/dist/ssr/content/VirtualFeed.js.map +1 -1
- package/dist/ssr/content/ZoomPanViewport.js +7 -4
- package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
- package/dist/ssr/content/calendar-day-scroll.js +98 -0
- package/dist/ssr/content/calendar-day-scroll.js.map +1 -0
- package/dist/ssr/content/calendar-days.js +408 -0
- package/dist/ssr/content/calendar-days.js.map +1 -0
- package/dist/ssr/content/calendar-dialogs.js +159 -0
- package/dist/ssr/content/calendar-dialogs.js.map +1 -0
- package/dist/ssr/content/calendar-messages.js +249 -3
- package/dist/ssr/content/calendar-messages.js.map +1 -1
- package/dist/ssr/content/calendar-pointer.js +19 -6
- package/dist/ssr/content/calendar-pointer.js.map +1 -1
- package/dist/ssr/content/calendar-shared.js +261 -0
- package/dist/ssr/content/calendar-shared.js.map +1 -0
- package/dist/ssr/content/calendar-time-view.js +1306 -0
- package/dist/ssr/content/calendar-time-view.js.map +1 -0
- package/dist/ssr/content/chart-messages.js +146 -0
- package/dist/ssr/content/chart-messages.js.map +1 -0
- package/dist/ssr/content/collection-selection.js +2 -0
- package/dist/ssr/content/collection-selection.js.map +1 -1
- package/dist/ssr/content/data-table-messages.js +24 -0
- package/dist/ssr/content/data-table-messages.js.map +1 -0
- package/dist/ssr/content/docs-messages.js +24 -0
- package/dist/ssr/content/docs-messages.js.map +1 -0
- package/dist/ssr/content/feed-messages.js +34 -0
- package/dist/ssr/content/feed-messages.js.map +1 -0
- package/dist/ssr/content/file-browser-messages.js +69 -0
- package/dist/ssr/content/file-browser-messages.js.map +1 -0
- package/dist/ssr/content/file-view-messages.js +64 -0
- package/dist/ssr/content/file-view-messages.js.map +1 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/lightbox-messages.js +36 -0
- package/dist/ssr/content/lightbox-messages.js.map +1 -0
- package/dist/ssr/content/log-entries-messages.js +20 -0
- package/dist/ssr/content/log-entries-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-block-messages.js +24 -0
- package/dist/ssr/content/markdown-info-block-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-blocks.js +3 -3
- package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
- package/dist/ssr/content/markdown-links.js +2 -2
- package/dist/ssr/content/markdown-links.js.map +1 -1
- package/dist/ssr/content/markdown-reference-messages.js +30 -0
- package/dist/ssr/content/markdown-reference-messages.js.map +1 -0
- package/dist/ssr/content/pagination-messages.js +38 -0
- package/dist/ssr/content/pagination-messages.js.map +1 -0
- package/dist/ssr/content/pdf-messages.js +43 -0
- package/dist/ssr/content/pdf-messages.js.map +1 -0
- package/dist/ssr/content/range-picker-messages.js +20 -0
- package/dist/ssr/content/range-picker-messages.js.map +1 -0
- package/dist/ssr/content/structured-data-messages.js +22 -0
- package/dist/ssr/content/structured-data-messages.js.map +1 -0
- package/dist/ssr/content/timeline-messages.js +62 -0
- package/dist/ssr/content/timeline-messages.js.map +1 -0
- package/dist/ssr/content/video-messages.js +24 -0
- package/dist/ssr/content/video-messages.js.map +1 -0
- package/dist/ssr/content/viewport-messages.js +28 -0
- package/dist/ssr/content/viewport-messages.js.map +1 -0
- package/dist/ssr/feedback/HoverPreview.js +34 -6
- package/dist/ssr/feedback/HoverPreview.js.map +1 -1
- package/dist/ssr/feedback/InstallGuide.js +18 -18
- package/dist/ssr/feedback/InstallGuide.js.map +1 -1
- package/dist/ssr/feedback/install-messages.js +104 -0
- package/dist/ssr/feedback/install-messages.js.map +1 -0
- package/dist/ssr/feedback/prompt-messages.js +65 -0
- package/dist/ssr/feedback/prompt-messages.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +14 -11
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast-messages.js +18 -0
- package/dist/ssr/feedback/toast-messages.js.map +1 -0
- package/dist/ssr/feedback/toast.js +4 -3
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/index.js +1 -1
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +5 -3
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteSelect.js +10 -8
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js +4 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/ChoiceInputs.js +5 -5
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
- package/dist/ssr/inputs/Combobox.js +3 -1
- package/dist/ssr/inputs/Combobox.js.map +1 -1
- package/dist/ssr/inputs/FileDropTarget.js +6 -6
- package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
- package/dist/ssr/inputs/FileInputs.js +29 -20
- package/dist/ssr/inputs/FileInputs.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +7 -5
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +4 -2
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/QrScanner.js +4 -4
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/Select.js +7 -5
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +3 -3
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/SignatureInput.js +9 -3
- package/dist/ssr/inputs/SignatureInput.js.map +1 -1
- package/dist/ssr/inputs/SpecialInputs.js +4 -2
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
- package/dist/ssr/inputs/TagEditor.js +8 -6
- package/dist/ssr/inputs/TagEditor.js.map +1 -1
- package/dist/ssr/inputs/TagsInput.js +5 -5
- package/dist/ssr/inputs/TagsInput.js.map +1 -1
- package/dist/ssr/inputs/TemplateEditor.js +5 -5
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +3 -1
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/completion-messages.js +24 -0
- package/dist/ssr/inputs/completion-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop-messages.js +63 -0
- package/dist/ssr/inputs/file-drop-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop.js.map +1 -1
- package/dist/ssr/inputs/file-input-messages.js +60 -0
- package/dist/ssr/inputs/file-input-messages.js.map +1 -0
- package/dist/ssr/inputs/icon-messages.js +22 -0
- package/dist/ssr/inputs/icon-messages.js.map +1 -0
- package/dist/ssr/inputs/input-messages.js +38 -0
- package/dist/ssr/inputs/input-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +9 -5
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/Toolbar.js +13 -13
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/ssr/inputs/markdown/editor-messages.js +43 -0
- package/dist/ssr/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/ssr/inputs/qr-messages.js +26 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -0
- package/dist/ssr/inputs/select-messages.js +63 -0
- package/dist/ssr/inputs/select-messages.js.map +1 -0
- package/dist/ssr/inputs/tag-messages.js +44 -0
- package/dist/ssr/inputs/tag-messages.js.map +1 -0
- package/dist/ssr/inputs/template-messages.js +22 -0
- package/dist/ssr/inputs/template-messages.js.map +1 -0
- package/dist/ssr/internal/render-error-messages.js +20 -0
- package/dist/ssr/internal/render-error-messages.js.map +1 -0
- package/dist/ssr/internal/render-error.js +3 -1
- package/dist/ssr/internal/render-error.js.map +1 -1
- package/dist/ssr/internal/text-selection.js +101 -0
- package/dist/ssr/internal/text-selection.js.map +1 -0
- package/dist/ssr/intl/messages.js +6 -1155
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +219 -103
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +1 -0
- package/dist/ssr/layout/BottomSheet.js.map +1 -1
- package/dist/ssr/layout/Discussion.js +8 -5
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/FloatingWindow.js +8 -5
- package/dist/ssr/layout/FloatingWindow.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +6 -5
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +256 -0
- package/dist/ssr/layout/PageTitle.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +8 -6
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/Panes.js +22 -14
- package/dist/ssr/layout/Panes.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +13 -4
- package/dist/ssr/layout/PullToRefresh.js.map +1 -1
- package/dist/ssr/layout/Settings.js +14 -12
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SettingsCollection.js +6 -5
- package/dist/ssr/layout/SettingsCollection.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js +3 -1
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +821 -12
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js +3 -2
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/floating-window-messages.js +28 -0
- package/dist/ssr/layout/floating-window-messages.js.map +1 -0
- package/dist/ssr/layout/index.js +2 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/page-title-controller.js +169 -0
- package/dist/ssr/layout/page-title-controller.js.map +1 -0
- package/dist/ssr/layout/panel-dialog-messages.js +20 -0
- package/dist/ssr/layout/panel-dialog-messages.js.map +1 -0
- package/dist/ssr/layout/panes-messages.js +48 -0
- package/dist/ssr/layout/panes-messages.js.map +1 -0
- package/dist/ssr/layout/refresh-messages.js +20 -0
- package/dist/ssr/layout/refresh-messages.js.map +1 -0
- package/dist/ssr/layout/settings-messages.js +54 -0
- package/dist/ssr/layout/settings-messages.js.map +1 -0
- package/dist/ssr/layout/workspace-messages.js +56 -0
- package/dist/ssr/layout/workspace-messages.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +5 -5
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +4 -2
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/StatCell.js +2 -2
- package/dist/ssr/surfaces/StatCell.js.map +1 -1
- package/dist/ssr/surfaces/Tag.js +3 -3
- package/dist/ssr/surfaces/Tag.js.map +1 -1
- package/dist/ssr/surfaces/avatar-messages.js +26 -0
- package/dist/ssr/surfaces/avatar-messages.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +26 -0
- package/dist/ssr/surfaces/resource-messages.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +6 -0
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/filter-messages.d.ts +8 -0
- package/dist/types/actions/spotlight-messages.d.ts +8 -0
- package/dist/types/chat/chat-messages.d.ts +116 -0
- package/dist/types/content/Calendar.d.ts +91 -0
- package/dist/types/content/CalendarDayView.d.ts +7 -0
- package/dist/types/content/CalendarWeekView.d.ts +7 -0
- package/dist/types/content/ChartExplorer.d.ts +36 -1
- package/dist/types/content/ChartFilterControls.d.ts +6 -1
- package/dist/types/content/DataTable.d.ts +7 -0
- package/dist/types/content/FileView.d.ts +0 -10
- package/dist/types/content/calendar-day-scroll.d.ts +42 -0
- package/dist/types/content/calendar-days.d.ts +192 -0
- package/dist/types/content/calendar-dialogs.d.ts +22 -0
- package/dist/types/content/calendar-messages.d.ts +119 -1
- package/dist/types/content/calendar-pointer.d.ts +9 -0
- package/dist/types/content/calendar-shared.d.ts +69 -0
- package/dist/types/content/calendar-time-view.d.ts +252 -0
- package/dist/types/content/chart-messages.d.ts +37 -0
- package/dist/types/content/data-table-messages.d.ts +10 -0
- package/dist/types/content/docs-messages.d.ts +10 -0
- package/dist/types/content/feed-messages.d.ts +15 -0
- package/dist/types/content/file-browser-messages.d.ts +33 -0
- package/dist/types/content/file-view-messages.d.ts +30 -0
- package/dist/types/content/index.d.ts +2 -2
- package/dist/types/content/lightbox-messages.d.ts +16 -0
- package/dist/types/content/log-entries-messages.d.ts +8 -0
- package/dist/types/content/markdown-info-block-messages.d.ts +12 -0
- package/dist/types/content/markdown-reference-messages.d.ts +15 -0
- package/dist/types/content/pagination-messages.d.ts +17 -0
- package/dist/types/content/pdf-messages.d.ts +20 -0
- package/dist/types/content/range-picker-messages.d.ts +8 -0
- package/dist/types/content/structured-data-messages.d.ts +9 -0
- package/dist/types/content/timeline-messages.d.ts +29 -0
- package/dist/types/content/video-messages.d.ts +10 -0
- package/dist/types/content/viewport-messages.d.ts +12 -0
- package/dist/types/feedback/install-messages.d.ts +50 -0
- package/dist/types/feedback/prompt-messages.d.ts +31 -0
- package/dist/types/feedback/toast-messages.d.ts +9 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/inputs/completion-messages.d.ts +10 -0
- package/dist/types/inputs/file-drop-messages.d.ts +30 -0
- package/dist/types/inputs/file-drop.d.ts +3 -3
- package/dist/types/inputs/file-input-messages.d.ts +28 -0
- package/dist/types/inputs/icon-messages.d.ts +9 -0
- package/dist/types/inputs/input-messages.d.ts +17 -0
- package/dist/types/inputs/markdown/editor-messages.d.ts +20 -0
- package/dist/types/inputs/markdown/toolbar-messages.d.ts +18 -0
- package/dist/types/inputs/qr-messages.d.ts +11 -0
- package/dist/types/inputs/select-messages.d.ts +30 -0
- package/dist/types/inputs/tag-messages.d.ts +20 -0
- package/dist/types/inputs/template-messages.d.ts +9 -0
- package/dist/types/internal/render-error-messages.d.ts +8 -0
- package/dist/types/internal/text-selection.d.ts +18 -0
- package/dist/types/intl/messages.d.ts +3 -544
- package/dist/types/layout/AppWorkspace.d.ts +42 -5
- package/dist/types/layout/PageTitle.d.ts +65 -0
- package/dist/types/layout/app-workspace-controller.d.ts +12 -0
- package/dist/types/layout/app-workspace-state.d.ts +3 -2
- package/dist/types/layout/floating-window-messages.d.ts +12 -0
- package/dist/types/layout/index.d.ts +3 -0
- package/dist/types/layout/navigation-model.d.ts +7 -0
- package/dist/types/layout/page-title-controller.d.ts +13 -0
- package/dist/types/layout/panel-dialog-messages.d.ts +8 -0
- package/dist/types/layout/panes-messages.d.ts +22 -0
- package/dist/types/layout/refresh-messages.d.ts +8 -0
- package/dist/types/layout/settings-messages.d.ts +25 -0
- package/dist/types/layout/workspace-messages.d.ts +26 -0
- package/dist/types/surfaces/StatCell.d.ts +5 -0
- package/dist/types/surfaces/avatar-messages.d.ts +11 -0
- package/dist/types/surfaces/resource-messages.d.ts +11 -0
- package/dist/types/widgets/Widget.d.ts +5 -1
- package/package.json +1 -1
|
@@ -15,8 +15,8 @@ var _tmpl$ = ["<p role=\"alert\">", "</p>"],
|
|
|
15
15
|
import { clipboard } from "@k2b/stdlib/solid";
|
|
16
16
|
import { createMemo, For, Match, Show, Switch } from "solid-js";
|
|
17
17
|
import { Button, ButtonLink } from "../actions/Button";
|
|
18
|
-
import { useUiMessages } from "../intl/messages";
|
|
19
18
|
import { NoticeCard } from "../surfaces/NoticeCard";
|
|
19
|
+
import { useInstallMessages } from "./install-messages";
|
|
20
20
|
/**
|
|
21
21
|
* Opens `url` in Chrome on Android. Without Chrome, the browser loads `url` itself. Only an absolute http or https
|
|
22
22
|
* address has an intent; anything else returns `undefined`.
|
|
@@ -41,7 +41,7 @@ const chromeIntent = url => {
|
|
|
41
41
|
* the app package it builds. The host owns the surrounding surface, its heading, and dismissal.
|
|
42
42
|
*/
|
|
43
43
|
export function InstallGuide(props) {
|
|
44
|
-
const
|
|
44
|
+
const installMessages = useInstallMessages();
|
|
45
45
|
// The host may hand over another state after mount, such as the browser's own in place of the server's view.
|
|
46
46
|
const state = () => props.install;
|
|
47
47
|
const copy = clipboard.createWriter({
|
|
@@ -50,7 +50,7 @@ export function InstallGuide(props) {
|
|
|
50
50
|
const embedded = () => state().platform === "in-app" || state().platform === "apple-in-app";
|
|
51
51
|
/** A browser that installs, but less reliably than the platform's own. */
|
|
52
52
|
const hint = createMemo(() => {
|
|
53
|
-
const t =
|
|
53
|
+
const t = installMessages();
|
|
54
54
|
if (state().platform === "apple-browser") return {
|
|
55
55
|
title: t.installAppleBrowserTitle,
|
|
56
56
|
detail: t.installAppleBrowserDetail
|
|
@@ -62,7 +62,7 @@ export function InstallGuide(props) {
|
|
|
62
62
|
return undefined;
|
|
63
63
|
});
|
|
64
64
|
const steps = createMemo(() => {
|
|
65
|
-
const t =
|
|
65
|
+
const t = installMessages();
|
|
66
66
|
if (state().platform === "apple-mobile" || state().platform === "apple-browser") return [{
|
|
67
67
|
icon: "ti ti-share-2",
|
|
68
68
|
title: t.installOpenShare,
|
|
@@ -100,7 +100,7 @@ export function InstallGuide(props) {
|
|
|
100
100
|
return state().failed();
|
|
101
101
|
},
|
|
102
102
|
get children() {
|
|
103
|
-
return _$ssr(_tmpl$, _$escape(
|
|
103
|
+
return _$ssr(_tmpl$, _$escape(installMessages().installFailed));
|
|
104
104
|
}
|
|
105
105
|
})), _$escape(_$createComponent(Switch, {
|
|
106
106
|
get fallback() {
|
|
@@ -127,7 +127,7 @@ export function InstallGuide(props) {
|
|
|
127
127
|
return state().platform === "apple-mobile";
|
|
128
128
|
},
|
|
129
129
|
get children() {
|
|
130
|
-
return _$ssr(_tmpl$3, _$escape(
|
|
130
|
+
return _$ssr(_tmpl$3, _$escape(installMessages().installSafariFallback));
|
|
131
131
|
}
|
|
132
132
|
}), _$createComponent(Show, {
|
|
133
133
|
get when() {
|
|
@@ -141,7 +141,7 @@ export function InstallGuide(props) {
|
|
|
141
141
|
return state().platform === "generic";
|
|
142
142
|
},
|
|
143
143
|
get children() {
|
|
144
|
-
return _$ssr(_tmpl$3, _$escape(
|
|
144
|
+
return _$ssr(_tmpl$3, _$escape(installMessages().installUnavailable));
|
|
145
145
|
}
|
|
146
146
|
})];
|
|
147
147
|
},
|
|
@@ -151,7 +151,7 @@ export function InstallGuide(props) {
|
|
|
151
151
|
return state().requested();
|
|
152
152
|
},
|
|
153
153
|
get children() {
|
|
154
|
-
return _$ssr(_tmpl$2, _$escape(
|
|
154
|
+
return _$ssr(_tmpl$2, _$escape(installMessages().installRequested));
|
|
155
155
|
}
|
|
156
156
|
}), _$createComponent(Match, {
|
|
157
157
|
get when() {
|
|
@@ -161,10 +161,10 @@ export function InstallGuide(props) {
|
|
|
161
161
|
return [_$createComponent(NoticeCard, {
|
|
162
162
|
tone: "info",
|
|
163
163
|
get title() {
|
|
164
|
-
return
|
|
164
|
+
return installMessages().installSamsungTitle;
|
|
165
165
|
},
|
|
166
166
|
get detail() {
|
|
167
|
-
return
|
|
167
|
+
return installMessages().installSamsungDetail({
|
|
168
168
|
appName: props.appName
|
|
169
169
|
});
|
|
170
170
|
}
|
|
@@ -177,7 +177,7 @@ export function InstallGuide(props) {
|
|
|
177
177
|
return href();
|
|
178
178
|
},
|
|
179
179
|
get children() {
|
|
180
|
-
return [_$ssr(_tmpl$9),
|
|
180
|
+
return [_$ssr(_tmpl$9), installMessages().installOpenChrome];
|
|
181
181
|
}
|
|
182
182
|
})
|
|
183
183
|
}), _$createComponent(Show, {
|
|
@@ -194,7 +194,7 @@ export function InstallGuide(props) {
|
|
|
194
194
|
return state().canPrompt() || state().busy();
|
|
195
195
|
},
|
|
196
196
|
get children() {
|
|
197
|
-
return [_$ssr(_tmpl$3, _$escape(
|
|
197
|
+
return [_$ssr(_tmpl$3, _$escape(installMessages().installNative({
|
|
198
198
|
appName: props.appName
|
|
199
199
|
}))), _$createComponent(Button, {
|
|
200
200
|
get loading() {
|
|
@@ -202,7 +202,7 @@ export function InstallGuide(props) {
|
|
|
202
202
|
},
|
|
203
203
|
onClick: () => void state().install(),
|
|
204
204
|
get children() {
|
|
205
|
-
return
|
|
205
|
+
return installMessages().installApp;
|
|
206
206
|
}
|
|
207
207
|
})];
|
|
208
208
|
}
|
|
@@ -214,12 +214,12 @@ export function InstallGuide(props) {
|
|
|
214
214
|
return [_$createComponent(NoticeCard, {
|
|
215
215
|
tone: "warning",
|
|
216
216
|
get title() {
|
|
217
|
-
return _$memo(() => state().platform === "apple-in-app")() ?
|
|
217
|
+
return _$memo(() => state().platform === "apple-in-app")() ? installMessages().installAppleInAppTitle : installMessages().installInAppTitle;
|
|
218
218
|
},
|
|
219
219
|
get detail() {
|
|
220
|
-
return _$memo(() => state().platform === "apple-in-app")() ?
|
|
220
|
+
return _$memo(() => state().platform === "apple-in-app")() ? installMessages().installAppleInAppDetail({
|
|
221
221
|
appName: props.appName
|
|
222
|
-
}) :
|
|
222
|
+
}) : installMessages().installInAppDetail({
|
|
223
223
|
appName: props.appName
|
|
224
224
|
});
|
|
225
225
|
}
|
|
@@ -227,14 +227,14 @@ export function InstallGuide(props) {
|
|
|
227
227
|
variant: "secondary",
|
|
228
228
|
onClick: () => void copy.copy(props.url),
|
|
229
229
|
get children() {
|
|
230
|
-
return [_$ssr(_tmpl$4, _$ssrAttribute("class", copy.wasCopied() ? "ti ti-check" : "ti ti-copy", false)), copy.wasCopied() ?
|
|
230
|
+
return [_$ssr(_tmpl$4, _$ssrAttribute("class", copy.wasCopied() ? "ti ti-check" : "ti ti-copy", false)), copy.wasCopied() ? installMessages().installLinkCopied : installMessages().installCopyLink];
|
|
231
231
|
}
|
|
232
232
|
}), _$createComponent(Show, {
|
|
233
233
|
get when() {
|
|
234
234
|
return copy.error();
|
|
235
235
|
},
|
|
236
236
|
get children() {
|
|
237
|
-
return [_$ssr(_tmpl$, _$escape(
|
|
237
|
+
return [_$ssr(_tmpl$, _$escape(installMessages().installCopyFailed)), _$ssr(_tmpl$5, _$escape(props.url))];
|
|
238
238
|
}
|
|
239
239
|
}), _$createComponent(Show, {
|
|
240
240
|
get when() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["feedback/InstallGuide.tsx"],"sourcesContent":["import { clipboard } from \"@k2b/stdlib/solid\";\nimport { createMemo, For, type JSX, Match, Show, Switch } from \"solid-js\";\nimport { Button, ButtonLink } from \"../actions/Button\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { NoticeCard } from \"../surfaces/NoticeCard\";\nimport type { InstallPrompt } from \"./install\";\n\nexport type InstallGuideProps = {\n /** The name people see on their Home Screen, used in the guidance text. */\n appName: string;\n install: InstallPrompt;\n /**\n * The absolute address of the page to install. A browser inside another app copies it, to open it in Safari or\n * Chrome, and shows it as text when copying fails, so it can be copied by hand. Samsung Internet opens an http or\n * https address in Chrome.\n */\n url: string;\n /**\n * An application note under the installation steps or the embedded browser's link, for example what else the\n * installed app enables.\n */\n note?: string;\n class?: string;\n};\n\n/**\n * Opens `url` in Chrome on Android. Without Chrome, the browser loads `url` itself. Only an absolute http or https\n * address has an intent; anything else returns `undefined`.\n */\nconst chromeIntent = (url: string) => {\n let target: URL;\n try {\n target = new URL(url);\n } catch {\n return undefined;\n }\n if (target.protocol !== \"https:\" && target.protocol !== \"http:\") return undefined;\n const scheme = target.protocol.slice(0, -1);\n return `intent://${target.host}${target.pathname}${target.search}${target.hash}#Intent;scheme=${scheme};package=com.android.chrome;S.browser_fallback_url=${encodeURIComponent(url)};end`;\n};\n\n/**\n * Explains how to install the current page as an app on this platform: the browser's own dialog where it offers\n * one, otherwise the steps for Safari on iPhone, iPad, and Mac, other browsers on iPhone and iPad, Android, and other\n * browsers. A browser inside another app cannot install, so it gets a warning and the link to copy into Safari or\n * Chrome instead. Samsung Internet gets a link to Chrome even when it offers its own dialog, because Android may block\n * the app package it builds. The host owns the surrounding surface, its heading, and dismissal.\n */\nexport function InstallGuide(props: InstallGuideProps): JSX.Element {\n const messages = useUiMessages();\n // The host may hand over another state after mount, such as the browser's own in place of the server's view.\n const state = () => props.install;\n const copy = clipboard.createWriter({ write: (url: string) => navigator.clipboard.writeText(url) });\n const embedded = () => state().platform === \"in-app\" || state().platform === \"apple-in-app\";\n /** A browser that installs, but less reliably than the platform's own. */\n const hint = createMemo(() => {\n const t = messages();\n if (state().platform === \"apple-browser\") return { title: t.installAppleBrowserTitle, detail: t.installAppleBrowserDetail };\n if (state().platform === \"android-browser\") return { title: t.installAndroidBrowserTitle, detail: t.installAndroidBrowserDetail };\n return undefined;\n });\n const steps = createMemo(() => {\n const t = messages();\n if (state().platform === \"apple-mobile\" || state().platform === \"apple-browser\")\n return [\n {\n icon: \"ti ti-share-2\",\n title: t.installOpenShare,\n detail: state().platform === \"apple-browser\" ? t.installOpenShareBrowserDetail : t.installOpenShareDetail,\n },\n { icon: \"ti ti-square-plus\", title: t.installHomeScreen, detail: t.installHomeScreenDetail },\n { icon: \"ti ti-check\", title: t.installConfirmAdd, detail: t.installConfirmAddDetail },\n ];\n if (state().platform === \"apple-desktop\")\n return [\n { icon: \"ti ti-share-2\", title: t.installSafariMenu, detail: t.installSafariMenuDetail },\n { icon: \"ti ti-app-window\", title: t.installAddDock, detail: t.installAddDockDetail },\n ];\n return [\n { icon: \"ti ti-dots\", title: t.installBrowserMenu, detail: t.installBrowserMenuDetail },\n {\n icon: \"ti ti-square-plus\",\n title: t.installApp,\n detail: state().platform === \"android\" || state().platform === \"android-browser\" ? t.installAndroidDetail : t.installBrowserDetail,\n },\n ];\n });\n return (\n <div class={props.class ? `k2b-install-guide ${props.class}` : \"k2b-install-guide\"} data-platform={state().platform}>\n <Show when={state().failed()}>\n <p role=\"alert\">{messages().installFailed}</p>\n </Show>\n <Switch\n fallback={\n <>\n <Show when={hint()}>{(hint) => <NoticeCard tone=\"info\" title={hint().title} detail={hint().detail} />}</Show>\n <ol class=\"k2b-install-guide__steps\">\n <For each={steps()}>\n {(step) => (\n <li>\n <span class=\"k2b-install-guide__step-icon\">\n <i class={step.icon} aria-hidden=\"true\" />\n </span>\n <div>\n <h3>{step.title}</h3>\n <p>{step.detail}</p>\n </div>\n </li>\n )}\n </For>\n </ol>\n <Show when={state().platform === \"apple-mobile\"}>\n <p>{messages().installSafariFallback}</p>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n <Show when={state().platform === \"generic\"}>\n <p>{messages().installUnavailable}</p>\n </Show>\n </>\n }\n >\n <Match when={state().requested()}>\n <p role=\"status\">{messages().installRequested}</p>\n </Match>\n <Match when={state().platform === \"android-samsung\"}>\n <NoticeCard\n tone=\"info\"\n title={messages().installSamsungTitle}\n detail={messages().installSamsungDetail({ appName: props.appName })}\n />\n <Show when={chromeIntent(props.url)}>\n {(href) => (\n <ButtonLink href={href()}>\n <i class=\"ti ti-brand-chrome\" aria-hidden=\"true\" />\n {messages().installOpenChrome}\n </ButtonLink>\n )}\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n <Match when={state().canPrompt() || state().busy()}>\n <p>{messages().installNative({ appName: props.appName })}</p>\n <Button loading={state().busy()} onClick={() => void state().install()}>\n {messages().installApp}\n </Button>\n </Match>\n <Match when={embedded()}>\n <NoticeCard\n tone=\"warning\"\n title={state().platform === \"apple-in-app\" ? messages().installAppleInAppTitle : messages().installInAppTitle}\n detail={\n state().platform === \"apple-in-app\"\n ? messages().installAppleInAppDetail({ appName: props.appName })\n : messages().installInAppDetail({ appName: props.appName })\n }\n />\n <Button variant=\"secondary\" onClick={() => void copy.copy(props.url)}>\n <i class={copy.wasCopied() ? \"ti ti-check\" : \"ti ti-copy\"} aria-hidden=\"true\" />\n {copy.wasCopied() ? messages().installLinkCopied : messages().installCopyLink}\n </Button>\n <Show when={copy.error()}>\n <p role=\"alert\">{messages().installCopyFailed}</p>\n <code>{props.url}</code>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n </Switch>\n </div>\n );\n}\n\nexport default InstallGuide;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["feedback/InstallGuide.tsx"],"sourcesContent":["import { clipboard } from \"@k2b/stdlib/solid\";\nimport { createMemo, For, type JSX, Match, Show, Switch } from \"solid-js\";\nimport { Button, ButtonLink } from \"../actions/Button\";\nimport { NoticeCard } from \"../surfaces/NoticeCard\";\nimport type { InstallPrompt } from \"./install\";\nimport { useInstallMessages } from \"./install-messages\";\n\nexport type InstallGuideProps = {\n /** The name people see on their Home Screen, used in the guidance text. */\n appName: string;\n install: InstallPrompt;\n /**\n * The absolute address of the page to install. A browser inside another app copies it, to open it in Safari or\n * Chrome, and shows it as text when copying fails, so it can be copied by hand. Samsung Internet opens an http or\n * https address in Chrome.\n */\n url: string;\n /**\n * An application note under the installation steps or the embedded browser's link, for example what else the\n * installed app enables.\n */\n note?: string;\n class?: string;\n};\n\n/**\n * Opens `url` in Chrome on Android. Without Chrome, the browser loads `url` itself. Only an absolute http or https\n * address has an intent; anything else returns `undefined`.\n */\nconst chromeIntent = (url: string) => {\n let target: URL;\n try {\n target = new URL(url);\n } catch {\n return undefined;\n }\n if (target.protocol !== \"https:\" && target.protocol !== \"http:\") return undefined;\n const scheme = target.protocol.slice(0, -1);\n return `intent://${target.host}${target.pathname}${target.search}${target.hash}#Intent;scheme=${scheme};package=com.android.chrome;S.browser_fallback_url=${encodeURIComponent(url)};end`;\n};\n\n/**\n * Explains how to install the current page as an app on this platform: the browser's own dialog where it offers\n * one, otherwise the steps for Safari on iPhone, iPad, and Mac, other browsers on iPhone and iPad, Android, and other\n * browsers. A browser inside another app cannot install, so it gets a warning and the link to copy into Safari or\n * Chrome instead. Samsung Internet gets a link to Chrome even when it offers its own dialog, because Android may block\n * the app package it builds. The host owns the surrounding surface, its heading, and dismissal.\n */\nexport function InstallGuide(props: InstallGuideProps): JSX.Element {\n const installMessages = useInstallMessages();\n // The host may hand over another state after mount, such as the browser's own in place of the server's view.\n const state = () => props.install;\n const copy = clipboard.createWriter({ write: (url: string) => navigator.clipboard.writeText(url) });\n const embedded = () => state().platform === \"in-app\" || state().platform === \"apple-in-app\";\n /** A browser that installs, but less reliably than the platform's own. */\n const hint = createMemo(() => {\n const t = installMessages();\n if (state().platform === \"apple-browser\") return { title: t.installAppleBrowserTitle, detail: t.installAppleBrowserDetail };\n if (state().platform === \"android-browser\") return { title: t.installAndroidBrowserTitle, detail: t.installAndroidBrowserDetail };\n return undefined;\n });\n const steps = createMemo(() => {\n const t = installMessages();\n if (state().platform === \"apple-mobile\" || state().platform === \"apple-browser\")\n return [\n {\n icon: \"ti ti-share-2\",\n title: t.installOpenShare,\n detail: state().platform === \"apple-browser\" ? t.installOpenShareBrowserDetail : t.installOpenShareDetail,\n },\n { icon: \"ti ti-square-plus\", title: t.installHomeScreen, detail: t.installHomeScreenDetail },\n { icon: \"ti ti-check\", title: t.installConfirmAdd, detail: t.installConfirmAddDetail },\n ];\n if (state().platform === \"apple-desktop\")\n return [\n { icon: \"ti ti-share-2\", title: t.installSafariMenu, detail: t.installSafariMenuDetail },\n { icon: \"ti ti-app-window\", title: t.installAddDock, detail: t.installAddDockDetail },\n ];\n return [\n { icon: \"ti ti-dots\", title: t.installBrowserMenu, detail: t.installBrowserMenuDetail },\n {\n icon: \"ti ti-square-plus\",\n title: t.installApp,\n detail: state().platform === \"android\" || state().platform === \"android-browser\" ? t.installAndroidDetail : t.installBrowserDetail,\n },\n ];\n });\n return (\n <div class={props.class ? `k2b-install-guide ${props.class}` : \"k2b-install-guide\"} data-platform={state().platform}>\n <Show when={state().failed()}>\n <p role=\"alert\">{installMessages().installFailed}</p>\n </Show>\n <Switch\n fallback={\n <>\n <Show when={hint()}>{(hint) => <NoticeCard tone=\"info\" title={hint().title} detail={hint().detail} />}</Show>\n <ol class=\"k2b-install-guide__steps\">\n <For each={steps()}>\n {(step) => (\n <li>\n <span class=\"k2b-install-guide__step-icon\">\n <i class={step.icon} aria-hidden=\"true\" />\n </span>\n <div>\n <h3>{step.title}</h3>\n <p>{step.detail}</p>\n </div>\n </li>\n )}\n </For>\n </ol>\n <Show when={state().platform === \"apple-mobile\"}>\n <p>{installMessages().installSafariFallback}</p>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n <Show when={state().platform === \"generic\"}>\n <p>{installMessages().installUnavailable}</p>\n </Show>\n </>\n }\n >\n <Match when={state().requested()}>\n <p role=\"status\">{installMessages().installRequested}</p>\n </Match>\n <Match when={state().platform === \"android-samsung\"}>\n <NoticeCard\n tone=\"info\"\n title={installMessages().installSamsungTitle}\n detail={installMessages().installSamsungDetail({ appName: props.appName })}\n />\n <Show when={chromeIntent(props.url)}>\n {(href) => (\n <ButtonLink href={href()}>\n <i class=\"ti ti-brand-chrome\" aria-hidden=\"true\" />\n {installMessages().installOpenChrome}\n </ButtonLink>\n )}\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n <Match when={state().canPrompt() || state().busy()}>\n <p>{installMessages().installNative({ appName: props.appName })}</p>\n <Button loading={state().busy()} onClick={() => void state().install()}>\n {installMessages().installApp}\n </Button>\n </Match>\n <Match when={embedded()}>\n <NoticeCard\n tone=\"warning\"\n title={state().platform === \"apple-in-app\" ? installMessages().installAppleInAppTitle : installMessages().installInAppTitle}\n detail={\n state().platform === \"apple-in-app\"\n ? installMessages().installAppleInAppDetail({ appName: props.appName })\n : installMessages().installInAppDetail({ appName: props.appName })\n }\n />\n <Button variant=\"secondary\" onClick={() => void copy.copy(props.url)}>\n <i class={copy.wasCopied() ? \"ti ti-check\" : \"ti ti-copy\"} aria-hidden=\"true\" />\n {copy.wasCopied() ? installMessages().installLinkCopied : installMessages().installCopyLink}\n </Button>\n <Show when={copy.error()}>\n <p role=\"alert\">{installMessages().installCopyFailed}</p>\n <code>{props.url}</code>\n </Show>\n <Show when={props.note}>\n <p>{props.note}</p>\n </Show>\n </Match>\n </Switch>\n </div>\n );\n}\n\nexport default InstallGuide;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { i18n } from "@k2b/stdlib";
|
|
2
|
+
import { useLocale } from "../intl/locale";
|
|
3
|
+
const installMessages = i18n.define({
|
|
4
|
+
baseLocale: "en",
|
|
5
|
+
messages: {
|
|
6
|
+
en: {
|
|
7
|
+
installApp: "Install app",
|
|
8
|
+
installNative: ({
|
|
9
|
+
appName
|
|
10
|
+
}) => `Your browser can install ${appName}. Confirm installation in the dialog that opens next.`,
|
|
11
|
+
installRequested: "Installation requested. Follow your browser’s instructions.",
|
|
12
|
+
installFailed: "The installation dialog could not be opened.",
|
|
13
|
+
installOpenShare: "Open Share",
|
|
14
|
+
installOpenShareDetail: "Tap the Share button in Safari. It may be inside the More menu.",
|
|
15
|
+
installHomeScreen: "Add to Home Screen",
|
|
16
|
+
installHomeScreenDetail: "Scroll through the actions and choose “Add to Home Screen”.",
|
|
17
|
+
installConfirmAdd: "Confirm Add",
|
|
18
|
+
installConfirmAddDetail: "Keep “Open as Web App” enabled if shown, then tap “Add”.",
|
|
19
|
+
installOpenShareBrowserDetail: "In Chrome, tap Share in the address bar. In Firefox or Edge, open the menu, then Share.",
|
|
20
|
+
installSafariFallback: "Don’t see “Add to Home Screen”? This page may be open inside another app. Open it in Safari.",
|
|
21
|
+
installSafariMenu: "Open the Safari menu",
|
|
22
|
+
installSafariMenuDetail: "On your Mac, open File or click Share in Safari.",
|
|
23
|
+
installAddDock: "Add to Dock",
|
|
24
|
+
installAddDockDetail: "Choose “Add to Dock”, then confirm “Add”. Available in Safari on macOS Sonoma or later.",
|
|
25
|
+
installBrowserMenu: "Open the browser menu",
|
|
26
|
+
installBrowserMenuDetail: "Use the menu beside the address bar.",
|
|
27
|
+
installAndroidDetail: "Choose “Install app” or “Add to Home screen”, then follow the browser’s instructions.",
|
|
28
|
+
installBrowserDetail: "Look for “Install app” in the menu or an installation icon in the address bar.",
|
|
29
|
+
installUnavailable: "No installation option? You can keep using the browser or try another browser that supports installation.",
|
|
30
|
+
installAppleInAppTitle: "Open this page in Safari",
|
|
31
|
+
installAppleInAppDetail: ({
|
|
32
|
+
appName
|
|
33
|
+
}) => `This page is open inside another app, which can’t install ${appName}. In that app’s menu (••• or Share), choose “Open in Safari”, or copy the link and paste it into Safari.`,
|
|
34
|
+
installInAppTitle: "Open this page in your browser",
|
|
35
|
+
installInAppDetail: ({
|
|
36
|
+
appName
|
|
37
|
+
}) => `This page is open inside another app, which can’t install ${appName}. In that app’s menu, choose “Open in Chrome” or “Open in browser”, or copy the link and paste it into Chrome.`,
|
|
38
|
+
installAppleBrowserTitle: "Safari works best",
|
|
39
|
+
installAppleBrowserDetail: "This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.",
|
|
40
|
+
installAndroidBrowserTitle: "Chrome works best",
|
|
41
|
+
installAndroidBrowserDetail: "In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.",
|
|
42
|
+
installSamsungTitle: "Install with Chrome",
|
|
43
|
+
installSamsungDetail: ({
|
|
44
|
+
appName
|
|
45
|
+
}) => `On Samsung phones, Samsung Internet builds its own app package, which Android 14 and later may block as “built for an older version of Android”. That warning is about the package, not about ${appName}. Chrome installs ${appName} without it. Without Chrome, use this browser’s menu and continue through that warning.`,
|
|
46
|
+
installOpenChrome: "Open in Chrome",
|
|
47
|
+
installCopyLink: "Copy link",
|
|
48
|
+
installLinkCopied: "Link copied",
|
|
49
|
+
installCopyFailed: "The link could not be copied. Copy this address manually:"
|
|
50
|
+
},
|
|
51
|
+
de: {
|
|
52
|
+
installApp: "App installieren",
|
|
53
|
+
installNative: ({
|
|
54
|
+
appName
|
|
55
|
+
}) => `Dein Browser kann ${appName} installieren. Bestätige die Installation im nächsten Dialog.`,
|
|
56
|
+
installRequested: "Installation angefragt. Folge den Hinweisen deines Browsers.",
|
|
57
|
+
installFailed: "Der Installationsdialog konnte nicht geöffnet werden.",
|
|
58
|
+
installOpenShare: "Teilen öffnen",
|
|
59
|
+
installOpenShareDetail: "Tippe in Safari auf Teilen. Der Eintrag kann im Mehr-Menü liegen.",
|
|
60
|
+
installHomeScreen: "Zum Home-Bildschirm",
|
|
61
|
+
installHomeScreenDetail: "Scrolle durch die Aktionen und wähle „Zum Home-Bildschirm“.",
|
|
62
|
+
installConfirmAdd: "Hinzufügen bestätigen",
|
|
63
|
+
installConfirmAddDetail: "Lass „Als Web-App öffnen“ aktiviert, falls angezeigt, und tippe auf „Hinzufügen“.",
|
|
64
|
+
installOpenShareBrowserDetail: "Tippe in Chrome in der Adressleiste auf Teilen. Öffne in Firefox oder Edge das Menü und dann Teilen.",
|
|
65
|
+
installSafariFallback: "Kein „Zum Home-Bildschirm“? Dann ist die Seite vielleicht in einer anderen App geöffnet. Öffne sie in Safari.",
|
|
66
|
+
installSafariMenu: "Safari-Menü öffnen",
|
|
67
|
+
installSafariMenuDetail: "Öffne auf deinem Mac in Safari „Ablage“ oder klicke auf Teilen.",
|
|
68
|
+
installAddDock: "Zum Dock hinzufügen",
|
|
69
|
+
installAddDockDetail: "Wähle „Zum Dock hinzufügen“ und bestätige mit „Hinzufügen“. Verfügbar in Safari ab macOS Sonoma.",
|
|
70
|
+
installBrowserMenu: "Browser-Menü öffnen",
|
|
71
|
+
installBrowserMenuDetail: "Nutze das Menü neben der Adressleiste.",
|
|
72
|
+
installAndroidDetail: "Wähle „App installieren“ oder „Zum Startbildschirm hinzufügen“ und folge den Hinweisen des Browsers.",
|
|
73
|
+
installBrowserDetail: "Suche nach „App installieren“ im Menü oder nach einem Installationssymbol in der Adressleiste.",
|
|
74
|
+
installUnavailable: "Keine Installationsoption? Nutze die App weiter im Browser oder versuche einen anderen Browser mit Installationsunterstützung.",
|
|
75
|
+
installAppleInAppTitle: "Öffne diese Seite in Safari",
|
|
76
|
+
installAppleInAppDetail: ({
|
|
77
|
+
appName
|
|
78
|
+
}) => `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App (••• oder Teilen) „In Safari öffnen“ oder kopiere den Link und füge ihn in Safari ein.`,
|
|
79
|
+
installInAppTitle: "Öffne diese Seite in deinem Browser",
|
|
80
|
+
installInAppDetail: ({
|
|
81
|
+
appName
|
|
82
|
+
}) => `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App „In Chrome öffnen“ oder „Im Browser öffnen“ oder kopiere den Link und füge ihn in Chrome ein.`,
|
|
83
|
+
installAppleBrowserTitle: "Am besten mit Safari",
|
|
84
|
+
installAppleBrowserDetail: "In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.",
|
|
85
|
+
installAndroidBrowserTitle: "Am besten mit Chrome",
|
|
86
|
+
installAndroidBrowserDetail: "Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.",
|
|
87
|
+
installSamsungTitle: "Mit Chrome installieren",
|
|
88
|
+
installSamsungDetail: ({
|
|
89
|
+
appName
|
|
90
|
+
}) => `Auf Samsung-Handys erstellt Samsung Internet ein eigenes App-Paket, das Android ab Version 14 als „für eine ältere Android-Version entwickelt“ blockieren kann. Diese Warnung betrifft das Paket, nicht ${appName}. Mit Chrome installierst du ${appName} ohne sie. Ohne Chrome nutze das Menü dieses Browsers und fahre trotz dieser Warnung fort.`,
|
|
91
|
+
installOpenChrome: "In Chrome öffnen",
|
|
92
|
+
installCopyLink: "Link kopieren",
|
|
93
|
+
installLinkCopied: "Link kopiert",
|
|
94
|
+
installCopyFailed: "Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
/** Resolved from the inherited render locale. */
|
|
99
|
+
export const useInstallMessages = () => {
|
|
100
|
+
const locale = useLocale();
|
|
101
|
+
return () => installMessages.resolve([locale()]).t;
|
|
102
|
+
};
|
|
103
|
+
export const checkInstallMessages = () => installMessages.check();
|
|
104
|
+
//# sourceMappingURL=install-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["feedback/install-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst installMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n installApp: \"Install app\",\n installNative: ({ appName }: { appName: string }) =>\n `Your browser can install ${appName}. Confirm installation in the dialog that opens next.`,\n installRequested: \"Installation requested. Follow your browser’s instructions.\",\n installFailed: \"The installation dialog could not be opened.\",\n installOpenShare: \"Open Share\",\n installOpenShareDetail: \"Tap the Share button in Safari. It may be inside the More menu.\",\n installHomeScreen: \"Add to Home Screen\",\n installHomeScreenDetail: \"Scroll through the actions and choose “Add to Home Screen”.\",\n installConfirmAdd: \"Confirm Add\",\n installConfirmAddDetail: \"Keep “Open as Web App” enabled if shown, then tap “Add”.\",\n installOpenShareBrowserDetail: \"In Chrome, tap Share in the address bar. In Firefox or Edge, open the menu, then Share.\",\n installSafariFallback: \"Don’t see “Add to Home Screen”? This page may be open inside another app. Open it in Safari.\",\n installSafariMenu: \"Open the Safari menu\",\n installSafariMenuDetail: \"On your Mac, open File or click Share in Safari.\",\n installAddDock: \"Add to Dock\",\n installAddDockDetail: \"Choose “Add to Dock”, then confirm “Add”. Available in Safari on macOS Sonoma or later.\",\n installBrowserMenu: \"Open the browser menu\",\n installBrowserMenuDetail: \"Use the menu beside the address bar.\",\n installAndroidDetail: \"Choose “Install app” or “Add to Home screen”, then follow the browser’s instructions.\",\n installBrowserDetail: \"Look for “Install app” in the menu or an installation icon in the address bar.\",\n installUnavailable: \"No installation option? You can keep using the browser or try another browser that supports installation.\",\n installAppleInAppTitle: \"Open this page in Safari\",\n installAppleInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu (••• or Share), choose “Open in Safari”, or copy the link and paste it into Safari.`,\n installInAppTitle: \"Open this page in your browser\",\n installInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu, choose “Open in Chrome” or “Open in browser”, or copy the link and paste it into Chrome.`,\n installAppleBrowserTitle: \"Safari works best\",\n installAppleBrowserDetail: \"This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.\",\n installAndroidBrowserTitle: \"Chrome works best\",\n installAndroidBrowserDetail:\n \"In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.\",\n installSamsungTitle: \"Install with Chrome\",\n installSamsungDetail: ({ appName }: { appName: string }) =>\n `On Samsung phones, Samsung Internet builds its own app package, which Android 14 and later may block as “built for an older version of Android”. That warning is about the package, not about ${appName}. Chrome installs ${appName} without it. Without Chrome, use this browser’s menu and continue through that warning.`,\n installOpenChrome: \"Open in Chrome\",\n installCopyLink: \"Copy link\",\n installLinkCopied: \"Link copied\",\n installCopyFailed: \"The link could not be copied. Copy this address manually:\",\n },\n de: {\n installApp: \"App installieren\",\n installNative: ({ appName }) => `Dein Browser kann ${appName} installieren. Bestätige die Installation im nächsten Dialog.`,\n installRequested: \"Installation angefragt. Folge den Hinweisen deines Browsers.\",\n installFailed: \"Der Installationsdialog konnte nicht geöffnet werden.\",\n installOpenShare: \"Teilen öffnen\",\n installOpenShareDetail: \"Tippe in Safari auf Teilen. Der Eintrag kann im Mehr-Menü liegen.\",\n installHomeScreen: \"Zum Home-Bildschirm\",\n installHomeScreenDetail: \"Scrolle durch die Aktionen und wähle „Zum Home-Bildschirm“.\",\n installConfirmAdd: \"Hinzufügen bestätigen\",\n installConfirmAddDetail: \"Lass „Als Web-App öffnen“ aktiviert, falls angezeigt, und tippe auf „Hinzufügen“.\",\n installOpenShareBrowserDetail: \"Tippe in Chrome in der Adressleiste auf Teilen. Öffne in Firefox oder Edge das Menü und dann Teilen.\",\n installSafariFallback:\n \"Kein „Zum Home-Bildschirm“? Dann ist die Seite vielleicht in einer anderen App geöffnet. Öffne sie in Safari.\",\n installSafariMenu: \"Safari-Menü öffnen\",\n installSafariMenuDetail: \"Öffne auf deinem Mac in Safari „Ablage“ oder klicke auf Teilen.\",\n installAddDock: \"Zum Dock hinzufügen\",\n installAddDockDetail: \"Wähle „Zum Dock hinzufügen“ und bestätige mit „Hinzufügen“. Verfügbar in Safari ab macOS Sonoma.\",\n installBrowserMenu: \"Browser-Menü öffnen\",\n installBrowserMenuDetail: \"Nutze das Menü neben der Adressleiste.\",\n installAndroidDetail: \"Wähle „App installieren“ oder „Zum Startbildschirm hinzufügen“ und folge den Hinweisen des Browsers.\",\n installBrowserDetail: \"Suche nach „App installieren“ im Menü oder nach einem Installationssymbol in der Adressleiste.\",\n installUnavailable:\n \"Keine Installationsoption? Nutze die App weiter im Browser oder versuche einen anderen Browser mit Installationsunterstützung.\",\n installAppleInAppTitle: \"Öffne diese Seite in Safari\",\n installAppleInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App (••• oder Teilen) „In Safari öffnen“ oder kopiere den Link und füge ihn in Safari ein.`,\n installInAppTitle: \"Öffne diese Seite in deinem Browser\",\n installInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App „In Chrome öffnen“ oder „Im Browser öffnen“ oder kopiere den Link und füge ihn in Chrome ein.`,\n installAppleBrowserTitle: \"Am besten mit Safari\",\n installAppleBrowserDetail:\n \"In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.\",\n installAndroidBrowserTitle: \"Am besten mit Chrome\",\n installAndroidBrowserDetail:\n \"Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.\",\n installSamsungTitle: \"Mit Chrome installieren\",\n installSamsungDetail: ({ appName }) =>\n `Auf Samsung-Handys erstellt Samsung Internet ein eigenes App-Paket, das Android ab Version 14 als „für eine ältere Android-Version entwickelt“ blockieren kann. Diese Warnung betrifft das Paket, nicht ${appName}. Mit Chrome installierst du ${appName} ohne sie. Ohne Chrome nutze das Menü dieses Browsers und fahre trotz dieser Warnung fort.`,\n installOpenChrome: \"In Chrome öffnen\",\n installCopyLink: \"Link kopieren\",\n installLinkCopied: \"Link kopiert\",\n installCopyFailed: \"Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:\",\n },\n },\n});\n\nexport type InstallMessages = ReturnType<(typeof installMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useInstallMessages = (): (() => InstallMessages) => {\n const locale = useLocale();\n return () => installMessages.resolve([locale()]).t;\n};\n\nexport const checkInstallMessages = () => installMessages.check();\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { i18n } from "@k2b/stdlib";
|
|
2
|
+
import { useLocale } from "../intl/locale";
|
|
3
|
+
const promptMessages = i18n.define({
|
|
4
|
+
baseLocale: "en",
|
|
5
|
+
messages: {
|
|
6
|
+
en: {
|
|
7
|
+
minCharacters: ({
|
|
8
|
+
count
|
|
9
|
+
}) => `At least ${count} ${count === 1 ? "character" : "characters"}`,
|
|
10
|
+
maxCharacters: ({
|
|
11
|
+
count
|
|
12
|
+
}) => `At most ${count} ${count === 1 ? "character" : "characters"}`,
|
|
13
|
+
minTags: ({
|
|
14
|
+
count
|
|
15
|
+
}) => `At least ${count} ${count === 1 ? "tag" : "tags"}`,
|
|
16
|
+
maxTags: ({
|
|
17
|
+
count
|
|
18
|
+
}) => `At most ${count} ${count === 1 ? "tag" : "tags"}`,
|
|
19
|
+
searchFailed: "Search failed.",
|
|
20
|
+
confirmation: "Confirmation",
|
|
21
|
+
typeToConfirm: ({
|
|
22
|
+
phrase
|
|
23
|
+
}) => `Type ${phrase} to confirm`,
|
|
24
|
+
confirm: "Confirm",
|
|
25
|
+
discard: "Discard",
|
|
26
|
+
form: "Form",
|
|
27
|
+
discardUnsavedChanges: "Discard unsaved changes?",
|
|
28
|
+
unsavedChangesTitle: "Unsaved changes"
|
|
29
|
+
},
|
|
30
|
+
de: {
|
|
31
|
+
minCharacters: ({
|
|
32
|
+
count
|
|
33
|
+
}) => `Mindestens ${count} Zeichen`,
|
|
34
|
+
maxCharacters: ({
|
|
35
|
+
count
|
|
36
|
+
}) => `Höchstens ${count} Zeichen`,
|
|
37
|
+
minTags: ({
|
|
38
|
+
count
|
|
39
|
+
}) => `Mindestens ${count} ${count === 1 ? "Tag" : "Tags"}`,
|
|
40
|
+
maxTags: ({
|
|
41
|
+
count
|
|
42
|
+
}) => `Höchstens ${count} ${count === 1 ? "Tag" : "Tags"}`,
|
|
43
|
+
searchFailed: "Suche fehlgeschlagen.",
|
|
44
|
+
confirmation: "Bestätigung",
|
|
45
|
+
typeToConfirm: ({
|
|
46
|
+
phrase
|
|
47
|
+
}) => `Gib ${phrase} zur Bestätigung ein`,
|
|
48
|
+
confirm: "Bestätigen",
|
|
49
|
+
discard: "Verwerfen",
|
|
50
|
+
form: "Formular",
|
|
51
|
+
discardUnsavedChanges: "Ungespeicherte Änderungen verwerfen?",
|
|
52
|
+
unsavedChangesTitle: "Ungespeicherte Änderungen"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
/** Resolved from the inherited render locale. */
|
|
57
|
+
export const usePromptMessages = () => {
|
|
58
|
+
const locale = useLocale();
|
|
59
|
+
return () => promptMessages.resolve([locale()]).t;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/** Imperative UI inherits the document locale when no locale is supplied. */
|
|
63
|
+
export const resolvePromptMessages = locale => promptMessages.resolve([locale ?? (typeof document === "undefined" ? promptMessages.baseLocale : document.documentElement.lang)]).t;
|
|
64
|
+
export const checkPromptMessages = () => promptMessages.check();
|
|
65
|
+
//# sourceMappingURL=prompt-messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["feedback/prompt-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst promptMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n minCharacters: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n maxCharacters: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n minTags: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n maxTags: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n searchFailed: \"Search failed.\",\n confirmation: \"Confirmation\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Type ${phrase} to confirm`,\n confirm: \"Confirm\",\n discard: \"Discard\",\n form: \"Form\",\n discardUnsavedChanges: \"Discard unsaved changes?\",\n unsavedChangesTitle: \"Unsaved changes\",\n },\n de: {\n minCharacters: ({ count }) => `Mindestens ${count} Zeichen`,\n maxCharacters: ({ count }) => `Höchstens ${count} Zeichen`,\n minTags: ({ count }) => `Mindestens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n maxTags: ({ count }) => `Höchstens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n searchFailed: \"Suche fehlgeschlagen.\",\n confirmation: \"Bestätigung\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Gib ${phrase} zur Bestätigung ein`,\n confirm: \"Bestätigen\",\n discard: \"Verwerfen\",\n form: \"Formular\",\n discardUnsavedChanges: \"Ungespeicherte Änderungen verwerfen?\",\n unsavedChangesTitle: \"Ungespeicherte Änderungen\",\n },\n },\n});\n\nexport type PromptMessages = ReturnType<(typeof promptMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const usePromptMessages = (): (() => PromptMessages) => {\n const locale = useLocale();\n return () => promptMessages.resolve([locale()]).t;\n};\n\n/** Imperative UI inherits the document locale when no locale is supplied. */\nexport const resolvePromptMessages = (locale?: string): PromptMessages =>\n promptMessages.resolve([locale ?? (typeof document === \"undefined\" ? promptMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkPromptMessages = () => promptMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;EACjC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAChH,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAC/G,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC9F,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7F,YAAY,EAAE,gBAAgB;MAC9B,YAAY,EAAE,cAAc;MAC5B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,QAAQ,MAAM,aAAa;MAC9E,OAAO,EAAE,SAAS;MAClB,OAAO,EAAE,SAAS;MAClB,IAAI,EAAE,MAAM;MACZ,qBAAqB,EAAE,0BAA0B;MACjD,mBAAmB,EAAE;IACvB,CAAC;IACD,EAAE,EAAE;MACF,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,UAAU;MAC3D,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,UAAU;MAC1D,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7E,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC5E,YAAY,EAAE,uBAAuB;MACrC,YAAY,EAAE,aAAa;MAC3B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,OAAO,MAAM,sBAAsB;MACtF,OAAO,EAAE,YAAY;MACrB,OAAO,EAAE,WAAW;MACpB,IAAI,EAAE,UAAU;MAChB,qBAAqB,EAAE,sCAAsC;MAC7D,mBAAmB,EAAE;IACvB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,iBAAiB,GAAG,MAA8B;EAC7D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;;AAED;AACA,OAAO,MAAM,qBAAqB,GAAI,MAAe,IACnD,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,cAAc,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAErI,OAAO,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
|
|
@@ -38,14 +38,17 @@ import { DatePicker, DateTimePicker } from "../inputs/DatePicker";
|
|
|
38
38
|
import { ImageInput } from "../inputs/FileInputs";
|
|
39
39
|
import { NumberInput } from "../inputs/NumberInput";
|
|
40
40
|
import { Select } from "../inputs/Select";
|
|
41
|
+
import { resolveSelectMessages } from "../inputs/select-messages";
|
|
41
42
|
import { TagsInput } from "../inputs/TagsInput";
|
|
42
43
|
import { TextInput } from "../inputs/TextInput";
|
|
43
44
|
import { resolveUiMessages } from "../intl/messages";
|
|
44
45
|
import { dialogCore } from "./dialog-core";
|
|
46
|
+
import { resolvePromptMessages } from "./prompt-messages";
|
|
45
47
|
const PHRASE_SLOT = "\u0000";
|
|
46
48
|
const isEmpty = value => value === undefined || value === null || value === "" || Array.isArray(value) && value.length === 0;
|
|
47
49
|
export const createFormState = schema => {
|
|
48
50
|
const messages = resolveUiMessages();
|
|
51
|
+
const promptMessages = resolvePromptMessages();
|
|
49
52
|
const [values, setValues] = createStore({});
|
|
50
53
|
const [errors, setErrors] = createStore({});
|
|
51
54
|
// Errors appear with the first submit and then follow every change. Before that, a check that fails mid-input,
|
|
@@ -64,18 +67,18 @@ export const createFormState = schema => {
|
|
|
64
67
|
if (customError) return customError;
|
|
65
68
|
}
|
|
66
69
|
if (field.type === "text" && typeof value === "string" && value.length > 0) {
|
|
67
|
-
if (field.minLength !== undefined && value.length < field.minLength) return
|
|
70
|
+
if (field.minLength !== undefined && value.length < field.minLength) return promptMessages.minCharacters({
|
|
68
71
|
count: field.minLength
|
|
69
72
|
});
|
|
70
|
-
if (field.maxLength !== undefined && value.length > field.maxLength) return
|
|
73
|
+
if (field.maxLength !== undefined && value.length > field.maxLength) return promptMessages.maxCharacters({
|
|
71
74
|
count: field.maxLength
|
|
72
75
|
});
|
|
73
76
|
}
|
|
74
77
|
if (field.type === "tags" && Array.isArray(value) && value.length > 0) {
|
|
75
|
-
if (field.minTags !== undefined && value.length < field.minTags) return
|
|
78
|
+
if (field.minTags !== undefined && value.length < field.minTags) return promptMessages.minTags({
|
|
76
79
|
count: field.minTags
|
|
77
80
|
});
|
|
78
|
-
if (field.maxTags !== undefined && value.length > field.maxTags) return
|
|
81
|
+
if (field.maxTags !== undefined && value.length > field.maxTags) return promptMessages.maxTags({
|
|
79
82
|
count: field.maxTags
|
|
80
83
|
});
|
|
81
84
|
}
|
|
@@ -438,14 +441,14 @@ const openSearchPrompt = (resolver, options) => dialogCore.open(close => {
|
|
|
438
441
|
const searchError = createMemo(() => {
|
|
439
442
|
const error = searchMutation.error();
|
|
440
443
|
if (!error || error.name === "AbortError") return null;
|
|
441
|
-
return error.message ||
|
|
444
|
+
return error.message || resolvePromptMessages().searchFailed;
|
|
442
445
|
});
|
|
443
446
|
const shouldShowResults = createMemo(() => {
|
|
444
447
|
if (query().trim().length < minQueryLength) return false;
|
|
445
448
|
return hasLoaded() || searchError() !== null || items().length > 0;
|
|
446
449
|
});
|
|
447
450
|
const emptyStateText = createMemo(() => {
|
|
448
|
-
if (!hasLoaded()) return options?.emptyText ??
|
|
451
|
+
if (!hasLoaded()) return options?.emptyText ?? resolveSelectMessages().typeToSearch;
|
|
449
452
|
return options?.noResultsText ?? resolveUiMessages().noResults;
|
|
450
453
|
});
|
|
451
454
|
const {
|
|
@@ -628,11 +631,11 @@ export const prompts = {
|
|
|
628
631
|
return options?.icon;
|
|
629
632
|
},
|
|
630
633
|
close: () => close(false)
|
|
631
|
-
})), _$escape(content), _$escape(options?.cancelText || resolveUiMessages().cancel), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$escape(options?.confirmText ||
|
|
634
|
+
})), _$escape(content), _$escape(options?.cancelText || resolveUiMessages().cancel), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$escape(options?.confirmText || resolvePromptMessages().confirm));
|
|
632
635
|
}
|
|
633
636
|
|
|
634
637
|
// The catalog owns word order; the slot marks where the verbatim phrase is rendered as code.
|
|
635
|
-
const [labelBefore, labelAfter] =
|
|
638
|
+
const [labelBefore, labelAfter] = resolvePromptMessages().typeToConfirm({
|
|
636
639
|
phrase: PHRASE_SLOT
|
|
637
640
|
}).split(PHRASE_SLOT);
|
|
638
641
|
const [confirmationValue, setConfirmationValue] = createSignal("");
|
|
@@ -660,7 +663,7 @@ export const prompts = {
|
|
|
660
663
|
spellcheck: false,
|
|
661
664
|
monospace: true,
|
|
662
665
|
required: true
|
|
663
|
-
})), _$escape(options?.cancelText || resolveUiMessages().cancel), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$ssrAttribute("disabled", !canConfirm(), true), _$escape(options?.confirmText ||
|
|
666
|
+
})), _$escape(options?.cancelText || resolveUiMessages().cancel), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$ssrAttribute("disabled", !canConfirm(), true), _$escape(options?.confirmText || resolvePromptMessages().confirm));
|
|
664
667
|
}, {
|
|
665
668
|
panelClassName: panelClass(options),
|
|
666
669
|
contentClassName: contentClass(options?.surface),
|
|
@@ -668,7 +671,7 @@ export const prompts = {
|
|
|
668
671
|
signal: options?.signal,
|
|
669
672
|
cancelBehavior: options?.cancelBehavior,
|
|
670
673
|
history: options?.history,
|
|
671
|
-
ariaLabel: options?.ariaLabel ?? options?.title ??
|
|
674
|
+
ariaLabel: options?.ariaLabel ?? options?.title ?? resolvePromptMessages().confirmation
|
|
672
675
|
});
|
|
673
676
|
},
|
|
674
677
|
prompt: promptText,
|
|
@@ -681,7 +684,7 @@ export const prompts = {
|
|
|
681
684
|
contentClassName: contentClass(),
|
|
682
685
|
signal: config.signal,
|
|
683
686
|
cancelBehavior: config.cancelBehavior,
|
|
684
|
-
ariaLabel: config.ariaLabel ?? config.title ??
|
|
687
|
+
ariaLabel: config.ariaLabel ?? config.title ?? resolvePromptMessages().form
|
|
685
688
|
})) ?? null,
|
|
686
689
|
dialog: (component, options) => dialogCore.open(close => {
|
|
687
690
|
const body = component(close);
|