@allbluecn/web-app 0.12.1 → 0.13.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/LICENSE +661 -0
- package/package.json +109 -71
- package/public/devframe-docks/ai-chat-iframe.html +17 -0
- package/public/devframe-docks/session-iframe.html +17 -0
- package/public/fonts/Trap-font/Trap-Black.otf +0 -0
- package/public/fonts/Trap-font/Trap-Bold.otf +0 -0
- package/public/fonts/Trap-font/Trap-ExtraBold.otf +0 -0
- package/public/fonts/Trap-font/Trap-Light.otf +0 -0
- package/public/fonts/Trap-font/Trap-Medium.otf +0 -0
- package/public/fonts/Trap-font/Trap-Regular.otf +0 -0
- package/public/fonts/Trap-font/Trap-SemiBold.otf +0 -0
- package/public/fonts/buttersans-Rounded.otf +0 -0
- package/public/fonts/fonts.css +67 -0
- package/public/logo/allblue-logo-bold-dark.svg +11 -0
- package/public/logo/allblue-logo-bold-light.svg +11 -0
- package/public/logo/allblue-logo-dark.svg +13 -4
- package/public/logo/allblue-logo-light.svg +13 -4
- package/public/logo/allblue-logo-text-dark.svg +22 -0
- package/public/logo/allblue-logo-text-light.svg +22 -0
- package/public/logo/allblue-text-dark.svg +17 -0
- package/public/logo/allblue-text-light.svg +17 -0
- package/src/__tests__/security/ai/agui-body-validation.test.ts +96 -0
- package/src/__tests__/security/ai/destructive-tool-approval.test.ts +107 -0
- package/src/__tests__/security/ai/prompt-injection.test.ts +30 -17
- package/src/__tests__/security/ai/sandbox-network.test.ts +83 -0
- package/src/__tests__/security/ai/sandbox-snapshots.test.ts +92 -0
- package/src/__tests__/security/ai/sandbox-tool-bridge.test.ts +108 -0
- package/src/__tests__/security/ai/search-injection.test.ts +76 -0
- package/src/__tests__/security/ai/session-id-idor.test.ts +85 -0
- package/src/__tests__/setup.ts +16 -0
- package/src/components/agents/agent-bindings-tab.tsx +174 -0
- package/src/components/agents/agent-card.tsx +3 -7
- package/src/components/agents/agent-form-dialog.tsx +35 -13
- package/src/components/agents/agent-selector.tsx +1 -1
- package/src/components/agents/agents-page.tsx +33 -4
- package/src/components/agents/schemas/agent-form.ts +1 -1
- package/src/components/agents/skill-form-dialog.tsx +1 -1
- package/src/components/agents/slash-skill-menu.tsx +23 -16
- package/src/components/agents/use-agent-handlers.ts +1 -1
- package/src/components/ai/__tests__/ai-prompt-input-attach.test.tsx +115 -0
- package/src/components/ai/__tests__/global-sidebar.test.tsx +115 -0
- package/src/components/ai/__tests__/prompt-input-actions.test.tsx +72 -0
- package/src/components/ai/ai-chat-prompt.tsx +53 -21
- package/src/components/ai/ai-prompt-input/components/action-buttons.tsx +242 -0
- package/src/components/ai/ai-prompt-input/components/agent-mode-select.tsx +56 -0
- package/src/components/ai/ai-prompt-input/components/kb-context-selector.tsx +183 -0
- package/src/components/ai/ai-prompt-input/components/model-select.tsx +131 -0
- package/src/components/ai/ai-prompt-input/components/page-user-context-selector.tsx +184 -0
- package/src/components/ai/ai-prompt-input/image-filter.ts +22 -0
- package/src/components/ai/ai-prompt-input/index.tsx +530 -0
- package/src/components/ai/global-harness-sidebar.tsx +385 -0
- package/src/components/ai/tool-cards/-shared.tsx +150 -0
- package/src/components/ai/tool-cards/fallback-tool-card.tsx +144 -0
- package/src/components/ai/tool-cards/index.ts +20 -0
- package/src/components/ai/tool-cards/knowledge-search-card.tsx +184 -0
- package/src/components/ai/tool-cards/web-search-card.tsx +177 -0
- package/src/components/ai/tool-parts/tool-call-part.tsx +95 -0
- package/src/components/ai/tool-parts/tool-result-part.tsx +95 -0
- package/src/components/ai/turn-folded-bar.tsx +75 -0
- package/src/components/anyhub/anyhub-app-card.tsx +3 -5
- package/src/components/anyhub/anyhub-install-dialog.tsx +1 -1
- package/src/components/anyhub/anyhub-marketplace-view.tsx +1 -1
- package/src/components/anyhub/anyhub-permission-panel.tsx +1 -1
- package/src/components/anyhub/anyhub-top-nav.tsx +9 -21
- package/src/components/billing/__tests__/seats-manager.test.tsx +1 -1
- package/src/components/billing/__tests__/use-resource.test.tsx +3 -0
- package/src/components/billing/checkout-redirect.ts +1 -1
- package/src/components/billing/login-prompt-dialog.tsx +1 -1
- package/src/components/billing/seats-manager.tsx +2 -4
- package/src/components/billing/subscription-provider.tsx +3 -0
- package/src/components/changelog/changelog-page.tsx +21 -8
- package/src/components/error/global-error-boundary.tsx +2 -4
- package/src/components/forms/app-combobox.tsx +2 -6
- package/src/components/forms/app-date-picker.tsx +2 -6
- package/src/components/forms/hooks/use-form-submit.ts +1 -1
- package/src/components/harness/__tests__/attachment-policy.test.ts +34 -0
- package/src/components/harness/__tests__/composer-prefill.test.ts +114 -0
- package/src/components/harness/__tests__/composer-send.test.tsx +53 -0
- package/src/components/harness/__tests__/dock-registry.test.ts +21 -0
- package/src/components/harness/__tests__/fuzzy.test.ts +17 -0
- package/src/components/harness/__tests__/gallery-behavior.test.tsx +171 -0
- package/src/components/harness/__tests__/harness-workbench-mount.test.ts +47 -0
- package/src/components/harness/__tests__/media-route.test.tsx +52 -0
- package/src/components/harness/__tests__/mention-resolvers.test.ts +41 -0
- package/src/components/harness/__tests__/message-actions.test.tsx +199 -0
- package/src/components/harness/__tests__/resource-uri.test.ts +53 -0
- package/src/components/harness/__tests__/submit-machine.test.ts +61 -0
- package/src/components/harness/__tests__/turn-group.test.ts +124 -0
- package/src/components/harness/__tests__/use-track-columns.test.ts +27 -0
- package/src/components/harness/agent-preset-picker.tsx +104 -0
- package/src/components/harness/ai-chat-history/components/conversation-group.tsx +100 -0
- package/src/components/harness/ai-chat-history/components/conversation-item.tsx +294 -0
- package/src/components/harness/ai-chat-history/index.tsx +207 -0
- package/src/components/harness/ai-chat-history/types.ts +42 -0
- package/src/components/harness/chat-ui.tsx +192 -0
- package/src/components/harness/code/changeset-panel.tsx +112 -0
- package/src/components/harness/code/code-workspace-sidebar.tsx +138 -0
- package/src/components/harness/code/file-tree.tsx +241 -0
- package/src/components/harness/code/preview-panel.tsx +169 -0
- package/src/components/harness/code/terminal-panel.tsx +90 -0
- package/src/components/harness/code/workspace-context.tsx +50 -0
- package/src/components/harness/code/workspace-picker.tsx +229 -0
- package/src/components/harness/composer/attachments/attachment-policy.ts +17 -0
- package/src/components/harness/composer/attachments/attachment-tray.tsx +72 -0
- package/src/components/harness/composer/attachments/use-attachments.ts +108 -0
- package/src/components/harness/composer/composer-editor.tsx +136 -0
- package/src/components/harness/composer/context-meter.tsx +106 -0
- package/src/components/harness/composer/fuzzy.ts +21 -0
- package/src/components/harness/composer/harness-composer.tsx +385 -0
- package/src/components/harness/composer/mention/mention-resolvers.ts +35 -0
- package/src/components/harness/composer/mention/mention-suggestion-menu.tsx +202 -0
- package/src/components/harness/composer/mention/use-mention-sources.ts +43 -0
- package/src/components/harness/composer/model-select.tsx +76 -0
- package/src/components/harness/composer/submit-machine.ts +38 -0
- package/src/components/harness/composer/use-composer-submit.ts +81 -0
- package/src/components/harness/composer/use-drafts.ts +25 -0
- package/src/components/harness/dock/dock-panel-container.tsx +110 -0
- package/src/components/harness/dock/dock-registry.ts +58 -0
- package/src/components/harness/dock/resource-preview.tsx +274 -0
- package/src/components/harness/dock/resource-uri.ts +44 -0
- package/src/components/harness/gallery/gallery-card.tsx +63 -0
- package/src/components/harness/gallery/gallery-grid.tsx +169 -0
- package/src/components/harness/gallery/gallery-types.ts +40 -0
- package/src/components/harness/gallery/lightbox-viewer.tsx +73 -0
- package/src/components/harness/gallery/types.ts +51 -0
- package/src/components/harness/harness-chat-contexts.ts +22 -0
- package/src/components/harness/harness-chat-slots.ts +256 -0
- package/src/components/harness/harness-layout.tsx +258 -0
- package/src/components/harness/harness-message.tsx +207 -0
- package/src/components/harness/harness-workbench-mount.ts +30 -0
- package/src/components/harness/harness-workbench-page.tsx +467 -0
- package/src/components/harness/image-lightbox.tsx +51 -0
- package/src/components/harness/interrupt-approval.tsx +179 -0
- package/src/components/harness/message-actions.tsx +123 -0
- package/src/components/harness/plan-approval-card.tsx +101 -0
- package/src/components/harness/plugin-define-approval.tsx +125 -0
- package/src/components/harness/plugin-mention-menu.tsx +126 -0
- package/src/components/harness/plugin-panel.tsx +205 -0
- package/src/components/harness/queue-bar.tsx +78 -0
- package/src/components/harness/queue-item.tsx +69 -0
- package/src/components/harness/sandbox-file-change-card.tsx +135 -0
- package/src/components/harness/todo-panel.tsx +90 -0
- package/src/components/harness/transcript-width-handle.tsx +73 -0
- package/src/components/harness/turn-group.tsx +103 -0
- package/src/components/harness/turn-navigator.tsx +70 -0
- package/src/components/harness/turn-usage-pill.tsx +61 -0
- package/src/components/harness/use-todo-projection.ts +57 -0
- package/src/components/harness/workbench/use-track-columns.ts +69 -0
- package/src/components/harness/workbench/workbench-shell.tsx +102 -0
- package/src/components/hextaui/ai-chat-history.tsx +752 -0
- package/src/components/hextaui/ai-citations.tsx +579 -0
- package/src/components/hextaui/ai-error-handler.tsx +108 -0
- package/src/components/hextaui/ai-file-upload.tsx +575 -0
- package/src/components/hextaui/ai-message.tsx +639 -0
- package/src/components/hextaui/ai-prompt-input.tsx +782 -0
- package/src/components/hextaui/ai-suggested-prompts.tsx +586 -0
- package/src/components/hextaui/ai-thinking.tsx +291 -0
- package/src/components/hextaui/ai-usage-quota.tsx +501 -0
- package/src/components/hextaui/command-menu.tsx +0 -2
- package/src/components/iteration/auto-schedule-dialog.tsx +1 -1
- package/src/components/iteration/create-iteration-dialog.tsx +1 -1
- package/src/components/iteration/iteration-editor.tsx +3 -5
- package/src/components/knowledge/editor/doc-header.tsx +2 -4
- package/src/components/knowledge/editor/knowledge-doc-editor.tsx +32 -2
- package/src/components/knowledge/kb-filter-popover.tsx +2 -4
- package/src/components/knowledge/knowledge-toolbar.tsx +44 -27
- package/src/components/knowledge/knowledge-tree-item.tsx +12 -18
- package/src/components/knowledge/knowledge-tree.tsx +7 -7
- package/src/components/knowledge-public/bookmark-card.tsx +5 -11
- package/src/components/knowledge-public/bookmark-form-dialog.tsx +2 -2
- package/src/components/knowledge-public/knowledge-form-dialog.tsx +3 -3
- package/src/components/knowledge-public/legal-compliance-editor.tsx +3 -5
- package/src/components/knowledge-public/sharers-avatar-group.tsx +3 -7
- package/src/components/layout/sidebar-03/__tests__/user-menu-anonymous.test.tsx +1 -1
- package/src/components/layout/sidebar-03/app-sidebar.tsx +22 -10
- package/src/components/layout/sidebar-03/nav-anyhub.tsx +7 -21
- package/src/components/layout/sidebar-03/nav-knowledge.tsx +14 -40
- package/src/components/layout/sidebar-03/nav-main.tsx +11 -26
- package/src/components/layout/sidebar-03/nav-notifications.tsx +3 -7
- package/src/components/layout/sidebar-03/nav-secondary.tsx +11 -27
- package/src/components/layout/sidebar-03/nav-workspace.tsx +8 -32
- package/src/components/layout/sidebar-03/team-switcher.tsx +3 -7
- package/src/components/layout/sidebar-03/user-menu.tsx +3 -5
- package/src/components/notifications/settings-notifications.tsx +1 -1
- package/src/components/notifications/team-notifications.tsx +3 -7
- package/src/components/project/create-project-dialog.tsx +1 -1
- package/src/components/project/invite-member-dialog.tsx +1 -1
- package/src/components/project/project-member-manager.tsx +3 -5
- package/src/components/settings/ai/byok-section.tsx +162 -0
- package/src/components/settings/ai/create-custom-model-dialog.tsx +1 -1
- package/src/components/settings/ai/create-custom-provider-dialog.tsx +1 -1
- package/src/components/settings/ai/model-manager.tsx +1 -1
- package/src/components/settings/ai/provider-card.tsx +2 -2
- package/src/components/settings/ai/provider-detail-form.tsx +4 -6
- package/src/components/settings/ai/source/model-source-picker.tsx +99 -0
- package/src/components/settings/language-selector.tsx +2 -2
- package/src/components/settings/personal-team/account/account-client.tsx +1 -1
- package/src/components/settings/personal-team/account/avatar/notion-avatar-editor.tsx +12 -26
- package/src/components/settings/personal-team/account/settings-profile.tsx +1 -1
- package/src/components/settings/personal-team/team/team-client.tsx +1 -1
- package/src/components/settings/personal-team/team/team-invitations.tsx +19 -34
- package/src/components/settings/personal-team/team/team-member-list.tsx +5 -10
- package/src/components/shadcn-space/blocks/faq-01/faq.tsx +1 -1
- package/src/components/shadcn-space/blocks/hero-01/header.tsx +20 -3
- package/src/components/shared-kit/__tests__/ask-ai-entry-button.test.tsx +103 -0
- package/src/components/shared-kit/ask-ai-entry-button.tsx +80 -0
- package/src/components/shared-kit/data-viz/contribution-graph-tooltip.tsx +1 -1
- package/src/components/shared-kit/dialogs/name-confirm-dialog.tsx +4 -8
- package/src/components/shared-kit/i18n/language-switcher.tsx +2 -4
- package/src/components/shared-kit/icons/lucide-icon-picker/index.tsx +15 -13
- package/src/components/shared-kit/index.ts +1 -0
- package/src/components/shared-kit/navigation/nav-float-button.tsx +8 -16
- package/src/components/shared-kit/theme/theme-surface.tsx +1 -3
- package/src/components/shared-kit/timezone/timezone-select.tsx +3 -7
- package/src/components/story/ai/handlers/more-popover.tsx +3 -7
- package/src/components/story/ai/handlers/stream-text.ts +1 -1
- package/src/components/story/ai/prototype-dialog.tsx +1 -1
- package/src/components/story/ai/split-dialog.tsx +1 -1
- package/src/components/story/ai/story-ai-panel.tsx +5 -7
- package/src/components/story/ai/story-ai-preview-list.tsx +2 -2
- package/src/components/story/ai/story-ai-toolbar.tsx +6 -12
- package/src/components/story/create-story-dialog.tsx +3 -7
- package/src/components/story/detail/__tests__/associated-attachments-panel.test.tsx +1 -1
- package/src/components/story/detail/comment-input.tsx +1 -1
- package/src/components/story/detail/comment-item.tsx +3 -5
- package/src/components/story/detail/emoji-picker.tsx +1 -1
- package/src/components/story/detail/story-detail-body.tsx +9 -19
- package/src/components/story/detail/story-detail-toolbar/associated-attachments-panel.tsx +42 -63
- package/src/components/story/detail/story-detail-toolbar/categories.tsx +3 -7
- package/src/components/story/detail/story-detail-toolbar/children.tsx +13 -30
- package/src/components/story/detail/story-detail-toolbar/dependency-panel.tsx +8 -19
- package/src/components/story/detail/story-detail-toolbar.tsx +1 -1
- package/src/components/story/display/__tests__/display-dropdown.test.tsx +1 -1
- package/src/components/story/display/display-dropdown.tsx +3 -9
- package/src/components/story/filters/add-filter-dropdown.tsx +3 -3
- package/src/components/story/filters/filter-condition.tsx +3 -7
- package/src/components/story/filters/filter-toggle.tsx +3 -3
- package/src/components/story/filters/filter-value-input.tsx +4 -8
- package/src/components/story/inline-editors/__tests__/labels-editor.test.tsx +1 -1
- package/src/components/story/inline-editors/assignee-editor.tsx +4 -8
- package/src/components/story/inline-editors/dependency-type-select.tsx +26 -26
- package/src/components/story/inline-editors/inline-trigger.tsx +3 -9
- package/src/components/story/inline-editors/labels-editor.tsx +4 -6
- package/src/components/story/inline-editors/priority-editor.tsx +4 -8
- package/src/components/story/inline-editors/state-editor.tsx +4 -8
- package/src/components/story/inline-editors/story-select-dialog.tsx +12 -23
- package/src/components/story/peek-panel.tsx +1 -1
- package/src/components/story/relations/__tests__/attachment-manage-dialog.test.tsx +3 -3
- package/src/components/story/relations/__tests__/knowledge-select-dialog.test.tsx +5 -8
- package/src/components/story/relations/__tests__/link-manage-dialog.test.tsx +1 -1
- package/src/components/story/relations/attachment-manage-dialog.tsx +1 -1
- package/src/components/story/relations/knowledge-select-dialog.tsx +3 -2
- package/src/components/story/relations/link-manage-dialog.tsx +1 -1
- package/src/components/story/relations/story-ref-row.tsx +9 -19
- package/src/components/story/search-popover.tsx +15 -13
- package/src/components/story/story-list-view.tsx +1 -1
- package/src/components/story/story-panel-header.tsx +65 -35
- package/src/components/story/story-toolbar.tsx +4 -8
- package/src/components/story/transfer-story-popover.tsx +18 -14
- package/src/components/story/views/calendar-view.tsx +4 -8
- package/src/components/story/views/create-view-dialog.tsx +3 -7
- package/src/components/story/views/kanban-board.tsx +1 -1
- package/src/components/story/views/story-list/__tests__/batch-toolbar.test.tsx +3 -3
- package/src/components/story/views/story-list/batch-preview-dialog.tsx +12 -23
- package/src/components/story/views/story-list/batch-toolbar.tsx +7 -10
- package/src/components/story/views/story-list/group.tsx +2 -1
- package/src/components/story/views/story-list/index.tsx +1 -1
- package/src/components/story/views/story-list/row.tsx +1 -1
- package/src/components/story/views/timeline-view.tsx +1 -1
- package/src/components/story/views/view-list-section.tsx +3 -7
- package/src/components/story/views/view-selector-button.tsx +2 -4
- package/src/components/story/views/view-switcher.tsx +3 -7
- package/src/components/tiptap/extension/ai-extension.ts +21 -25
- package/src/components/tiptap/extension/ai-suggestion-mark.ts +45 -0
- package/src/components/tiptap/lib/advanced-utils.ts +0 -2
- package/src/components/tiptap/lib/utils/selection.ts +17 -0
- package/src/components/tiptap/mindmap/mind-map.tsx +26 -50
- package/src/components/tiptap/node/annotation-node/annotation-node-view.tsx +1 -1
- package/src/components/tiptap/notion-like/notion-like-editor-header.tsx +3 -7
- package/src/components/tiptap/notion-like/notion-like-editor.tsx +2 -0
- package/src/components/tiptap/ui/ai-ask-button/use-ai-ask.ts +5 -0
- package/src/components/tiptap/ui/ai-menu/ai-menu-actions/ai-menu-actions.tsx +1 -2
- package/src/components/tiptap/ui/ai-menu/ai-menu.tsx +94 -57
- package/src/components/tiptap/ui/drag-context-menu/drag-context-menu.tsx +2 -2
- package/src/components/ui/accordion.tsx +10 -37
- package/src/components/ui/alert-dialog.tsx +29 -60
- package/src/components/ui/alert.tsx +3 -21
- package/src/components/ui/avatar.tsx +5 -28
- package/src/components/ui/badge.tsx +19 -34
- package/src/components/ui/breadcrumb.tsx +20 -35
- package/src/components/ui/button-group.tsx +24 -37
- package/src/components/ui/button.tsx +14 -41
- package/src/components/ui/calendar.tsx +3 -19
- package/src/components/ui/card.tsx +5 -23
- package/src/components/ui/checkbox.tsx +8 -30
- package/src/components/ui/collapsible.tsx +6 -37
- package/src/components/ui/command.tsx +6 -20
- package/src/components/ui/context-menu.tsx +87 -97
- package/src/components/ui/dialog.tsx +31 -59
- package/src/components/ui/dropdown-menu.tsx +118 -139
- package/src/components/ui/empty.tsx +5 -23
- package/src/components/ui/field.tsx +8 -27
- package/src/components/ui/hover-card.tsx +30 -41
- package/src/components/ui/input-group.tsx +13 -26
- package/src/components/ui/input.tsx +4 -21
- package/src/components/ui/item.tsx +22 -34
- package/src/components/ui/kbd.tsx +13 -20
- package/src/components/ui/label.tsx +3 -25
- package/src/components/ui/marker.tsx +70 -0
- package/src/components/ui/message-scroller.tsx +131 -0
- package/src/components/ui/message.tsx +91 -0
- package/src/components/ui/navigation-menu.tsx +42 -56
- package/src/components/ui/popover.tsx +30 -47
- package/src/components/ui/progress.tsx +65 -33
- package/src/components/ui/questionnaire.tsx +322 -0
- package/src/components/ui/radio-group.tsx +12 -33
- package/src/components/ui/resizable.tsx +2 -22
- package/src/components/ui/scroll-area.tsx +8 -24
- package/src/components/ui/select.tsx +68 -77
- package/src/components/ui/separator.tsx +5 -26
- package/src/components/ui/sheet.tsx +29 -58
- package/src/components/ui/sidebar.tsx +143 -130
- package/src/components/ui/skeleton.tsx +1 -18
- package/src/components/ui/spinner.tsx +2 -20
- package/src/components/ui/switch.tsx +6 -23
- package/src/components/ui/table.tsx +1 -21
- package/src/components/ui/tabs.tsx +15 -42
- package/src/components/ui/textarea.tsx +2 -20
- package/src/components/ui/toast.tsx +282 -0
- package/src/components/ui/toggle.tsx +9 -31
- package/src/components/ui/tooltip.tsx +35 -42
- package/src/components/workspace/__tests__/kb/workspace-kb-card.test.tsx +4 -2
- package/src/components/workspace/__tests__/members/workspace-members-manager.test.tsx +1 -1
- package/src/components/workspace/dialogs/create-workspace-dialog.tsx +2 -4
- package/src/components/workspace/dialogs/delete-workspace-options.tsx +1 -1
- package/src/components/workspace/header/workspace-header.tsx +6 -12
- package/src/components/workspace/kb/workspace-kb-card.tsx +16 -38
- package/src/components/workspace/kb/workspace-kb-manage-dialog.tsx +1 -1
- package/src/components/workspace/kb/workspace-quick-doc-dialog.tsx +5 -7
- package/src/components/workspace/members/workspace-members-manager.tsx +4 -6
- package/src/config/sidebar-routes.tsx +5 -5
- package/src/devframe-docks/ai-chat-iframe.tsx +29 -0
- package/src/devframe-docks/session-iframe.tsx +86 -0
- package/src/hooks/use-commands.ts +1 -1
- package/src/hooks/use-mobile.ts +0 -17
- package/src/hooks/use-notifications.ts +1 -1
- package/src/lib/__tests__/annotation-prompt.test.ts +74 -0
- package/src/lib/__tests__/provider-router.test.ts +1 -1
- package/src/lib/__tests__/rag.test.ts +7 -3
- package/src/lib/ai/__tests__/chat-handoff.test.ts +19 -0
- package/src/lib/ai/__tests__/story-prompt.test.ts +42 -15
- package/src/lib/ai/byok.ts +32 -0
- package/src/lib/ai/chat-handoff.ts +101 -0
- package/src/lib/ai/story-ai-stream.ts +0 -1
- package/src/lib/ai/use-code-mode-readiness.ts +32 -0
- package/src/lib/ai/use-knowledge-bases.ts +41 -0
- package/src/lib/ai/use-search-capability.ts +78 -0
- package/src/lib/ai/use-selected-model.ts +41 -0
- package/src/lib/auth/auth.config.ts +44 -6
- package/src/lib/changelog/sdk-versions.ts +6 -6
- package/src/lib/commands/__tests__/registry.test.ts +1 -1
- package/src/lib/commands/registry.ts +2 -1
- package/src/lib/crypto/__tests__/base64.test.ts +78 -0
- package/src/lib/crypto/base64.ts +63 -0
- package/src/lib/fsap.ts +61 -0
- package/src/lib/optimistic/use-optimistic-mutation.ts +1 -1
- package/src/lib/plugin-runtime/bridge.ts +51 -0
- package/src/lib/plugin-runtime/plugin-client-tools.ts +115 -0
- package/src/lib/plugin-runtime/plugin-client.ts +161 -0
- package/src/lib/plugin-runtime/worker-realm-source.ts +172 -0
- package/src/lib/plugin-runtime/worker-realm.ts +225 -0
- package/src/lib/rag.ts +6 -4
- package/src/lib/router-context.ts +1 -0
- package/src/lib/session.ts +1 -0
- package/src/lib/utils.ts +1 -23
- package/src/lib/vector-store/__tests__/vector-store.test.ts +51 -2
- package/src/lib/vector-store/pg-vector-store.ts +6 -0
- package/src/lib/vector-store/sqlite-vec-store.ts +29 -12
- package/src/lib/vector-store/types.ts +1 -1
- package/src/paraglide/.gitignore +3 -0
- package/src/paraglide/.prettierignore +3 -0
- package/src/paraglide/README.md +162 -0
- package/src/paraglide/messages/_index.js +3730 -0
- package/src/paraglide/messages/actions_confirm.js +29 -0
- package/src/paraglide/messages/agent_addedtocanvas2.js +30 -0
- package/src/paraglide/messages/agent_clearall1.js +30 -0
- package/src/paraglide/messages/agent_createfailed1.js +30 -0
- package/src/paraglide/messages/agent_emptyexample1.js +30 -0
- package/src/paraglide/messages/agent_emptyhint1.js +30 -0
- package/src/paraglide/messages/agent_generatefailed1.js +30 -0
- package/src/paraglide/messages/agent_newconv1.js +30 -0
- package/src/paraglide/messages/agent_newconversation1.js +30 -0
- package/src/paraglide/messages/agent_noconversations1.js +30 -0
- package/src/paraglide/messages/agent_prototypefailed1.js +30 -0
- package/src/paraglide/messages/agent_unknownconv1.js +30 -0
- package/src/paraglide/messages/agentinput_agent1.js +30 -0
- package/src/paraglide/messages/agentinput_assistant1.js +30 -0
- package/src/paraglide/messages/agentinput_local1.js +30 -0
- package/src/paraglide/messages/agentinput_nomodel2.js +30 -0
- package/src/paraglide/messages/agentinput_placeholder1.js +30 -0
- package/src/paraglide/messages/agentinput_selectmodel2.js +30 -0
- package/src/paraglide/messages/agents_agent_agentquotaexceeded2.js +30 -0
- package/src/paraglide/messages/agents_agent_create.js +29 -0
- package/src/paraglide/messages/agents_agent_created.js +29 -0
- package/src/paraglide/messages/agents_agent_delete.js +29 -0
- package/src/paraglide/messages/agents_agent_deleteconfirmdesc2.js +30 -0
- package/src/paraglide/messages/agents_agent_deleteconfirmtext2.js +30 -0
- package/src/paraglide/messages/agents_agent_deleteconfirmtitle2.js +30 -0
- package/src/paraglide/messages/agents_agent_deletefailed1.js +30 -0
- package/src/paraglide/messages/agents_agent_deletesuccess1.js +30 -0
- package/src/paraglide/messages/agents_agent_edit.js +29 -0
- package/src/paraglide/messages/agents_agent_empty_createfirst1.js +30 -0
- package/src/paraglide/messages/agents_agent_empty_description.js +29 -0
- package/src/paraglide/messages/agents_agent_empty_title.js +29 -0
- package/src/paraglide/messages/agents_agent_savefailed1.js +30 -0
- package/src/paraglide/messages/agents_agent_updated.js +29 -0
- package/src/paraglide/messages/agents_agentform_addsuggestedprompt3.js +30 -0
- package/src/paraglide/messages/agents_agentform_allowedtoolshint3.js +30 -0
- package/src/paraglide/messages/agents_agentform_allowedtoolslabel3.js +30 -0
- package/src/paraglide/messages/agents_agentform_cancel1.js +30 -0
- package/src/paraglide/messages/agents_agentform_create1.js +30 -0
- package/src/paraglide/messages/agents_agentform_creating1.js +30 -0
- package/src/paraglide/messages/agents_agentform_description_create1.js +30 -0
- package/src/paraglide/messages/agents_agentform_description_edit1.js +30 -0
- package/src/paraglide/messages/agents_agentform_descriptionlabel2.js +30 -0
- package/src/paraglide/messages/agents_agentform_descriptionplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_agentform_greetinglabel2.js +30 -0
- package/src/paraglide/messages/agents_agentform_greetingoptional2.js +30 -0
- package/src/paraglide/messages/agents_agentform_greetingplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_agentform_knowledgebaseshint3.js +30 -0
- package/src/paraglide/messages/agents_agentform_knowledgebaseslabel3.js +30 -0
- package/src/paraglide/messages/agents_agentform_modellabel2.js +30 -0
- package/src/paraglide/messages/agents_agentform_modeloptional2.js +30 -0
- package/src/paraglide/messages/agents_agentform_modelplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_agentform_namelabel2.js +30 -0
- package/src/paraglide/messages/agents_agentform_nameplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_agentform_namerequired2.js +30 -0
- package/src/paraglide/messages/agents_agentform_save1.js +30 -0
- package/src/paraglide/messages/agents_agentform_saving1.js +30 -0
- package/src/paraglide/messages/agents_agentform_setdefault2.js +30 -0
- package/src/paraglide/messages/agents_agentform_setdefaulthint3.js +30 -0
- package/src/paraglide/messages/agents_agentform_suggestedpromptplaceholder3.js +30 -0
- package/src/paraglide/messages/agents_agentform_suggestedpromptshint3.js +30 -0
- package/src/paraglide/messages/agents_agentform_suggestedpromptslabel3.js +30 -0
- package/src/paraglide/messages/agents_agentform_systempromptlabel3.js +30 -0
- package/src/paraglide/messages/agents_agentform_systempromptplaceholder3.js +30 -0
- package/src/paraglide/messages/agents_agentform_systempromptrequired3.js +30 -0
- package/src/paraglide/messages/agents_agentform_temperaturehint2.js +30 -0
- package/src/paraglide/messages/agents_agentform_temperaturelabel2.js +30 -0
- package/src/paraglide/messages/agents_agentform_title_create1.js +30 -0
- package/src/paraglide/messages/agents_agentform_title_edit1.js +30 -0
- package/src/paraglide/messages/agents_askai_advice1.js +30 -0
- package/src/paraglide/messages/agents_askai_advice_prompt1.js +30 -0
- package/src/paraglide/messages/agents_askai_skills1.js +30 -0
- package/src/paraglide/messages/agents_askai_skills_prompt1.js +30 -0
- package/src/paraglide/messages/agents_bindings_defaulttag1.js +30 -0
- package/src/paraglide/messages/agents_bindings_desc.js +29 -0
- package/src/paraglide/messages/agents_bindings_failed.js +29 -0
- package/src/paraglide/messages/agents_bindings_followdefault1.js +30 -0
- package/src/paraglide/messages/agents_bindings_loading.js +29 -0
- package/src/paraglide/messages/agents_bindings_noagents1.js +30 -0
- package/src/paraglide/messages/agents_bindings_saved.js +29 -0
- package/src/paraglide/messages/agents_bindings_title.js +29 -0
- package/src/paraglide/messages/agents_bindings_unbound.js +29 -0
- package/src/paraglide/messages/agents_card_createdat1.js +30 -0
- package/src/paraglide/messages/agents_card_delete.js +29 -0
- package/src/paraglide/messages/agents_card_edit.js +29 -0
- package/src/paraglide/messages/agents_card_knowledgebases1.js +30 -0
- package/src/paraglide/messages/agents_card_model.js +29 -0
- package/src/paraglide/messages/agents_card_nodescription1.js +30 -0
- package/src/paraglide/messages/agents_card_noknowledgebases2.js +30 -0
- package/src/paraglide/messages/agents_card_notools1.js +30 -0
- package/src/paraglide/messages/agents_card_temperature.js +29 -0
- package/src/paraglide/messages/agents_card_tools.js +29 -0
- package/src/paraglide/messages/agents_card_updatedat1.js +30 -0
- package/src/paraglide/messages/agents_page_description.js +29 -0
- package/src/paraglide/messages/agents_page_tabs_agents.js +29 -0
- package/src/paraglide/messages/agents_page_tabs_bindings.js +29 -0
- package/src/paraglide/messages/agents_page_tabs_skills.js +29 -0
- package/src/paraglide/messages/agents_page_title.js +29 -0
- package/src/paraglide/messages/agents_skill_create.js +29 -0
- package/src/paraglide/messages/agents_skill_created.js +29 -0
- package/src/paraglide/messages/agents_skill_delete.js +29 -0
- package/src/paraglide/messages/agents_skill_deleteconfirmdesc2.js +30 -0
- package/src/paraglide/messages/agents_skill_deleteconfirmtext2.js +30 -0
- package/src/paraglide/messages/agents_skill_deleteconfirmtitle2.js +30 -0
- package/src/paraglide/messages/agents_skill_deletefailed1.js +30 -0
- package/src/paraglide/messages/agents_skill_deletesuccess1.js +30 -0
- package/src/paraglide/messages/agents_skill_edit.js +29 -0
- package/src/paraglide/messages/agents_skill_empty_createfirst1.js +30 -0
- package/src/paraglide/messages/agents_skill_empty_description.js +29 -0
- package/src/paraglide/messages/agents_skill_empty_title.js +29 -0
- package/src/paraglide/messages/agents_skill_nameconflict1.js +30 -0
- package/src/paraglide/messages/agents_skill_savefailed1.js +30 -0
- package/src/paraglide/messages/agents_skill_skillquotaexceeded2.js +30 -0
- package/src/paraglide/messages/agents_skill_updated.js +29 -0
- package/src/paraglide/messages/agents_skillform_cancel1.js +30 -0
- package/src/paraglide/messages/agents_skillform_create1.js +30 -0
- package/src/paraglide/messages/agents_skillform_creating1.js +30 -0
- package/src/paraglide/messages/agents_skillform_description_create1.js +30 -0
- package/src/paraglide/messages/agents_skillform_description_edit1.js +30 -0
- package/src/paraglide/messages/agents_skillform_nameinvalid2.js +30 -0
- package/src/paraglide/messages/agents_skillform_namelabel2.js +30 -0
- package/src/paraglide/messages/agents_skillform_nameplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_skillform_namerequired2.js +30 -0
- package/src/paraglide/messages/agents_skillform_save1.js +30 -0
- package/src/paraglide/messages/agents_skillform_saving1.js +30 -0
- package/src/paraglide/messages/agents_skillform_templatelabel2.js +30 -0
- package/src/paraglide/messages/agents_skillform_templateplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_skillform_templaterequired2.js +30 -0
- package/src/paraglide/messages/agents_skillform_title_create1.js +30 -0
- package/src/paraglide/messages/agents_skillform_title_edit1.js +30 -0
- package/src/paraglide/messages/agents_skillform_titlelabel2.js +30 -0
- package/src/paraglide/messages/agents_skillform_titleplaceholder2.js +30 -0
- package/src/paraglide/messages/agents_skillform_titlerequired2.js +30 -0
- package/src/paraglide/messages/agents_skills_menuhint1.js +30 -0
- package/src/paraglide/messages/agents_tools_delete_project.js +29 -0
- package/src/paraglide/messages/agents_tools_document_action.js +29 -0
- package/src/paraglide/messages/agents_tools_knowledge_search.js +29 -0
- package/src/paraglide/messages/agents_tools_reindex_knowledge_base.js +29 -0
- package/src/paraglide/messages/agents_tools_user_data_query.js +29 -0
- package/src/paraglide/messages/agents_tools_web_search.js +29 -0
- package/src/paraglide/messages/ai_annotation_not_configured.js +30 -0
- package/src/paraglide/messages/anyhub_app_permissions.js +30 -0
- package/src/paraglide/messages/anyhub_close.js +29 -0
- package/src/paraglide/messages/anyhub_github_install_hint.js +30 -0
- package/src/paraglide/messages/anyhub_install.js +29 -0
- package/src/paraglide/messages/anyhub_install_app.js +30 -0
- package/src/paraglide/messages/anyhub_install_failed.js +30 -0
- package/src/paraglide/messages/anyhub_install_first_app.js +30 -0
- package/src/paraglide/messages/anyhub_install_success.js +30 -0
- package/src/paraglide/messages/anyhub_installed.js +29 -0
- package/src/paraglide/messages/anyhub_installing.js +29 -0
- package/src/paraglide/messages/anyhub_loading.js +29 -0
- package/src/paraglide/messages/anyhub_local_apps.js +30 -0
- package/src/paraglide/messages/anyhub_local_install_hint.js +30 -0
- package/src/paraglide/messages/anyhub_marketplace.js +29 -0
- package/src/paraglide/messages/anyhub_marketplace_empty.js +30 -0
- package/src/paraglide/messages/anyhub_no_entry.js +30 -0
- package/src/paraglide/messages/anyhub_no_installed_apps.js +30 -0
- package/src/paraglide/messages/anyhub_no_matching_apps.js +30 -0
- package/src/paraglide/messages/anyhub_permissions.js +29 -0
- package/src/paraglide/messages/anyhub_permissions_saved.js +30 -0
- package/src/paraglide/messages/anyhub_pin_to_sidebar.js +30 -0
- package/src/paraglide/messages/anyhub_save_permissions.js +30 -0
- package/src/paraglide/messages/anyhub_search_apps.js +30 -0
- package/src/paraglide/messages/anyhub_uninstall.js +29 -0
- package/src/paraglide/messages/anyhub_uninstalled.js +29 -0
- package/src/paraglide/messages/anyhub_unpin.js +29 -0
- package/src/paraglide/messages/anyhub_update.js +29 -0
- package/src/paraglide/messages/apps_askai_checkup1.js +30 -0
- package/src/paraglide/messages/apps_askai_checkup_prompt1.js +30 -0
- package/src/paraglide/messages/apps_askai_integration1.js +30 -0
- package/src/paraglide/messages/apps_askai_integration_prompt1.js +30 -0
- package/src/paraglide/messages/apps_detail_title.js +29 -0
- package/src/paraglide/messages/apps_title.js +29 -0
- package/src/paraglide/messages/auth_account_emailunverified1.js +30 -0
- package/src/paraglide/messages/auth_account_emailunverifieddesc2.js +30 -0
- package/src/paraglide/messages/auth_account_emailverified1.js +30 -0
- package/src/paraglide/messages/auth_account_resendverify1.js +30 -0
- package/src/paraglide/messages/auth_brand_subtitle.js +29 -0
- package/src/paraglide/messages/auth_brand_title.js +29 -0
- package/src/paraglide/messages/auth_demo.js +29 -0
- package/src/paraglide/messages/auth_features_dataanalysis1.js +30 -0
- package/src/paraglide/messages/auth_features_dataanalysisdesc2.js +30 -0
- package/src/paraglide/messages/auth_features_roadmap.js +29 -0
- package/src/paraglide/messages/auth_features_roadmapdesc1.js +30 -0
- package/src/paraglide/messages/auth_features_teamcollaboration1.js +30 -0
- package/src/paraglide/messages/auth_features_teamcollaborationdesc2.js +30 -0
- package/src/paraglide/messages/auth_features_userresearch1.js +30 -0
- package/src/paraglide/messages/auth_features_userresearchdesc2.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_brandsubtitle2.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_emaillabel2.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_failed1.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_gologin2.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_remembered1.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_sent1.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_submit1.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_submitting1.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_subtitle1.js +30 -0
- package/src/paraglide/messages/auth_forgotpassword_title1.js +30 -0
- package/src/paraglide/messages/auth_login_createaccount1.js +30 -0
- package/src/paraglide/messages/auth_login_defaultaction1.js +30 -0
- package/src/paraglide/messages/auth_login_emaillabel1.js +30 -0
- package/src/paraglide/messages/auth_login_emailplaceholder1.js +30 -0
- package/src/paraglide/messages/auth_login_forgotpassword1.js +30 -0
- package/src/paraglide/messages/auth_login_hidepassword1.js +30 -0
- package/src/paraglide/messages/auth_login_invalidcredentials1.js +30 -0
- package/src/paraglide/messages/auth_login_noaccount1.js +30 -0
- package/src/paraglide/messages/auth_login_orwithemail2.js +30 -0
- package/src/paraglide/messages/auth_login_passwordlabel1.js +30 -0
- package/src/paraglide/messages/auth_login_passwordplaceholder1.js +30 -0
- package/src/paraglide/messages/auth_login_remember.js +29 -0
- package/src/paraglide/messages/auth_login_servererror1.js +30 -0
- package/src/paraglide/messages/auth_login_showpassword1.js +30 -0
- package/src/paraglide/messages/auth_login_ssocontinuewithemail3.js +30 -0
- package/src/paraglide/messages/auth_login_ssodetected1.js +30 -0
- package/src/paraglide/messages/auth_login_ssofailed1.js +30 -0
- package/src/paraglide/messages/auth_login_ssologinwith2.js +30 -0
- package/src/paraglide/messages/auth_login_ssosubmitting1.js +30 -0
- package/src/paraglide/messages/auth_login_submit.js +29 -0
- package/src/paraglide/messages/auth_login_submitting.js +29 -0
- package/src/paraglide/messages/auth_login_subtitle.js +29 -0
- package/src/paraglide/messages/auth_login_success.js +29 -0
- package/src/paraglide/messages/auth_login_title.js +29 -0
- package/src/paraglide/messages/auth_login_useprovider1.js +30 -0
- package/src/paraglide/messages/auth_register_confirmpasswordlabel2.js +30 -0
- package/src/paraglide/messages/auth_register_confirmpasswordplaceholder2.js +30 -0
- package/src/paraglide/messages/auth_register_emaillabel1.js +30 -0
- package/src/paraglide/messages/auth_register_failed.js +29 -0
- package/src/paraglide/messages/auth_register_gologin1.js +30 -0
- package/src/paraglide/messages/auth_register_hasaccount1.js +30 -0
- package/src/paraglide/messages/auth_register_invitationcodelabel2.js +30 -0
- package/src/paraglide/messages/auth_register_invitationcodeplaceholder2.js +30 -0
- package/src/paraglide/messages/auth_register_orwithemail2.js +30 -0
- package/src/paraglide/messages/auth_register_passwordlabel1.js +30 -0
- package/src/paraglide/messages/auth_register_passwordplaceholder1.js +30 -0
- package/src/paraglide/messages/auth_register_submit.js +29 -0
- package/src/paraglide/messages/auth_register_submitting.js +29 -0
- package/src/paraglide/messages/auth_register_subtitle.js +29 -0
- package/src/paraglide/messages/auth_register_success.js +29 -0
- package/src/paraglide/messages/auth_register_title.js +29 -0
- package/src/paraglide/messages/auth_register_usernamelabel1.js +30 -0
- package/src/paraglide/messages/auth_register_usernameplaceholder1.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_confirmpasswordlabel3.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_confirmpasswordplaceholder3.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_failed1.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_gologin2.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_newpasswordlabel3.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_newpasswordplaceholder3.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_submit1.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_submitting1.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_subtitle1.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_success1.js +30 -0
- package/src/paraglide/messages/auth_resetpassword_title1.js +30 -0
- package/src/paraglide/messages/auth_verify_alreadyverified1.js +30 -0
- package/src/paraglide/messages/auth_verify_godashboard1.js +30 -0
- package/src/paraglide/messages/auth_verify_invalid.js +29 -0
- package/src/paraglide/messages/auth_verify_invaliddesc1.js +30 -0
- package/src/paraglide/messages/auth_verify_notlogged1.js +30 -0
- package/src/paraglide/messages/auth_verify_resend.js +29 -0
- package/src/paraglide/messages/auth_verify_resendsuccess1.js +30 -0
- package/src/paraglide/messages/auth_verify_success.js +29 -0
- package/src/paraglide/messages/auth_verify_successdesc1.js +30 -0
- package/src/paraglide/messages/billing_action.js +29 -0
- package/src/paraglide/messages/billing_aiquota1.js +30 -0
- package/src/paraglide/messages/billing_amount.js +29 -0
- package/src/paraglide/messages/billing_checkoutcreatefailed2.js +30 -0
- package/src/paraglide/messages/billing_chooseplantitle2.js +30 -0
- package/src/paraglide/messages/billing_comingsoon1.js +30 -0
- package/src/paraglide/messages/billing_currencylabel1.js +30 -0
- package/src/paraglide/messages/billing_currentplan1.js +30 -0
- package/src/paraglide/messages/billing_date.js +29 -0
- package/src/paraglide/messages/billing_expiresat1.js +30 -0
- package/src/paraglide/messages/billing_featureaiquota2.js +30 -0
- package/src/paraglide/messages/billing_featureauditlog2.js +30 -0
- package/src/paraglide/messages/billing_featurebyokai2.js +30 -0
- package/src/paraglide/messages/billing_featurehostedai2.js +30 -0
- package/src/paraglide/messages/billing_featurelargepagesize3.js +30 -0
- package/src/paraglide/messages/billing_featuremultiprovider2.js +30 -0
- package/src/paraglide/messages/billing_featuresso1.js +30 -0
- package/src/paraglide/messages/billing_free.js +29 -0
- package/src/paraglide/messages/billing_freedescription1.js +30 -0
- package/src/paraglide/messages/billing_freeplan1.js +30 -0
- package/src/paraglide/messages/billing_gotologin2.js +30 -0
- package/src/paraglide/messages/billing_invoicehistory1.js +30 -0
- package/src/paraglide/messages/billing_later.js +29 -0
- package/src/paraglide/messages/billing_loginbenefit11.js +30 -0
- package/src/paraglide/messages/billing_loginbenefit21.js +30 -0
- package/src/paraglide/messages/billing_loginbenefit31.js +30 -0
- package/src/paraglide/messages/billing_logindescription1.js +30 -0
- package/src/paraglide/messages/billing_logintounlock2.js +30 -0
- package/src/paraglide/messages/billing_logintounlockfeature3.js +30 -0
- package/src/paraglide/messages/billing_managebilling1.js +30 -0
- package/src/paraglide/messages/billing_maxseats1.js +30 -0
- package/src/paraglide/messages/billing_morefeatures1.js +30 -0
- package/src/paraglide/messages/billing_needhigherplan2.js +30 -0
- package/src/paraglide/messages/billing_noinvoices1.js +30 -0
- package/src/paraglide/messages/billing_openbrowserfailed2.js +30 -0
- package/src/paraglide/messages/billing_paid.js +29 -0
- package/src/paraglide/messages/billing_permonth1.js +30 -0
- package/src/paraglide/messages/billing_planname1.js +30 -0
- package/src/paraglide/messages/billing_portalopenfailed2.js +30 -0
- package/src/paraglide/messages/billing_pricing_freedesc1.js +30 -0
- package/src/paraglide/messages/billing_pricing_startfree1.js +30 -0
- package/src/paraglide/messages/billing_pricing_viewpro1.js +30 -0
- package/src/paraglide/messages/billing_requireslogin1.js +30 -0
- package/src/paraglide/messages/billing_saasonly1.js +30 -0
- package/src/paraglide/messages/billing_seatsadd1.js +30 -0
- package/src/paraglide/messages/billing_seatsaddoncount2.js +30 -0
- package/src/paraglide/messages/billing_seatsbase1.js +30 -0
- package/src/paraglide/messages/billing_seatsbuycta2.js +30 -0
- package/src/paraglide/messages/billing_seatscheckoutredirect2.js +30 -0
- package/src/paraglide/messages/billing_seatsconfirm1.js +30 -0
- package/src/paraglide/messages/billing_seatsfloorhint2.js +30 -0
- package/src/paraglide/messages/billing_seatsgobilling2.js +30 -0
- package/src/paraglide/messages/billing_seatsmanager_success1.js +30 -0
- package/src/paraglide/messages/billing_seatsmanager_title1.js +30 -0
- package/src/paraglide/messages/billing_seatspaymentunavailable2.js +30 -0
- package/src/paraglide/messages/billing_seatsprorationhint2.js +30 -0
- package/src/paraglide/messages/billing_seatsremove1.js +30 -0
- package/src/paraglide/messages/billing_seatsunitprice2.js +30 -0
- package/src/paraglide/messages/billing_seatsunlimited1.js +30 -0
- package/src/paraglide/messages/billing_seatsupgradecta2.js +30 -0
- package/src/paraglide/messages/billing_seatsusage1.js +30 -0
- package/src/paraglide/messages/billing_seatsusedlabel2.js +30 -0
- package/src/paraglide/messages/billing_starttrial1.js +30 -0
- package/src/paraglide/messages/billing_status.js +29 -0
- package/src/paraglide/messages/billing_statuslabel1.js +30 -0
- package/src/paraglide/messages/billing_title.js +29 -0
- package/src/paraglide/messages/billing_trialdescription1.js +30 -0
- package/src/paraglide/messages/billing_trialuntil1.js +30 -0
- package/src/paraglide/messages/billing_unknownerror1.js +30 -0
- package/src/paraglide/messages/billing_unpaid.js +29 -0
- package/src/paraglide/messages/billing_upgradetopro2.js +30 -0
- package/src/paraglide/messages/billing_view.js +29 -0
- package/src/paraglide/messages/calendar_weekdays.js +29 -0
- package/src/paraglide/messages/canvas_emptyhint1.js +30 -0
- package/src/paraglide/messages/chat_actions_attach.js +29 -0
- package/src/paraglide/messages/chat_actions_cancel.js +29 -0
- package/src/paraglide/messages/chat_actions_codemode1.js +30 -0
- package/src/paraglide/messages/chat_actions_codemodeunavailable2.js +30 -0
- package/src/paraglide/messages/chat_actions_copied.js +29 -0
- package/src/paraglide/messages/chat_actions_copy.js +29 -0
- package/src/paraglide/messages/chat_actions_copyfailed1.js +30 -0
- package/src/paraglide/messages/chat_actions_disablecodemode2.js +30 -0
- package/src/paraglide/messages/chat_actions_disablethinking1.js +30 -0
- package/src/paraglide/messages/chat_actions_disablewebsearch2.js +30 -0
- package/src/paraglide/messages/chat_actions_enablecodemode2.js +30 -0
- package/src/paraglide/messages/chat_actions_enablethinking1.js +30 -0
- package/src/paraglide/messages/chat_actions_enablewebsearch2.js +30 -0
- package/src/paraglide/messages/chat_actions_fork.js +29 -0
- package/src/paraglide/messages/chat_actions_menu.js +29 -0
- package/src/paraglide/messages/chat_actions_menulabel1.js +30 -0
- package/src/paraglide/messages/chat_actions_moreactions1.js +30 -0
- package/src/paraglide/messages/chat_actions_moreoptions1.js +30 -0
- package/src/paraglide/messages/chat_actions_openmenu1.js +30 -0
- package/src/paraglide/messages/chat_actions_regenerate.js +29 -0
- package/src/paraglide/messages/chat_actions_sendmessage1.js +30 -0
- package/src/paraglide/messages/chat_actions_stop.js +29 -0
- package/src/paraglide/messages/chat_actions_stopmessage1.js +30 -0
- package/src/paraglide/messages/chat_actions_thinking.js +29 -0
- package/src/paraglide/messages/chat_actions_voiceinput1.js +30 -0
- package/src/paraglide/messages/chat_actions_websearch1.js +30 -0
- package/src/paraglide/messages/chat_agentmode_agent1.js +30 -0
- package/src/paraglide/messages/chat_agentmode_auto1.js +30 -0
- package/src/paraglide/messages/chat_agentmode_label1.js +30 -0
- package/src/paraglide/messages/chat_agentmode_placeholder1.js +30 -0
- package/src/paraglide/messages/chat_agentmode_plan1.js +30 -0
- package/src/paraglide/messages/chat_agentselector_default1.js +30 -0
- package/src/paraglide/messages/chat_agentselector_placeholder1.js +30 -0
- package/src/paraglide/messages/chat_agentselector_switchconfirm2.js +30 -0
- package/src/paraglide/messages/chat_agentselector_switchconfirmdesc3.js +30 -0
- package/src/paraglide/messages/chat_agentselector_switchconfirmtitle3.js +30 -0
- package/src/paraglide/messages/chat_aikeyrequired2.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_build1.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_describe1.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_enterfullchat3.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_generate1.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_gotoconfig3.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_launch1.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_notconfigured2.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_placeholder1.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_placeholdernotconfigured3.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_requestfailed2.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_subtitle1.js +30 -0
- package/src/paraglide/messages/chat_aiprompt_thinking1.js +30 -0
- package/src/paraglide/messages/chat_aria_aiconversation1.js +30 -0
- package/src/paraglide/messages/chat_aria_aimessage1.js +30 -0
- package/src/paraglide/messages/chat_aria_messagelog1.js +30 -0
- package/src/paraglide/messages/chat_citations_citation.js +29 -0
- package/src/paraglide/messages/chat_citations_domains_163_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_baidu_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_bilibili_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_bing_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_douyin_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_jianshu_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_qq_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_sina_com_cn.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_sohu_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_weibo_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_wikipedia_org.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_xiaohongshu_com.js +30 -0
- package/src/paraglide/messages/chat_citations_domains_zhihu_com.js +30 -0
- package/src/paraglide/messages/chat_citations_empty.js +29 -0
- package/src/paraglide/messages/chat_citations_emptydesc1.js +30 -0
- package/src/paraglide/messages/chat_citations_hidesnippet1.js +30 -0
- package/src/paraglide/messages/chat_citations_openinnewtab3.js +30 -0
- package/src/paraglide/messages/chat_citations_showsnippet1.js +30 -0
- package/src/paraglide/messages/chat_citations_source.js +29 -0
- package/src/paraglide/messages/chat_citations_sourcecount1.js +30 -0
- package/src/paraglide/messages/chat_citations_sourceexcerpt1.js +30 -0
- package/src/paraglide/messages/chat_citations_sourcemetadata1.js +30 -0
- package/src/paraglide/messages/chat_citations_title.js +29 -0
- package/src/paraglide/messages/chat_citations_viewcitation1.js +30 -0
- package/src/paraglide/messages/chat_code_changeset.js +29 -0
- package/src/paraglide/messages/chat_code_clearterminal1.js +30 -0
- package/src/paraglide/messages/chat_code_filedetail1.js +30 -0
- package/src/paraglide/messages/chat_code_files.js +29 -0
- package/src/paraglide/messages/chat_code_loadingfiles1.js +30 -0
- package/src/paraglide/messages/chat_code_nochanges1.js +30 -0
- package/src/paraglide/messages/chat_code_nofiles1.js +30 -0
- package/src/paraglide/messages/chat_code_noterminal1.js +30 -0
- package/src/paraglide/messages/chat_code_preview.js +29 -0
- package/src/paraglide/messages/chat_code_previewempty1.js +30 -0
- package/src/paraglide/messages/chat_code_terminal.js +29 -0
- package/src/paraglide/messages/chat_code_terminalhelp1.js +30 -0
- package/src/paraglide/messages/chat_code_uploaderror1.js +30 -0
- package/src/paraglide/messages/chat_code_uploadsuccess1.js +30 -0
- package/src/paraglide/messages/chat_context_add.js +29 -0
- package/src/paraglide/messages/chat_context_knowledgebase1.js +30 -0
- package/src/paraglide/messages/chat_context_remove.js +29 -0
- package/src/paraglide/messages/chat_context_selected.js +29 -0
- package/src/paraglide/messages/chat_context_selectedmobile1.js +30 -0
- package/src/paraglide/messages/chat_context_users.js +29 -0
- package/src/paraglide/messages/chat_empty_createnew1.js +30 -0
- package/src/paraglide/messages/chat_empty_noconversations1.js +30 -0
- package/src/paraglide/messages/chat_empty_notfound1.js +30 -0
- package/src/paraglide/messages/chat_empty_tryothersearch2.js +30 -0
- package/src/paraglide/messages/chat_emptystate_description1.js +30 -0
- package/src/paraglide/messages/chat_emptystate_newmessage2.js +30 -0
- package/src/paraglide/messages/chat_emptystate_title1.js +30 -0
- package/src/paraglide/messages/chat_error_translate.js +29 -0
- package/src/paraglide/messages/chat_error_translating.js +29 -0
- package/src/paraglide/messages/chat_fork_at_message.js +29 -0
- package/src/paraglide/messages/chat_globalchat_close1.js +30 -0
- package/src/paraglide/messages/chat_globalchat_confighint2.js +30 -0
- package/src/paraglide/messages/chat_globalchat_draftrestored2.js +30 -0
- package/src/paraglide/messages/chat_globalchat_notconfigured2.js +30 -0
- package/src/paraglide/messages/chat_globalchat_openinharness3.js +30 -0
- package/src/paraglide/messages/chat_globalchat_placeholder1.js +30 -0
- package/src/paraglide/messages/chat_globalchat_placeholdernotconfigured3.js +30 -0
- package/src/paraglide/messages/chat_globalchat_requestfailed2.js +30 -0
- package/src/paraglide/messages/chat_globalchat_send1.js +30 -0
- package/src/paraglide/messages/chat_globalchat_sending1.js +30 -0
- package/src/paraglide/messages/chat_globalchat_thinking1.js +30 -0
- package/src/paraglide/messages/chat_globalchat_title1.js +30 -0
- package/src/paraglide/messages/chat_gotosettings2.js +30 -0
- package/src/paraglide/messages/chat_groups_earlier.js +29 -0
- package/src/paraglide/messages/chat_groups_thisweek1.js +30 -0
- package/src/paraglide/messages/chat_groups_today.js +29 -0
- package/src/paraglide/messages/chat_groups_yesterday.js +29 -0
- package/src/paraglide/messages/chat_history_archive.js +29 -0
- package/src/paraglide/messages/chat_history_conversationcount1.js +30 -0
- package/src/paraglide/messages/chat_history_deletedescription1.js +30 -0
- package/src/paraglide/messages/chat_history_deletetitle1.js +30 -0
- package/src/paraglide/messages/chat_history_edittitle1.js +30 -0
- package/src/paraglide/messages/chat_history_messagecount1.js +30 -0
- package/src/paraglide/messages/chat_history_moreactions1.js +30 -0
- package/src/paraglide/messages/chat_history_rename.js +29 -0
- package/src/paraglide/messages/chat_history_searcharialabel2.js +30 -0
- package/src/paraglide/messages/chat_history_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/chat_history_selectconversation1.js +30 -0
- package/src/paraglide/messages/chat_history_title.js +29 -0
- package/src/paraglide/messages/chat_history_unarchive.js +29 -0
- package/src/paraglide/messages/chat_interrupt_approve.js +29 -0
- package/src/paraglide/messages/chat_interrupt_descriptionend1.js +30 -0
- package/src/paraglide/messages/chat_interrupt_descriptionstart1.js +30 -0
- package/src/paraglide/messages/chat_interrupt_reject.js +29 -0
- package/src/paraglide/messages/chat_interrupt_title.js +29 -0
- package/src/paraglide/messages/chat_model_capabilities_audio.js +29 -0
- package/src/paraglide/messages/chat_model_capabilities_reasoning.js +29 -0
- package/src/paraglide/messages/chat_model_capabilities_text.js +29 -0
- package/src/paraglide/messages/chat_model_capabilities_tools.js +29 -0
- package/src/paraglide/messages/chat_model_capabilities_vision.js +29 -0
- package/src/paraglide/messages/chat_model_loading.js +29 -0
- package/src/paraglide/messages/chat_model_local.js +29 -0
- package/src/paraglide/messages/chat_model_none.js +29 -0
- package/src/paraglide/messages/chat_model_select.js +29 -0
- package/src/paraglide/messages/chat_newconversation1.js +30 -0
- package/src/paraglide/messages/chat_prompt_enterhint1.js +30 -0
- package/src/paraglide/messages/chat_prompt_input.js +29 -0
- package/src/paraglide/messages/chat_prompt_inputlabel1.js +30 -0
- package/src/paraglide/messages/chat_prompt_placeholder.js +29 -0
- package/src/paraglide/messages/chat_prompt_submitlabel1.js +30 -0
- package/src/paraglide/messages/chat_promptactions_clonescreenshot2.js +30 -0
- package/src/paraglide/messages/chat_promptactions_importfigma2.js +30 -0
- package/src/paraglide/messages/chat_promptactions_landingpage2.js +30 -0
- package/src/paraglide/messages/chat_promptactions_uploadproject2.js +30 -0
- package/src/paraglide/messages/chat_sandbox_created.js +29 -0
- package/src/paraglide/messages/chat_sandbox_filechanged1.js +30 -0
- package/src/paraglide/messages/chat_sandbox_filecreated1.js +30 -0
- package/src/paraglide/messages/chat_sandbox_filedeleted1.js +30 -0
- package/src/paraglide/messages/chat_sandbox_morechanges1.js +30 -0
- package/src/paraglide/messages/chat_sandbox_nodiff1.js +30 -0
- package/src/paraglide/messages/chat_sandbox_resumed.js +29 -0
- package/src/paraglide/messages/chat_searchunavailable1.js +30 -0
- package/src/paraglide/messages/chat_slashcommands_apply1.js +30 -0
- package/src/paraglide/messages/chat_slashcommands_loading1.js +30 -0
- package/src/paraglide/messages/chat_slashcommands_noskills2.js +30 -0
- package/src/paraglide/messages/chat_slashcommands_placeholder1.js +30 -0
- package/src/paraglide/messages/chat_streaming_label.js +29 -0
- package/src/paraglide/messages/chat_thinking_elapsed.js +29 -0
- package/src/paraglide/messages/chat_thinking_placeholder.js +45 -0
- package/src/paraglide/messages/chat_thinking_process.js +29 -0
- package/src/paraglide/messages/chat_thinking_seconds.js +29 -0
- package/src/paraglide/messages/chat_thinking_title.js +29 -0
- package/src/paraglide/messages/chat_title.js +29 -0
- package/src/paraglide/messages/chat_toolcall_error1.js +30 -0
- package/src/paraglide/messages/chat_toolcall_pending1.js +30 -0
- package/src/paraglide/messages/chat_toolcall_ready1.js +30 -0
- package/src/paraglide/messages/chat_toolresult_error1.js +30 -0
- package/src/paraglide/messages/chat_toolresult_running1.js +30 -0
- package/src/paraglide/messages/chat_toolresult_success1.js +30 -0
- package/src/paraglide/messages/chat_workspace_branch.js +29 -0
- package/src/paraglide/messages/chat_workspace_connectgithub1.js +30 -0
- package/src/paraglide/messages/chat_workspace_fsapunavailable1.js +30 -0
- package/src/paraglide/messages/chat_workspace_github.js +29 -0
- package/src/paraglide/messages/chat_workspace_githubconnect1.js +30 -0
- package/src/paraglide/messages/chat_workspace_local.js +29 -0
- package/src/paraglide/messages/chat_workspace_localhint1.js +30 -0
- package/src/paraglide/messages/chat_workspace_private.js +29 -0
- package/src/paraglide/messages/chat_workspace_selectbranch1.js +30 -0
- package/src/paraglide/messages/chat_workspace_selectfolder1.js +30 -0
- package/src/paraglide/messages/chat_workspace_selectfoldererror2.js +30 -0
- package/src/paraglide/messages/chat_workspace_selectrepo1.js +30 -0
- package/src/paraglide/messages/comment_accept.js +29 -0
- package/src/paraglide/messages/comment_accepted.js +29 -0
- package/src/paraglide/messages/comment_collapse.js +29 -0
- package/src/paraglide/messages/comment_counttooltip1.js +30 -0
- package/src/paraglide/messages/comment_ignore.js +29 -0
- package/src/paraglide/messages/comment_modified.js +29 -0
- package/src/paraglide/messages/comment_nocomments1.js +30 -0
- package/src/paraglide/messages/comment_replycomingsoon2.js +30 -0
- package/src/paraglide/messages/comment_reviewcomingsoon2.js +30 -0
- package/src/paraglide/messages/comment_subtabcomment1.js +30 -0
- package/src/paraglide/messages/comment_subtabreview1.js +30 -0
- package/src/paraglide/messages/comment_unignore.js +29 -0
- package/src/paraglide/messages/common_auth_loginfailed1.js +30 -0
- package/src/paraglide/messages/common_auth_loginsuccess1.js +30 -0
- package/src/paraglide/messages/common_auth_unknownerror1.js +30 -0
- package/src/paraglide/messages/common_button_back.js +29 -0
- package/src/paraglide/messages/common_button_cancel.js +29 -0
- package/src/paraglide/messages/common_button_close.js +29 -0
- package/src/paraglide/messages/common_button_confirm.js +29 -0
- package/src/paraglide/messages/common_button_create.js +29 -0
- package/src/paraglide/messages/common_button_delete.js +29 -0
- package/src/paraglide/messages/common_button_edit.js +29 -0
- package/src/paraglide/messages/common_button_next.js +29 -0
- package/src/paraglide/messages/common_button_remove.js +29 -0
- package/src/paraglide/messages/common_button_reset.js +29 -0
- package/src/paraglide/messages/common_button_save.js +29 -0
- package/src/paraglide/messages/common_button_search.js +29 -0
- package/src/paraglide/messages/common_button_submit.js +29 -0
- package/src/paraglide/messages/common_cancel.js +29 -0
- package/src/paraglide/messages/common_changelog_backtolist2.js +30 -0
- package/src/paraglide/messages/common_changelog_confirm_invalid.js +29 -0
- package/src/paraglide/messages/common_changelog_confirm_invaliddesc1.js +30 -0
- package/src/paraglide/messages/common_changelog_confirm_resubscribe.js +29 -0
- package/src/paraglide/messages/common_changelog_confirm_success.js +29 -0
- package/src/paraglide/messages/common_changelog_confirm_successdesc1.js +30 -0
- package/src/paraglide/messages/common_changelog_confirm_view.js +29 -0
- package/src/paraglide/messages/common_changelog_description.js +29 -0
- package/src/paraglide/messages/common_changelog_entries.js +29 -0
- package/src/paraglide/messages/common_changelog_entriesupdated1.js +30 -0
- package/src/paraglide/messages/common_changelog_nomatch1.js +30 -0
- package/src/paraglide/messages/common_changelog_nomatchhint2.js +30 -0
- package/src/paraglide/messages/common_changelog_requiresaction1.js +30 -0
- package/src/paraglide/messages/common_changelog_sdkgroups_allblue_sdk1.js +30 -0
- package/src/paraglide/messages/common_changelog_sdkgroups_core_sdk1.js +30 -0
- package/src/paraglide/messages/common_changelog_sdkgroups_tanstack_sdk1.js +30 -0
- package/src/paraglide/messages/common_changelog_sdkversions1.js +30 -0
- package/src/paraglide/messages/common_changelog_subscribe_placeholder.js +29 -0
- package/src/paraglide/messages/common_changelog_subscribe_submit.js +29 -0
- package/src/paraglide/messages/common_changelog_subscribe_subtitle.js +29 -0
- package/src/paraglide/messages/common_changelog_subscribe_title.js +29 -0
- package/src/paraglide/messages/common_changelog_subscribealready1.js +30 -0
- package/src/paraglide/messages/common_changelog_subscribecheckemail2.js +30 -0
- package/src/paraglide/messages/common_changelog_subscribefailed1.js +30 -0
- package/src/paraglide/messages/common_changelog_subscribeinvalidemail2.js +30 -0
- package/src/paraglide/messages/common_changelog_tags_all.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_breaking.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_design.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_docs.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_feat.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_fix.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_improvement.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_perf.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_refactor.js +29 -0
- package/src/paraglide/messages/common_changelog_tags_security.js +29 -0
- package/src/paraglide/messages/common_changelog_title.js +29 -0
- package/src/paraglide/messages/common_command_createconversation1.js +30 -0
- package/src/paraglide/messages/common_command_createprd1.js +30 -0
- package/src/paraglide/messages/common_command_createstory1.js +30 -0
- package/src/paraglide/messages/common_command_empty.js +29 -0
- package/src/paraglide/messages/common_command_gotoacceptance1.js +30 -0
- package/src/paraglide/messages/common_command_gotoagents1.js +30 -0
- package/src/paraglide/messages/common_command_gotoanyhub1.js +30 -0
- package/src/paraglide/messages/common_command_gotobugs1.js +30 -0
- package/src/paraglide/messages/common_command_gotochat1.js +30 -0
- package/src/paraglide/messages/common_command_gotodashboard1.js +30 -0
- package/src/paraglide/messages/common_command_gotodebrief1.js +30 -0
- package/src/paraglide/messages/common_command_gotodesign1.js +30 -0
- package/src/paraglide/messages/common_command_gotoinspiration1.js +30 -0
- package/src/paraglide/messages/common_command_gotoknowledge1.js +30 -0
- package/src/paraglide/messages/common_command_gotoprd1.js +30 -0
- package/src/paraglide/messages/common_command_gotosettings1.js +30 -0
- package/src/paraglide/messages/common_command_gotostories1.js +30 -0
- package/src/paraglide/messages/common_command_gototags1.js +30 -0
- package/src/paraglide/messages/common_command_gototestcases2.js +30 -0
- package/src/paraglide/messages/common_command_gotoworkspaces1.js +30 -0
- package/src/paraglide/messages/common_command_groupaction1.js +30 -0
- package/src/paraglide/messages/common_command_groupnavigation1.js +30 -0
- package/src/paraglide/messages/common_command_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/common_command_signout1.js +30 -0
- package/src/paraglide/messages/common_command_toggletheme1.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_legendless2.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_legendmore2.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_level1.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_monthsuffix2.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_operations1.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_recent121.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_title1.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_totalcount2.js +30 -0
- package/src/paraglide/messages/common_contributiongraph_yearprefix2.js +30 -0
- package/src/paraglide/messages/common_docs_title.js +29 -0
- package/src/paraglide/messages/common_email_unsubscribe_invalid.js +29 -0
- package/src/paraglide/messages/common_email_unsubscribe_invaliddesc1.js +30 -0
- package/src/paraglide/messages/common_email_unsubscribe_login.js +29 -0
- package/src/paraglide/messages/common_email_unsubscribe_manage.js +29 -0
- package/src/paraglide/messages/common_email_unsubscribe_success.js +29 -0
- package/src/paraglide/messages/common_email_unsubscribe_successdesc1.js +30 -0
- package/src/paraglide/messages/common_email_unsubscribe_transactionalnote1.js +30 -0
- package/src/paraglide/messages/common_errorpage_error1.js +30 -0
- package/src/paraglide/messages/common_errorpage_errordesc2.js +30 -0
- package/src/paraglide/messages/common_errorpage_godashboard2.js +30 -0
- package/src/paraglide/messages/common_errorpage_gohome2.js +30 -0
- package/src/paraglide/messages/common_errorpage_gologin2.js +30 -0
- package/src/paraglide/messages/common_errorpage_loginrequired2.js +30 -0
- package/src/paraglide/messages/common_errorpage_loginrequireddesc3.js +30 -0
- package/src/paraglide/messages/common_errorpage_notfound2.js +30 -0
- package/src/paraglide/messages/common_errorpage_notfounddesc3.js +30 -0
- package/src/paraglide/messages/common_form_add.js +29 -0
- package/src/paraglide/messages/common_form_cancel.js +29 -0
- package/src/paraglide/messages/common_form_empty.js +29 -0
- package/src/paraglide/messages/common_form_invalidemail1.js +30 -0
- package/src/paraglide/messages/common_form_invitationcodeformat2.js +30 -0
- package/src/paraglide/messages/common_form_invitationcoderequired2.js +30 -0
- package/src/paraglide/messages/common_form_operationfailed1.js +30 -0
- package/src/paraglide/messages/common_form_passwordmax321.js +30 -0
- package/src/paraglide/messages/common_form_passwordmin1.js +30 -0
- package/src/paraglide/messages/common_form_passwordmin81.js +30 -0
- package/src/paraglide/messages/common_form_passwordmismatch1.js +30 -0
- package/src/paraglide/messages/common_form_passwordneeddigit2.js +30 -0
- package/src/paraglide/messages/common_form_passwordneedletter2.js +30 -0
- package/src/paraglide/messages/common_form_passwordnotempty2.js +30 -0
- package/src/paraglide/messages/common_form_projectnamerequired2.js +30 -0
- package/src/paraglide/messages/common_form_projectrequired1.js +30 -0
- package/src/paraglide/messages/common_form_required.js +29 -0
- package/src/paraglide/messages/common_form_search.js +29 -0
- package/src/paraglide/messages/common_form_select.js +29 -0
- package/src/paraglide/messages/common_form_selectdate1.js +30 -0
- package/src/paraglide/messages/common_form_storytitlerequired2.js +30 -0
- package/src/paraglide/messages/common_form_submit.js +29 -0
- package/src/paraglide/messages/common_form_usernamecharset1.js +30 -0
- package/src/paraglide/messages/common_form_usernamemin31.js +30 -0
- package/src/paraglide/messages/common_form_workspacerequired1.js +30 -0
- package/src/paraglide/messages/common_hotkey_title.js +29 -0
- package/src/paraglide/messages/common_iconpicker_categoryanimals2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_categoryfoodbeverage3.js +30 -0
- package/src/paraglide/messages/common_iconpicker_categorygaming2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_categoryhome2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_categorynature2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_categorypeople2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_categoryseasons2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_labmore2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_noresults2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_recent1.js +30 -0
- package/src/paraglide/messages/common_iconpicker_resultcount2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_searchplaceholder2.js +30 -0
- package/src/paraglide/messages/common_iconpicker_select1.js +30 -0
- package/src/paraglide/messages/common_iconpicker_standard1.js +30 -0
- package/src/paraglide/messages/common_languageswitcher_en1.js +30 -0
- package/src/paraglide/messages/common_languageswitcher_switch1.js +30 -0
- package/src/paraglide/messages/common_languageswitcher_zh1.js +30 -0
- package/src/paraglide/messages/common_loading.js +29 -0
- package/src/paraglide/messages/common_nameconfirm_cancel1.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_clicktocopy3.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_confirmdelete2.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_copied1.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_deleting1.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_inputinstruction2.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_inputplaceholder2.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_invalidname2.js +30 -0
- package/src/paraglide/messages/common_nameconfirm_operationfailed2.js +30 -0
- package/src/paraglide/messages/common_nav_acceptance.js +29 -0
- package/src/paraglide/messages/common_nav_agents.js +29 -0
- package/src/paraglide/messages/common_nav_bookmarks.js +29 -0
- package/src/paraglide/messages/common_nav_bug.js +29 -0
- package/src/paraglide/messages/common_nav_compliance.js +29 -0
- package/src/paraglide/messages/common_nav_debrief.js +29 -0
- package/src/paraglide/messages/common_nav_design.js +29 -0
- package/src/paraglide/messages/common_nav_dictionary.js +29 -0
- package/src/paraglide/messages/common_nav_harness.js +29 -0
- package/src/paraglide/messages/common_nav_inspiration.js +29 -0
- package/src/paraglide/messages/common_nav_law.js +29 -0
- package/src/paraglide/messages/common_nav_prd.js +29 -0
- package/src/paraglide/messages/common_nav_prototypeboard1.js +30 -0
- package/src/paraglide/messages/common_nav_story.js +29 -0
- package/src/paraglide/messages/common_nav_summary.js +29 -0
- package/src/paraglide/messages/common_nav_summarybadge1.js +30 -0
- package/src/paraglide/messages/common_nav_testcase.js +29 -0
- package/src/paraglide/messages/common_nav_workspace.js +29 -0
- package/src/paraglide/messages/common_navfloat_exitfullscreen2.js +32 -0
- package/src/paraglide/messages/common_navfloat_showheader2.js +32 -0
- package/src/paraglide/messages/common_placeholder_developing.js +29 -0
- package/src/paraglide/messages/common_pr_create.js +29 -0
- package/src/paraglide/messages/common_save.js +29 -0
- package/src/paraglide/messages/common_settings_language.js +29 -0
- package/src/paraglide/messages/common_settings_languagechanged1.js +30 -0
- package/src/paraglide/messages/common_settings_languagechangefailed2.js +30 -0
- package/src/paraglide/messages/common_settings_languagedescription1.js +30 -0
- package/src/paraglide/messages/common_share_copylink1.js +30 -0
- package/src/paraglide/messages/common_share_expired.js +29 -0
- package/src/paraglide/messages/common_share_favorite.js +29 -0
- package/src/paraglide/messages/common_share_favoriteadded1.js +30 -0
- package/src/paraglide/messages/common_share_favorited.js +29 -0
- package/src/paraglide/messages/common_share_favoriteremoved1.js +30 -0
- package/src/paraglide/messages/common_share_linkcopied1.js +30 -0
- package/src/paraglide/messages/common_share_loaderror1.js +30 -0
- package/src/paraglide/messages/common_share_loadfailed1.js +30 -0
- package/src/paraglide/messages/common_share_loginrequired1.js +30 -0
- package/src/paraglide/messages/common_share_notfounddescription2.js +30 -0
- package/src/paraglide/messages/common_share_notfoundtitle2.js +30 -0
- package/src/paraglide/messages/common_share_retry.js +29 -0
- package/src/paraglide/messages/common_sidebar_anyhub_title1.js +30 -0
- package/src/paraglide/messages/common_sidebar_collapsesubmenu2.js +30 -0
- package/src/paraglide/messages/common_sidebar_expandsubmenu2.js +30 -0
- package/src/paraglide/messages/common_sidebar_knowledge_create.js +29 -0
- package/src/paraglide/messages/common_sidebar_knowledge_general.js +29 -0
- package/src/paraglide/messages/common_sidebar_knowledge_title.js +29 -0
- package/src/paraglide/messages/common_sidebar_usermenu_admin1.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_login1.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_loginsaas3.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_logout1.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_logouttoguest3.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_settings1.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_teammanagement2.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_title1.js +30 -0
- package/src/paraglide/messages/common_sidebar_usermenu_upgradepro2.js +30 -0
- package/src/paraglide/messages/common_sidebar_workspace_create.js +29 -0
- package/src/paraglide/messages/common_sidebar_workspace_home.js +29 -0
- package/src/paraglide/messages/common_sidebar_workspace_title.js +29 -0
- package/src/paraglide/messages/common_status_deleting.js +29 -0
- package/src/paraglide/messages/common_status_empty.js +29 -0
- package/src/paraglide/messages/common_status_error.js +29 -0
- package/src/paraglide/messages/common_status_loading.js +29 -0
- package/src/paraglide/messages/common_status_saving.js +29 -0
- package/src/paraglide/messages/common_status_success.js +29 -0
- package/src/paraglide/messages/common_timezone_all.js +29 -0
- package/src/paraglide/messages/common_timezone_common.js +29 -0
- package/src/paraglide/messages/common_timezone_notfound1.js +30 -0
- package/src/paraglide/messages/common_timezone_placeholder.js +29 -0
- package/src/paraglide/messages/common_timezone_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/common_translator_translating.js +29 -0
- package/src/paraglide/messages/composer_attach_button.js +29 -0
- package/src/paraglide/messages/composer_attach_imagesonly1.js +30 -0
- package/src/paraglide/messages/composer_attach_remove.js +29 -0
- package/src/paraglide/messages/dashboard_activityfeed_empty1.js +30 -0
- package/src/paraglide/messages/dashboard_activityfeed_title1.js +30 -0
- package/src/paraglide/messages/dashboard_askai_overview1.js +30 -0
- package/src/paraglide/messages/dashboard_askai_overview_prompt1.js +30 -0
- package/src/paraglide/messages/dashboard_askai_todo1.js +30 -0
- package/src/paraglide/messages/dashboard_askai_todo_prompt1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_activity.js +29 -0
- package/src/paraglide/messages/dashboard_dashboard_confirmdeletedesc2.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_confirmdeletetitle2.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_daysago1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_deleteprd1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_hoursago1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_justnow1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_minutesago1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_newprd1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_nodescription1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_nomatch1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_noprd1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_noprdhint2.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_quickentry1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_subtitle.js +29 -0
- package/src/paraglide/messages/dashboard_dashboard_teamfeaturecoming2.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_totalcount1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_updated24h.js +29 -0
- package/src/paraglide/messages/dashboard_dashboard_updatedat1.js +30 -0
- package/src/paraglide/messages/dashboard_dashboard_weeknew1.js +30 -0
- package/src/paraglide/messages/dashboard_quickactions_newprd4.js +30 -0
- package/src/paraglide/messages/dashboard_quickactions_viewcomments2.js +30 -0
- package/src/paraglide/messages/dashboard_stats_anyhubinstalled2.js +30 -0
- package/src/paraglide/messages/dashboard_stats_completedtoday1.js +30 -0
- package/src/paraglide/messages/dashboard_stats_prdtotal1.js +30 -0
- package/src/paraglide/messages/dashboard_stats_unreadcomments1.js +30 -0
- package/src/paraglide/messages/design_artboardversioninfo2.js +30 -0
- package/src/paraglide/messages/design_cancel.js +29 -0
- package/src/paraglide/messages/design_codepreview_copied1.js +30 -0
- package/src/paraglide/messages/design_codepreview_copy1.js +30 -0
- package/src/paraglide/messages/design_codepreview_selectlayer2.js +30 -0
- package/src/paraglide/messages/design_createdesign1.js +30 -0
- package/src/paraglide/messages/design_daysago1.js +30 -0
- package/src/paraglide/messages/design_deleteconfirm1.js +30 -0
- package/src/paraglide/messages/design_deleteconfirmdescription2.js +30 -0
- package/src/paraglide/messages/design_deleteconfirmtitle2.js +30 -0
- package/src/paraglide/messages/design_deletedesign1.js +30 -0
- package/src/paraglide/messages/design_deleteloading1.js +30 -0
- package/src/paraglide/messages/design_description.js +29 -0
- package/src/paraglide/messages/design_detail_code.js +29 -0
- package/src/paraglide/messages/design_detail_export.js +29 -0
- package/src/paraglide/messages/design_detail_layercount1.js +30 -0
- package/src/paraglide/messages/design_detail_layers.js +29 -0
- package/src/paraglide/messages/design_detail_notfound1.js +30 -0
- package/src/paraglide/messages/design_detail_preview.js +29 -0
- package/src/paraglide/messages/design_downloadsketchplugin2.js +30 -0
- package/src/paraglide/messages/design_emptydescription1.js +30 -0
- package/src/paraglide/messages/design_emptynoresults2.js +30 -0
- package/src/paraglide/messages/design_emptytitle1.js +30 -0
- package/src/paraglide/messages/design_exportpanel_empty1.js +30 -0
- package/src/paraglide/messages/design_exportpanel_title1.js +30 -0
- package/src/paraglide/messages/design_hoursago1.js +30 -0
- package/src/paraglide/messages/design_justnow1.js +30 -0
- package/src/paraglide/messages/design_loading.js +29 -0
- package/src/paraglide/messages/design_minutesago1.js +30 -0
- package/src/paraglide/messages/design_project_artboardversioninfo2.js +30 -0
- package/src/paraglide/messages/design_projectcard_artboardcount2.js +30 -0
- package/src/paraglide/messages/design_projectnotfound2.js +30 -0
- package/src/paraglide/messages/design_propertypanel_border1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_bottom1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_clicklayer2.js +30 -0
- package/src/paraglide/messages/design_propertypanel_cornerradius2.js +30 -0
- package/src/paraglide/messages/design_propertypanel_dimensions1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_fill1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_fontfamily2.js +30 -0
- package/src/paraglide/messages/design_propertypanel_fontsize2.js +30 -0
- package/src/paraglide/messages/design_propertypanel_left1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_right1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_shadow1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_spacing1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_text1.js +30 -0
- package/src/paraglide/messages/design_propertypanel_textcolor2.js +30 -0
- package/src/paraglide/messages/design_propertypanel_top1.js +30 -0
- package/src/paraglide/messages/design_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/design_sketchfile1.js +30 -0
- package/src/paraglide/messages/design_stats_totaltitle1.js +30 -0
- package/src/paraglide/messages/design_stats_updated24h.js +29 -0
- package/src/paraglide/messages/design_stats_weeklynew1.js +30 -0
- package/src/paraglide/messages/design_subtitle.js +29 -0
- package/src/paraglide/messages/design_title.js +29 -0
- package/src/paraglide/messages/design_updatedat1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_errors_connectfailed1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_errors_localfailed1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_errors_switchfailed1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_errors_timeout.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_errors_unknownerror1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_local_button.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_local_desc.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_local_title.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_saas_button.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_saas_desc.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_saas_title.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_button1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_cancel1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_connect1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_connecting1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_desc1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_dialogtitle2.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_labelfield2.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_labelplaceholder2.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_title1.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_selfhosted_urllabel2.js +30 -0
- package/src/paraglide/messages/desktop_onboarding_subtitle.js +29 -0
- package/src/paraglide/messages/desktop_onboarding_title.js +29 -0
- package/src/paraglide/messages/detail_contentplaceholder1.js +30 -0
- package/src/paraglide/messages/detail_deletedescription1.js +30 -0
- package/src/paraglide/messages/detail_deletetitle1.js +30 -0
- package/src/paraglide/messages/display_asc.js +29 -0
- package/src/paraglide/messages/display_desc.js +29 -0
- package/src/paraglide/messages/display_displayoptions1.js +30 -0
- package/src/paraglide/messages/display_extraoptions1.js +30 -0
- package/src/paraglide/messages/display_group.js +29 -0
- package/src/paraglide/messages/display_group_assignee.js +30 -0
- package/src/paraglide/messages/display_group_createdby1.js +30 -0
- package/src/paraglide/messages/display_group_labels.js +30 -0
- package/src/paraglide/messages/display_group_none.js +30 -0
- package/src/paraglide/messages/display_group_priority.js +30 -0
- package/src/paraglide/messages/display_group_project.js +30 -0
- package/src/paraglide/messages/display_group_state.js +30 -0
- package/src/paraglide/messages/display_order.js +29 -0
- package/src/paraglide/messages/display_order_created.js +30 -0
- package/src/paraglide/messages/display_order_duedate1.js +30 -0
- package/src/paraglide/messages/display_order_manual.js +30 -0
- package/src/paraglide/messages/display_order_priority.js +30 -0
- package/src/paraglide/messages/display_order_startdate1.js +30 -0
- package/src/paraglide/messages/display_order_updated.js +30 -0
- package/src/paraglide/messages/display_pagesize1.js +30 -0
- package/src/paraglide/messages/display_property_assignee.js +30 -0
- package/src/paraglide/messages/display_property_attachmentcount1.js +30 -0
- package/src/paraglide/messages/display_property_duedate1.js +30 -0
- package/src/paraglide/messages/display_property_id.js +30 -0
- package/src/paraglide/messages/display_property_labels.js +30 -0
- package/src/paraglide/messages/display_property_priority.js +30 -0
- package/src/paraglide/messages/display_property_project.js +30 -0
- package/src/paraglide/messages/display_property_startdate1.js +30 -0
- package/src/paraglide/messages/display_property_state.js +30 -0
- package/src/paraglide/messages/display_property_subcount1.js +30 -0
- package/src/paraglide/messages/display_showemptygroups2.js +30 -0
- package/src/paraglide/messages/display_showproperties1.js +30 -0
- package/src/paraglide/messages/display_showsubitems2.js +30 -0
- package/src/paraglide/messages/display_subgroup1.js +30 -0
- package/src/paraglide/messages/display_viewgrouping1.js +30 -0
- package/src/paraglide/messages/doceditor_contentplaceholder2.js +30 -0
- package/src/paraglide/messages/doceditor_saving1.js +30 -0
- package/src/paraglide/messages/doceditor_titleplaceholder2.js +30 -0
- package/src/paraglide/messages/docpanel_defaultwidth2.js +30 -0
- package/src/paraglide/messages/docpanel_placeholder1.js +30 -0
- package/src/paraglide/messages/docpanel_saving1.js +30 -0
- package/src/paraglide/messages/docpanel_title1.js +30 -0
- package/src/paraglide/messages/docpanel_wider1.js +30 -0
- package/src/paraglide/messages/editor_abbreviate.js +29 -0
- package/src/paraglide/messages/editor_abbreviate_text.js +30 -0
- package/src/paraglide/messages/editor_academic.js +29 -0
- package/src/paraglide/messages/editor_add.js +29 -0
- package/src/paraglide/messages/editor_add_emoji.js +30 -0
- package/src/paraglide/messages/editor_add_image.js +30 -0
- package/src/paraglide/messages/editor_add_mention.js +30 -0
- package/src/paraglide/messages/editor_add_or_delete_column.js +30 -0
- package/src/paraglide/messages/editor_add_or_delete_row.js +30 -0
- package/src/paraglide/messages/editor_add_summary.js +30 -0
- package/src/paraglide/messages/editor_adjust_tone.js +30 -0
- package/src/paraglide/messages/editor_ai_annotation.js +30 -0
- package/src/paraglide/messages/editor_ai_annotation_fill_error.js +30 -0
- package/src/paraglide/messages/editor_ai_annotation_fill_failed.js +30 -0
- package/src/paraglide/messages/editor_ai_assistant.js +30 -0
- package/src/paraglide/messages/editor_ai_image_not_supported.js +30 -0
- package/src/paraglide/messages/editor_ai_is_generating.js +30 -0
- package/src/paraglide/messages/editor_ai_request_failed.js +30 -0
- package/src/paraglide/messages/editor_alignment.js +29 -0
- package/src/paraglide/messages/editor_annotate.js +29 -0
- package/src/paraglide/messages/editor_app.js +29 -0
- package/src/paraglide/messages/editor_apply_link.js +30 -0
- package/src/paraglide/messages/editor_arabic.js +29 -0
- package/src/paraglide/messages/editor_ask_ai.js +30 -0
- package/src/paraglide/messages/editor_ask_ai_assistant.js +30 -0
- package/src/paraglide/messages/editor_background_color.js +30 -0
- package/src/paraglide/messages/editor_bidirectional_link.js +30 -0
- package/src/paraglide/messages/editor_blockquote.js +29 -0
- package/src/paraglide/messages/editor_blue.js +29 -0
- package/src/paraglide/messages/editor_blue_bg.js +30 -0
- package/src/paraglide/messages/editor_bold.js +29 -0
- package/src/paraglide/messages/editor_bottom_align.js +30 -0
- package/src/paraglide/messages/editor_brown.js +29 -0
- package/src/paraglide/messages/editor_brown_bg.js +30 -0
- package/src/paraglide/messages/editor_business.js +29 -0
- package/src/paraglide/messages/editor_cancel.js +29 -0
- package/src/paraglide/messages/editor_card_view.js +30 -0
- package/src/paraglide/messages/editor_casual.js +29 -0
- package/src/paraglide/messages/editor_center_align.js +30 -0
- package/src/paraglide/messages/editor_chen_jing.js +30 -0
- package/src/paraglide/messages/editor_chen_li.js +30 -0
- package/src/paraglide/messages/editor_chen_xue.js +30 -0
- package/src/paraglide/messages/editor_child_friendly.js +30 -0
- package/src/paraglide/messages/editor_chinese.js +29 -0
- package/src/paraglide/messages/editor_clear_all_content.js +30 -0
- package/src/paraglide/messages/editor_clear_column_content.js +30 -0
- package/src/paraglide/messages/editor_clear_content.js +30 -0
- package/src/paraglide/messages/editor_clear_row_content.js +30 -0
- package/src/paraglide/messages/editor_click_target.js +30 -0
- package/src/paraglide/messages/editor_click_to_show_options.js +30 -0
- package/src/paraglide/messages/editor_code.js +29 -0
- package/src/paraglide/messages/editor_code_block.js +30 -0
- package/src/paraglide/messages/editor_colloquial.js +29 -0
- package/src/paraglide/messages/editor_color.js +29 -0
- package/src/paraglide/messages/editor_column_actions.js +30 -0
- package/src/paraglide/messages/editor_column_move_down.js +30 -0
- package/src/paraglide/messages/editor_column_move_left.js +30 -0
- package/src/paraglide/messages/editor_column_move_right.js +30 -0
- package/src/paraglide/messages/editor_column_move_up.js +30 -0
- package/src/paraglide/messages/editor_column_sort_asc.js +30 -0
- package/src/paraglide/messages/editor_column_sort_desc.js +30 -0
- package/src/paraglide/messages/editor_complete_sentence.js +30 -0
- package/src/paraglide/messages/editor_component_id.js +30 -0
- package/src/paraglide/messages/editor_confident.js +29 -0
- package/src/paraglide/messages/editor_continue.js +29 -0
- package/src/paraglide/messages/editor_continue_from_above.js +34 -0
- package/src/paraglide/messages/editor_continue_writing.js +30 -0
- package/src/paraglide/messages/editor_convert_to.js +30 -0
- package/src/paraglide/messages/editor_convert_to_current.js +30 -0
- package/src/paraglide/messages/editor_copy_anchor_link.js +30 -0
- package/src/paraglide/messages/editor_copy_column.js +30 -0
- package/src/paraglide/messages/editor_copy_node.js +30 -0
- package/src/paraglide/messages/editor_copy_row.js +30 -0
- package/src/paraglide/messages/editor_copy_to_clipboard.js +30 -0
- package/src/paraglide/messages/editor_creative.js +29 -0
- package/src/paraglide/messages/editor_custom_knowledge_base.js +30 -0
- package/src/paraglide/messages/editor_dark.js +29 -0
- package/src/paraglide/messages/editor_daysago1.js +30 -0
- package/src/paraglide/messages/editor_decrease_indent.js +30 -0
- package/src/paraglide/messages/editor_default.js +29 -0
- package/src/paraglide/messages/editor_default_bg.js +30 -0
- package/src/paraglide/messages/editor_delete.js +29 -0
- package/src/paraglide/messages/editor_delete_column.js +30 -0
- package/src/paraglide/messages/editor_delete_node.js +30 -0
- package/src/paraglide/messages/editor_delete_row.js +30 -0
- package/src/paraglide/messages/editor_describe_need_to_ai.js +30 -0
- package/src/paraglide/messages/editor_dictionary_entry.js +30 -0
- package/src/paraglide/messages/editor_divider.js +29 -0
- package/src/paraglide/messages/editor_doc_not_found.js +30 -0
- package/src/paraglide/messages/editor_download_image.js +30 -0
- package/src/paraglide/messages/editor_drawing.js +29 -0
- package/src/paraglide/messages/editor_dutch.js +29 -0
- package/src/paraglide/messages/editor_edit.js +29 -0
- package/src/paraglide/messages/editor_element_and_editorroot_required.js +30 -0
- package/src/paraglide/messages/editor_element_not_in_editor_root.js +30 -0
- package/src/paraglide/messages/editor_emoji.js +29 -0
- package/src/paraglide/messages/editor_emoji_style.js +30 -0
- package/src/paraglide/messages/editor_emotional.js +29 -0
- package/src/paraglide/messages/editor_english.js +29 -0
- package/src/paraglide/messages/editor_excited.js +29 -0
- package/src/paraglide/messages/editor_expand.js +29 -0
- package/src/paraglide/messages/editor_expand_text.js +30 -0
- package/src/paraglide/messages/editor_finance_head.js +30 -0
- package/src/paraglide/messages/editor_fit_width.js +30 -0
- package/src/paraglide/messages/editor_fix_spelling_grammar.js +30 -0
- package/src/paraglide/messages/editor_focus.js +29 -0
- package/src/paraglide/messages/editor_formal.js +29 -0
- package/src/paraglide/messages/editor_french.js +29 -0
- package/src/paraglide/messages/editor_friendly.js +29 -0
- package/src/paraglide/messages/editor_generate.js +29 -0
- package/src/paraglide/messages/editor_german.js +29 -0
- package/src/paraglide/messages/editor_graphic_designer.js +30 -0
- package/src/paraglide/messages/editor_gray.js +29 -0
- package/src/paraglide/messages/editor_gray_bg.js +30 -0
- package/src/paraglide/messages/editor_green.js +29 -0
- package/src/paraglide/messages/editor_green_bg.js +30 -0
- package/src/paraglide/messages/editor_guest.js +29 -0
- package/src/paraglide/messages/editor_header_column.js +30 -0
- package/src/paraglide/messages/editor_header_row.js +30 -0
- package/src/paraglide/messages/editor_heading_1.js +30 -0
- package/src/paraglide/messages/editor_heading_2.js +30 -0
- package/src/paraglide/messages/editor_heading_3.js +30 -0
- package/src/paraglide/messages/editor_heading_4.js +30 -0
- package/src/paraglide/messages/editor_heading_5.js +30 -0
- package/src/paraglide/messages/editor_heading_6.js +30 -0
- package/src/paraglide/messages/editor_heading_view.js +30 -0
- package/src/paraglide/messages/editor_highlight.js +29 -0
- package/src/paraglide/messages/editor_highlight_color.js +30 -0
- package/src/paraglide/messages/editor_highlight_text.js +30 -0
- package/src/paraglide/messages/editor_hold_to_drag.js +30 -0
- package/src/paraglide/messages/editor_horizontal_divider.js +30 -0
- package/src/paraglide/messages/editor_hoursago1.js +30 -0
- package/src/paraglide/messages/editor_hr_specialist.js +30 -0
- package/src/paraglide/messages/editor_humorous.js +29 -0
- package/src/paraglide/messages/editor_image.js +29 -0
- package/src/paraglide/messages/editor_image_caption.js +30 -0
- package/src/paraglide/messages/editor_image_center_align.js +30 -0
- package/src/paraglide/messages/editor_image_left_align.js +30 -0
- package/src/paraglide/messages/editor_image_right_align.js +30 -0
- package/src/paraglide/messages/editor_improve_writing.js +30 -0
- package/src/paraglide/messages/editor_increase_indent.js +30 -0
- package/src/paraglide/messages/editor_indonesian.js +29 -0
- package/src/paraglide/messages/editor_industry_compliance.js +30 -0
- package/src/paraglide/messages/editor_informative.js +29 -0
- package/src/paraglide/messages/editor_inline_code.js +30 -0
- package/src/paraglide/messages/editor_insert.js +29 -0
- package/src/paraglide/messages/editor_insert_block.js +30 -0
- package/src/paraglide/messages/editor_insert_child.js +30 -0
- package/src/paraglide/messages/editor_insert_column_left.js +30 -0
- package/src/paraglide/messages/editor_insert_column_right.js +30 -0
- package/src/paraglide/messages/editor_insert_editable_mind_map.js +30 -0
- package/src/paraglide/messages/editor_insert_emoji.js +30 -0
- package/src/paraglide/messages/editor_insert_local_file.js +30 -0
- package/src/paraglide/messages/editor_insert_parent.js +30 -0
- package/src/paraglide/messages/editor_insert_row_above.js +30 -0
- package/src/paraglide/messages/editor_insert_row_below.js +30 -0
- package/src/paraglide/messages/editor_insert_sibling.js +30 -0
- package/src/paraglide/messages/editor_insert_table.js +30 -0
- package/src/paraglide/messages/editor_insert_toc.js +30 -0
- package/src/paraglide/messages/editor_inspirational.js +29 -0
- package/src/paraglide/messages/editor_it_project_manager.js +30 -0
- package/src/paraglide/messages/editor_it_support.js +30 -0
- package/src/paraglide/messages/editor_italian.js +29 -0
- package/src/paraglide/messages/editor_italic.js +29 -0
- package/src/paraglide/messages/editor_japanese.js +29 -0
- package/src/paraglide/messages/editor_just_now.js +30 -0
- package/src/paraglide/messages/editor_justify_align.js +30 -0
- package/src/paraglide/messages/editor_korean.js +29 -0
- package/src/paraglide/messages/editor_language.js +29 -0
- package/src/paraglide/messages/editor_last_updated.js +30 -0
- package/src/paraglide/messages/editor_laws_regulations.js +30 -0
- package/src/paraglide/messages/editor_left_align.js +30 -0
- package/src/paraglide/messages/editor_let_ai_generate.js +30 -0
- package/src/paraglide/messages/editor_level_1.js +30 -0
- package/src/paraglide/messages/editor_level_2.js +30 -0
- package/src/paraglide/messages/editor_level_3.js +30 -0
- package/src/paraglide/messages/editor_li_jianguo.js +30 -0
- package/src/paraglide/messages/editor_li_jun.js +30 -0
- package/src/paraglide/messages/editor_li_na.js +30 -0
- package/src/paraglide/messages/editor_li_siqi.js +30 -0
- package/src/paraglide/messages/editor_light.js +29 -0
- package/src/paraglide/messages/editor_link.js +29 -0
- package/src/paraglide/messages/editor_link_edit.js +30 -0
- package/src/paraglide/messages/editor_list.js +29 -0
- package/src/paraglide/messages/editor_liu_qiang.js +30 -0
- package/src/paraglide/messages/editor_liu_yang.js +30 -0
- package/src/paraglide/messages/editor_loading.js +29 -0
- package/src/paraglide/messages/editor_main_section_heading.js +30 -0
- package/src/paraglide/messages/editor_marketing_assistant.js +30 -0
- package/src/paraglide/messages/editor_marketing_manager.js +30 -0
- package/src/paraglide/messages/editor_mention.js +29 -0
- package/src/paraglide/messages/editor_mention_user_or_item.js +30 -0
- package/src/paraglide/messages/editor_merge_cells.js +30 -0
- package/src/paraglide/messages/editor_mind_map.js +30 -0
- package/src/paraglide/messages/editor_minutesago1.js +30 -0
- package/src/paraglide/messages/editor_more_options.js +30 -0
- package/src/paraglide/messages/editor_move_down.js +30 -0
- package/src/paraglide/messages/editor_move_up.js +30 -0
- package/src/paraglide/messages/editor_nameupdated1.js +30 -0
- package/src/paraglide/messages/editor_nameupdatefailed2.js +30 -0
- package/src/paraglide/messages/editor_narrative.js +29 -0
- package/src/paraglide/messages/editor_no_content.js +30 -0
- package/src/paraglide/messages/editor_nocanvasinversion3.js +30 -0
- package/src/paraglide/messages/editor_nodocinversion3.js +30 -0
- package/src/paraglide/messages/editor_normal_paragraph.js +30 -0
- package/src/paraglide/messages/editor_noselection1.js +30 -0
- package/src/paraglide/messages/editor_noselectionhint2.js +30 -0
- package/src/paraglide/messages/editor_numbered.js +29 -0
- package/src/paraglide/messages/editor_objective.js +29 -0
- package/src/paraglide/messages/editor_open_in_new_tab.js +30 -0
- package/src/paraglide/messages/editor_open_in_new_window.js +30 -0
- package/src/paraglide/messages/editor_orange.js +29 -0
- package/src/paraglide/messages/editor_orange_bg.js +30 -0
- package/src/paraglide/messages/editor_ordered.js +29 -0
- package/src/paraglide/messages/editor_ordered_list.js +30 -0
- package/src/paraglide/messages/editor_ordered_numbered_list.js +30 -0
- package/src/paraglide/messages/editor_paragraph.js +29 -0
- package/src/paraglide/messages/editor_paste_link.js +30 -0
- package/src/paraglide/messages/editor_persuasive.js +29 -0
- package/src/paraglide/messages/editor_pink.js +29 -0
- package/src/paraglide/messages/editor_pink_bg.js +30 -0
- package/src/paraglide/messages/editor_please_retry.js +30 -0
- package/src/paraglide/messages/editor_poetic.js +29 -0
- package/src/paraglide/messages/editor_portuguese.js +29 -0
- package/src/paraglide/messages/editor_product_designer.js +30 -0
- package/src/paraglide/messages/editor_product_manager.js +30 -0
- package/src/paraglide/messages/editor_purple.js +29 -0
- package/src/paraglide/messages/editor_purple_bg.js +30 -0
- package/src/paraglide/messages/editor_quote.js +29 -0
- package/src/paraglide/messages/editor_re_upload.js +30 -0
- package/src/paraglide/messages/editor_recently_used_colors.js +30 -0
- package/src/paraglide/messages/editor_red.js +29 -0
- package/src/paraglide/messages/editor_red_bg.js +30 -0
- package/src/paraglide/messages/editor_redo.js +29 -0
- package/src/paraglide/messages/editor_reference_doc.js +30 -0
- package/src/paraglide/messages/editor_reference_other_doc.js +30 -0
- package/src/paraglide/messages/editor_remove_highlight.js +30 -0
- package/src/paraglide/messages/editor_remove_link.js +30 -0
- package/src/paraglide/messages/editor_reset_format.js +30 -0
- package/src/paraglide/messages/editor_retry.js +29 -0
- package/src/paraglide/messages/editor_right_align.js +30 -0
- package/src/paraglide/messages/editor_row_actions.js +30 -0
- package/src/paraglide/messages/editor_row_move_down.js +30 -0
- package/src/paraglide/messages/editor_row_move_left.js +30 -0
- package/src/paraglide/messages/editor_row_move_right.js +30 -0
- package/src/paraglide/messages/editor_row_move_up.js +30 -0
- package/src/paraglide/messages/editor_row_sort_asc.js +30 -0
- package/src/paraglide/messages/editor_row_sort_desc.js +30 -0
- package/src/paraglide/messages/editor_russian.js +29 -0
- package/src/paraglide/messages/editor_sales_manager.js +30 -0
- package/src/paraglide/messages/editor_sales_rep.js +30 -0
- package/src/paraglide/messages/editor_search_emoji.js +30 -0
- package/src/paraglide/messages/editor_select.js +29 -0
- package/src/paraglide/messages/editor_send.js +29 -0
- package/src/paraglide/messages/editor_show_heading.js +30 -0
- package/src/paraglide/messages/editor_simplify_language.js +30 -0
- package/src/paraglide/messages/editor_simplify_text.js +30 -0
- package/src/paraglide/messages/editor_smart.js +29 -0
- package/src/paraglide/messages/editor_smiley.js +29 -0
- package/src/paraglide/messages/editor_spanish.js +29 -0
- package/src/paraglide/messages/editor_split_cells.js +30 -0
- package/src/paraglide/messages/editor_start_writing.js +30 -0
- package/src/paraglide/messages/editor_stop.js +29 -0
- package/src/paraglide/messages/editor_stop_generating.js +30 -0
- package/src/paraglide/messages/editor_strikethrough.js +29 -0
- package/src/paraglide/messages/editor_style.js +29 -0
- package/src/paraglide/messages/editor_sub_section_heading.js +30 -0
- package/src/paraglide/messages/editor_subscript.js +29 -0
- package/src/paraglide/messages/editor_summarize.js +29 -0
- package/src/paraglide/messages/editor_summary.js +29 -0
- package/src/paraglide/messages/editor_superscript.js +29 -0
- package/src/paraglide/messages/editor_syntax_highlighted_code_block.js +30 -0
- package/src/paraglide/messages/editor_tabcontent1.js +30 -0
- package/src/paraglide/messages/editor_table.js +29 -0
- package/src/paraglide/messages/editor_table_cell_options.js +30 -0
- package/src/paraglide/messages/editor_table_of_contents.js +30 -0
- package/src/paraglide/messages/editor_table_select.js +30 -0
- package/src/paraglide/messages/editor_tabposition1.js +30 -0
- package/src/paraglide/messages/editor_tabstyle1.js +30 -0
- package/src/paraglide/messages/editor_task.js +29 -0
- package/src/paraglide/messages/editor_task_list.js +30 -0
- package/src/paraglide/messages/editor_tell_ai_more_changes.js +30 -0
- package/src/paraglide/messages/editor_text.js +29 -0
- package/src/paraglide/messages/editor_text_color.js +30 -0
- package/src/paraglide/messages/editor_text_color_label.js +30 -0
- package/src/paraglide/messages/editor_text_color_options.js +30 -0
- package/src/paraglide/messages/editor_text_highlight.js +30 -0
- package/src/paraglide/messages/editor_theme_switch_to.js +30 -0
- package/src/paraglide/messages/editor_todo.js +29 -0
- package/src/paraglide/messages/editor_todo_list.js +30 -0
- package/src/paraglide/messages/editor_tone.js +29 -0
- package/src/paraglide/messages/editor_tone_adjust_options.js +30 -0
- package/src/paraglide/messages/editor_top_align.js +30 -0
- package/src/paraglide/messages/editor_top_level_heading.js +30 -0
- package/src/paraglide/messages/editor_translate.js +29 -0
- package/src/paraglide/messages/editor_turkish.js +29 -0
- package/src/paraglide/messages/editor_underline.js +29 -0
- package/src/paraglide/messages/editor_undo.js +29 -0
- package/src/paraglide/messages/editor_unfocus.js +29 -0
- package/src/paraglide/messages/editor_unknown_component.js +30 -0
- package/src/paraglide/messages/editor_unordered.js +29 -0
- package/src/paraglide/messages/editor_unordered_bullet_list.js +30 -0
- package/src/paraglide/messages/editor_unordered_list.js +30 -0
- package/src/paraglide/messages/editor_upload.js +29 -0
- package/src/paraglide/messages/editor_versionpreview1.js +30 -0
- package/src/paraglide/messages/editor_vietnamese.js +29 -0
- package/src/paraglide/messages/editor_wang_fang.js +30 -0
- package/src/paraglide/messages/editor_wang_hao.js +30 -0
- package/src/paraglide/messages/editor_wang_ming.js +30 -0
- package/src/paraglide/messages/editor_wang_ting.js +30 -0
- package/src/paraglide/messages/editor_wang_xiaoyan.js +30 -0
- package/src/paraglide/messages/editor_website_bookmark.js +30 -0
- package/src/paraglide/messages/editor_write_new_paragraph.js +30 -0
- package/src/paraglide/messages/editor_writing.js +29 -0
- package/src/paraglide/messages/editor_yellow.js +29 -0
- package/src/paraglide/messages/editor_yellow_bg.js +30 -0
- package/src/paraglide/messages/editor_zhang_dawei.js +30 -0
- package/src/paraglide/messages/editor_zhang_kai.js +30 -0
- package/src/paraglide/messages/editor_zhang_lei.js +30 -0
- package/src/paraglide/messages/editor_zhang_wei.js +30 -0
- package/src/paraglide/messages/editor_zhao_min.js +30 -0
- package/src/paraglide/messages/editor_zhao_xiaomeng.js +30 -0
- package/src/paraglide/messages/editor_zoomable_image_with_caption.js +30 -0
- package/src/paraglide/messages/element_annotate.js +29 -0
- package/src/paraglide/messages/element_componentid1.js +30 -0
- package/src/paraglide/messages/enterprise_title.js +29 -0
- package/src/paraglide/messages/filterbar_all1.js +30 -0
- package/src/paraglide/messages/gallery_attachfailed1.js +30 -0
- package/src/paraglide/messages/gallery_attachsuccess1.js +30 -0
- package/src/paraglide/messages/gallery_attachto1.js +30 -0
- package/src/paraglide/messages/gallery_attachtokb2.js +30 -0
- package/src/paraglide/messages/gallery_attachtoprd2.js +30 -0
- package/src/paraglide/messages/gallery_attachtostory2.js +30 -0
- package/src/paraglide/messages/gallery_bytes.js +29 -0
- package/src/paraglide/messages/gallery_close.js +29 -0
- package/src/paraglide/messages/gallery_copyerror1.js +30 -0
- package/src/paraglide/messages/gallery_copyprompt1.js +30 -0
- package/src/paraglide/messages/gallery_created.js +29 -0
- package/src/paraglide/messages/gallery_createvariant1.js +30 -0
- package/src/paraglide/messages/gallery_failed.js +29 -0
- package/src/paraglide/messages/gallery_image.js +29 -0
- package/src/paraglide/messages/gallery_linked.js +29 -0
- package/src/paraglide/messages/gallery_loaderror1.js +30 -0
- package/src/paraglide/messages/gallery_loading.js +29 -0
- package/src/paraglide/messages/gallery_loadmore1.js +30 -0
- package/src/paraglide/messages/gallery_model.js +29 -0
- package/src/paraglide/messages/gallery_next.js +29 -0
- package/src/paraglide/messages/gallery_noitems1.js +30 -0
- package/src/paraglide/messages/gallery_pickconfirm1.js +30 -0
- package/src/paraglide/messages/gallery_pickempty1.js +30 -0
- package/src/paraglide/messages/gallery_pickkb1.js +30 -0
- package/src/paraglide/messages/gallery_pickoptionsfailed2.js +30 -0
- package/src/paraglide/messages/gallery_pickprd1.js +30 -0
- package/src/paraglide/messages/gallery_pickstory1.js +30 -0
- package/src/paraglide/messages/gallery_preview.js +29 -0
- package/src/paraglide/messages/gallery_previewitem1.js +30 -0
- package/src/paraglide/messages/gallery_previous.js +29 -0
- package/src/paraglide/messages/gallery_prompt.js +29 -0
- package/src/paraglide/messages/gallery_prototype.js +29 -0
- package/src/paraglide/messages/gallery_provider.js +29 -0
- package/src/paraglide/messages/gallery_retry.js +29 -0
- package/src/paraglide/messages/gallery_size.js +29 -0
- package/src/paraglide/messages/gallery_speech.js +29 -0
- package/src/paraglide/messages/gallery_title.js +29 -0
- package/src/paraglide/messages/gallery_transcription.js +29 -0
- package/src/paraglide/messages/gallery_unsupported.js +29 -0
- package/src/paraglide/messages/gallery_varianterror1.js +30 -0
- package/src/paraglide/messages/gallery_video.js +29 -0
- package/src/paraglide/messages/harness_agent_default.js +29 -0
- package/src/paraglide/messages/harness_agent_mode.js +29 -0
- package/src/paraglide/messages/harness_approval_approveall1.js +30 -0
- package/src/paraglide/messages/harness_approval_cancelreject1.js +30 -0
- package/src/paraglide/messages/harness_approval_confirmreject1.js +30 -0
- package/src/paraglide/messages/harness_approval_rejectall1.js +30 -0
- package/src/paraglide/messages/harness_approval_rejectreason1.js +30 -0
- package/src/paraglide/messages/harness_approval_rejectreasonplaceholder2.js +30 -0
- package/src/paraglide/messages/harness_askai_cat_advice1.js +30 -0
- package/src/paraglide/messages/harness_askai_cat_analysis1.js +30 -0
- package/src/paraglide/messages/harness_askai_cat_general1.js +30 -0
- package/src/paraglide/messages/harness_askai_cat_skills1.js +30 -0
- package/src/paraglide/messages/harness_attach_file.js +29 -0
- package/src/paraglide/messages/harness_composer_arialabel1.js +30 -0
- package/src/paraglide/messages/harness_composer_pendingapproval1.js +30 -0
- package/src/paraglide/messages/harness_composer_placeholder.js +29 -0
- package/src/paraglide/messages/harness_composer_placeholderdefault1.js +30 -0
- package/src/paraglide/messages/harness_composer_placeholdernokey2.js +30 -0
- package/src/paraglide/messages/harness_composer_placeholderplan1.js +30 -0
- package/src/paraglide/messages/harness_composer_placeholderqueue1.js +30 -0
- package/src/paraglide/messages/harness_composer_placeholdersandboxreadonly2.js +30 -0
- package/src/paraglide/messages/harness_composer_queuelabel1.js +30 -0
- package/src/paraglide/messages/harness_composer_send.js +29 -0
- package/src/paraglide/messages/harness_composer_steerlabel1.js +30 -0
- package/src/paraglide/messages/harness_context_add.js +29 -0
- package/src/paraglide/messages/harness_context_meter_hint.js +29 -0
- package/src/paraglide/messages/harness_context_meter_label.js +29 -0
- package/src/paraglide/messages/harness_context_pages.js +29 -0
- package/src/paraglide/messages/harness_context_selected.js +29 -0
- package/src/paraglide/messages/harness_context_users.js +29 -0
- package/src/paraglide/messages/harness_conversation_fork.js +29 -0
- package/src/paraglide/messages/harness_conversation_pending.js +29 -0
- package/src/paraglide/messages/harness_dock_codeworkspace1.js +30 -0
- package/src/paraglide/messages/harness_dock_docnotfound2.js +30 -0
- package/src/paraglide/messages/harness_dock_fileempty1.js +30 -0
- package/src/paraglide/messages/harness_dock_loadingdoc1.js +30 -0
- package/src/paraglide/messages/harness_dock_loadingfile1.js +30 -0
- package/src/paraglide/messages/harness_dock_placeholder.js +29 -0
- package/src/paraglide/messages/harness_dock_plugin.js +29 -0
- package/src/paraglide/messages/harness_dock_prdnotfound2.js +30 -0
- package/src/paraglide/messages/harness_dock_storyempty1.js +30 -0
- package/src/paraglide/messages/harness_dock_storynotfound2.js +30 -0
- package/src/paraglide/messages/harness_dock_todo.js +29 -0
- package/src/paraglide/messages/harness_dock_unknownresource1.js +30 -0
- package/src/paraglide/messages/harness_media_code.js +29 -0
- package/src/paraglide/messages/harness_media_nocode1.js +30 -0
- package/src/paraglide/messages/harness_media_nospec1.js +30 -0
- package/src/paraglide/messages/harness_media_pro.js +29 -0
- package/src/paraglide/messages/harness_media_spec.js +29 -0
- package/src/paraglide/messages/harness_mention_kb_doc.js +29 -0
- package/src/paraglide/messages/harness_mention_prd.js +29 -0
- package/src/paraglide/messages/harness_model_select_default.js +29 -0
- package/src/paraglide/messages/harness_model_select_nomodels1.js +30 -0
- package/src/paraglide/messages/harness_plan_approve.js +29 -0
- package/src/paraglide/messages/harness_plan_feedbackplaceholder1.js +30 -0
- package/src/paraglide/messages/harness_plan_reject.js +29 -0
- package/src/paraglide/messages/harness_plan_title.js +29 -0
- package/src/paraglide/messages/harness_plugin_defineapprovaltitle2.js +30 -0
- package/src/paraglide/messages/harness_plugin_empty.js +29 -0
- package/src/paraglide/messages/harness_plugin_mentionempty1.js +30 -0
- package/src/paraglide/messages/harness_plugin_mentionnomatch2.js +30 -0
- package/src/paraglide/messages/harness_plugin_mentiontitle1.js +30 -0
- package/src/paraglide/messages/harness_plugin_paneltitle1.js +30 -0
- package/src/paraglide/messages/harness_plugin_status_defined.js +29 -0
- package/src/paraglide/messages/harness_plugin_status_error.js +29 -0
- package/src/paraglide/messages/harness_plugin_status_running.js +29 -0
- package/src/paraglide/messages/harness_plugin_status_stopped.js +29 -0
- package/src/paraglide/messages/harness_plugin_version.js +29 -0
- package/src/paraglide/messages/harness_queue_cancel.js +29 -0
- package/src/paraglide/messages/harness_queue_title.js +29 -0
- package/src/paraglide/messages/harness_queuedmultimedia1.js +30 -0
- package/src/paraglide/messages/harness_sandbox_full.js +29 -0
- package/src/paraglide/messages/harness_sandbox_pro.js +29 -0
- package/src/paraglide/messages/harness_sandbox_readonly.js +29 -0
- package/src/paraglide/messages/harness_sandbox_workspacewrite1.js +30 -0
- package/src/paraglide/messages/harness_spec_generatefailed1.js +30 -0
- package/src/paraglide/messages/harness_spec_needthread1.js +30 -0
- package/src/paraglide/messages/harness_steerhint1.js +30 -0
- package/src/paraglide/messages/harness_thinking_disable.js +29 -0
- package/src/paraglide/messages/harness_thinking_enable.js +29 -0
- package/src/paraglide/messages/harness_thinking_toggle.js +29 -0
- package/src/paraglide/messages/harness_todo_empty.js +29 -0
- package/src/paraglide/messages/harness_todo_paneltitle1.js +30 -0
- package/src/paraglide/messages/harness_tool_input.js +29 -0
- package/src/paraglide/messages/harness_tool_knowledgesearch1.js +30 -0
- package/src/paraglide/messages/harness_tool_output.js +29 -0
- package/src/paraglide/messages/harness_tool_resultcount1.js +30 -0
- package/src/paraglide/messages/harness_tool_websearch1.js +30 -0
- package/src/paraglide/messages/harness_turn_collapse.js +29 -0
- package/src/paraglide/messages/harness_turn_collapsearia1.js +30 -0
- package/src/paraglide/messages/harness_turn_expandaria1.js +30 -0
- package/src/paraglide/messages/harness_turn_navigator_label.js +29 -0
- package/src/paraglide/messages/harness_turn_replies.js +29 -0
- package/src/paraglide/messages/harness_turn_streaming.js +29 -0
- package/src/paraglide/messages/harness_turn_thoughtmoment1.js +30 -0
- package/src/paraglide/messages/harness_turn_thoughtmoment_aria1.js +30 -0
- package/src/paraglide/messages/harness_turn_tools.js +29 -0
- package/src/paraglide/messages/harness_turn_usage_label.js +29 -0
- package/src/paraglide/messages/harness_web_search_disable.js +29 -0
- package/src/paraglide/messages/harness_web_search_enable.js +29 -0
- package/src/paraglide/messages/harness_web_search_label.js +29 -0
- package/src/paraglide/messages/harness_web_search_toggle.js +29 -0
- package/src/paraglide/messages/invite_accept.js +29 -0
- package/src/paraglide/messages/invite_accepted.js +29 -0
- package/src/paraglide/messages/invite_acceptjoin1.js +30 -0
- package/src/paraglide/messages/invite_alreadyhaveaccount2.js +30 -0
- package/src/paraglide/messages/invite_alreadyjoined1.js +30 -0
- package/src/paraglide/messages/invite_alreadyjoineddesc2.js +30 -0
- package/src/paraglide/messages/invite_alreadyregistered1.js +30 -0
- package/src/paraglide/messages/invite_appliedhint1.js +30 -0
- package/src/paraglide/messages/invite_appliedhintlogin2.js +30 -0
- package/src/paraglide/messages/invite_appliedpendinglogin2.js +30 -0
- package/src/paraglide/messages/invite_applytojoin2.js +30 -0
- package/src/paraglide/messages/invite_awaitingapproval1.js +30 -0
- package/src/paraglide/messages/invite_awaitingapprovaldesc2.js +30 -0
- package/src/paraglide/messages/invite_brandfooter1.js +30 -0
- package/src/paraglide/messages/invite_brandtitle1.js +30 -0
- package/src/paraglide/messages/invite_checking.js +29 -0
- package/src/paraglide/messages/invite_emaillabel1.js +30 -0
- package/src/paraglide/messages/invite_emailnotregistered2.js +30 -0
- package/src/paraglide/messages/invite_emailregisteredhint2.js +30 -0
- package/src/paraglide/messages/invite_emailunregisteredhint2.js +30 -0
- package/src/paraglide/messages/invite_expired.js +29 -0
- package/src/paraglide/messages/invite_expiredorinvalid2.js +30 -0
- package/src/paraglide/messages/invite_expiredorinvaliddesc3.js +30 -0
- package/src/paraglide/messages/invite_featurecollaboration1.js +30 -0
- package/src/paraglide/messages/invite_featurecollaborationdesc2.js +30 -0
- package/src/paraglide/messages/invite_featureteam1.js +30 -0
- package/src/paraglide/messages/invite_featureteamdesc2.js +30 -0
- package/src/paraglide/messages/invite_gotodashboard2.js +30 -0
- package/src/paraglide/messages/invite_gotologin2.js +30 -0
- package/src/paraglide/messages/invite_gototeammanagement3.js +30 -0
- package/src/paraglide/messages/invite_guest.js +29 -0
- package/src/paraglide/messages/invite_invalid.js +29 -0
- package/src/paraglide/messages/invite_invalidemail1.js +30 -0
- package/src/paraglide/messages/invite_inviteyou1.js +30 -0
- package/src/paraglide/messages/invite_joining.js +29 -0
- package/src/paraglide/messages/invite_linkapprovalnote2.js +30 -0
- package/src/paraglide/messages/invite_login.js +29 -0
- package/src/paraglide/messages/invite_loginnow1.js +30 -0
- package/src/paraglide/messages/invite_member.js +29 -0
- package/src/paraglide/messages/invite_notfound1.js +30 -0
- package/src/paraglide/messages/invite_notregisterednote2.js +30 -0
- package/src/paraglide/messages/invite_registeredpendinglogin2.js +30 -0
- package/src/paraglide/messages/invite_registerlinksent2.js +30 -0
- package/src/paraglide/messages/invite_registernow1.js +30 -0
- package/src/paraglide/messages/invite_requesttojoin2.js +30 -0
- package/src/paraglide/messages/invite_seatadmin1.js +30 -0
- package/src/paraglide/messages/invite_seatmember1.js +30 -0
- package/src/paraglide/messages/invite_seatmessage1.js +30 -0
- package/src/paraglide/messages/invite_seattype1.js +30 -0
- package/src/paraglide/messages/invite_seatviewer1.js +30 -0
- package/src/paraglide/messages/invite_sending.js +29 -0
- package/src/paraglide/messages/invite_sendregisterlink2.js +30 -0
- package/src/paraglide/messages/invite_sentforapproval2.js +30 -0
- package/src/paraglide/messages/invite_title.js +29 -0
- package/src/paraglide/messages/iterations_actions_addstories1.js +30 -0
- package/src/paraglide/messages/iterations_actions_archive.js +29 -0
- package/src/paraglide/messages/iterations_actions_autoschedule1.js +30 -0
- package/src/paraglide/messages/iterations_actions_cancel.js +29 -0
- package/src/paraglide/messages/iterations_actions_create.js +29 -0
- package/src/paraglide/messages/iterations_actions_delete.js +29 -0
- package/src/paraglide/messages/iterations_actions_edit.js +29 -0
- package/src/paraglide/messages/iterations_actions_removestory1.js +30 -0
- package/src/paraglide/messages/iterations_actions_save.js +29 -0
- package/src/paraglide/messages/iterations_actions_saving.js +29 -0
- package/src/paraglide/messages/iterations_actions_transfer.js +29 -0
- package/src/paraglide/messages/iterations_actions_unarchive.js +29 -0
- package/src/paraglide/messages/iterations_autoschedule_autorollover2.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_basetitle2.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_cooldowndays2.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_description1.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_durationdays2.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_enabled1.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_futurecount2.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_saved1.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_startson2.js +30 -0
- package/src/paraglide/messages/iterations_autoschedule_title1.js +30 -0
- package/src/paraglide/messages/iterations_burndown_ideal.js +29 -0
- package/src/paraglide/messages/iterations_burndown_leading.js +29 -0
- package/src/paraglide/messages/iterations_burndown_nodata1.js +30 -0
- package/src/paraglide/messages/iterations_burndown_pending.js +29 -0
- package/src/paraglide/messages/iterations_burndown_title.js +29 -0
- package/src/paraglide/messages/iterations_burndown_trailing.js +29 -0
- package/src/paraglide/messages/iterations_editor_clearsuccess1.js +30 -0
- package/src/paraglide/messages/iterations_editor_confirmswitch1.js +30 -0
- package/src/paraglide/messages/iterations_editor_currentiteration1.js +30 -0
- package/src/paraglide/messages/iterations_editor_label.js +29 -0
- package/src/paraglide/messages/iterations_editor_none.js +29 -0
- package/src/paraglide/messages/iterations_editor_placeholder.js +29 -0
- package/src/paraglide/messages/iterations_editor_setsuccess1.js +30 -0
- package/src/paraglide/messages/iterations_empty_description.js +29 -0
- package/src/paraglide/messages/iterations_empty_title.js +29 -0
- package/src/paraglide/messages/iterations_errors_completedtarget1.js +30 -0
- package/src/paraglide/messages/iterations_errors_deleteconfirm1.js +30 -0
- package/src/paraglide/messages/iterations_errors_invalidrange1.js +30 -0
- package/src/paraglide/messages/iterations_errors_locked.js +29 -0
- package/src/paraglide/messages/iterations_errors_namerequired1.js +30 -0
- package/src/paraglide/messages/iterations_errors_notarget1.js +30 -0
- package/src/paraglide/messages/iterations_errors_notfound1.js +30 -0
- package/src/paraglide/messages/iterations_errors_overlapping.js +29 -0
- package/src/paraglide/messages/iterations_fields_description.js +29 -0
- package/src/paraglide/messages/iterations_fields_enddate1.js +30 -0
- package/src/paraglide/messages/iterations_fields_name.js +29 -0
- package/src/paraglide/messages/iterations_fields_nameplaceholder1.js +30 -0
- package/src/paraglide/messages/iterations_fields_startdate1.js +30 -0
- package/src/paraglide/messages/iterations_group_active.js +29 -0
- package/src/paraglide/messages/iterations_group_completed.js +29 -0
- package/src/paraglide/messages/iterations_group_upcoming.js +29 -0
- package/src/paraglide/messages/iterations_progress_done.js +29 -0
- package/src/paraglide/messages/iterations_progress_overduedays1.js +30 -0
- package/src/paraglide/messages/iterations_progress_percent.js +29 -0
- package/src/paraglide/messages/iterations_progress_remainingdays1.js +30 -0
- package/src/paraglide/messages/iterations_progress_statedist1.js +30 -0
- package/src/paraglide/messages/iterations_progress_total.js +29 -0
- package/src/paraglide/messages/iterations_status_active.js +29 -0
- package/src/paraglide/messages/iterations_status_completed.js +29 -0
- package/src/paraglide/messages/iterations_status_upcoming.js +29 -0
- package/src/paraglide/messages/iterations_title.js +29 -0
- package/src/paraglide/messages/iterations_transfer_description.js +29 -0
- package/src/paraglide/messages/iterations_transfer_nounfinished1.js +30 -0
- package/src/paraglide/messages/iterations_transfer_success.js +29 -0
- package/src/paraglide/messages/iterations_transfer_target.js +29 -0
- package/src/paraglide/messages/iterations_transfer_title.js +29 -0
- package/src/paraglide/messages/knowledge_askai_button1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_cat_all1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_cat_graph1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_cat_search1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_cat_summary1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_graph1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_search1.js +30 -0
- package/src/paraglide/messages/knowledge_askai_summarize1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_bookmark1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_daysago2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_edit1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_monthsago2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_share1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_shared1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_sharetoggle2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_sync1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_today1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_unbookmark1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_updatedat2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarkcard_yearsago2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_add.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_addcategory1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_addedsync1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_addfailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_adding.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_back.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_backtolist2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_cancel.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_canceldeletearia2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_category.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_confirmdelete1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_create.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_createfailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_delete.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_deleted.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_deletefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_edittitle1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_loadfailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_loading.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_name.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_newcategoryname2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_newtitle1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_preview.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_processing.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_required.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_save.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_saved.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_savefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_saving.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_selectcategory1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_sharedpublic1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_sharefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_sharepublic1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_sharing.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_summary.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_tagplaceholder1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_tags.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_unshare.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_unshared.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_unsharefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_url.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_urlchanged1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_detail_urlchangehint2.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_addsite1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_empty.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_favorited.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_operationfailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_synced.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_syncfailed1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_titlea1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_titleb1.js +30 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_unfavorited.js +29 -0
- package/src/paraglide/messages/knowledge_bookmarks_index_unshared.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_backtolist2.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_cancel.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_confirmdeletedesc2.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_confirmdeletetitle2.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_copylink1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_copysharelink2.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_delete.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_deleted.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_deletefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_edit.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_favorite.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_favorited.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_linkcopied1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_share.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_sharefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_sharepublic1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_detail_unfavorite.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_unfavorited.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_unshare.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_unshared.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_detail_unsharefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_index_add.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_index_industry.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_index_titlea1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_index_titleb1.js +30 -0
- package/src/paraglide/messages/knowledge_compliance_index_untitled.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_ecommerce.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_education.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_energy.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_finance.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_gaming.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_general.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_internet.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_manufacturing.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_medical.js +29 -0
- package/src/paraglide/messages/knowledge_compliance_industries_transportation.js +29 -0
- package/src/paraglide/messages/knowledge_complianceeditor_fields_code1.js +30 -0
- package/src/paraglide/messages/knowledge_complianceeditor_fields_industry1.js +30 -0
- package/src/paraglide/messages/knowledge_complianceeditor_fields_region1.js +30 -0
- package/src/paraglide/messages/knowledge_complianceeditor_fields_regulatorybody2.js +30 -0
- package/src/paraglide/messages/knowledge_complianceeditor_fields_sourceurl2.js +30 -0
- package/src/paraglide/messages/knowledge_dictionaries_detail_backtolist2.js +30 -0
- package/src/paraglide/messages/knowledge_dictionaries_detail_examples.js +29 -0
- package/src/paraglide/messages/knowledge_dictionaries_detail_sharepublic1.js +30 -0
- package/src/paraglide/messages/knowledge_dictionaries_detail_viewreference1.js +30 -0
- package/src/paraglide/messages/knowledge_dictionaries_index_add.js +29 -0
- package/src/paraglide/messages/knowledge_dictionaries_index_industry.js +29 -0
- package/src/paraglide/messages/knowledge_dictionaries_index_titlea1.js +30 -0
- package/src/paraglide/messages/knowledge_dictionaries_index_titleb1.js +30 -0
- package/src/paraglide/messages/knowledge_doc_multitable1.js +30 -0
- package/src/paraglide/messages/knowledge_doc_multitablecomingsoon3.js +30 -0
- package/src/paraglide/messages/knowledge_doc_onlinesheet1.js +30 -0
- package/src/paraglide/messages/knowledge_doc_onlinesheetcomingsoon3.js +30 -0
- package/src/paraglide/messages/knowledge_doc_unknowntype1.js +30 -0
- package/src/paraglide/messages/knowledge_doc_unsupportedtype1.js +30 -0
- package/src/paraglide/messages/knowledge_docheader_addproperty2.js +30 -0
- package/src/paraglide/messages/knowledge_docheader_selecttags2.js +30 -0
- package/src/paraglide/messages/knowledge_docheader_titleplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_docheader_unknownuser2.js +30 -0
- package/src/paraglide/messages/knowledge_docprops_selectplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_docprops_tagsplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_docprops_title1.js +30 -0
- package/src/paraglide/messages/knowledge_docprops_urlplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_filters_all.js +29 -0
- package/src/paraglide/messages/knowledge_filters_favorite.js +29 -0
- package/src/paraglide/messages/knowledge_filters_private.js +29 -0
- package/src/paraglide/messages/knowledge_filters_scope.js +29 -0
- package/src/paraglide/messages/knowledge_filters_share.js +29 -0
- package/src/paraglide/messages/knowledge_home_doccount1.js +30 -0
- package/src/paraglide/messages/knowledge_home_home.js +29 -0
- package/src/paraglide/messages/knowledge_home_overview.js +29 -0
- package/src/paraglide/messages/knowledge_home_recentdocs1.js +30 -0
- package/src/paraglide/messages/knowledge_home_recentupdate1.js +30 -0
- package/src/paraglide/messages/knowledge_index_createkb1.js +30 -0
- package/src/paraglide/messages/knowledge_index_emptydesc1.js +30 -0
- package/src/paraglide/messages/knowledge_index_emptytitle1.js +30 -0
- package/src/paraglide/messages/knowledge_index_generaldesc1.js +30 -0
- package/src/paraglide/messages/knowledge_index_generaltitle1.js +30 -0
- package/src/paraglide/messages/knowledge_index_mytitle1.js +30 -0
- package/src/paraglide/messages/knowledge_index_nodescription1.js +30 -0
- package/src/paraglide/messages/knowledge_index_private.js +29 -0
- package/src/paraglide/messages/knowledge_index_subtitle.js +29 -0
- package/src/paraglide/messages/knowledge_index_team.js +29 -0
- package/src/paraglide/messages/knowledge_index_title.js +29 -0
- package/src/paraglide/messages/knowledge_kbform_cancel1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_create1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_description_create1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_description_edit1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_descriptionlabel2.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_descriptionplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_namelabel2.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_nameplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_namerequired2.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_save1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_savefailed2.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_saving1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_title_create1.js +30 -0
- package/src/paraglide/messages/knowledge_kbform_title_edit1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgegrid_empty1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgesearch_new1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgesearch_placeholder1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_cancel1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_confirmdelete2.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_delete1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_deleteconfirm2.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_deletedoc2.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_deleteplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_deleting1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_depthlimit2.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_empty1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_loading1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_rename1.js +30 -0
- package/src/paraglide/messages/knowledge_knowledgetree_title1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_backtolist2.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_cancel.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_confirmdeletedesc2.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_confirmdeletetitle2.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_copylink1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_copysharelink2.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_delete.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_deleted.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_deletefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_edit.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_favorite.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_favorited.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_linkcopied1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_share.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_sharefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_sharepublic1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_detail_unfavorite.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_unfavorited.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_unshare.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_unshared.js +29 -0
- package/src/paraglide/messages/knowledge_laws_detail_unsharefailed1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_index_add.js +29 -0
- package/src/paraglide/messages/knowledge_laws_index_jurisdiction.js +29 -0
- package/src/paraglide/messages/knowledge_laws_index_sort.js +29 -0
- package/src/paraglide/messages/knowledge_laws_index_sortdefault1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_index_sorteffectivedate2.js +30 -0
- package/src/paraglide/messages/knowledge_laws_index_titlea1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_index_titleb1.js +30 -0
- package/src/paraglide/messages/knowledge_laws_index_untitled.js +29 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_category1.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_code1.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_country1.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_effectivedate2.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_issuingauthority2.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_jurisdiction1.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_region1.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_fields_sourceurl2.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_jurisdiction_cn_local8.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_jurisdiction_cn_national11.js +30 -0
- package/src/paraglide/messages/knowledge_legaleditor_jurisdiction_overseas9.js +30 -0
- package/src/paraglide/messages/knowledge_markdowneditor_edit1.js +30 -0
- package/src/paraglide/messages/knowledge_markdowneditor_preview1.js +30 -0
- package/src/paraglide/messages/knowledge_markdownview_empty1.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_add_one.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_clause_number.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_industry.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_region.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_regulatory_body.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_req_detail.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_req_title.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_requirements.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_title_create.js +30 -0
- package/src/paraglide/messages/knowledge_public_compliance_form_title_edit.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_aliases.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_definition.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_examples.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_reference_url.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_term_name.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_title_create.js +30 -0
- package/src/paraglide/messages/knowledge_public_dictionary_form_title_edit.js +30 -0
- package/src/paraglide/messages/knowledge_public_knowledge_form_created.js +30 -0
- package/src/paraglide/messages/knowledge_public_knowledge_form_name.js +30 -0
- package/src/paraglide/messages/knowledge_public_knowledge_form_name_required.js +30 -0
- package/src/paraglide/messages/knowledge_public_knowledge_form_save_failed.js +30 -0
- package/src/paraglide/messages/knowledge_public_knowledge_form_updated.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_compliance_back_to_preview.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_compliance_loading.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_authority_placeholder.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_cancel.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_category.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_category_placeholder.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_code.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_content.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_content_placeholder.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_country.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_country_placeholder.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_effective_date.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_issuing_authority.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_jurisdiction.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_jurisdiction_options_cn_local7.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_jurisdiction_options_cn_national10.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_jurisdiction_options_overseas8.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_loading.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_optional.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_region.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_region_placeholder.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_save.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_saving.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_source_url.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_summary.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_tags.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_title_create.js +30 -0
- package/src/paraglide/messages/knowledge_public_legal_form_title_edit.js +30 -0
- package/src/paraglide/messages/knowledge_public_untitled_compliance.js +30 -0
- package/src/paraglide/messages/knowledge_public_untitled_legal.js +30 -0
- package/src/paraglide/messages/knowledge_sharers_count.js +29 -0
- package/src/paraglide/messages/knowledge_sharers_me.js +29 -0
- package/src/paraglide/messages/knowledge_summary_all.js +29 -0
- package/src/paraglide/messages/knowledge_summary_dateformat1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_empty.js +29 -0
- package/src/paraglide/messages/knowledge_summary_month.js +29 -0
- package/src/paraglide/messages/knowledge_summary_monthfirstday2.js +30 -0
- package/src/paraglide/messages/knowledge_summary_monthly.js +29 -0
- package/src/paraglide/messages/knowledge_summary_monthlymocksummary2.js +30 -0
- package/src/paraglide/messages/knowledge_summary_monthlytitle1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_months_0.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_1.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_10.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_11.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_2.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_3.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_4.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_5.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_6.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_7.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_8.js +29 -0
- package/src/paraglide/messages/knowledge_summary_months_9.js +29 -0
- package/src/paraglide/messages/knowledge_summary_titlemonthly1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_titleweekly1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_type.js +29 -0
- package/src/paraglide/messages/knowledge_summary_week.js +29 -0
- package/src/paraglide/messages/knowledge_summary_weekly.js +29 -0
- package/src/paraglide/messages/knowledge_summary_weeklymocksummary2.js +30 -0
- package/src/paraglide/messages/knowledge_summary_weeklytitle1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_weeknum1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_weeksuffix1.js +30 -0
- package/src/paraglide/messages/knowledge_summary_year.js +29 -0
- package/src/paraglide/messages/knowledge_summary_yearsuffix1.js +30 -0
- package/src/paraglide/messages/knowledge_tagfilter_all1.js +30 -0
- package/src/paraglide/messages/knowledge_tagfilter_label1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_cancel.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_confirmdelete1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_create.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_createdoc1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_deletekb1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_deletekbconfirm2.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_deletekbplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_deleting.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_doc.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_docnameplaceholder2.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_general.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_generallinkdisabled2.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_kbownership1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_linkprojects1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_mindmap.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_namesettings1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_nodocs1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_pagewidth1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_private.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_privatelinkdisabled2.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_rebuildindex1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_reindexdone1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_reindexfailed1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_reindexing.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_selectdoctype2.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_sheet.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_table.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_team.js +29 -0
- package/src/paraglide/messages/knowledge_toolbar_widthauto1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_widthfull1.js +30 -0
- package/src/paraglide/messages/knowledge_toolbar_widthwider1.js +30 -0
- package/src/paraglide/messages/knowledge_treetype_doc1.js +30 -0
- package/src/paraglide/messages/knowledge_treetype_mindmap1.js +30 -0
- package/src/paraglide/messages/knowledge_treetype_sheet1.js +30 -0
- package/src/paraglide/messages/knowledge_treetype_table1.js +30 -0
- package/src/paraglide/messages/knowledge_untitledcompliance1.js +30 -0
- package/src/paraglide/messages/knowledge_untitleddoc1.js +30 -0
- package/src/paraglide/messages/knowledge_untitledlegal1.js +30 -0
- package/src/paraglide/messages/knowledge_untitledmindmap1.js +30 -0
- package/src/paraglide/messages/knowledge_untitledsheet1.js +30 -0
- package/src/paraglide/messages/knowledge_untitledtable1.js +30 -0
- package/src/paraglide/messages/knowledge_workspace_backtolist2.js +30 -0
- package/src/paraglide/messages/knowledge_workspace_kbnotfound2.js +30 -0
- package/src/paraglide/messages/mindmap_defaultnode1.js +30 -0
- package/src/paraglide/messages/mindmap_defaulttopic1.js +30 -0
- package/src/paraglide/messages/mindmap_errors_autosavefailed2.js +30 -0
- package/src/paraglide/messages/mindmap_errors_exportfailed1.js +30 -0
- package/src/paraglide/messages/mindmap_errors_initfailed1.js +30 -0
- package/src/paraglide/messages/mindmap_errors_tagsupdatefailed2.js +30 -0
- package/src/paraglide/messages/mindmap_errors_titleupdatefailed2.js +30 -0
- package/src/paraglide/messages/mindmap_errors_usemindmapcontext3.js +30 -0
- package/src/paraglide/messages/mindmap_fullscreen_title.js +29 -0
- package/src/paraglide/messages/mindmap_saving.js +29 -0
- package/src/paraglide/messages/mindmap_titleplaceholder1.js +30 -0
- package/src/paraglide/messages/mindmap_toolbar_close.js +29 -0
- package/src/paraglide/messages/mindmap_toolbar_export.js +29 -0
- package/src/paraglide/messages/mindmap_toolbar_fit.js +29 -0
- package/src/paraglide/messages/mindmap_toolbar_fullscreen.js +29 -0
- package/src/paraglide/messages/mindmap_toolbar_layoutbalance1.js +30 -0
- package/src/paraglide/messages/mindmap_toolbar_layoutleft1.js +30 -0
- package/src/paraglide/messages/mindmap_toolbar_layoutright1.js +30 -0
- package/src/paraglide/messages/mindmap_toolbar_zoomin1.js +30 -0
- package/src/paraglide/messages/mindmap_toolbar_zoomout1.js +30 -0
- package/src/paraglide/messages/nav_notioneditor1.js +30 -0
- package/src/paraglide/messages/nav_pricing.js +29 -0
- package/src/paraglide/messages/navigation_confirmdelete1.js +30 -0
- package/src/paraglide/messages/navigation_deleteprd1.js +30 -0
- package/src/paraglide/messages/navigation_deleteprddesc2.js +30 -0
- package/src/paraglide/messages/navigation_editname1.js +30 -0
- package/src/paraglide/messages/navigation_export.js +29 -0
- package/src/paraglide/messages/navigation_prdsettings1.js +30 -0
- package/src/paraglide/messages/navigation_share.js +29 -0
- package/src/paraglide/messages/navigation_shareprd1.js +30 -0
- package/src/paraglide/messages/navigation_version.js +29 -0
- package/src/paraglide/messages/notifications_actions_clearall1.js +30 -0
- package/src/paraglide/messages/notifications_actions_delete.js +29 -0
- package/src/paraglide/messages/notifications_actions_loadmore1.js +30 -0
- package/src/paraglide/messages/notifications_actions_markallread2.js +30 -0
- package/src/paraglide/messages/notifications_actions_markread1.js +30 -0
- package/src/paraglide/messages/notifications_actions_view.js +29 -0
- package/src/paraglide/messages/notifications_actions_viewall1.js +30 -0
- package/src/paraglide/messages/notifications_allcaughtup2.js +30 -0
- package/src/paraglide/messages/notifications_bell_label.js +29 -0
- package/src/paraglide/messages/notifications_bell_recenttitle1.js +30 -0
- package/src/paraglide/messages/notifications_description.js +29 -0
- package/src/paraglide/messages/notifications_empty.js +29 -0
- package/src/paraglide/messages/notifications_emptyfiltered1.js +30 -0
- package/src/paraglide/messages/notifications_filters_all.js +29 -0
- package/src/paraglide/messages/notifications_filters_alltypes1.js +30 -0
- package/src/paraglide/messages/notifications_filters_read.js +29 -0
- package/src/paraglide/messages/notifications_moreoptions1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_categories_billing.js +29 -0
- package/src/paraglide/messages/notifications_preferences_categories_billingdesc1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_categories_collaboration.js +29 -0
- package/src/paraglide/messages/notifications_preferences_categories_collaborationdesc1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_categories_security.js +29 -0
- package/src/paraglide/messages/notifications_preferences_categories_securitydesc1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_categories_system.js +29 -0
- package/src/paraglide/messages/notifications_preferences_categories_systemdesc1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_categories_team.js +29 -0
- package/src/paraglide/messages/notifications_preferences_categories_teamdesc1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_dnd_desc.js +29 -0
- package/src/paraglide/messages/notifications_preferences_dnd_enabled.js +29 -0
- package/src/paraglide/messages/notifications_preferences_dnd_end.js +29 -0
- package/src/paraglide/messages/notifications_preferences_dnd_start.js +29 -0
- package/src/paraglide/messages/notifications_preferences_dnd_title.js +29 -0
- package/src/paraglide/messages/notifications_preferences_emailchannel1.js +30 -0
- package/src/paraglide/messages/notifications_preferences_emailchanneldesc2.js +30 -0
- package/src/paraglide/messages/notifications_preferences_emailneedverify2.js +30 -0
- package/src/paraglide/messages/notifications_preferences_enable.js +29 -0
- package/src/paraglide/messages/notifications_preferences_frequency_daily.js +29 -0
- package/src/paraglide/messages/notifications_preferences_frequency_off.js +29 -0
- package/src/paraglide/messages/notifications_preferences_frequency_realtime.js +29 -0
- package/src/paraglide/messages/notifications_preferences_frequency_weekly.js +29 -0
- package/src/paraglide/messages/notifications_preferences_saved.js +29 -0
- package/src/paraglide/messages/notifications_preferences_savefailed1.js +30 -0
- package/src/paraglide/messages/notifications_relativetime_daysago2.js +30 -0
- package/src/paraglide/messages/notifications_relativetime_hoursago2.js +30 -0
- package/src/paraglide/messages/notifications_relativetime_justnow2.js +30 -0
- package/src/paraglide/messages/notifications_relativetime_minutesago2.js +30 -0
- package/src/paraglide/messages/notifications_settings_description.js +29 -0
- package/src/paraglide/messages/notifications_settings_title.js +29 -0
- package/src/paraglide/messages/notifications_tabs_all.js +29 -0
- package/src/paraglide/messages/notifications_tabs_billing.js +29 -0
- package/src/paraglide/messages/notifications_tabs_collaboration.js +29 -0
- package/src/paraglide/messages/notifications_tabs_security.js +29 -0
- package/src/paraglide/messages/notifications_tabs_system.js +29 -0
- package/src/paraglide/messages/notifications_tabs_team.js +29 -0
- package/src/paraglide/messages/notifications_title.js +29 -0
- package/src/paraglide/messages/notifications_toast_newnotification1.js +30 -0
- package/src/paraglide/messages/notifications_unreadbadge1.js +30 -0
- package/src/paraglide/messages/notifications_unreadcount1.js +30 -0
- package/src/paraglide/messages/notifications_verify_emailreminderbody2.js +30 -0
- package/src/paraglide/messages/notifications_verify_emailremindertitle2.js +30 -0
- package/src/paraglide/messages/outline_empty.js +29 -0
- package/src/paraglide/messages/outline_pagestructure1.js +30 -0
- package/src/paraglide/messages/package.json +4 -0
- package/src/paraglide/messages/prd_askai_analyze1.js +30 -0
- package/src/paraglide/messages/prd_askai_button1.js +30 -0
- package/src/paraglide/messages/prd_askai_cat_all1.js +30 -0
- package/src/paraglide/messages/prd_askai_cat_analysis1.js +30 -0
- package/src/paraglide/messages/prd_askai_cat_design1.js +30 -0
- package/src/paraglide/messages/prd_askai_cat_extraction1.js +30 -0
- package/src/paraglide/messages/prd_askai_extract1.js +30 -0
- package/src/paraglide/messages/prd_askai_prototype1.js +30 -0
- package/src/paraglide/messages/prd_backtodashboard2.js +30 -0
- package/src/paraglide/messages/prd_backtoprd2.js +30 -0
- package/src/paraglide/messages/prd_comment_ignored.js +29 -0
- package/src/paraglide/messages/prd_dialog_createfailed1.js +30 -0
- package/src/paraglide/messages/prd_dialog_createtitle1.js +30 -0
- package/src/paraglide/messages/prd_dialog_creating.js +29 -0
- package/src/paraglide/messages/prd_dialog_descriptionplaceholder1.js +30 -0
- package/src/paraglide/messages/prd_dialog_nameplaceholder1.js +30 -0
- package/src/paraglide/messages/prd_dialog_namerequired1.js +30 -0
- package/src/paraglide/messages/prd_loaderror1.js +30 -0
- package/src/paraglide/messages/prd_notfound1.js +30 -0
- package/src/paraglide/messages/prd_notfounddescription2.js +30 -0
- package/src/paraglide/messages/prd_prototype_categorybasic1.js +30 -0
- package/src/paraglide/messages/prd_prototype_categorycontent1.js +30 -0
- package/src/paraglide/messages/prd_prototype_categoryicon1.js +30 -0
- package/src/paraglide/messages/prd_prototype_categorytemplate1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconback1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconbutton1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconcalendar1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconchart1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconfile1.js +30 -0
- package/src/paraglide/messages/prd_prototype_icongeneral1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconimage1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconinput1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconmail1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconmessage1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconnotification1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconsearch1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconsettings1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconshopping1.js +30 -0
- package/src/paraglide/messages/prd_prototype_icontable1.js +30 -0
- package/src/paraglide/messages/prd_prototype_iconuser1.js +30 -0
- package/src/paraglide/messages/prd_retry.js +29 -0
- package/src/paraglide/messages/prd_sidebar_notags1.js +30 -0
- package/src/paraglide/messages/prd_style_borderradius1.js +30 -0
- package/src/paraglide/messages/prd_style_fontsize1.js +30 -0
- package/src/paraglide/messages/prd_subtab_pageversion1.js +30 -0
- package/src/paraglide/messages/prd_subtab_versionpublish1.js +30 -0
- package/src/paraglide/messages/prd_title.js +29 -0
- package/src/paraglide/messages/prd_treepage_duplicatesuffix2.js +30 -0
- package/src/paraglide/messages/prd_treepage_homename2.js +30 -0
- package/src/paraglide/messages/prd_treepage_unnamed1.js +30 -0
- package/src/paraglide/messages/prd_treepage_unnamedfolder2.js +30 -0
- package/src/paraglide/messages/project_invite_added.js +29 -0
- package/src/paraglide/messages/project_invite_guest.js +29 -0
- package/src/paraglide/messages/project_invite_member.js +29 -0
- package/src/paraglide/messages/project_invite_nomembers1.js +30 -0
- package/src/paraglide/messages/project_invite_owner.js +29 -0
- package/src/paraglide/messages/project_invite_searchmember1.js +30 -0
- package/src/paraglide/messages/project_invite_selectmember1.js +30 -0
- package/src/paraglide/messages/projects_detail_activity.js +29 -0
- package/src/paraglide/messages/projects_detail_back.js +29 -0
- package/src/paraglide/messages/projects_detail_iterations.js +29 -0
- package/src/paraglide/messages/projects_detail_knowledgebase1.js +30 -0
- package/src/paraglide/messages/projects_detail_modulestitle1.js +30 -0
- package/src/paraglide/messages/projects_detail_nocontributions1.js +30 -0
- package/src/paraglide/messages/projects_detail_nodescription1.js +30 -0
- package/src/paraglide/messages/projects_detail_recentactivity1.js +30 -0
- package/src/paraglide/messages/projects_detail_settings.js +29 -0
- package/src/paraglide/messages/projects_module_assigneelabel1.js +30 -0
- package/src/paraglide/messages/projects_module_empty.js +29 -0
- package/src/paraglide/messages/projects_module_livebadge1.js +30 -0
- package/src/paraglide/messages/projects_module_moduletitle1.js +30 -0
- package/src/paraglide/messages/projects_module_totalitems1.js +30 -0
- package/src/paraglide/messages/projects_module_unassigned.js +29 -0
- package/src/paraglide/messages/projects_project_activity_created.js +29 -0
- package/src/paraglide/messages/projects_project_activity_dateformat1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_daysago1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_deleted.js +29 -0
- package/src/paraglide/messages/projects_project_activity_hoursago1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_justnow1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_memberinvited1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_memberjoined1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_memberremoved1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_minutesago1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_moduleviewed1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_norecords1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_rolechanged1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_unknownuser1.js +30 -0
- package/src/paraglide/messages/projects_project_activity_updated.js +29 -0
- package/src/paraglide/messages/projects_project_create_creating.js +29 -0
- package/src/paraglide/messages/projects_project_create_failed.js +29 -0
- package/src/paraglide/messages/projects_project_create_idplaceholder1.js +30 -0
- package/src/paraglide/messages/projects_project_create_idunavailable1.js +30 -0
- package/src/paraglide/messages/projects_project_create_introplaceholder1.js +30 -0
- package/src/paraglide/messages/projects_project_create_nameplaceholder1.js +30 -0
- package/src/paraglide/messages/projects_project_create_namerequired1.js +30 -0
- package/src/paraglide/messages/projects_project_create_title.js +29 -0
- package/src/paraglide/messages/projects_project_create_workspacelabel1.js +30 -0
- package/src/paraglide/messages/projects_project_create_workspaceplaceholder1.js +30 -0
- package/src/paraglide/messages/projects_project_create_workspacerequired1.js +30 -0
- package/src/paraglide/messages/projects_project_create_workspaceselected1.js +30 -0
- package/src/paraglide/messages/projects_project_edit_title.js +29 -0
- package/src/paraglide/messages/projects_project_invite_admindesc1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_adminlabel1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_description.js +29 -0
- package/src/paraglide/messages/projects_project_invite_emaillabel1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_emailrequired1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_invited.js +29 -0
- package/src/paraglide/messages/projects_project_invite_invitefailed1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_memberdesc1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_memberlabel1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_rolelabel1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_sendinvite1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_title.js +29 -0
- package/src/paraglide/messages/projects_project_invite_viewerdesc1.js +30 -0
- package/src/paraglide/messages/projects_project_invite_viewerlabel1.js +30 -0
- package/src/paraglide/messages/projects_project_member_admin.js +29 -0
- package/src/paraglide/messages/projects_project_member_confirmremove1.js +30 -0
- package/src/paraglide/messages/projects_project_member_confirmremoveaction2.js +30 -0
- package/src/paraglide/messages/projects_project_member_confirmremovedesc2.js +30 -0
- package/src/paraglide/messages/projects_project_member_invite.js +29 -0
- package/src/paraglide/messages/projects_project_member_management.js +29 -0
- package/src/paraglide/messages/projects_project_member_member.js +29 -0
- package/src/paraglide/messages/projects_project_member_noteammembers2.js +30 -0
- package/src/paraglide/messages/projects_project_member_owner.js +29 -0
- package/src/paraglide/messages/projects_project_member_pending.js +29 -0
- package/src/paraglide/messages/projects_project_member_removed.js +29 -0
- package/src/paraglide/messages/projects_project_member_removefailed1.js +30 -0
- package/src/paraglide/messages/projects_project_member_removemember1.js +30 -0
- package/src/paraglide/messages/projects_project_member_removing.js +29 -0
- package/src/paraglide/messages/projects_project_member_roleupdated1.js +30 -0
- package/src/paraglide/messages/projects_project_member_self.js +29 -0
- package/src/paraglide/messages/projects_project_member_setadmin1.js +30 -0
- package/src/paraglide/messages/projects_project_member_setmember1.js +30 -0
- package/src/paraglide/messages/projects_project_member_setrole1.js +30 -0
- package/src/paraglide/messages/projects_project_member_setviewer1.js +30 -0
- package/src/paraglide/messages/projects_project_member_totalmembers1.js +30 -0
- package/src/paraglide/messages/projects_project_member_viewer.js +29 -0
- package/src/paraglide/messages/projects_project_modulecard_lastupdate2.js +30 -0
- package/src/paraglide/messages/projects_project_modulecard_today1.js +30 -0
- package/src/paraglide/messages/projects_settings_backtoproject2.js +30 -0
- package/src/paraglide/messages/projects_settings_basicinfo1.js +30 -0
- package/src/paraglide/messages/projects_settings_clear.js +29 -0
- package/src/paraglide/messages/projects_settings_cleardesc1.js +30 -0
- package/src/paraglide/messages/projects_settings_confirmdelete1.js +30 -0
- package/src/paraglide/messages/projects_settings_confirmdeletedesc2.js +30 -0
- package/src/paraglide/messages/projects_settings_customtimezone1.js +30 -0
- package/src/paraglide/messages/projects_settings_dangerdesc1.js +30 -0
- package/src/paraglide/messages/projects_settings_dangerzone1.js +30 -0
- package/src/paraglide/messages/projects_settings_deleted.js +29 -0
- package/src/paraglide/messages/projects_settings_deletefailed1.js +30 -0
- package/src/paraglide/messages/projects_settings_deletemethod1.js +30 -0
- package/src/paraglide/messages/projects_settings_deleteproject1.js +30 -0
- package/src/paraglide/messages/projects_settings_descplaceholder1.js +30 -0
- package/src/paraglide/messages/projects_settings_followmytimezone2.js +30 -0
- package/src/paraglide/messages/projects_settings_idplaceholder1.js +30 -0
- package/src/paraglide/messages/projects_settings_idunavailable1.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_desc1.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_empty1.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_generaldisabled2.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_save1.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_saved1.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_savefailed2.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_teamonly2.js +30 -0
- package/src/paraglide/messages/projects_settings_kbsection_title1.js +30 -0
- package/src/paraglide/messages/projects_settings_members.js +29 -0
- package/src/paraglide/messages/projects_settings_namerequired1.js +30 -0
- package/src/paraglide/messages/projects_settings_projectdescription1.js +30 -0
- package/src/paraglide/messages/projects_settings_projecticon1.js +30 -0
- package/src/paraglide/messages/projects_settings_projectid1.js +30 -0
- package/src/paraglide/messages/projects_settings_projectname1.js +30 -0
- package/src/paraglide/messages/projects_settings_savechanges1.js +30 -0
- package/src/paraglide/messages/projects_settings_saved.js +29 -0
- package/src/paraglide/messages/projects_settings_savefailed1.js +30 -0
- package/src/paraglide/messages/projects_settings_timezone.js +29 -0
- package/src/paraglide/messages/projects_settings_title.js +29 -0
- package/src/paraglide/messages/projects_settings_transfer.js +29 -0
- package/src/paraglide/messages/projects_settings_transferdesc1.js +30 -0
- package/src/paraglide/messages/projects_settings_transferredanddeleted2.js +30 -0
- package/src/paraglide/messages/projects_title.js +29 -0
- package/src/paraglide/messages/prototypepanel_desktop1.js +30 -0
- package/src/paraglide/messages/prototypepanel_mobile1.js +30 -0
- package/src/paraglide/messages/prototypepanel_saving1.js +30 -0
- package/src/paraglide/messages/prototypepanel_tablet1.js +30 -0
- package/src/paraglide/messages/prototypepanel_title1.js +30 -0
- package/src/paraglide/messages/rightsidebar_collapse1.js +30 -0
- package/src/paraglide/messages/rightsidebar_pin1.js +30 -0
- package/src/paraglide/messages/rightsidebar_selectpagehint3.js +30 -0
- package/src/paraglide/messages/rightsidebar_tabcomment2.js +30 -0
- package/src/paraglide/messages/rightsidebar_tabeditor2.js +30 -0
- package/src/paraglide/messages/rightsidebar_tabversion2.js +30 -0
- package/src/paraglide/messages/rightsidebar_unpin1.js +30 -0
- package/src/paraglide/messages/settings_ai_back.js +29 -0
- package/src/paraglide/messages/settings_ai_baseurlhint2.js +30 -0
- package/src/paraglide/messages/settings_ai_baseurllabel2.js +30 -0
- package/src/paraglide/messages/settings_ai_byokdelete1.js +30 -0
- package/src/paraglide/messages/settings_ai_byokdescription1.js +30 -0
- package/src/paraglide/messages/settings_ai_byokhidekey2.js +30 -0
- package/src/paraglide/messages/settings_ai_byokhint1.js +30 -0
- package/src/paraglide/messages/settings_ai_byokplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_ai_byoksave1.js +30 -0
- package/src/paraglide/messages/settings_ai_byokshowkey2.js +30 -0
- package/src/paraglide/messages/settings_ai_byokstateempty2.js +30 -0
- package/src/paraglide/messages/settings_ai_byokstatelocked2.js +30 -0
- package/src/paraglide/messages/settings_ai_byokstateset2.js +30 -0
- package/src/paraglide/messages/settings_ai_byoktitle1.js +30 -0
- package/src/paraglide/messages/settings_ai_capabilitiesmap_audio1.js +30 -0
- package/src/paraglide/messages/settings_ai_capabilitiesmap_reasoning1.js +30 -0
- package/src/paraglide/messages/settings_ai_capabilitiesmap_text1.js +30 -0
- package/src/paraglide/messages/settings_ai_capabilitiesmap_tools1.js +30 -0
- package/src/paraglide/messages/settings_ai_capabilitiesmap_vision1.js +30 -0
- package/src/paraglide/messages/settings_ai_capabilitiessection1.js +30 -0
- package/src/paraglide/messages/settings_ai_clearconfig1.js +30 -0
- package/src/paraglide/messages/settings_ai_configdeleted1.js +30 -0
- package/src/paraglide/messages/settings_ai_confirmdeleteprovider2.js +30 -0
- package/src/paraglide/messages/settings_ai_confirmdeleteproviderdescription3.js +30 -0
- package/src/paraglide/messages/settings_ai_contextwindow1.js +30 -0
- package/src/paraglide/messages/settings_ai_contextwindowk2.js +30 -0
- package/src/paraglide/messages/settings_ai_createcustommodel2.js +30 -0
- package/src/paraglide/messages/settings_ai_createcustommodeldescription3.js +30 -0
- package/src/paraglide/messages/settings_ai_createcustomprovider2.js +30 -0
- package/src/paraglide/messages/settings_ai_createcustomproviderdescription3.js +30 -0
- package/src/paraglide/messages/settings_ai_createfailed1.js +30 -0
- package/src/paraglide/messages/settings_ai_createmodel1.js +30 -0
- package/src/paraglide/messages/settings_ai_createprovider1.js +30 -0
- package/src/paraglide/messages/settings_ai_creating.js +29 -0
- package/src/paraglide/messages/settings_ai_creatingprovider1.js +30 -0
- package/src/paraglide/messages/settings_ai_current.js +29 -0
- package/src/paraglide/messages/settings_ai_customapikey2.js +30 -0
- package/src/paraglide/messages/settings_ai_custombadge1.js +30 -0
- package/src/paraglide/messages/settings_ai_custombaseurl2.js +30 -0
- package/src/paraglide/messages/settings_ai_custombaseurlplaceholder3.js +30 -0
- package/src/paraglide/messages/settings_ai_customdefaultmodel2.js +30 -0
- package/src/paraglide/messages/settings_ai_customdefaultmodelplaceholder3.js +30 -0
- package/src/paraglide/messages/settings_ai_customprovidername2.js +30 -0
- package/src/paraglide/messages/settings_ai_customprovidernameplaceholder3.js +30 -0
- package/src/paraglide/messages/settings_ai_customproviders1.js +30 -0
- package/src/paraglide/messages/settings_ai_deletecustomprovider2.js +30 -0
- package/src/paraglide/messages/settings_ai_deletefailedreason2.js +30 -0
- package/src/paraglide/messages/settings_ai_deletesavedkey2.js +30 -0
- package/src/paraglide/messages/settings_ai_deletingprovider1.js +30 -0
- package/src/paraglide/messages/settings_ai_disable.js +29 -0
- package/src/paraglide/messages/settings_ai_disableall1.js +30 -0
- package/src/paraglide/messages/settings_ai_disabled.js +29 -0
- package/src/paraglide/messages/settings_ai_disabledproviders1.js +30 -0
- package/src/paraglide/messages/settings_ai_displayname1.js +30 -0
- package/src/paraglide/messages/settings_ai_displaynameplaceholder2.js +30 -0
- package/src/paraglide/messages/settings_ai_docs.js +29 -0
- package/src/paraglide/messages/settings_ai_dragtosort2.js +30 -0
- package/src/paraglide/messages/settings_ai_enable.js +29 -0
- package/src/paraglide/messages/settings_ai_enableall1.js +30 -0
- package/src/paraglide/messages/settings_ai_enabled.js +29 -0
- package/src/paraglide/messages/settings_ai_enabledproviders1.js +30 -0
- package/src/paraglide/messages/settings_ai_enableprovider1.js +30 -0
- package/src/paraglide/messages/settings_ai_fetchfailed1.js +30 -0
- package/src/paraglide/messages/settings_ai_fetchmodels1.js +30 -0
- package/src/paraglide/messages/settings_ai_freeprice1.js +30 -0
- package/src/paraglide/messages/settings_ai_getapikey2.js +30 -0
- package/src/paraglide/messages/settings_ai_getkey1.js +30 -0
- package/src/paraglide/messages/settings_ai_hidekey1.js +30 -0
- package/src/paraglide/messages/settings_ai_hosted_desc.js +29 -0
- package/src/paraglide/messages/settings_ai_hosted_empty.js +29 -0
- package/src/paraglide/messages/settings_ai_hosted_quota.js +29 -0
- package/src/paraglide/messages/settings_ai_hosted_title.js +29 -0
- package/src/paraglide/messages/settings_ai_iconslug1.js +30 -0
- package/src/paraglide/messages/settings_ai_iconslugplaceholder2.js +30 -0
- package/src/paraglide/messages/settings_ai_includescustom1.js +30 -0
- package/src/paraglide/messages/settings_ai_inputprice1.js +30 -0
- package/src/paraglide/messages/settings_ai_keepcurrentkey2.js +30 -0
- package/src/paraglide/messages/settings_ai_keystoredencrypted2.js +30 -0
- package/src/paraglide/messages/settings_ai_loaderror1.js +30 -0
- package/src/paraglide/messages/settings_ai_localnokeyneeded3.js +30 -0
- package/src/paraglide/messages/settings_ai_modelcount1.js +30 -0
- package/src/paraglide/messages/settings_ai_modelid1.js +30 -0
- package/src/paraglide/messages/settings_ai_modelidplaceholder2.js +30 -0
- package/src/paraglide/messages/settings_ai_modelmanagement1.js +30 -0
- package/src/paraglide/messages/settings_ai_modelmanagementdesc2.js +30 -0
- package/src/paraglide/messages/settings_ai_nocustomprovider2.js +30 -0
- package/src/paraglide/messages/settings_ai_noenabledinfilter3.js +30 -0
- package/src/paraglide/messages/settings_ai_noenabledyet2.js +30 -0
- package/src/paraglide/messages/settings_ai_nomatchedproviders2.js +30 -0
- package/src/paraglide/messages/settings_ai_operationfailed1.js +30 -0
- package/src/paraglide/messages/settings_ai_outputprice1.js +30 -0
- package/src/paraglide/messages/settings_ai_platformdelisteddesc2.js +30 -0
- package/src/paraglide/messages/settings_ai_platformdelistedtitle2.js +30 -0
- package/src/paraglide/messages/settings_ai_platformdepreciated1.js +30 -0
- package/src/paraglide/messages/settings_ai_platformdepreciatednotice2.js +30 -0
- package/src/paraglide/messages/settings_ai_privacynotice1.js +30 -0
- package/src/paraglide/messages/settings_ai_privacynoticedescription2.js +30 -0
- package/src/paraglide/messages/settings_ai_providerconfigured1.js +30 -0
- package/src/paraglide/messages/settings_ai_providercreated1.js +30 -0
- package/src/paraglide/messages/settings_ai_providercreatedtoast2.js +30 -0
- package/src/paraglide/messages/settings_ai_providerdeleted1.js +30 -0
- package/src/paraglide/messages/settings_ai_providerenabled1.js +30 -0
- package/src/paraglide/messages/settings_ai_providerlocal1.js +30 -0
- package/src/paraglide/messages/settings_ai_providernotconfigured2.js +30 -0
- package/src/paraglide/messages/settings_ai_providers.js +29 -0
- package/src/paraglide/messages/settings_ai_providersdescription1.js +30 -0
- package/src/paraglide/messages/settings_ai_recommended.js +29 -0
- package/src/paraglide/messages/settings_ai_releasedate1.js +30 -0
- package/src/paraglide/messages/settings_ai_saved.js +29 -0
- package/src/paraglide/messages/settings_ai_savefailedreason2.js +30 -0
- package/src/paraglide/messages/settings_ai_saveshort1.js +30 -0
- package/src/paraglide/messages/settings_ai_saving.js +29 -0
- package/src/paraglide/messages/settings_ai_searchmodels1.js +30 -0
- package/src/paraglide/messages/settings_ai_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_ai_setupconfig1.js +30 -0
- package/src/paraglide/messages/settings_ai_showkey1.js +30 -0
- package/src/paraglide/messages/settings_ai_sortbyname2.js +30 -0
- package/src/paraglide/messages/settings_ai_sortconfiguredfirst2.js +30 -0
- package/src/paraglide/messages/settings_ai_sortdefault1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_byok_desc.js +29 -0
- package/src/paraglide/messages/settings_ai_source_byok_tagmulti1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_byok_tagurl1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_byok_title.js +29 -0
- package/src/paraglide/messages/settings_ai_source_continue.js +29 -0
- package/src/paraglide/messages/settings_ai_source_current.js +29 -0
- package/src/paraglide/messages/settings_ai_source_hosted_desc.js +29 -0
- package/src/paraglide/messages/settings_ai_source_hosted_tagbilling1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_hosted_tagnokey2.js +30 -0
- package/src/paraglide/messages/settings_ai_source_hosted_title.js +29 -0
- package/src/paraglide/messages/settings_ai_source_local_desc.js +29 -0
- package/src/paraglide/messages/settings_ai_source_local_needdesktop1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_local_tagbyok1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_local_taglocal1.js +30 -0
- package/src/paraglide/messages/settings_ai_source_local_title.js +29 -0
- package/src/paraglide/messages/settings_ai_source_title.js +29 -0
- package/src/paraglide/messages/settings_ai_tabs_all.js +29 -0
- package/src/paraglide/messages/settings_ai_tabs_reasoning.js +29 -0
- package/src/paraglide/messages/settings_ai_tabs_text.js +29 -0
- package/src/paraglide/messages/settings_ai_tabs_tools.js +29 -0
- package/src/paraglide/messages/settings_ai_tabs_video.js +29 -0
- package/src/paraglide/messages/settings_ai_tabs_vision.js +29 -0
- package/src/paraglide/messages/settings_ai_taglabels_apifetched2.js +30 -0
- package/src/paraglide/messages/settings_ai_taglabels_custom1.js +30 -0
- package/src/paraglide/messages/settings_ai_taglabels_fast1.js +30 -0
- package/src/paraglide/messages/settings_ai_taglabels_flagship1.js +30 -0
- package/src/paraglide/messages/settings_ai_taglabels_recommended1.js +30 -0
- package/src/paraglide/messages/settings_ai_tags.js +29 -0
- package/src/paraglide/messages/settings_ai_tagsplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_ai_testconnection1.js +30 -0
- package/src/paraglide/messages/settings_ai_testfailedreason2.js +30 -0
- package/src/paraglide/messages/settings_ai_toggleallfiltered2.js +30 -0
- package/src/paraglide/messages/settings_ai_togglemodel1.js +30 -0
- package/src/paraglide/messages/settings_ai_totalmodels1.js +30 -0
- package/src/paraglide/messages/settings_ai_unknownerror1.js +30 -0
- package/src/paraglide/messages/settings_avatar_bgcolor1.js +30 -0
- package/src/paraglide/messages/settings_avatar_bgshape1.js +30 -0
- package/src/paraglide/messages/settings_avatar_editdescription1.js +30 -0
- package/src/paraglide/messages/settings_avatar_edittitle1.js +30 -0
- package/src/paraglide/messages/settings_avatar_flip.js +29 -0
- package/src/paraglide/messages/settings_avatar_none.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_accessories.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_beard.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_details.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_eyebrows.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_eyes.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_face.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_glasses.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_hair.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_mouth.js +29 -0
- package/src/paraglide/messages/settings_avatar_part_nose.js +29 -0
- package/src/paraglide/messages/settings_avatar_random.js +29 -0
- package/src/paraglide/messages/settings_avatar_reset.js +29 -0
- package/src/paraglide/messages/settings_avatar_shapecircle1.js +30 -0
- package/src/paraglide/messages/settings_avatar_shaperounded1.js +30 -0
- package/src/paraglide/messages/settings_avatar_shapesquare1.js +30 -0
- package/src/paraglide/messages/settings_billing_paymentcancelled1.js +30 -0
- package/src/paraglide/messages/settings_billing_subscriptionsuccess1.js +30 -0
- package/src/paraglide/messages/settings_connection_cloud.js +29 -0
- package/src/paraglide/messages/settings_connection_clouddescription1.js +30 -0
- package/src/paraglide/messages/settings_connection_currentmode1.js +30 -0
- package/src/paraglide/messages/settings_connection_local.js +29 -0
- package/src/paraglide/messages/settings_connection_localdescription1.js +30 -0
- package/src/paraglide/messages/settings_connection_mode.js +29 -0
- package/src/paraglide/messages/settings_connection_modedescription1.js +30 -0
- package/src/paraglide/messages/settings_connection_selfhosted1.js +30 -0
- package/src/paraglide/messages/settings_connection_selfhosteddescription2.js +30 -0
- package/src/paraglide/messages/settings_connection_switchmode1.js +30 -0
- package/src/paraglide/messages/settings_design_cancel.js +29 -0
- package/src/paraglide/messages/settings_design_confirmdeletetoken2.js +30 -0
- package/src/paraglide/messages/settings_design_confirmdeletetokendescription3.js +30 -0
- package/src/paraglide/messages/settings_design_copytoken1.js +30 -0
- package/src/paraglide/messages/settings_design_copytokensuccess2.js +30 -0
- package/src/paraglide/messages/settings_design_delete.js +29 -0
- package/src/paraglide/messages/settings_design_deletefailed1.js +30 -0
- package/src/paraglide/messages/settings_design_generatefailed1.js +30 -0
- package/src/paraglide/messages/settings_design_generatetoken1.js +30 -0
- package/src/paraglide/messages/settings_design_hidetoken1.js +30 -0
- package/src/paraglide/messages/settings_design_regenerate.js +29 -0
- package/src/paraglide/messages/settings_design_setupstep11.js +30 -0
- package/src/paraglide/messages/settings_design_setupstep21.js +30 -0
- package/src/paraglide/messages/settings_design_setupstep31.js +30 -0
- package/src/paraglide/messages/settings_design_showtoken1.js +30 -0
- package/src/paraglide/messages/settings_design_tokendeleted1.js +30 -0
- package/src/paraglide/messages/settings_design_tokengenerated1.js +30 -0
- package/src/paraglide/messages/settings_design_tokennotgenerated2.js +30 -0
- package/src/paraglide/messages/settings_general_language.js +29 -0
- package/src/paraglide/messages/settings_general_languagedescription1.js +30 -0
- package/src/paraglide/messages/settings_general_savefailed1.js +30 -0
- package/src/paraglide/messages/settings_general_timezone.js +29 -0
- package/src/paraglide/messages/settings_general_timezonedescription1.js +30 -0
- package/src/paraglide/messages/settings_general_timezonerequired1.js +30 -0
- package/src/paraglide/messages/settings_general_timezoneupdated1.js +30 -0
- package/src/paraglide/messages/settings_general_title.js +29 -0
- package/src/paraglide/messages/settings_langen1.js +30 -0
- package/src/paraglide/messages/settings_languagechanged1.js +30 -0
- package/src/paraglide/messages/settings_languagechangefailed2.js +30 -0
- package/src/paraglide/messages/settings_langzh1.js +30 -0
- package/src/paraglide/messages/settings_nav_settings.js +29 -0
- package/src/paraglide/messages/settings_notfound_backtosettings3.js +30 -0
- package/src/paraglide/messages/settings_notfound_backtoworkspace3.js +30 -0
- package/src/paraglide/messages/settings_notfound_description1.js +30 -0
- package/src/paraglide/messages/settings_notfound_title1.js +30 -0
- package/src/paraglide/messages/settings_privacy_deletebtn1.js +30 -0
- package/src/paraglide/messages/settings_privacy_deleteconfirmlabel2.js +30 -0
- package/src/paraglide/messages/settings_privacy_deleteconfirmplaceholder2.js +30 -0
- package/src/paraglide/messages/settings_privacy_deletedesc1.js +30 -0
- package/src/paraglide/messages/settings_privacy_deletetitle1.js +30 -0
- package/src/paraglide/messages/settings_privacy_exportbtn1.js +30 -0
- package/src/paraglide/messages/settings_privacy_exportdesc1.js +30 -0
- package/src/paraglide/messages/settings_privacy_exporttitle1.js +30 -0
- package/src/paraglide/messages/settings_privacy_submitted.js +29 -0
- package/src/paraglide/messages/settings_privacy_title.js +29 -0
- package/src/paraglide/messages/settings_profile_accountinfodesc2.js +30 -0
- package/src/paraglide/messages/settings_profile_accountinfotitle2.js +30 -0
- package/src/paraglide/messages/settings_profile_accountmetadata1.js +30 -0
- package/src/paraglide/messages/settings_profile_accountmetadatadesc2.js +30 -0
- package/src/paraglide/messages/settings_profile_avatar.js +29 -0
- package/src/paraglide/messages/settings_profile_avatardescription1.js +30 -0
- package/src/paraglide/messages/settings_profile_avatarsavefailed2.js +30 -0
- package/src/paraglide/messages/settings_profile_avatarupdated1.js +30 -0
- package/src/paraglide/messages/settings_profile_bio.js +29 -0
- package/src/paraglide/messages/settings_profile_biodescription1.js +30 -0
- package/src/paraglide/messages/settings_profile_bioplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_profile_changeemail1.js +30 -0
- package/src/paraglide/messages/settings_profile_changingemail1.js +30 -0
- package/src/paraglide/messages/settings_profile_confirmchange1.js +30 -0
- package/src/paraglide/messages/settings_profile_createdat1.js +30 -0
- package/src/paraglide/messages/settings_profile_createdatdesc2.js +30 -0
- package/src/paraglide/messages/settings_profile_currentpassword1.js +30 -0
- package/src/paraglide/messages/settings_profile_currentpasswordplaceholder2.js +30 -0
- package/src/paraglide/messages/settings_profile_defaultuser1.js +30 -0
- package/src/paraglide/messages/settings_profile_description.js +29 -0
- package/src/paraglide/messages/settings_profile_email.js +29 -0
- package/src/paraglide/messages/settings_profile_emailchangefailed2.js +30 -0
- package/src/paraglide/messages/settings_profile_entercurrentpassword2.js +30 -0
- package/src/paraglide/messages/settings_profile_enteremail1.js +30 -0
- package/src/paraglide/messages/settings_profile_entername1.js +30 -0
- package/src/paraglide/messages/settings_profile_enternewemail2.js +30 -0
- package/src/paraglide/messages/settings_profile_invalidemail1.js +30 -0
- package/src/paraglide/messages/settings_profile_invalidurl1.js +30 -0
- package/src/paraglide/messages/settings_profile_location.js +29 -0
- package/src/paraglide/messages/settings_profile_locationplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_profile_name.js +29 -0
- package/src/paraglide/messages/settings_profile_nameplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_profile_newemail1.js +30 -0
- package/src/paraglide/messages/settings_profile_notavailable1.js +30 -0
- package/src/paraglide/messages/settings_profile_savechanges1.js +30 -0
- package/src/paraglide/messages/settings_profile_saved.js +29 -0
- package/src/paraglide/messages/settings_profile_savefailed1.js +30 -0
- package/src/paraglide/messages/settings_profile_saving.js +29 -0
- package/src/paraglide/messages/settings_profile_socialgithub2.js +30 -0
- package/src/paraglide/messages/settings_profile_sociallinkedin2.js +30 -0
- package/src/paraglide/messages/settings_profile_sociallinks1.js +30 -0
- package/src/paraglide/messages/settings_profile_socialtwitter1.js +30 -0
- package/src/paraglide/messages/settings_profile_socialwebsite1.js +30 -0
- package/src/paraglide/messages/settings_profile_title.js +29 -0
- package/src/paraglide/messages/settings_profile_unknown.js +29 -0
- package/src/paraglide/messages/settings_profile_uploadimage1.js +30 -0
- package/src/paraglide/messages/settings_profile_website.js +29 -0
- package/src/paraglide/messages/settings_tabs_accountprofile1.js +30 -0
- package/src/paraglide/messages/settings_tabs_ai.js +29 -0
- package/src/paraglide/messages/settings_tabs_aiagents1.js +30 -0
- package/src/paraglide/messages/settings_tabs_aiproviders1.js +30 -0
- package/src/paraglide/messages/settings_tabs_billing.js +29 -0
- package/src/paraglide/messages/settings_tabs_connectionmode1.js +30 -0
- package/src/paraglide/messages/settings_tabs_dataprivacy1.js +30 -0
- package/src/paraglide/messages/settings_tabs_desktop.js +29 -0
- package/src/paraglide/messages/settings_tabs_general.js +29 -0
- package/src/paraglide/messages/settings_tabs_generalsettings1.js +30 -0
- package/src/paraglide/messages/settings_tabs_notifications.js +29 -0
- package/src/paraglide/messages/settings_tabs_personalteam1.js +30 -0
- package/src/paraglide/messages/settings_tabs_plugins.js +29 -0
- package/src/paraglide/messages/settings_tabs_prddesign1.js +30 -0
- package/src/paraglide/messages/settings_tabs_subscription.js +29 -0
- package/src/paraglide/messages/settings_tabs_teammembers1.js +30 -0
- package/src/paraglide/messages/settings_tabs_uidesign1.js +30 -0
- package/src/paraglide/messages/settings_team_allroles1.js +30 -0
- package/src/paraglide/messages/settings_team_allstatuses1.js +30 -0
- package/src/paraglide/messages/settings_team_cancel.js +29 -0
- package/src/paraglide/messages/settings_team_channel_email.js +29 -0
- package/src/paraglide/messages/settings_team_channel_link.js +29 -0
- package/src/paraglide/messages/settings_team_copylink1.js +30 -0
- package/src/paraglide/messages/settings_team_dangerzone1.js +30 -0
- package/src/paraglide/messages/settings_team_dangerzonedesc2.js +30 -0
- package/src/paraglide/messages/settings_team_days.js +29 -0
- package/src/paraglide/messages/settings_team_daysago1.js +30 -0
- package/src/paraglide/messages/settings_team_demotetomember2.js +30 -0
- package/src/paraglide/messages/settings_team_directlink1.js +30 -0
- package/src/paraglide/messages/settings_team_emailrequired1.js +30 -0
- package/src/paraglide/messages/settings_team_expired.js +29 -0
- package/src/paraglide/messages/settings_team_expiresin1.js +30 -0
- package/src/paraglide/messages/settings_team_guestbadge1.js +30 -0
- package/src/paraglide/messages/settings_team_hours.js +29 -0
- package/src/paraglide/messages/settings_team_hoursago1.js +30 -0
- package/src/paraglide/messages/settings_team_invalidemail1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_acceptedat1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_approve.js +29 -0
- package/src/paraglide/messages/settings_team_invite_approvedescription1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_approvetitle1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_clearexpired1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_createfirst1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_creating.js +29 -0
- package/src/paraglide/messages/settings_team_invite_deleterecord1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_description.js +29 -0
- package/src/paraglide/messages/settings_team_invite_directlink1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_email.js +29 -0
- package/src/paraglide/messages/settings_team_invite_emaildescription1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_emailplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_emailtitle1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_expires.js +29 -0
- package/src/paraglide/messages/settings_team_invite_generatelink1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_historytitle1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_invitedat1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_linkdescription1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_linkexpired1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_linkexpiry1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_linkrefreshing1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_linktitle1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_message.js +29 -0
- package/src/paraglide/messages/settings_team_invite_messageplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_noactivelink2.js +30 -0
- package/src/paraglide/messages/settings_team_invite_noinvitations1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_refreshlink1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_role.js +29 -0
- package/src/paraglide/messages/settings_team_invite_roledescription1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_sendinvite1.js +30 -0
- package/src/paraglide/messages/settings_team_invite_title.js +29 -0
- package/src/paraglide/messages/settings_team_inviteapproved1.js +30 -0
- package/src/paraglide/messages/settings_team_invitecreatefailed2.js +30 -0
- package/src/paraglide/messages/settings_team_invitemembers1.js +30 -0
- package/src/paraglide/messages/settings_team_invitesent1.js +30 -0
- package/src/paraglide/messages/settings_team_joinedat1.js +30 -0
- package/src/paraglide/messages/settings_team_joinedteam1.js +30 -0
- package/src/paraglide/messages/settings_team_joinrequests_appliedat2.js +30 -0
- package/src/paraglide/messages/settings_team_joinrequests_reject1.js +30 -0
- package/src/paraglide/messages/settings_team_joinrequests_requestapproved2.js +30 -0
- package/src/paraglide/messages/settings_team_joinrequests_requestinvalidated2.js +30 -0
- package/src/paraglide/messages/settings_team_joinrequests_requestrejected2.js +30 -0
- package/src/paraglide/messages/settings_team_justnow1.js +30 -0
- package/src/paraglide/messages/settings_team_lastactiveat2.js +30 -0
- package/src/paraglide/messages/settings_team_leaveteam1.js +30 -0
- package/src/paraglide/messages/settings_team_leaveteamdesc2.js +30 -0
- package/src/paraglide/messages/settings_team_leaveteamtitle2.js +30 -0
- package/src/paraglide/messages/settings_team_lessthanhour2.js +30 -0
- package/src/paraglide/messages/settings_team_linkcopied1.js +30 -0
- package/src/paraglide/messages/settings_team_linkcopiedmessage2.js +36 -0
- package/src/paraglide/messages/settings_team_linkcreated1.js +30 -0
- package/src/paraglide/messages/settings_team_membercount1.js +30 -0
- package/src/paraglide/messages/settings_team_memberinfo1.js +30 -0
- package/src/paraglide/messages/settings_team_minutesago1.js +30 -0
- package/src/paraglide/messages/settings_team_moreactions1.js +30 -0
- package/src/paraglide/messages/settings_team_never.js +29 -0
- package/src/paraglide/messages/settings_team_nomatch1.js +30 -0
- package/src/paraglide/messages/settings_team_nomembers1.js +30 -0
- package/src/paraglide/messages/settings_team_noteam1.js +30 -0
- package/src/paraglide/messages/settings_team_noteamdesc2.js +30 -0
- package/src/paraglide/messages/settings_team_notimplemented1.js +30 -0
- package/src/paraglide/messages/settings_team_promotetoadmin2.js +30 -0
- package/src/paraglide/messages/settings_team_removemember1.js +30 -0
- package/src/paraglide/messages/settings_team_removememberconfirm2.js +30 -0
- package/src/paraglide/messages/settings_team_resend.js +29 -0
- package/src/paraglide/messages/settings_team_resendinvite1.js +30 -0
- package/src/paraglide/messages/settings_team_revoke.js +29 -0
- package/src/paraglide/messages/settings_team_role_admin.js +29 -0
- package/src/paraglide/messages/settings_team_role_guest.js +29 -0
- package/src/paraglide/messages/settings_team_role_member.js +29 -0
- package/src/paraglide/messages/settings_team_role_owner.js +29 -0
- package/src/paraglide/messages/settings_team_role_viewer.js +29 -0
- package/src/paraglide/messages/settings_team_samplenames_lisi1.js +30 -0
- package/src/paraglide/messages/settings_team_samplenames_qianqi1.js +30 -0
- package/src/paraglide/messages/settings_team_samplenames_wangwu1.js +30 -0
- package/src/paraglide/messages/settings_team_samplenames_zhangsan1.js +30 -0
- package/src/paraglide/messages/settings_team_samplenames_zhaoliu1.js +30 -0
- package/src/paraglide/messages/settings_team_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/settings_team_seatguests1.js +30 -0
- package/src/paraglide/messages/settings_team_seatguestshint2.js +30 -0
- package/src/paraglide/messages/settings_team_seatmembers1.js +30 -0
- package/src/paraglide/messages/settings_team_seatmembershint2.js +30 -0
- package/src/paraglide/messages/settings_team_sessions.js +29 -0
- package/src/paraglide/messages/settings_team_status_accepted.js +29 -0
- package/src/paraglide/messages/settings_team_status_active.js +29 -0
- package/src/paraglide/messages/settings_team_status_expired.js +29 -0
- package/src/paraglide/messages/settings_team_status_invited.js +29 -0
- package/src/paraglide/messages/settings_team_status_pending.js +29 -0
- package/src/paraglide/messages/settings_team_status_pendingapproval1.js +30 -0
- package/src/paraglide/messages/settings_team_status_revoked.js +29 -0
- package/src/paraglide/messages/settings_team_status_suspended.js +29 -0
- package/src/paraglide/messages/settings_team_subtitle.js +29 -0
- package/src/paraglide/messages/settings_team_title.js +29 -0
- package/src/paraglide/messages/settings_team_tryadjustfilters2.js +30 -0
- package/src/paraglide/messages/settings_team_unlimited.js +29 -0
- package/src/paraglide/messages/settings_team_unregistered.js +29 -0
- package/src/paraglide/messages/settings_team_you.js +29 -0
- package/src/paraglide/messages/share_brandtagline1.js +30 -0
- package/src/paraglide/messages/share_comment_input_placeholder.js +30 -0
- package/src/paraglide/messages/share_comment_login_required.js +30 -0
- package/src/paraglide/messages/share_comment_send.js +29 -0
- package/src/paraglide/messages/share_review_approve.js +29 -0
- package/src/paraglide/messages/share_review_approved.js +29 -0
- package/src/paraglide/messages/share_review_login_required.js +30 -0
- package/src/paraglide/messages/share_review_notes_placeholder.js +30 -0
- package/src/paraglide/messages/share_review_pending.js +29 -0
- package/src/paraglide/messages/share_review_reject.js +29 -0
- package/src/paraglide/messages/share_review_rejected.js +29 -0
- package/src/paraglide/messages/share_review_reviewing.js +29 -0
- package/src/paraglide/messages/share_review_status_label.js +30 -0
- package/src/paraglide/messages/share_review_status_updated.js +30 -0
- package/src/paraglide/messages/share_review_update_failed.js +30 -0
- package/src/paraglide/messages/shareclient_inactivetitle2.js +30 -0
- package/src/paraglide/messages/shareclient_linkunavailable2.js +30 -0
- package/src/paraglide/messages/shareclient_notfoundtitle3.js +30 -0
- package/src/paraglide/messages/shareclient_versionunavailable2.js +30 -0
- package/src/paraglide/messages/sharecomment_cancel1.js +30 -0
- package/src/paraglide/messages/sharecomment_edited1.js +30 -0
- package/src/paraglide/messages/sharecomment_empty1.js +30 -0
- package/src/paraglide/messages/sharecomment_loginrequired2.js +30 -0
- package/src/paraglide/messages/sharecomment_maxlength2.js +30 -0
- package/src/paraglide/messages/sharecomment_reviewreserved2.js +30 -0
- package/src/paraglide/messages/sharecomment_save1.js +30 -0
- package/src/paraglide/messages/sharecomment_sendfailed2.js +30 -0
- package/src/paraglide/messages/sharecomment_sent1.js +30 -0
- package/src/paraglide/messages/sharecomment_title1.js +30 -0
- package/src/paraglide/messages/sharecomment_updated1.js +30 -0
- package/src/paraglide/messages/sharecomment_updatefailed2.js +30 -0
- package/src/paraglide/messages/sharedirectory_noversions2.js +30 -0
- package/src/paraglide/messages/sharedirectory_versions1.js +30 -0
- package/src/paraglide/messages/sharedoc_nocontentplaceholder3.js +30 -0
- package/src/paraglide/messages/sharedoc_nodoc2.js +30 -0
- package/src/paraglide/messages/sharedoc_nopagedata3.js +30 -0
- package/src/paraglide/messages/sharelayout_doc1.js +30 -0
- package/src/paraglide/messages/sharelayout_prototype1.js +30 -0
- package/src/paraglide/messages/sharenav_hideconnections2.js +30 -0
- package/src/paraglide/messages/sharenav_preview1.js +30 -0
- package/src/paraglide/messages/sharenav_showconnections2.js +30 -0
- package/src/paraglide/messages/sharepanel_copied1.js +30 -0
- package/src/paraglide/messages/sharepanel_copiedwithpassword3.js +30 -0
- package/src/paraglide/messages/sharepanel_copydoclink3.js +30 -0
- package/src/paraglide/messages/sharepanel_copyfailed2.js +30 -0
- package/src/paraglide/messages/sharepanel_copypassword2.js +30 -0
- package/src/paraglide/messages/sharepanel_copypasswordonshare4.js +30 -0
- package/src/paraglide/messages/sharepanel_copysharelink3.js +30 -0
- package/src/paraglide/messages/sharepanel_creating1.js +30 -0
- package/src/paraglide/messages/sharepanel_deletefailed2.js +30 -0
- package/src/paraglide/messages/sharepanel_deletesharelink3.js +30 -0
- package/src/paraglide/messages/sharepanel_deselectall2.js +30 -0
- package/src/paraglide/messages/sharepanel_disablepasswordfailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_disablesharefailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_enablepassword2.js +30 -0
- package/src/paraglide/messages/sharepanel_enablepasswordfailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_enableshare2.js +30 -0
- package/src/paraglide/messages/sharepanel_enablesharefailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_enablesingleshare3.js +30 -0
- package/src/paraglide/messages/sharepanel_expiry1.js +30 -0
- package/src/paraglide/messages/sharepanel_expiry301.js +30 -0
- package/src/paraglide/messages/sharepanel_expiry71.js +30 -0
- package/src/paraglide/messages/sharepanel_expiry901.js +30 -0
- package/src/paraglide/messages/sharepanel_expiryupdated2.js +30 -0
- package/src/paraglide/messages/sharepanel_generaterandompassword3.js +30 -0
- package/src/paraglide/messages/sharepanel_noversions2.js +30 -0
- package/src/paraglide/messages/sharepanel_operationfailed2.js +30 -0
- package/src/paraglide/messages/sharepanel_passwordcopied2.js +30 -0
- package/src/paraglide/messages/sharepanel_passworddisabled2.js +30 -0
- package/src/paraglide/messages/sharepanel_passwordenabled2.js +30 -0
- package/src/paraglide/messages/sharepanel_passwordgeneratefailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_passwordlabel2.js +30 -0
- package/src/paraglide/messages/sharepanel_passwordreset2.js +30 -0
- package/src/paraglide/messages/sharepanel_passwordupdated2.js +30 -0
- package/src/paraglide/messages/sharepanel_recentlyupdated2.js +30 -0
- package/src/paraglide/messages/sharepanel_resetpasswordfailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_restoresaved2.js +30 -0
- package/src/paraglide/messages/sharepanel_saveselection2.js +30 -0
- package/src/paraglide/messages/sharepanel_saveselectionfailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_saving1.js +30 -0
- package/src/paraglide/messages/sharepanel_selectall2.js +30 -0
- package/src/paraglide/messages/sharepanel_selectexpiry2.js +30 -0
- package/src/paraglide/messages/sharepanel_sharedisabled2.js +30 -0
- package/src/paraglide/messages/sharepanel_shareenabled2.js +30 -0
- package/src/paraglide/messages/sharepanel_sharelink2.js +30 -0
- package/src/paraglide/messages/sharepanel_singleshare2.js +30 -0
- package/src/paraglide/messages/sharepanel_singlesharedeleted3.js +30 -0
- package/src/paraglide/messages/sharepanel_singleshareenabled3.js +30 -0
- package/src/paraglide/messages/sharepanel_singlesharefailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_singlesharehint3.js +30 -0
- package/src/paraglide/messages/sharepanel_singlesharerecords3.js +30 -0
- package/src/paraglide/messages/sharepanel_updateexpiryfailed3.js +30 -0
- package/src/paraglide/messages/sharepanel_versionselection2.js +30 -0
- package/src/paraglide/messages/sharepanel_versionselectionsaved3.js +30 -0
- package/src/paraglide/messages/sharepassword_encryptedtitle2.js +30 -0
- package/src/paraglide/messages/sharepassword_enterpassword2.js +30 -0
- package/src/paraglide/messages/sharepassword_passwordplaceholder2.js +30 -0
- package/src/paraglide/messages/sharepassword_verifying1.js +30 -0
- package/src/paraglide/messages/sharepassword_viewshare2.js +30 -0
- package/src/paraglide/messages/sharepassword_wrongpassword2.js +30 -0
- package/src/paraglide/messages/sharepassword_wrongpasswordretry3.js +30 -0
- package/src/paraglide/messages/shareprototype_noelements2.js +30 -0
- package/src/paraglide/messages/sidebar_gridview1.js +30 -0
- package/src/paraglide/messages/sidebar_knowledge_pin.js +29 -0
- package/src/paraglide/messages/sidebar_knowledge_unpin.js +29 -0
- package/src/paraglide/messages/sidebar_listview1.js +30 -0
- package/src/paraglide/messages/sidebar_nocomponents1.js +30 -0
- package/src/paraglide/messages/sidebar_nomatch1.js +30 -0
- package/src/paraglide/messages/sidebar_searchcomponents1.js +30 -0
- package/src/paraglide/messages/sidebar_tabagent1.js +30 -0
- package/src/paraglide/messages/sidebar_tablibrary1.js +30 -0
- package/src/paraglide/messages/sidebar_taboutline1.js +30 -0
- package/src/paraglide/messages/sidebar_tabpage1.js +30 -0
- package/src/paraglide/messages/sidebar_workspace_unpin.js +29 -0
- package/src/paraglide/messages/story_activity_ai.js +29 -0
- package/src/paraglide/messages/story_activity_assignee_changed.js +29 -0
- package/src/paraglide/messages/story_activity_attachment_added.js +29 -0
- package/src/paraglide/messages/story_activity_attachment_removed.js +29 -0
- package/src/paraglide/messages/story_activity_attachment_updated.js +29 -0
- package/src/paraglide/messages/story_activity_changedfield1.js +30 -0
- package/src/paraglide/messages/story_activity_changedstate1.js +30 -0
- package/src/paraglide/messages/story_activity_child_added.js +29 -0
- package/src/paraglide/messages/story_activity_collapse.js +29 -0
- package/src/paraglide/messages/story_activity_commented.js +29 -0
- package/src/paraglide/messages/story_activity_created.js +29 -0
- package/src/paraglide/messages/story_activity_dependency_added.js +29 -0
- package/src/paraglide/messages/story_activity_dependency_removed.js +29 -0
- package/src/paraglide/messages/story_activity_dependency_updated.js +29 -0
- package/src/paraglide/messages/story_activity_description_changed.js +29 -0
- package/src/paraglide/messages/story_activity_empty.js +29 -0
- package/src/paraglide/messages/story_activity_expand.js +29 -0
- package/src/paraglide/messages/story_activity_identifier_changed.js +29 -0
- package/src/paraglide/messages/story_activity_iteration_changed.js +29 -0
- package/src/paraglide/messages/story_activity_kb_linked.js +29 -0
- package/src/paraglide/messages/story_activity_kb_unlinked.js +29 -0
- package/src/paraglide/messages/story_activity_label_changed.js +29 -0
- package/src/paraglide/messages/story_activity_link_added.js +29 -0
- package/src/paraglide/messages/story_activity_link_removed.js +29 -0
- package/src/paraglide/messages/story_activity_link_updated.js +29 -0
- package/src/paraglide/messages/story_activity_merged.js +29 -0
- package/src/paraglide/messages/story_activity_mergedtitle1.js +30 -0
- package/src/paraglide/messages/story_activity_name_changed.js +29 -0
- package/src/paraglide/messages/story_activity_parent_changed.js +29 -0
- package/src/paraglide/messages/story_activity_parent_removed.js +29 -0
- package/src/paraglide/messages/story_activity_prd_unlinked.js +29 -0
- package/src/paraglide/messages/story_activity_priority_changed.js +29 -0
- package/src/paraglide/messages/story_activity_project_transferred.js +29 -0
- package/src/paraglide/messages/story_activity_startdate_changed1.js +30 -0
- package/src/paraglide/messages/story_activity_state_changed.js +29 -0
- package/src/paraglide/messages/story_activity_targetdate_changed1.js +30 -0
- package/src/paraglide/messages/story_activity_updated.js +29 -0
- package/src/paraglide/messages/story_activity_verb_added.js +29 -0
- package/src/paraglide/messages/story_activity_verb_changed.js +29 -0
- package/src/paraglide/messages/story_activitytab_activities1.js +30 -0
- package/src/paraglide/messages/story_activitytab_all1.js +30 -0
- package/src/paraglide/messages/story_activitytab_comments1.js +30 -0
- package/src/paraglide/messages/story_activitytab_records1.js +30 -0
- package/src/paraglide/messages/story_ai_itemcount1.js +30 -0
- package/src/paraglide/messages/story_ai_selectall1.js +30 -0
- package/src/paraglide/messages/story_askai_analyze1.js +30 -0
- package/src/paraglide/messages/story_askai_cat_all1.js +30 -0
- package/src/paraglide/messages/story_askai_cat_analysis1.js +30 -0
- package/src/paraglide/messages/story_askai_cat_refine1.js +30 -0
- package/src/paraglide/messages/story_askai_cat_test1.js +30 -0
- package/src/paraglide/messages/story_askai_refine1.js +30 -0
- package/src/paraglide/messages/story_askai_test1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_add1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_confirmremoveattachment3.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_download1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_edit1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_exitfullscreen2.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_filter1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_filterall2.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_filterbytype3.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_fullscreen1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_gotodoc3.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_groupattachment2.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_groupkb2.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_grouplink2.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_list1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_open1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_preview1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_remove1.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_removelink2.js +30 -0
- package/src/paraglide/messages/story_associatedattachments_title1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_batchdescdisabled3.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_button1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_cancel1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_confirmupload2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_continueupload2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_descoptional2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_descplaceholder2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_downloaddisabled2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_duplicatebadge2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_duplicatehint2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_edittitle2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_empty1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_hidetitle2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_removeconfirmdesc3.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_removeconfirmtitle3.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_removed1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_removefailed2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_removefile2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_sizelimit2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_title1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_toggletitle2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_upload1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_uploaded1.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_uploadhint2.js +30 -0
- package/src/paraglide/messages/story_attachmentdialog_uploading1.js +30 -0
- package/src/paraglide/messages/story_attachments_add.js +29 -0
- package/src/paraglide/messages/story_attachments_cancel.js +29 -0
- package/src/paraglide/messages/story_attachments_clicktoselect2.js +30 -0
- package/src/paraglide/messages/story_attachments_empty.js +29 -0
- package/src/paraglide/messages/story_attachments_removed.js +29 -0
- package/src/paraglide/messages/story_attachments_removefailed1.js +30 -0
- package/src/paraglide/messages/story_attachments_selectfile1.js +30 -0
- package/src/paraglide/messages/story_attachments_title.js +29 -0
- package/src/paraglide/messages/story_attachments_upload.js +29 -0
- package/src/paraglide/messages/story_attachments_uploaded.js +29 -0
- package/src/paraglide/messages/story_attachments_uploadfailed1.js +30 -0
- package/src/paraglide/messages/story_attachments_uploading.js +29 -0
- package/src/paraglide/messages/story_attachments_uploadtitle1.js +30 -0
- package/src/paraglide/messages/story_batchpreview_archivedesc2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_archivetitle2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_cancel1.js +30 -0
- package/src/paraglide/messages/story_batchpreview_confirmarchive2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_confirmdelete2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_confirmdeletebtn3.js +30 -0
- package/src/paraglide/messages/story_batchpreview_confirmhint2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_confirmplaceholder2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_copied1.js +30 -0
- package/src/paraglide/messages/story_batchpreview_copyaria2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_copyhint2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_deletedesc2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_deletetitle2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_invalidconfirm2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_nomatch2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_nonearchivable2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_nostories2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_processing1.js +30 -0
- package/src/paraglide/messages/story_batchpreview_searchplaceholder2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_select1.js +30 -0
- package/src/paraglide/messages/story_batchpreview_selectall2.js +30 -0
- package/src/paraglide/messages/story_batchpreview_selectedcount2.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_archive1.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_clear1.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_delete1.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_duedate2.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_movedown2.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_moveup2.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_selected1.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_startdate2.js +30 -0
- package/src/paraglide/messages/story_batchtoolbar_transfer1.js +30 -0
- package/src/paraglide/messages/story_calendar_createnew1.js +30 -0
- package/src/paraglide/messages/story_calendar_dateupdated1.js +30 -0
- package/src/paraglide/messages/story_calendar_dateupdatefailed2.js +30 -0
- package/src/paraglide/messages/story_calendar_daystories1.js +30 -0
- package/src/paraglide/messages/story_calendar_month.js +29 -0
- package/src/paraglide/messages/story_calendar_monthtitle1.js +30 -0
- package/src/paraglide/messages/story_calendar_more.js +29 -0
- package/src/paraglide/messages/story_calendar_today.js +29 -0
- package/src/paraglide/messages/story_calendar_unscheduled.js +29 -0
- package/src/paraglide/messages/story_calendar_week.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_0.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_1.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_2.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_3.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_4.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_5.js +29 -0
- package/src/paraglide/messages/story_calendar_weekdays_6.js +29 -0
- package/src/paraglide/messages/story_categories_acceptance_label.js +29 -0
- package/src/paraglide/messages/story_categories_acceptance_placeholder.js +29 -0
- package/src/paraglide/messages/story_categories_acceptance_tooltip.js +29 -0
- package/src/paraglide/messages/story_categories_bug_label.js +29 -0
- package/src/paraglide/messages/story_categories_bug_placeholder.js +29 -0
- package/src/paraglide/messages/story_categories_bug_tooltip.js +29 -0
- package/src/paraglide/messages/story_categories_prd_label.js +29 -0
- package/src/paraglide/messages/story_categories_prd_placeholder.js +29 -0
- package/src/paraglide/messages/story_categories_prd_tooltip.js +29 -0
- package/src/paraglide/messages/story_categories_retro_label.js +29 -0
- package/src/paraglide/messages/story_categories_retro_placeholder.js +29 -0
- package/src/paraglide/messages/story_categories_retro_tooltip.js +29 -0
- package/src/paraglide/messages/story_categories_testcase_label1.js +30 -0
- package/src/paraglide/messages/story_categories_testcase_placeholder1.js +30 -0
- package/src/paraglide/messages/story_categories_testcase_tooltip1.js +30 -0
- package/src/paraglide/messages/story_categories_ui_label.js +29 -0
- package/src/paraglide/messages/story_categories_ui_placeholder.js +29 -0
- package/src/paraglide/messages/story_categories_ui_tooltip.js +29 -0
- package/src/paraglide/messages/story_children_addchild1.js +30 -0
- package/src/paraglide/messages/story_children_archive.js +29 -0
- package/src/paraglide/messages/story_children_archived.js +29 -0
- package/src/paraglide/messages/story_children_archivefailed1.js +30 -0
- package/src/paraglide/messages/story_children_archiveonlydone2.js +30 -0
- package/src/paraglide/messages/story_children_bulkarchived1.js +30 -0
- package/src/paraglide/messages/story_children_bulkarchivedskipped2.js +30 -0
- package/src/paraglide/messages/story_children_bulkdeleted1.js +30 -0
- package/src/paraglide/messages/story_children_bulkupdated1.js +30 -0
- package/src/paraglide/messages/story_children_bulkupdatefailed2.js +30 -0
- package/src/paraglide/messages/story_children_childstories1.js +30 -0
- package/src/paraglide/messages/story_children_createchild1.js +30 -0
- package/src/paraglide/messages/story_children_crossproject1.js +30 -0
- package/src/paraglide/messages/story_children_delete.js +29 -0
- package/src/paraglide/messages/story_children_deleted.js +29 -0
- package/src/paraglide/messages/story_children_deletedescription1.js +30 -0
- package/src/paraglide/messages/story_children_deletefailed1.js +30 -0
- package/src/paraglide/messages/story_children_deletetitle1.js +30 -0
- package/src/paraglide/messages/story_children_duedate1.js +30 -0
- package/src/paraglide/messages/story_children_removechild1.js +30 -0
- package/src/paraglide/messages/story_children_removechildfailed2.js +30 -0
- package/src/paraglide/messages/story_children_removedchild1.js +30 -0
- package/src/paraglide/messages/story_children_selectchild1.js +30 -0
- package/src/paraglide/messages/story_children_selectstory1.js +30 -0
- package/src/paraglide/messages/story_children_startdate1.js +30 -0
- package/src/paraglide/messages/story_children_unarchive.js +29 -0
- package/src/paraglide/messages/story_children_unarchived.js +29 -0
- package/src/paraglide/messages/story_children_unarchivefailed1.js +30 -0
- package/src/paraglide/messages/story_children_updatefailed1.js +30 -0
- package/src/paraglide/messages/story_column_assignee.js +29 -0
- package/src/paraglide/messages/story_column_attachments.js +29 -0
- package/src/paraglide/messages/story_column_createdby1.js +30 -0
- package/src/paraglide/messages/story_column_duedate1.js +30 -0
- package/src/paraglide/messages/story_column_identifier.js +29 -0
- package/src/paraglide/messages/story_column_labels.js +29 -0
- package/src/paraglide/messages/story_column_links.js +29 -0
- package/src/paraglide/messages/story_column_pages.js +29 -0
- package/src/paraglide/messages/story_column_priority.js +29 -0
- package/src/paraglide/messages/story_column_startdate1.js +30 -0
- package/src/paraglide/messages/story_column_state.js +29 -0
- package/src/paraglide/messages/story_column_title.js +29 -0
- package/src/paraglide/messages/story_comment_cancel.js +29 -0
- package/src/paraglide/messages/story_comment_collapsereplies1.js +30 -0
- package/src/paraglide/messages/story_comment_confirmdelete1.js +30 -0
- package/src/paraglide/messages/story_comment_delete.js +29 -0
- package/src/paraglide/messages/story_comment_deletefailed1.js +30 -0
- package/src/paraglide/messages/story_comment_edit.js +29 -0
- package/src/paraglide/messages/story_comment_editfailed1.js +30 -0
- package/src/paraglide/messages/story_comment_failed.js +29 -0
- package/src/paraglide/messages/story_comment_markdownhint1.js +30 -0
- package/src/paraglide/messages/story_comment_operationfailed1.js +30 -0
- package/src/paraglide/messages/story_comment_placeholder.js +29 -0
- package/src/paraglide/messages/story_comment_reply.js +29 -0
- package/src/paraglide/messages/story_comment_retry.js +29 -0
- package/src/paraglide/messages/story_comment_save.js +29 -0
- package/src/paraglide/messages/story_comment_send.js +29 -0
- package/src/paraglide/messages/story_comment_sending.js +29 -0
- package/src/paraglide/messages/story_comment_viewreplies1.js +30 -0
- package/src/paraglide/messages/story_create_adddescription1.js +30 -0
- package/src/paraglide/messages/story_create_cancel.js +29 -0
- package/src/paraglide/messages/story_create_continuous.js +29 -0
- package/src/paraglide/messages/story_create_create.js +29 -0
- package/src/paraglide/messages/story_create_creating.js +29 -0
- package/src/paraglide/messages/story_create_duedate1.js +30 -0
- package/src/paraglide/messages/story_create_failed.js +29 -0
- package/src/paraglide/messages/story_create_requiretitle1.js +30 -0
- package/src/paraglide/messages/story_create_shortcuts.js +29 -0
- package/src/paraglide/messages/story_create_startdate1.js +30 -0
- package/src/paraglide/messages/story_create_title.js +29 -0
- package/src/paraglide/messages/story_dependency_add.js +29 -0
- package/src/paraglide/messages/story_dependency_added.js +29 -0
- package/src/paraglide/messages/story_dependency_addfailed1.js +30 -0
- package/src/paraglide/messages/story_dependency_addpartialfailed2.js +30 -0
- package/src/paraglide/messages/story_dependency_alreadyexists1.js +30 -0
- package/src/paraglide/messages/story_dependency_bulkupdated1.js +30 -0
- package/src/paraglide/messages/story_dependency_dependentstitle1.js +30 -0
- package/src/paraglide/messages/story_dependency_dependsontitle2.js +30 -0
- package/src/paraglide/messages/story_dependency_errors_cycle5.js +30 -0
- package/src/paraglide/messages/story_dependency_errors_duplicated10.js +30 -0
- package/src/paraglide/messages/story_dependency_errors_self4.js +30 -0
- package/src/paraglide/messages/story_dependency_labels_blocked_by.js +29 -0
- package/src/paraglide/messages/story_dependency_labels_blocking.js +29 -0
- package/src/paraglide/messages/story_dependency_labels_finishes_after.js +29 -0
- package/src/paraglide/messages/story_dependency_labels_finishes_before.js +29 -0
- package/src/paraglide/messages/story_dependency_labels_starts_after.js +29 -0
- package/src/paraglide/messages/story_dependency_labels_starts_before.js +29 -0
- package/src/paraglide/messages/story_dependency_networkfailed1.js +30 -0
- package/src/paraglide/messages/story_dependency_optiongroups_dependents1.js +30 -0
- package/src/paraglide/messages/story_dependency_optiongroups_dependson2.js +30 -0
- package/src/paraglide/messages/story_dependency_options_blocked_by.js +29 -0
- package/src/paraglide/messages/story_dependency_options_blocking.js +29 -0
- package/src/paraglide/messages/story_dependency_options_finishes_after.js +29 -0
- package/src/paraglide/messages/story_dependency_options_finishes_before.js +29 -0
- package/src/paraglide/messages/story_dependency_options_starts_after.js +29 -0
- package/src/paraglide/messages/story_dependency_options_starts_before.js +29 -0
- package/src/paraglide/messages/story_dependency_remove.js +29 -0
- package/src/paraglide/messages/story_dependency_removed.js +29 -0
- package/src/paraglide/messages/story_dependency_removefailed1.js +30 -0
- package/src/paraglide/messages/story_dependency_tooltips_blocked_by.js +29 -0
- package/src/paraglide/messages/story_dependency_tooltips_blocking.js +29 -0
- package/src/paraglide/messages/story_dependency_tooltips_finishes_after.js +29 -0
- package/src/paraglide/messages/story_dependency_tooltips_finishes_before.js +29 -0
- package/src/paraglide/messages/story_dependency_tooltips_starts_after.js +29 -0
- package/src/paraglide/messages/story_dependency_tooltips_starts_before.js +29 -0
- package/src/paraglide/messages/story_dependency_typeplaceholder1.js +30 -0
- package/src/paraglide/messages/story_dependency_updated.js +29 -0
- package/src/paraglide/messages/story_dependency_updatefailed1.js +30 -0
- package/src/paraglide/messages/story_detail_addreaction1.js +30 -0
- package/src/paraglide/messages/story_detail_belongsto1.js +30 -0
- package/src/paraglide/messages/story_detail_clicktocopy2.js +30 -0
- package/src/paraglide/messages/story_detail_copied.js +29 -0
- package/src/paraglide/messages/story_detail_copyfailed1.js +30 -0
- package/src/paraglide/messages/story_detail_createdat1.js +30 -0
- package/src/paraglide/messages/story_detail_createdby1.js +30 -0
- package/src/paraglide/messages/story_detail_duedate1.js +30 -0
- package/src/paraglide/messages/story_detail_operationfailed1.js +30 -0
- package/src/paraglide/messages/story_detail_savefailed1.js +30 -0
- package/src/paraglide/messages/story_detail_showless1.js +30 -0
- package/src/paraglide/messages/story_detail_showmore1.js +30 -0
- package/src/paraglide/messages/story_detail_startdate1.js +30 -0
- package/src/paraglide/messages/story_detail_updatedat1.js +30 -0
- package/src/paraglide/messages/story_display_asc.js +29 -0
- package/src/paraglide/messages/story_display_desc.js +29 -0
- package/src/paraglide/messages/story_display_displayoptions1.js +30 -0
- package/src/paraglide/messages/story_display_extraoptions1.js +30 -0
- package/src/paraglide/messages/story_display_group_assignee.js +29 -0
- package/src/paraglide/messages/story_display_group_createdby1.js +30 -0
- package/src/paraglide/messages/story_display_group_labels.js +29 -0
- package/src/paraglide/messages/story_display_group_none.js +29 -0
- package/src/paraglide/messages/story_display_group_priority.js +29 -0
- package/src/paraglide/messages/story_display_group_project.js +29 -0
- package/src/paraglide/messages/story_display_group_state.js +29 -0
- package/src/paraglide/messages/story_display_order_created.js +29 -0
- package/src/paraglide/messages/story_display_order_duedate1.js +30 -0
- package/src/paraglide/messages/story_display_order_manual.js +29 -0
- package/src/paraglide/messages/story_display_order_priority.js +29 -0
- package/src/paraglide/messages/story_display_order_startdate1.js +30 -0
- package/src/paraglide/messages/story_display_order_updated.js +29 -0
- package/src/paraglide/messages/story_display_pagesize1.js +30 -0
- package/src/paraglide/messages/story_display_property_assignee.js +29 -0
- package/src/paraglide/messages/story_display_property_attachmentcount1.js +30 -0
- package/src/paraglide/messages/story_display_property_duedate1.js +30 -0
- package/src/paraglide/messages/story_display_property_id.js +29 -0
- package/src/paraglide/messages/story_display_property_labels.js +29 -0
- package/src/paraglide/messages/story_display_property_priority.js +29 -0
- package/src/paraglide/messages/story_display_property_project.js +29 -0
- package/src/paraglide/messages/story_display_property_startdate1.js +30 -0
- package/src/paraglide/messages/story_display_property_state.js +29 -0
- package/src/paraglide/messages/story_display_property_subcount1.js +30 -0
- package/src/paraglide/messages/story_display_showemptygroups2.js +30 -0
- package/src/paraglide/messages/story_display_showproperties1.js +30 -0
- package/src/paraglide/messages/story_display_showsubitems2.js +30 -0
- package/src/paraglide/messages/story_display_subgroup1.js +30 -0
- package/src/paraglide/messages/story_display_viewgrouping1.js +30 -0
- package/src/paraglide/messages/story_filter_addcondition1.js +30 -0
- package/src/paraglide/messages/story_filter_alladded1.js +30 -0
- package/src/paraglide/messages/story_filter_cancel.js +29 -0
- package/src/paraglide/messages/story_filter_clear.js +29 -0
- package/src/paraglide/messages/story_filter_field_assignee.js +29 -0
- package/src/paraglide/messages/story_filter_field_createddate1.js +30 -0
- package/src/paraglide/messages/story_filter_field_label.js +29 -0
- package/src/paraglide/messages/story_filter_field_priority.js +29 -0
- package/src/paraglide/messages/story_filter_field_state.js +29 -0
- package/src/paraglide/messages/story_filter_field_targetdate1.js +30 -0
- package/src/paraglide/messages/story_filter_field_title.js +29 -0
- package/src/paraglide/messages/story_filter_label.js +29 -0
- package/src/paraglide/messages/story_filter_multi.js +29 -0
- package/src/paraglide/messages/story_filter_operator_after.js +29 -0
- package/src/paraglide/messages/story_filter_operator_before.js +29 -0
- package/src/paraglide/messages/story_filter_operator_between.js +29 -0
- package/src/paraglide/messages/story_filter_operator_contains.js +29 -0
- package/src/paraglide/messages/story_filter_operator_is.js +29 -0
- package/src/paraglide/messages/story_filter_operator_is_any_of.js +29 -0
- package/src/paraglide/messages/story_filter_operator_is_empty.js +29 -0
- package/src/paraglide/messages/story_filter_operator_is_not.js +29 -0
- package/src/paraglide/messages/story_filter_operator_is_not_any_of.js +29 -0
- package/src/paraglide/messages/story_filter_operator_is_not_empty.js +29 -0
- package/src/paraglide/messages/story_filter_operator_not_contains.js +29 -0
- package/src/paraglide/messages/story_filter_operator_on_or_after.js +29 -0
- package/src/paraglide/messages/story_filter_operator_on_or_before.js +29 -0
- package/src/paraglide/messages/story_filter_saveasview2.js +30 -0
- package/src/paraglide/messages/story_filter_selectdate1.js +30 -0
- package/src/paraglide/messages/story_filter_selectrange1.js +30 -0
- package/src/paraglide/messages/story_filter_single.js +29 -0
- package/src/paraglide/messages/story_filter_toggleopen1.js +30 -0
- package/src/paraglide/messages/story_filter_unassignedassignee1.js +30 -0
- package/src/paraglide/messages/story_filters_archiveall1.js +30 -0
- package/src/paraglide/messages/story_filters_clearall1.js +30 -0
- package/src/paraglide/messages/story_filters_unassignedassignee1.js +30 -0
- package/src/paraglide/messages/story_group_add.js +29 -0
- package/src/paraglide/messages/story_group_addto1.js +30 -0
- package/src/paraglide/messages/story_group_all.js +29 -0
- package/src/paraglide/messages/story_group_assignee.js +29 -0
- package/src/paraglide/messages/story_group_createdby1.js +30 -0
- package/src/paraglide/messages/story_group_loading.js +29 -0
- package/src/paraglide/messages/story_group_loadingdata1.js +30 -0
- package/src/paraglide/messages/story_group_loadmore1.js +30 -0
- package/src/paraglide/messages/story_group_no_labels.js +29 -0
- package/src/paraglide/messages/story_group_no_project.js +29 -0
- package/src/paraglide/messages/story_group_selectall1.js +30 -0
- package/src/paraglide/messages/story_group_unassigned.js +29 -0
- package/src/paraglide/messages/story_group_unknown_user.js +29 -0
- package/src/paraglide/messages/story_hierarchy_addchild1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_addchildfailed2.js +30 -0
- package/src/paraglide/messages/story_hierarchy_childadded1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_childremoved1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_children.js +29 -0
- package/src/paraglide/messages/story_hierarchy_nochildren1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_noparent1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_parent.js +29 -0
- package/src/paraglide/messages/story_hierarchy_removechildfailed2.js +30 -0
- package/src/paraglide/messages/story_hierarchy_searchstory1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_selectchild1.js +30 -0
- package/src/paraglide/messages/story_hierarchy_setparent1.js +30 -0
- package/src/paraglide/messages/story_inline_addparent1.js +30 -0
- package/src/paraglide/messages/story_inline_aiapplied1.js +30 -0
- package/src/paraglide/messages/story_inline_aiapply1.js +30 -0
- package/src/paraglide/messages/story_inline_aiempty1.js +30 -0
- package/src/paraglide/messages/story_inline_aifailed1.js +30 -0
- package/src/paraglide/messages/story_inline_aigenerate1.js +30 -0
- package/src/paraglide/messages/story_inline_ailoading1.js +30 -0
- package/src/paraglide/messages/story_inline_aineedname2.js +30 -0
- package/src/paraglide/messages/story_inline_ainew1.js +30 -0
- package/src/paraglide/messages/story_inline_airegenerate1.js +30 -0
- package/src/paraglide/messages/story_inline_assignee.js +29 -0
- package/src/paraglide/messages/story_inline_clear.js +29 -0
- package/src/paraglide/messages/story_inline_dateshort1.js +30 -0
- package/src/paraglide/messages/story_inline_labelcount1.js +30 -0
- package/src/paraglide/messages/story_inline_labels.js +29 -0
- package/src/paraglide/messages/story_inline_nolabels1.js +30 -0
- package/src/paraglide/messages/story_inline_nomatchmembers2.js +30 -0
- package/src/paraglide/messages/story_inline_notselected1.js +30 -0
- package/src/paraglide/messages/story_inline_scopeproject1.js +30 -0
- package/src/paraglide/messages/story_inline_scopeteam1.js +30 -0
- package/src/paraglide/messages/story_inline_searchmembers1.js +30 -0
- package/src/paraglide/messages/story_inline_searchprojectmembers2.js +30 -0
- package/src/paraglide/messages/story_inline_searchteammembers2.js +30 -0
- package/src/paraglide/messages/story_inline_selectparent1.js +30 -0
- package/src/paraglide/messages/story_inline_switchtoproject2.js +30 -0
- package/src/paraglide/messages/story_inline_switchtoteam2.js +30 -0
- package/src/paraglide/messages/story_inline_titleplaceholder1.js +30 -0
- package/src/paraglide/messages/story_inlinecreator_cancel1.js +30 -0
- package/src/paraglide/messages/story_inlinecreator_create1.js +30 -0
- package/src/paraglide/messages/story_inlinecreator_duedate2.js +30 -0
- package/src/paraglide/messages/story_inlinecreator_placeholder1.js +30 -0
- package/src/paraglide/messages/story_inlinecreator_startdate2.js +30 -0
- package/src/paraglide/messages/story_kanban_empty.js +29 -0
- package/src/paraglide/messages/story_kanban_groupupdated1.js +30 -0
- package/src/paraglide/messages/story_kanban_movefailed1.js +30 -0
- package/src/paraglide/messages/story_kanban_nostories1.js +30 -0
- package/src/paraglide/messages/story_kanban_orderfailed1.js +30 -0
- package/src/paraglide/messages/story_knowledge_doclinked1.js +30 -0
- package/src/paraglide/messages/story_knowledge_doctitle1.js +30 -0
- package/src/paraglide/messages/story_knowledge_docunlinked1.js +30 -0
- package/src/paraglide/messages/story_knowledge_linkdoc1.js +30 -0
- package/src/paraglide/messages/story_knowledge_linkdocfailed2.js +30 -0
- package/src/paraglide/messages/story_knowledge_nodocs1.js +30 -0
- package/src/paraglide/messages/story_knowledge_noresults1.js +30 -0
- package/src/paraglide/messages/story_knowledge_searchdocfailed2.js +30 -0
- package/src/paraglide/messages/story_knowledge_searchdocplaceholder2.js +30 -0
- package/src/paraglide/messages/story_knowledge_searchdoctitle2.js +30 -0
- package/src/paraglide/messages/story_knowledge_searchprdfailed2.js +30 -0
- package/src/paraglide/messages/story_knowledge_unlinkdocfailed2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_allkbs2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_button1.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_cancel1.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_confirm1.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_empty1.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_generalkbs2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_groupbookmark2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_groupcompliance2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_groupdictionary2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_grouplegal2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_groupsummary2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_linked1.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_linkfailed2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_partialfailed2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_searchplaceholder2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_selectall2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_selectedcount2.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_title1.js +30 -0
- package/src/paraglide/messages/story_knowledgedialog_userkbs2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_add1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_added1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_addtitle2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_button1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_cancel1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_descoptional2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_descplaceholder2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_edittitle2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_empty1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_listtitle2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_removed1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_removefailed2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_save1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_savefailed2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_title1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_titleoptional2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_titleplaceholder2.js +30 -0
- package/src/paraglide/messages/story_linkdialog_updated1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_url1.js +30 -0
- package/src/paraglide/messages/story_linkdialog_urlplaceholder2.js +30 -0
- package/src/paraglide/messages/story_links_add.js +29 -0
- package/src/paraglide/messages/story_links_added.js +29 -0
- package/src/paraglide/messages/story_links_addtitle1.js +30 -0
- package/src/paraglide/messages/story_links_cancel.js +29 -0
- package/src/paraglide/messages/story_links_descoptional1.js +30 -0
- package/src/paraglide/messages/story_links_descplaceholder1.js +30 -0
- package/src/paraglide/messages/story_links_edittitle1.js +30 -0
- package/src/paraglide/messages/story_links_empty.js +29 -0
- package/src/paraglide/messages/story_links_removed.js +29 -0
- package/src/paraglide/messages/story_links_removefailed1.js +30 -0
- package/src/paraglide/messages/story_links_savefailed1.js +30 -0
- package/src/paraglide/messages/story_links_title.js +29 -0
- package/src/paraglide/messages/story_links_titleoptional1.js +30 -0
- package/src/paraglide/messages/story_links_titleplaceholder1.js +30 -0
- package/src/paraglide/messages/story_links_update.js +29 -0
- package/src/paraglide/messages/story_links_updated.js +29 -0
- package/src/paraglide/messages/story_list_archivefailed1.js +30 -0
- package/src/paraglide/messages/story_list_bulkarchived1.js +30 -0
- package/src/paraglide/messages/story_list_bulkarchivedskipped2.js +30 -0
- package/src/paraglide/messages/story_list_bulkdeleted1.js +30 -0
- package/src/paraglide/messages/story_list_bulkupdated1.js +30 -0
- package/src/paraglide/messages/story_list_bulkupdatefailed2.js +30 -0
- package/src/paraglide/messages/story_list_createfailed1.js +30 -0
- package/src/paraglide/messages/story_list_deletefailed1.js +30 -0
- package/src/paraglide/messages/story_list_moveddown1.js +30 -0
- package/src/paraglide/messages/story_list_movedup1.js +30 -0
- package/src/paraglide/messages/story_list_movefailed1.js +30 -0
- package/src/paraglide/messages/story_listview_archivealldescription3.js +30 -0
- package/src/paraglide/messages/story_listview_archivealltitle3.js +30 -0
- package/src/paraglide/messages/story_listview_archivedone2.js +30 -0
- package/src/paraglide/messages/story_listview_archivedonewithfailures4.js +30 -0
- package/src/paraglide/messages/story_listview_archivefailed2.js +30 -0
- package/src/paraglide/messages/story_listview_archiving1.js +30 -0
- package/src/paraglide/messages/story_listview_confirmarchive2.js +30 -0
- package/src/paraglide/messages/story_listview_noarchiveable2.js +30 -0
- package/src/paraglide/messages/story_loadedall1.js +30 -0
- package/src/paraglide/messages/story_panel_archive.js +29 -0
- package/src/paraglide/messages/story_panel_archived.js +29 -0
- package/src/paraglide/messages/story_panel_archivefailed1.js +30 -0
- package/src/paraglide/messages/story_panel_askai1.js +30 -0
- package/src/paraglide/messages/story_panel_back.js +29 -0
- package/src/paraglide/messages/story_panel_close.js +29 -0
- package/src/paraglide/messages/story_panel_collapse.js +29 -0
- package/src/paraglide/messages/story_panel_copyfailed1.js +30 -0
- package/src/paraglide/messages/story_panel_copylink1.js +30 -0
- package/src/paraglide/messages/story_panel_delete.js +29 -0
- package/src/paraglide/messages/story_panel_deleted.js +29 -0
- package/src/paraglide/messages/story_panel_deletedescription1.js +30 -0
- package/src/paraglide/messages/story_panel_deletetitle1.js +30 -0
- package/src/paraglide/messages/story_panel_fullscreen.js +29 -0
- package/src/paraglide/messages/story_panel_linkcopied1.js +30 -0
- package/src/paraglide/messages/story_panel_mode_fullscreen1.js +30 -0
- package/src/paraglide/messages/story_panel_mode_modal.js +29 -0
- package/src/paraglide/messages/story_panel_mode_sidepeek1.js +30 -0
- package/src/paraglide/messages/story_panel_more.js +29 -0
- package/src/paraglide/messages/story_panel_nextstory1.js +30 -0
- package/src/paraglide/messages/story_panel_previousstory1.js +30 -0
- package/src/paraglide/messages/story_panel_switchlayout1.js +30 -0
- package/src/paraglide/messages/story_peek_childstory1.js +30 -0
- package/src/paraglide/messages/story_peek_currentstory1.js +30 -0
- package/src/paraglide/messages/story_peek_dependentstory1.js +30 -0
- package/src/paraglide/messages/story_peek_loadfailed1.js +30 -0
- package/src/paraglide/messages/story_peek_parentstory1.js +30 -0
- package/src/paraglide/messages/story_priority_high.js +29 -0
- package/src/paraglide/messages/story_priority_low.js +29 -0
- package/src/paraglide/messages/story_priority_medium.js +29 -0
- package/src/paraglide/messages/story_priority_none.js +29 -0
- package/src/paraglide/messages/story_priority_urgent.js +29 -0
- package/src/paraglide/messages/story_properties_basic.js +29 -0
- package/src/paraglide/messages/story_properties_iteration.js +29 -0
- package/src/paraglide/messages/story_properties_labels.js +29 -0
- package/src/paraglide/messages/story_properties_parent.js +29 -0
- package/src/paraglide/messages/story_properties_title.js +29 -0
- package/src/paraglide/messages/story_reaction_add.js +29 -0
- package/src/paraglide/messages/story_relation_none.js +29 -0
- package/src/paraglide/messages/story_relations_adddependency1.js +30 -0
- package/src/paraglide/messages/story_relations_attachment.js +29 -0
- package/src/paraglide/messages/story_relations_dependency.js +29 -0
- package/src/paraglide/messages/story_relations_dependencytitle1.js +30 -0
- package/src/paraglide/messages/story_relations_itemcount1.js +30 -0
- package/src/paraglide/messages/story_relations_knowledge.js +29 -0
- package/src/paraglide/messages/story_relations_knowledgetitle1.js +30 -0
- package/src/paraglide/messages/story_relations_links.js +29 -0
- package/src/paraglide/messages/story_relations_linkstitle1.js +30 -0
- package/src/paraglide/messages/story_relations_uploadattachment1.js +30 -0
- package/src/paraglide/messages/story_row_duedate1.js +30 -0
- package/src/paraglide/messages/story_row_startdate1.js +30 -0
- package/src/paraglide/messages/story_row_updatefailed1.js +30 -0
- package/src/paraglide/messages/story_search_noresults1.js +30 -0
- package/src/paraglide/messages/story_search_searchfailed1.js +30 -0
- package/src/paraglide/messages/story_search_searching.js +29 -0
- package/src/paraglide/messages/story_search_searchstory1.js +30 -0
- package/src/paraglide/messages/story_select_allprojects1.js +30 -0
- package/src/paraglide/messages/story_select_cancel.js +29 -0
- package/src/paraglide/messages/story_select_confirm.js +29 -0
- package/src/paraglide/messages/story_select_confirmwithcount2.js +30 -0
- package/src/paraglide/messages/story_select_defaulttitle1.js +30 -0
- package/src/paraglide/messages/story_select_loading.js +29 -0
- package/src/paraglide/messages/story_select_loadlistfailed2.js +30 -0
- package/src/paraglide/messages/story_select_loadmorefailed2.js +30 -0
- package/src/paraglide/messages/story_select_noavailable1.js +30 -0
- package/src/paraglide/messages/story_select_nomatchcurrent2.js +30 -0
- package/src/paraglide/messages/story_select_pleaseselect1.js +30 -0
- package/src/paraglide/messages/story_select_priority.js +29 -0
- package/src/paraglide/messages/story_select_selected.js +29 -0
- package/src/paraglide/messages/story_select_selectedcount1.js +30 -0
- package/src/paraglide/messages/story_select_setfailed1.js +30 -0
- package/src/paraglide/messages/story_select_setsuccess1.js +30 -0
- package/src/paraglide/messages/story_select_state.js +29 -0
- package/src/paraglide/messages/story_state_backlog.js +29 -0
- package/src/paraglide/messages/story_state_cancelled.js +29 -0
- package/src/paraglide/messages/story_state_done.js +29 -0
- package/src/paraglide/messages/story_state_in_progress.js +29 -0
- package/src/paraglide/messages/story_state_todo.js +29 -0
- package/src/paraglide/messages/story_storyai_actionregistry_acceptance_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_acceptance_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_code_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_code_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_expand_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_expand_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_generate_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_generate_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_polish_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_polish_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_prototype_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_prototype_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_split_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_split_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_testcase_hint3.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_testcase_label3.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_ui_hint2.js +30 -0
- package/src/paraglide/messages/story_storyai_actionregistry_ui_label2.js +30 -0
- package/src/paraglide/messages/story_storyai_more_nomodels2.js +30 -0
- package/src/paraglide/messages/story_storyai_more_selectmodel2.js +30 -0
- package/src/paraglide/messages/story_storyai_more_title1.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_aigenerate2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_ainotconfigured3.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_airecognize2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_aisplit2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_childlabel2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_create1.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_createdsuccess2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_createfailed2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_createtab2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_emptynames2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_generating1.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_generationfailed2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_gotosettings3.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_importtab2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_independentlabel2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_inputplaceholder2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_itemcount2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_needcontent2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_needparentstory3.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_novalidresult3.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_parentlabel2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_pasteplaceholder2.js +36 -0
- package/src/paraglide/messages/story_storyai_panel_projectlabel2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_recognizing1.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_searchparent2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_selectedlabel2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_selectparent2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_splitplaceholder2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_splittab2.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_splitting1.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_stop1.js +30 -0
- package/src/paraglide/messages/story_storyai_panel_streaming1.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_componentlib2.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_copied1.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_description1.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_example1.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_generate1.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_generating1.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_generationfailed2.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_inputplaceholder2.js +30 -0
- package/src/paraglide/messages/story_storyai_prototype_title1.js +30 -0
- package/src/paraglide/messages/story_storyai_split_aschildbadge3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_aschildtitle3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_asindependentdesc3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_asindependenttitle3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_clicktosplit3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_confirmcreate2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_createdsuccess2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_createfailed2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_deselectall2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_extrapromptplaceholder3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_extrapromptprefix3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_failuresdesc2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_generationfailed2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_novalidresult3.js +30 -0
- package/src/paraglide/messages/story_storyai_split_parentlabel2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_redo1.js +30 -0
- package/src/paraglide/messages/story_storyai_split_selectall2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_selectatleastone4.js +30 -0
- package/src/paraglide/messages/story_storyai_split_split1.js +30 -0
- package/src/paraglide/messages/story_storyai_split_splittingmessage2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_stop1.js +30 -0
- package/src/paraglide/messages/story_storyai_split_title1.js +30 -0
- package/src/paraglide/messages/story_storyai_split_totalprefix2.js +30 -0
- package/src/paraglide/messages/story_storyai_split_totalsuffix2.js +30 -0
- package/src/paraglide/messages/story_storyai_streamtext_descriptiontoolong4.js +30 -0
- package/src/paraglide/messages/story_storyai_streamtext_generationfailed3.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_currentstory2.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_discard1.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_model1.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_nomodels2.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_replace1.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_stop1.js +30 -0
- package/src/paraglide/messages/story_storyai_toolbar_underdevelopment2.js +30 -0
- package/src/paraglide/messages/story_table_empty.js +29 -0
- package/src/paraglide/messages/story_time_daysago1.js +30 -0
- package/src/paraglide/messages/story_time_hoursago1.js +30 -0
- package/src/paraglide/messages/story_time_justnow1.js +30 -0
- package/src/paraglide/messages/story_time_minutesago1.js +30 -0
- package/src/paraglide/messages/story_timeline_dateupdated1.js +30 -0
- package/src/paraglide/messages/story_timeline_dateupdatefailed2.js +30 -0
- package/src/paraglide/messages/story_timeline_noscheduled1.js +30 -0
- package/src/paraglide/messages/story_toolbar_addstory1.js +30 -0
- package/src/paraglide/messages/story_toolbar_allprojects1.js +30 -0
- package/src/paraglide/messages/story_toolbar_archived.js +29 -0
- package/src/paraglide/messages/story_toolbar_collect.js +29 -0
- package/src/paraglide/messages/story_toolbar_createproject1.js +30 -0
- package/src/paraglide/messages/story_toolbar_export.js +29 -0
- package/src/paraglide/messages/story_toolbar_import.js +29 -0
- package/src/paraglide/messages/story_toolbar_project.js +29 -0
- package/src/paraglide/messages/story_toolbar_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/story_toolbar_total.js +29 -0
- package/src/paraglide/messages/story_transfer_aschild1.js +30 -0
- package/src/paraglide/messages/story_transfer_aschilddone2.js +30 -0
- package/src/paraglide/messages/story_transfer_aschildofproject3.js +30 -0
- package/src/paraglide/messages/story_transfer_confirm.js +29 -0
- package/src/paraglide/messages/story_transfer_donewithfailures2.js +30 -0
- package/src/paraglide/messages/story_transfer_failed.js +29 -0
- package/src/paraglide/messages/story_transfer_filteredtip1.js +30 -0
- package/src/paraglide/messages/story_transfer_noprojects1.js +30 -0
- package/src/paraglide/messages/story_transfer_toproject1.js +30 -0
- package/src/paraglide/messages/story_transfer_toprojectcount2.js +30 -0
- package/src/paraglide/messages/story_transfer_transfer.js +29 -0
- package/src/paraglide/messages/story_transfer_transfercount1.js +30 -0
- package/src/paraglide/messages/story_transfer_transferred.js +29 -0
- package/src/paraglide/messages/story_transfer_transferredtoproject2.js +30 -0
- package/src/paraglide/messages/story_transfer_transferring.js +29 -0
- package/src/paraglide/messages/story_view_allprojects1.js +30 -0
- package/src/paraglide/messages/story_view_cancel.js +29 -0
- package/src/paraglide/messages/story_view_common.js +29 -0
- package/src/paraglide/messages/story_view_create.js +29 -0
- package/src/paraglide/messages/story_view_createnew1.js +30 -0
- package/src/paraglide/messages/story_view_createview1.js +30 -0
- package/src/paraglide/messages/story_view_default.js +29 -0
- package/src/paraglide/messages/story_view_delete.js +29 -0
- package/src/paraglide/messages/story_view_deleteconfirm1.js +30 -0
- package/src/paraglide/messages/story_view_deleteconfirmmsg2.js +30 -0
- package/src/paraglide/messages/story_view_deletetitle1.js +30 -0
- package/src/paraglide/messages/story_view_descplaceholder1.js +30 -0
- package/src/paraglide/messages/story_view_edit.js +29 -0
- package/src/paraglide/messages/story_view_editview1.js +30 -0
- package/src/paraglide/messages/story_view_filterconditions1.js +30 -0
- package/src/paraglide/messages/story_view_icon_bookmark.js +29 -0
- package/src/paraglide/messages/story_view_icon_branch.js +29 -0
- package/src/paraglide/messages/story_view_icon_calendar.js +29 -0
- package/src/paraglide/messages/story_view_icon_flag.js +29 -0
- package/src/paraglide/messages/story_view_icon_grid.js +29 -0
- package/src/paraglide/messages/story_view_icon_inbox.js +29 -0
- package/src/paraglide/messages/story_view_icon_kanban.js +29 -0
- package/src/paraglide/messages/story_view_icon_list.js +29 -0
- package/src/paraglide/messages/story_view_icon_range.js +29 -0
- package/src/paraglide/messages/story_view_icon_star.js +29 -0
- package/src/paraglide/messages/story_view_icon_tag.js +29 -0
- package/src/paraglide/messages/story_view_icon_user.js +29 -0
- package/src/paraglide/messages/story_view_layout_board.js +29 -0
- package/src/paraglide/messages/story_view_layout_calendar.js +29 -0
- package/src/paraglide/messages/story_view_layout_list.js +29 -0
- package/src/paraglide/messages/story_view_layout_table.js +29 -0
- package/src/paraglide/messages/story_view_layout_timeline.js +29 -0
- package/src/paraglide/messages/story_view_nameplaceholder1.js +30 -0
- package/src/paraglide/messages/story_view_noviews1.js +30 -0
- package/src/paraglide/messages/story_view_projectviews1.js +30 -0
- package/src/paraglide/messages/story_view_save.js +29 -0
- package/src/paraglide/messages/story_view_savefailed1.js +30 -0
- package/src/paraglide/messages/story_view_saving.js +29 -0
- package/src/paraglide/messages/story_view_title.js +29 -0
- package/src/paraglide/messages/story_view_update.js +29 -0
- package/src/paraglide/messages/stylefield_default1.js +30 -0
- package/src/paraglide/messages/stylefield_height1.js +30 -0
- package/src/paraglide/messages/stylefield_selectcolor2.js +30 -0
- package/src/paraglide/messages/stylefield_width1.js +30 -0
- package/src/paraglide/messages/summary_months.js +29 -0
- package/src/paraglide/messages/taginput_add1.js +30 -0
- package/src/paraglide/messages/taginput_placeholder1.js +30 -0
- package/src/paraglide/messages/tags_cancel.js +29 -0
- package/src/paraglide/messages/tags_colorlabel1.js +30 -0
- package/src/paraglide/messages/tags_colorpicker_selectcolor2.js +30 -0
- package/src/paraglide/messages/tags_confirmdeletedesc2.js +30 -0
- package/src/paraglide/messages/tags_confirmdeletetitle2.js +30 -0
- package/src/paraglide/messages/tags_created.js +29 -0
- package/src/paraglide/messages/tags_createtag1.js +30 -0
- package/src/paraglide/messages/tags_delete.js +29 -0
- package/src/paraglide/messages/tags_deleted.js +29 -0
- package/src/paraglide/messages/tags_deletefailed1.js +30 -0
- package/src/paraglide/messages/tags_description.js +29 -0
- package/src/paraglide/messages/tags_detail_description.js +29 -0
- package/src/paraglide/messages/tags_detail_title.js +29 -0
- package/src/paraglide/messages/tags_edit.js +29 -0
- package/src/paraglide/messages/tags_edittag1.js +30 -0
- package/src/paraglide/messages/tags_emptydesc1.js +30 -0
- package/src/paraglide/messages/tags_emptytitle1.js +30 -0
- package/src/paraglide/messages/tags_nameconflict1.js +30 -0
- package/src/paraglide/messages/tags_namelabel1.js +30 -0
- package/src/paraglide/messages/tags_namerequired1.js +30 -0
- package/src/paraglide/messages/tags_removetag1.js +30 -0
- package/src/paraglide/messages/tags_save.js +29 -0
- package/src/paraglide/messages/tags_savefailed1.js +30 -0
- package/src/paraglide/messages/tags_saving.js +29 -0
- package/src/paraglide/messages/tags_selector_createtag1.js +30 -0
- package/src/paraglide/messages/tags_selector_placeholder.js +29 -0
- package/src/paraglide/messages/tags_selector_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/tags_settings_description.js +29 -0
- package/src/paraglide/messages/tags_settings_title.js +29 -0
- package/src/paraglide/messages/tags_sortfailed1.js +30 -0
- package/src/paraglide/messages/tags_title.js +29 -0
- package/src/paraglide/messages/tags_updated.js +29 -0
- package/src/paraglide/messages/team_tokens.js +29 -0
- package/src/paraglide/messages/transfer_notarget1.js +30 -0
- package/src/paraglide/messages/treepage_confirmdelete2.js +30 -0
- package/src/paraglide/messages/treepage_delete1.js +30 -0
- package/src/paraglide/messages/treepage_deleteconfirmdesc3.js +30 -0
- package/src/paraglide/messages/treepage_duplicate1.js +30 -0
- package/src/paraglide/messages/treepage_foldername2.js +30 -0
- package/src/paraglide/messages/treepage_newfolder2.js +30 -0
- package/src/paraglide/messages/treepage_newpage2.js +30 -0
- package/src/paraglide/messages/treepage_nomatch2.js +30 -0
- package/src/paraglide/messages/treepage_nopages2.js +30 -0
- package/src/paraglide/messages/treepage_pagename2.js +30 -0
- package/src/paraglide/messages/treepage_rename1.js +30 -0
- package/src/paraglide/messages/treepage_searchplaceholder2.js +30 -0
- package/src/paraglide/messages/version_confirmrestore1.js +30 -0
- package/src/paraglide/messages/version_confirmupdate1.js +30 -0
- package/src/paraglide/messages/version_confirmupdatedescription2.js +30 -0
- package/src/paraglide/messages/version_confirmupdatetitle2.js +30 -0
- package/src/paraglide/messages/version_continuepublish1.js +30 -0
- package/src/paraglide/messages/version_createbutton1.js +30 -0
- package/src/paraglide/messages/version_createdescription1.js +30 -0
- package/src/paraglide/messages/version_createtitle1.js +30 -0
- package/src/paraglide/messages/version_createversion1.js +30 -0
- package/src/paraglide/messages/version_creating.js +29 -0
- package/src/paraglide/messages/version_datetimeformat2.js +30 -0
- package/src/paraglide/messages/version_daysago1.js +30 -0
- package/src/paraglide/messages/version_deletedescription1.js +30 -0
- package/src/paraglide/messages/version_deletetitle1.js +30 -0
- package/src/paraglide/messages/version_deleteversion1.js +30 -0
- package/src/paraglide/messages/version_editdescription1.js +30 -0
- package/src/paraglide/messages/version_editnotes1.js +30 -0
- package/src/paraglide/messages/version_edittitle1.js +30 -0
- package/src/paraglide/messages/version_hoursago1.js +30 -0
- package/src/paraglide/messages/version_initial.js +29 -0
- package/src/paraglide/messages/version_justnow1.js +30 -0
- package/src/paraglide/messages/version_minutesago1.js +30 -0
- package/src/paraglide/messages/version_nopages1.js +30 -0
- package/src/paraglide/messages/version_nopublishedversions2.js +30 -0
- package/src/paraglide/messages/version_noteslabel1.js +30 -0
- package/src/paraglide/messages/version_noteslabelplain2.js +30 -0
- package/src/paraglide/messages/version_notesplaceholder1.js +30 -0
- package/src/paraglide/messages/version_pageversionhistory2.js +30 -0
- package/src/paraglide/messages/version_prdversionhistory2.js +30 -0
- package/src/paraglide/messages/version_prdversionno2.js +30 -0
- package/src/paraglide/messages/version_publish.js +29 -0
- package/src/paraglide/messages/version_recentlyupdated1.js +30 -0
- package/src/paraglide/messages/version_releasenotesplaceholder2.js +30 -0
- package/src/paraglide/messages/version_restoreconfirmdescription2.js +30 -0
- package/src/paraglide/messages/version_restoreconfirmtitle2.js +30 -0
- package/src/paraglide/messages/version_restoredfrom1.js +30 -0
- package/src/paraglide/messages/version_restoretocurrent2.js +30 -0
- package/src/paraglide/messages/version_restoretothis2.js +30 -0
- package/src/paraglide/messages/version_restoring.js +29 -0
- package/src/paraglide/messages/version_selectall1.js +30 -0
- package/src/paraglide/messages/version_selectedcount1.js +30 -0
- package/src/paraglide/messages/version_selectlatest1.js +30 -0
- package/src/paraglide/messages/version_selectlatesthint2.js +30 -0
- package/src/paraglide/messages/version_selectpagehint2.js +30 -0
- package/src/paraglide/messages/version_selectpagestitle2.js +30 -0
- package/src/paraglide/messages/version_skipversiondescription2.js +30 -0
- package/src/paraglide/messages/version_skipversiontitle2.js +30 -0
- package/src/paraglide/messages/version_syncpages1.js +30 -0
- package/src/paraglide/messages/version_unpublished.js +29 -0
- package/src/paraglide/messages/version_update.js +29 -0
- package/src/paraglide/messages/version_updatedat1.js +30 -0
- package/src/paraglide/messages/version_versiontoolow2.js +30 -0
- package/src/paraglide/messages/workspace_card_delete.js +29 -0
- package/src/paraglide/messages/workspace_card_edit.js +29 -0
- package/src/paraglide/messages/workspace_card_more.js +29 -0
- package/src/paraglide/messages/workspace_card_pin.js +29 -0
- package/src/paraglide/messages/workspace_card_unpin.js +29 -0
- package/src/paraglide/messages/workspace_createworkspace_cancel1.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_create1.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_createfailed2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_creating1.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_description1.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_descriptionlabel2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_descriptionplaceholder2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_namelabel2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_nameplaceholder2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_namerequired2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_title1.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_upgradeaction2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_upgradedescription2.js +30 -0
- package/src/paraglide/messages/workspace_createworkspace_upgradetitle2.js +30 -0
- package/src/paraglide/messages/workspace_detail_back.js +29 -0
- package/src/paraglide/messages/workspace_detail_createproject1.js +30 -0
- package/src/paraglide/messages/workspace_detail_emptyprojectsdescription2.js +30 -0
- package/src/paraglide/messages/workspace_detail_emptyprojectstitle2.js +30 -0
- package/src/paraglide/messages/workspace_detail_members.js +29 -0
- package/src/paraglide/messages/workspace_detail_nodescription1.js +30 -0
- package/src/paraglide/messages/workspace_detail_projects.js +29 -0
- package/src/paraglide/messages/workspace_home_activity.js +29 -0
- package/src/paraglide/messages/workspace_home_addmember1.js +30 -0
- package/src/paraglide/messages/workspace_home_addmemberfailed2.js +30 -0
- package/src/paraglide/messages/workspace_home_allactivities1.js +30 -0
- package/src/paraglide/messages/workspace_home_kbplaceholder1.js +30 -0
- package/src/paraglide/messages/workspace_home_kbtitle1.js +30 -0
- package/src/paraglide/messages/workspace_home_memberadded1.js +30 -0
- package/src/paraglide/messages/workspace_home_memberremoved1.js +30 -0
- package/src/paraglide/messages/workspace_home_members.js +29 -0
- package/src/paraglide/messages/workspace_home_membersplaceholder1.js +30 -0
- package/src/paraglide/messages/workspace_home_nomembers1.js +30 -0
- package/src/paraglide/messages/workspace_home_recentactivity1.js +30 -0
- package/src/paraglide/messages/workspace_home_removememberconfirm2.js +30 -0
- package/src/paraglide/messages/workspace_home_removememberdesc2.js +30 -0
- package/src/paraglide/messages/workspace_home_removeownernotallowed3.js +30 -0
- package/src/paraglide/messages/workspace_home_role_admin.js +29 -0
- package/src/paraglide/messages/workspace_home_role_member.js +29 -0
- package/src/paraglide/messages/workspace_home_role_owner.js +29 -0
- package/src/paraglide/messages/workspace_home_role_viewer.js +29 -0
- package/src/paraglide/messages/workspace_home_rolelabel1.js +30 -0
- package/src/paraglide/messages/workspace_home_searchmember1.js +30 -0
- package/src/paraglide/messages/workspace_home_selectmember1.js +30 -0
- package/src/paraglide/messages/workspace_kb_addquickdoc2.js +30 -0
- package/src/paraglide/messages/workspace_kb_allkbs1.js +30 -0
- package/src/paraglide/messages/workspace_kb_cancel.js +29 -0
- package/src/paraglide/messages/workspace_kb_confirm.js +29 -0
- package/src/paraglide/messages/workspace_kb_deletearialabel2.js +30 -0
- package/src/paraglide/messages/workspace_kb_deleteconfirmdesc2.js +30 -0
- package/src/paraglide/messages/workspace_kb_deleteconfirmtitle2.js +30 -0
- package/src/paraglide/messages/workspace_kb_displaytitleplaceholder2.js +30 -0
- package/src/paraglide/messages/workspace_kb_draghandlearialabel3.js +30 -0
- package/src/paraglide/messages/workspace_kb_empty.js +29 -0
- package/src/paraglide/messages/workspace_kb_generalkbs1.js +30 -0
- package/src/paraglide/messages/workspace_kb_gotokb2.js +30 -0
- package/src/paraglide/messages/workspace_kb_label.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_brd.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_charter.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_competitor.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_compliance.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_copywriting.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_datastructure1.js +30 -0
- package/src/paraglide/messages/workspace_kb_label_dictionary.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_feasibility.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_infoarchitecture1.js +30 -0
- package/src/paraglide/messages/workspace_kb_label_integration.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_kbdictionary1.js +30 -0
- package/src/paraglide/messages/workspace_kb_label_legal.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_mrd.js +29 -0
- package/src/paraglide/messages/workspace_kb_label_techarchitecture1.js +30 -0
- package/src/paraglide/messages/workspace_kb_label_website.js +29 -0
- package/src/paraglide/messages/workspace_kb_labelnone1.js +30 -0
- package/src/paraglide/messages/workspace_kb_linkbutton1.js +30 -0
- package/src/paraglide/messages/workspace_kb_linked.js +29 -0
- package/src/paraglide/messages/workspace_kb_manageempty1.js +30 -0
- package/src/paraglide/messages/workspace_kb_managesearchplaceholder2.js +30 -0
- package/src/paraglide/messages/workspace_kb_managetitle1.js +30 -0
- package/src/paraglide/messages/workspace_kb_openinnewtab3.js +30 -0
- package/src/paraglide/messages/workspace_kb_opfailed1.js +30 -0
- package/src/paraglide/messages/workspace_kb_partialfailed1.js +30 -0
- package/src/paraglide/messages/workspace_kb_pickeddocs1.js +30 -0
- package/src/paraglide/messages/workspace_kb_pickicon1.js +30 -0
- package/src/paraglide/messages/workspace_kb_quickdoctitle2.js +30 -0
- package/src/paraglide/messages/workspace_kb_renamearialabel2.js +30 -0
- package/src/paraglide/messages/workspace_kb_searchplaceholder1.js +30 -0
- package/src/paraglide/messages/workspace_kb_selectall1.js +30 -0
- package/src/paraglide/messages/workspace_kb_selectedcount1.js +30 -0
- package/src/paraglide/messages/workspace_kb_stale.js +29 -0
- package/src/paraglide/messages/workspace_kb_userkbs1.js +30 -0
- package/src/paraglide/messages/workspace_list_create.js +29 -0
- package/src/paraglide/messages/workspace_list_deletehasprojects2.js +30 -0
- package/src/paraglide/messages/workspace_list_emptydescription1.js +30 -0
- package/src/paraglide/messages/workspace_list_emptytitle1.js +30 -0
- package/src/paraglide/messages/workspace_list_members.js +29 -0
- package/src/paraglide/messages/workspace_list_nodescription1.js +30 -0
- package/src/paraglide/messages/workspace_list_projects.js +29 -0
- package/src/paraglide/messages/workspace_list_subtitle.js +29 -0
- package/src/paraglide/messages/workspace_list_title.js +29 -0
- package/src/paraglide/messages/workspace_list_transfertargetrequired2.js +30 -0
- package/src/paraglide/messages/workspace_project_card_delete.js +29 -0
- package/src/paraglide/messages/workspace_project_card_edit.js +29 -0
- package/src/paraglide/messages/workspace_settings_back.js +29 -0
- package/src/paraglide/messages/workspace_settings_basicinfo1.js +30 -0
- package/src/paraglide/messages/workspace_settings_cancel.js +29 -0
- package/src/paraglide/messages/workspace_settings_clearprojects1.js +30 -0
- package/src/paraglide/messages/workspace_settings_clearprojectsdesc2.js +30 -0
- package/src/paraglide/messages/workspace_settings_confirmdelete1.js +30 -0
- package/src/paraglide/messages/workspace_settings_confirmdeletedescription2.js +30 -0
- package/src/paraglide/messages/workspace_settings_confirmremove1.js +30 -0
- package/src/paraglide/messages/workspace_settings_confirmremovemember2.js +30 -0
- package/src/paraglide/messages/workspace_settings_confirmremovememberdesc3.js +30 -0
- package/src/paraglide/messages/workspace_settings_dangerzone1.js +30 -0
- package/src/paraglide/messages/workspace_settings_delete.js +29 -0
- package/src/paraglide/messages/workspace_settings_deleteclear1.js +30 -0
- package/src/paraglide/messages/workspace_settings_deletedescription1.js +30 -0
- package/src/paraglide/messages/workspace_settings_deletefailed1.js +30 -0
- package/src/paraglide/messages/workspace_settings_deleteknowledgebases2.js +30 -0
- package/src/paraglide/messages/workspace_settings_deleteknowledgebasesdesc3.js +30 -0
- package/src/paraglide/messages/workspace_settings_deletetransfer1.js +30 -0
- package/src/paraglide/messages/workspace_settings_deleteworkspace1.js +30 -0
- package/src/paraglide/messages/workspace_settings_descriptionlabel1.js +30 -0
- package/src/paraglide/messages/workspace_settings_descriptionplaceholder1.js +30 -0
- package/src/paraglide/messages/workspace_settings_edit.js +29 -0
- package/src/paraglide/messages/workspace_settings_hasprojects1.js +30 -0
- package/src/paraglide/messages/workspace_settings_icon.js +29 -0
- package/src/paraglide/messages/workspace_settings_invite.js +29 -0
- package/src/paraglide/messages/workspace_settings_inviteemailplaceholder2.js +30 -0
- package/src/paraglide/messages/workspace_settings_inviteemailrequired2.js +30 -0
- package/src/paraglide/messages/workspace_settings_invitefailed1.js +30 -0
- package/src/paraglide/messages/workspace_settings_inviteloading1.js +30 -0
- package/src/paraglide/messages/workspace_settings_invitesuccess1.js +30 -0
- package/src/paraglide/messages/workspace_settings_keepknowledgebases2.js +30 -0
- package/src/paraglide/messages/workspace_settings_keepknowledgebasesdesc3.js +30 -0
- package/src/paraglide/messages/workspace_settings_knowledgebasehandling2.js +30 -0
- package/src/paraglide/messages/workspace_settings_memberremoved1.js +30 -0
- package/src/paraglide/messages/workspace_settings_members.js +29 -0
- package/src/paraglide/messages/workspace_settings_namelabel1.js +30 -0
- package/src/paraglide/messages/workspace_settings_namerequired1.js +30 -0
- package/src/paraglide/messages/workspace_settings_nootherworkspaces2.js +30 -0
- package/src/paraglide/messages/workspace_settings_operationfailed1.js +30 -0
- package/src/paraglide/messages/workspace_settings_pending.js +29 -0
- package/src/paraglide/messages/workspace_settings_projecthandling1.js +30 -0
- package/src/paraglide/messages/workspace_settings_removefailed1.js +30 -0
- package/src/paraglide/messages/workspace_settings_roles_admin.js +29 -0
- package/src/paraglide/messages/workspace_settings_roles_member.js +29 -0
- package/src/paraglide/messages/workspace_settings_roles_owner.js +29 -0
- package/src/paraglide/messages/workspace_settings_roles_viewer.js +29 -0
- package/src/paraglide/messages/workspace_settings_roleupdated1.js +30 -0
- package/src/paraglide/messages/workspace_settings_savechanges1.js +30 -0
- package/src/paraglide/messages/workspace_settings_savefailed1.js +30 -0
- package/src/paraglide/messages/workspace_settings_seatsexceeded1.js +30 -0
- package/src/paraglide/messages/workspace_settings_self.js +29 -0
- package/src/paraglide/messages/workspace_settings_storyhandling1.js +30 -0
- package/src/paraglide/messages/workspace_settings_title.js +29 -0
- package/src/paraglide/messages/workspace_settings_transferprojects1.js +30 -0
- package/src/paraglide/messages/workspace_settings_transferprojectsdesc2.js +30 -0
- package/src/paraglide/messages/workspace_settings_transfertarget1.js +30 -0
- package/src/paraglide/messages/workspace_settings_transfertargetplaceholder2.js +30 -0
- package/src/paraglide/messages/workspace_settings_unknownuser1.js +30 -0
- package/src/paraglide/messages/workspace_settings_updatesuccess1.js +30 -0
- package/src/paraglide/messages/workspace_settings_workspacedeleted1.js +30 -0
- package/src/paraglide/messages/workspace_title.js +29 -0
- package/src/paraglide/messages/workspaces_askai_overview1.js +30 -0
- package/src/paraglide/messages/workspaces_askai_overview_prompt1.js +30 -0
- package/src/paraglide/messages/workspaces_askai_seats1.js +30 -0
- package/src/paraglide/messages/workspaces_askai_seats_prompt1.js +30 -0
- package/src/paraglide/messages.js +4 -0
- package/src/paraglide/registry.js +46 -0
- package/src/paraglide/runtime.js +2311 -0
- package/src/paraglide/server.js +294 -0
- package/src/plugins/core/inspiration/ui.tsx +2 -4
- package/src/plugins/core/prd/components/agent-input.tsx +5 -11
- package/src/plugins/core/prd/components/component-editor/content-section.tsx +1 -1
- package/src/plugins/core/prd/components/component-editor/style-fields.tsx +1 -1
- package/src/plugins/core/prd/components/dialog/prd-detail-client.tsx +3 -7
- package/src/plugins/core/prd/components/page-version-panel.tsx +23 -43
- package/src/plugins/core/prd/components/page-version-tree.tsx +6 -14
- package/src/plugins/core/prd/components/prd-agent-panel.tsx +3 -5
- package/src/plugins/core/prd/components/prd-comment-review-panel.tsx +2 -4
- package/src/plugins/core/prd/components/prd-doc-panel.tsx +6 -14
- package/src/plugins/core/prd/components/prd-editor-layout.tsx +1 -1
- package/src/plugins/core/prd/components/prd-left-sidebar.tsx +5 -11
- package/src/plugins/core/prd/components/prd-navigation.tsx +41 -11
- package/src/plugins/core/prd/components/prd-prototype-panel.tsx +9 -21
- package/src/plugins/core/prd/components/prd-right-sidebar.tsx +7 -15
- package/src/plugins/core/prd/components/prd-share-panel/components/single-version-share-card.tsx +13 -27
- package/src/plugins/core/prd/components/prd-share-panel.tsx +8 -14
- package/src/plugins/core/prd/components/prd-tree-page-tab.tsx +9 -21
- package/src/plugins/core/prd/components/share/share-comment-panel.tsx +1 -1
- package/src/plugins/core/prd/components/share/share-nav-bar.tsx +3 -7
- package/src/plugins/core/prd/components/share/share-password-gate.tsx +1 -1
- package/src/plugins/core/prd/components/share/share-review-panel.tsx +1 -1
- package/src/plugins/core/prd/lib/ai/annotation-prompt.ts +9 -14
- package/src/plugins/core/prd/pages/prd-detail-page.tsx +2 -6
- package/src/plugins/core/prd/prd-nav.tsx +4 -8
- package/src/plugins/core/prd/serverFns/ai/fill-annotation.ts +2 -2
- package/src/plugins/core/prd/serverFns/ai/generate-prototype.ts +12 -64
- package/src/plugins/core/prd/serverFns/ai/hosted-models.ts +31 -0
- package/src/plugins/core/prd/serverFns/ai/source-mode.ts +51 -0
- package/src/plugins/core/server/api-key-cipher.ts +6 -4
- package/src/plugins/core/tags/nav-tag.tsx +9 -24
- package/src/plugins/core/tags/tag-manager.tsx +1 -1
- package/src/plugins/core/tags/tag-selector.tsx +3 -7
- package/src/providers/index.tsx +1 -1
- package/src/routeTree.gen.ts +293 -54
- package/src/routes/__desktop/onboarding/route.lazy.tsx +1 -1
- package/src/routes/__root.tsx +4 -8
- package/src/routes/__tests__/-edition-routing.test.tsx +6 -4
- package/src/routes/__tests__/route-tree-structure.test.ts +10 -1
- package/src/routes/_login/changelog/confirm/route.lazy.tsx +10 -10
- package/src/routes/_login/email-unsubscribe/route.lazy.tsx +11 -11
- package/src/routes/_login/forgot-password/route.lazy.tsx +1 -1
- package/src/routes/_login/login/route.lazy.tsx +1 -1
- package/src/routes/_login/register/route.lazy.tsx +1 -1
- package/src/routes/_login/reset-password/route.lazy.tsx +1 -1
- package/src/routes/_login/verify-email/route.lazy.tsx +6 -6
- package/src/routes/_nav/apps/anyhub/$id/route.lazy.tsx +54 -0
- package/src/routes/_nav/apps/anyhub/$id/route.tsx +1 -8
- package/src/routes/_nav/apps/anyhub/route.tsx +29 -3
- package/src/routes/_nav/chat.$threadId.tsx +24 -0
- package/src/routes/_nav/chat.tsx +31 -0
- package/src/routes/_nav/dashboard/route.lazy.tsx +18 -1
- package/src/routes/_nav/harness/$threadId.lazy.tsx +28 -0
- package/src/routes/_nav/harness/$threadId.tsx +26 -0
- package/src/routes/_nav/harness/gallery/route.lazy.tsx +33 -0
- package/src/routes/_nav/harness/gallery/route.tsx +20 -0
- package/src/routes/_nav/harness/route.lazy.tsx +28 -0
- package/src/routes/_nav/harness/route.tsx +23 -0
- package/src/routes/_nav/knowledge/bookmarks/$id.lazy.tsx +2 -2
- package/src/routes/_nav/knowledge/bookmarks/index.lazy.tsx +1 -1
- package/src/routes/_nav/knowledge/compliance/$id.lazy.tsx +14 -30
- package/src/routes/_nav/knowledge/dictionaries/$id.lazy.tsx +1 -1
- package/src/routes/_nav/knowledge/index.lazy.tsx +2 -8
- package/src/routes/_nav/knowledge/laws/$id.lazy.tsx +14 -30
- package/src/routes/_nav/projects/$projectId/$storyId/route.lazy.tsx +3 -5
- package/src/routes/_nav/projects/$projectId/index.lazy.tsx +8 -18
- package/src/routes/_nav/projects/$projectId/iterations/$iterationId/route.lazy.tsx +4 -8
- package/src/routes/_nav/projects/$projectId/settings/route.lazy.tsx +4 -6
- package/src/routes/_nav/route.lazy.tsx +10 -2
- package/src/routes/_nav/route.tsx +3 -8
- package/src/routes/_nav/settings/ai/$providerId/route.tsx +3 -16
- package/src/routes/_nav/settings/ai/hosted/route.lazy.tsx +55 -0
- package/src/routes/_nav/settings/ai/hosted/route.tsx +26 -0
- package/src/routes/_nav/settings/ai/index/route.lazy.tsx +59 -25
- package/src/routes/_nav/settings/ai/providers/$providerId/route.lazy.tsx +35 -0
- package/src/routes/_nav/settings/ai/providers/$providerId/route.tsx +37 -0
- package/src/routes/_nav/settings/ai/providers/index/route.lazy.tsx +43 -0
- package/src/routes/_nav/settings/ai/route.tsx +6 -3
- package/src/routes/_nav/settings/billing/route.lazy.tsx +1 -1
- package/src/routes/_nav/settings/design/route.lazy.tsx +3 -5
- package/src/routes/_nav/settings/general/route.lazy.tsx +1 -1
- package/src/routes/_nav/settings/privacy/route.lazy.tsx +3 -5
- package/src/routes/_nav/settings/route.tsx +2 -6
- package/src/routes/_nav/workspaces/$workspaceId/activities/route.lazy.tsx +3 -5
- package/src/routes/_nav/workspaces/$workspaceId/settings/route.lazy.tsx +4 -6
- package/src/routes/_nav/workspaces/index.lazy.tsx +34 -17
- package/src/routes/api/chat.ts +42 -22
- package/src/routes/api/cron/ai-run-reaper.ts +80 -0
- package/src/routes/api/devframe/__tests__/auth-trace.test.ts +18 -0
- package/src/routes/api/devframe/__tests__/bundle-stats.test.ts +18 -0
- package/src/routes/api/devframe/__tests__/entitlements.test.ts +20 -0
- package/src/routes/api/devframe/__tests__/hydration-probe.test.ts +16 -0
- package/src/routes/api/devframe/auth-trace.ts +39 -0
- package/src/routes/api/devframe/bundle-stats.ts +73 -0
- package/src/routes/api/devframe/entitlements.ts +19 -0
- package/src/routes/api/devframe/hydration-probe.ts +30 -0
- package/src/routes/invite/$token/route.lazy.tsx +1 -1
- package/src/routes/server.ai-stream.ts +34 -19
- package/src/routes/share/compliance/$id/route.lazy.tsx +4 -6
- package/src/routes/share/law/$id/route.lazy.tsx +4 -6
- package/src/server/__tests__/agent-client-graph.test.ts +2 -2
- package/src/server/__tests__/chat-agent-resolve.test.ts +1 -1
- package/src/server/__tests__/chat-conversations.test.ts +5 -0
- package/src/server/__tests__/entitlements.test.ts +99 -1
- package/src/server/__tests__/resource-registry.test.ts +12 -2
- package/src/server/__tests__/resources.agents.test.ts +2 -1
- package/src/server/__tests__/resources.license.test.ts +2 -1
- package/src/server/__tests__/resources.test.ts +2 -1
- package/src/server/__tests__/sandbox-entitlement.test.ts +169 -0
- package/src/server/ai-gateway/__tests__/adapter-temperature.test.ts +104 -0
- package/src/server/ai-gateway/__tests__/agent-runtime.test.ts +334 -0
- package/src/server/ai-gateway/__tests__/chat-handler-prompt-key.test.ts +244 -0
- package/src/server/ai-gateway/__tests__/chat-prompt-key-drift.test.ts +96 -0
- package/src/server/ai-gateway/__tests__/chat-stream-builder-code-mode.test.ts +215 -0
- package/src/server/ai-gateway/__tests__/chat-stream-builder-memory.test.ts +179 -0
- package/src/server/ai-gateway/__tests__/chat-stream-builder-sandbox.test.ts +211 -0
- package/src/server/ai-gateway/__tests__/chat-stream-builder-skills.test.ts +126 -0
- package/src/server/ai-gateway/__tests__/code-mode-integration-smoke.test.ts +178 -0
- package/src/server/ai-gateway/__tests__/code-mode-stack.test.ts +390 -0
- package/src/server/ai-gateway/__tests__/compaction.test.ts +509 -0
- package/src/server/ai-gateway/__tests__/conformance.test.ts +45 -13
- package/src/server/ai-gateway/__tests__/env-key.test.ts +175 -0
- package/src/server/ai-gateway/__tests__/interrupt-store.test.ts +19 -4
- package/src/server/ai-gateway/__tests__/kb-context-guard.test.ts +24 -16
- package/src/server/ai-gateway/__tests__/knowledge-search-fence.test.ts +7 -0
- package/src/server/ai-gateway/__tests__/label-suggest.test.ts +22 -5
- package/src/server/ai-gateway/__tests__/message-store.test.ts +14 -9
- package/src/server/ai-gateway/__tests__/pgvector-memory-adapter.test.ts +422 -0
- package/src/server/ai-gateway/__tests__/plugin-lifecycle.test.ts +57 -0
- package/src/server/ai-gateway/__tests__/prompt-builtin.test.ts +273 -0
- package/src/server/ai-gateway/__tests__/prompt-registry.test.ts +549 -0
- package/src/server/ai-gateway/__tests__/prompt-vars-contract.test.ts +146 -0
- package/src/server/ai-gateway/__tests__/provider-adapter.test.ts +164 -0
- package/src/server/ai-gateway/__tests__/run-store-durable.test.ts +151 -0
- package/src/server/ai-gateway/__tests__/run-store.test.ts +90 -0
- package/src/server/ai-gateway/__tests__/runtime.test.ts +1 -1
- package/src/server/ai-gateway/__tests__/skills-source.test.ts +306 -0
- package/src/server/ai-gateway/__tests__/snippets.test.ts +328 -0
- package/src/server/ai-gateway/__tests__/source-mode.test.ts +77 -0
- package/src/server/ai-gateway/__tests__/story-prompt.test.ts +75 -11
- package/src/server/ai-gateway/__tests__/todo-plan-tools.test.ts +435 -0
- package/src/server/ai-gateway/__tests__/tool-registry.test.ts +182 -0
- package/src/server/ai-gateway/__tests__/tools-select.test.ts +32 -6
- package/src/server/ai-gateway/__tests__/unified-router.test.ts +107 -1
- package/src/server/ai-gateway/__tests__/usage-log.test.ts +192 -0
- package/src/server/ai-gateway/__tests__/vm-driver.test.ts +193 -0
- package/src/server/ai-gateway/adapter.ts +60 -3
- package/src/server/ai-gateway/byok.ts +144 -0
- package/src/server/ai-gateway/chat-handler.ts +275 -45
- package/src/server/ai-gateway/chat-stream-builder.ts +177 -14
- package/src/server/ai-gateway/code-mode/index.ts +236 -0
- package/src/server/ai-gateway/code-mode/sandbox.ts +213 -0
- package/src/server/ai-gateway/code-mode/snippets.ts +235 -0
- package/src/server/ai-gateway/code-mode/vm-driver.ts +197 -0
- package/src/server/ai-gateway/connectivity-check.ts +3 -1
- package/src/server/ai-gateway/durability/__tests__/pg-stream.test.ts +343 -0
- package/src/server/ai-gateway/durability/__tests__/reaper-drive.test.ts +154 -0
- package/src/server/ai-gateway/durability/__tests__/reaper-lazy.test.ts +145 -0
- package/src/server/ai-gateway/durability/__tests__/reaper-real-db.test.ts +315 -0
- package/src/server/ai-gateway/durability/__tests__/reaper.test.ts +227 -0
- package/src/server/ai-gateway/durability/pg-stream.ts +355 -0
- package/src/server/ai-gateway/durability/reaper-driver.ts +80 -0
- package/src/server/ai-gateway/durability/reaper-lazy.ts +97 -0
- package/src/server/ai-gateway/durability/reaper.ts +130 -0
- package/src/server/ai-gateway/embedding.ts +8 -4
- package/src/server/ai-gateway/env-key.ts +33 -0
- package/src/server/ai-gateway/index.ts +52 -2
- package/src/server/ai-gateway/kb-context-guard.ts +7 -7
- package/src/server/ai-gateway/knowledge-index-core.ts +14 -0
- package/src/server/ai-gateway/label-suggest.ts +23 -18
- package/src/server/ai-gateway/locks/__tests__/pg-lock.test.ts +133 -0
- package/src/server/ai-gateway/locks/pg-lock.ts +111 -0
- package/src/server/ai-gateway/media/__tests__/generation.spec.ts +52 -0
- package/src/server/ai-gateway/media/__tests__/index.test.ts +116 -0
- package/src/server/ai-gateway/media/__tests__/prototype-schema.spec.ts +36 -0
- package/src/server/ai-gateway/media/adapters.ts +128 -0
- package/src/server/ai-gateway/media/index.ts +231 -0
- package/src/server/ai-gateway/media/prototype-schema.ts +75 -0
- package/src/server/ai-gateway/media/recorder.ts +73 -0
- package/src/server/ai-gateway/memory/index.ts +76 -0
- package/src/server/ai-gateway/memory/pgvector-adapter.ts +243 -0
- package/src/server/ai-gateway/memory/scope.ts +54 -0
- package/src/server/ai-gateway/middlewares/compaction.ts +232 -0
- package/src/server/ai-gateway/middlewares/index.ts +11 -1
- package/src/server/ai-gateway/middlewares/logger.ts +4 -4
- package/src/server/ai-gateway/middlewares/plan-approval.ts +125 -0
- package/src/server/ai-gateway/middlewares/rate-limit.ts +4 -4
- package/src/server/ai-gateway/middlewares/tool-budget.ts +50 -0
- package/src/server/ai-gateway/middlewares/usage-log.ts +158 -0
- package/src/server/ai-gateway/model-fetch.ts +4 -2
- package/src/server/ai-gateway/persistence/index.ts +4 -2
- package/src/server/ai-gateway/persistence/interrupt-store.ts +78 -16
- package/src/server/ai-gateway/persistence/message-store.ts +35 -36
- package/src/server/ai-gateway/persistence/metadata-store.ts +62 -0
- package/src/server/ai-gateway/persistence/run-store.ts +67 -21
- package/src/server/ai-gateway/ports.ts +3 -1
- package/src/server/ai-gateway/prompts/builtin.ts +327 -0
- package/src/server/ai-gateway/prompts/definitions.ts +36 -0
- package/src/server/ai-gateway/prompts/index.ts +41 -0
- package/src/server/ai-gateway/prompts/registry.ts +248 -0
- package/src/server/ai-gateway/prompts/seed.ts +54 -0
- package/src/server/ai-gateway/prompts/types.ts +40 -0
- package/src/server/ai-gateway/rerank.ts +2 -1
- package/src/server/ai-gateway/runs/agent-runtime.ts +176 -0
- package/src/server/ai-gateway/runs/biz-keys.ts +54 -0
- package/src/server/ai-gateway/runs/resolve-overrides.ts +60 -0
- package/src/server/ai-gateway/sandbox/__tests__/harness-sandbox.test.ts +170 -0
- package/src/server/ai-gateway/sandbox/__tests__/instance-store.test.ts +130 -0
- package/src/server/ai-gateway/sandbox/__tests__/local-process.test.ts +316 -0
- package/src/server/ai-gateway/sandbox/__tests__/policy.test.ts +157 -0
- package/src/server/ai-gateway/sandbox/__tests__/provider.test.ts +102 -0
- package/src/server/ai-gateway/sandbox/__tests__/tool-bridge.test.ts +112 -0
- package/src/server/ai-gateway/sandbox/entitlement.ts +51 -0
- package/src/server/ai-gateway/sandbox/harness-sandbox.ts +345 -0
- package/src/server/ai-gateway/sandbox/instance-store.ts +91 -0
- package/src/server/ai-gateway/sandbox/local-process.ts +329 -0
- package/src/server/ai-gateway/sandbox/policy-levels.ts +3 -0
- package/src/server/ai-gateway/sandbox/policy.ts +267 -0
- package/src/server/ai-gateway/sandbox/provider.ts +128 -0
- package/src/server/ai-gateway/sandbox/tool-bridge.ts +78 -0
- package/src/server/ai-gateway/skills/builtin/competitive-analysis/SKILL.md +40 -0
- package/src/server/ai-gateway/skills/builtin/competitive-analysis/references/matrix-template.md +37 -0
- package/src/server/ai-gateway/skills/builtin/naming-advisor/SKILL.md +43 -0
- package/src/server/ai-gateway/skills/builtin/prd-review/SKILL.md +29 -0
- package/src/server/ai-gateway/skills/builtin/prd-review/references/review-checklist.md +46 -0
- package/src/server/ai-gateway/skills/builtin-source.ts +115 -0
- package/src/server/ai-gateway/skills/governance.ts +87 -0
- package/src/server/ai-gateway/skills/index.ts +137 -0
- package/src/server/ai-gateway/skills/user-source.ts +109 -0
- package/src/server/ai-gateway/source-mode.ts +62 -0
- package/src/server/ai-gateway/story-handler.ts +27 -21
- package/src/server/ai-gateway/story-prompt.ts +16 -25
- package/src/server/ai-gateway/tools/create-pr.ts +296 -0
- package/src/server/ai-gateway/tools/delegate-task.ts +91 -0
- package/src/server/ai-gateway/tools/delete-project.ts +3 -0
- package/src/server/ai-gateway/tools/index.ts +15 -0
- package/src/server/ai-gateway/tools/keys.ts +42 -0
- package/src/server/ai-gateway/tools/plan-submit.ts +113 -0
- package/src/server/ai-gateway/tools/plugin-lifecycle-defs.ts +122 -0
- package/src/server/ai-gateway/tools/plugin-lifecycle-server.ts +160 -0
- package/src/server/ai-gateway/tools/plugin-tools.ts +57 -0
- package/src/server/ai-gateway/tools/projection-namespace.ts +28 -0
- package/src/server/ai-gateway/tools/registry.ts +101 -0
- package/src/server/ai-gateway/tools/select.ts +70 -11
- package/src/server/ai-gateway/tools/server.ts +4 -2
- package/src/server/ai-gateway/tools/todo-write.ts +78 -0
- package/src/server/ai-gateway/types.ts +16 -0
- package/src/server/ai-gateway/unified-router.ts +99 -9
- package/src/server/ai-ports.ts +7 -3
- package/src/server/entitlements-token.ts +3 -15
- package/src/server/entitlements.ts +9 -0
- package/src/server/middlewares/security-headers.ts +60 -40
- package/src/server/resources.ts +54 -0
- package/src/server/serverFns/__tests__/ai-hosted-models.test.ts +68 -0
- package/src/server/serverFns/__tests__/ai-source-mode.test.ts +119 -0
- package/src/server/serverFns/__tests__/harness-plugins.test.ts +140 -0
- package/src/server/serverFns/__tests__/knowledge-index.test.ts +42 -4
- package/src/server/serverFns/__tests__/knowledge-search.test.ts +262 -0
- package/src/server/serverFns/activity.ts +1 -1
- package/src/server/serverFns/agents/agent-crud.ts +8 -1
- package/src/server/serverFns/agents/bindings.ts +113 -0
- package/src/server/serverFns/agents/skill-crud.ts +5 -1
- package/src/server/serverFns/ai/code-mode-readiness.ts +23 -0
- package/src/server/serverFns/ai/hosted-models.ts +1 -0
- package/src/server/serverFns/ai/search-capability.ts +23 -0
- package/src/server/serverFns/ai/source-mode.ts +1 -0
- package/src/server/serverFns/anyhub/app.ts +3 -1
- package/src/server/serverFns/anyhub/index.ts +3 -1
- package/src/server/serverFns/anyhub/install.ts +1 -1
- package/src/server/serverFns/anyhub/proxy.ts +1 -1
- package/src/server/serverFns/auth/email-verification.ts +3 -1
- package/src/server/serverFns/auth/forgot-password.ts +1 -1
- package/src/server/serverFns/auth/register.ts +2 -1
- package/src/server/serverFns/auth/reset-password.ts +2 -1
- package/src/server/serverFns/auth/setup.ts +1 -1
- package/src/server/serverFns/billing.ts +8 -1
- package/src/server/serverFns/changelog/fetch.ts +1 -1
- package/src/server/serverFns/changelog/subscribe.ts +2 -1
- package/src/server/serverFns/chat/conversations.ts +78 -1
- package/src/server/serverFns/chat/list-messages.ts +1 -1
- package/src/server/serverFns/design/settings.ts +3 -1
- package/src/server/serverFns/design.ts +4 -1
- package/src/server/serverFns/email-unsubscribe.ts +1 -1
- package/src/server/serverFns/harness/__tests__/attach-guards.spec.ts +45 -0
- package/src/server/serverFns/harness/__tests__/attach-prototype.spec.ts +69 -0
- package/src/server/serverFns/harness/__tests__/attach-to-kb.spec.ts +86 -0
- package/src/server/serverFns/harness/__tests__/attach-to-story.spec.ts +90 -0
- package/src/server/serverFns/harness/__tests__/cancel-run.test.ts +146 -0
- package/src/server/serverFns/harness/__tests__/gallery.spec.ts +126 -0
- package/src/server/serverFns/harness/__tests__/media-prototype.spec.ts +67 -0
- package/src/server/serverFns/harness/__tests__/media.spec.ts +43 -0
- package/src/server/serverFns/harness/__tests__/sandbox-policy.test.ts +199 -0
- package/src/server/serverFns/harness/__tests__/workspace-files.test.ts +224 -0
- package/src/server/serverFns/harness/attach-guards.ts +31 -0
- package/src/server/serverFns/harness/attach-prototype.ts +63 -0
- package/src/server/serverFns/harness/attach-to-kb.ts +80 -0
- package/src/server/serverFns/harness/attach-to-story.ts +74 -0
- package/src/server/serverFns/harness/cancel-run.ts +89 -0
- package/src/server/serverFns/harness/extract-attachment.ts +40 -0
- package/src/server/serverFns/harness/gallery.ts +213 -0
- package/src/server/serverFns/harness/github-workspace.ts +202 -0
- package/src/server/serverFns/harness/media.ts +300 -0
- package/src/server/serverFns/harness/sandbox-policy.ts +88 -0
- package/src/server/serverFns/harness/search-mention-candidates.ts +53 -0
- package/src/server/serverFns/harness/workspace-files.ts +136 -0
- package/src/server/serverFns/iteration/__tests__/iteration-stories.test.ts +11 -1
- package/src/server/serverFns/iteration/__tests__/iteration-transfer.test.ts +11 -1
- package/src/server/serverFns/iteration/auto-schedule-internal.ts +3 -1
- package/src/server/serverFns/iteration/iteration-auto-schedule.ts +2 -1
- package/src/server/serverFns/iteration/iteration-burndown.ts +1 -1
- package/src/server/serverFns/iteration/iteration-crud.ts +8 -1
- package/src/server/serverFns/iteration/iteration-stories.ts +4 -1
- package/src/server/serverFns/iteration/transfer-internal.ts +1 -1
- package/src/server/serverFns/kb-doc-search.ts +2 -1
- package/src/server/serverFns/knowledge-index-utils.ts +26 -5
- package/src/server/serverFns/knowledge-index.ts +8 -4
- package/src/server/serverFns/knowledge-public/bookmarks/categories.ts +3 -1
- package/src/server/serverFns/knowledge-public/bookmarks/create.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/delete.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/detail.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/favorite.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/list.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/share.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/unshare.ts +1 -1
- package/src/server/serverFns/knowledge-public/bookmarks/update.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/create.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/delete.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/detail.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/list.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/public.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/share.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/unshare.ts +1 -1
- package/src/server/serverFns/knowledge-public/compliance/update.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/create.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/delete.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/detail.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/list.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/share.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/unshare.ts +1 -1
- package/src/server/serverFns/knowledge-public/dictionary/update.ts +1 -1
- package/src/server/serverFns/knowledge-public/entity-tags.ts +1 -1
- package/src/server/serverFns/knowledge-public/favorite.ts +2 -1
- package/src/server/serverFns/knowledge-public/legal/create.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/delete.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/detail.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/list.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/public.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/share.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/unshare.ts +1 -1
- package/src/server/serverFns/knowledge-public/legal/update.ts +1 -1
- package/src/server/serverFns/knowledge.ts +56 -9
- package/src/server/serverFns/notifications.ts +8 -1
- package/src/server/serverFns/plugins/harness-plugins.ts +233 -0
- package/src/server/serverFns/plugins/plugin-precheck.ts +82 -0
- package/src/server/serverFns/project/module-overview.ts +2 -1
- package/src/server/serverFns/project.ts +19 -1
- package/src/server/serverFns/settings/account-team.ts +1 -1
- package/src/server/serverFns/share/version.ts +1 -1
- package/src/server/serverFns/sso.ts +1 -1
- package/src/server/serverFns/story/__tests__/label-suggest-fn.test.ts +43 -21
- package/src/server/serverFns/story/kb-general.ts +2 -2
- package/src/server/serverFns/story/story-assoc.ts +14 -3
- package/src/server/serverFns/story/story-attachments.ts +2 -1
- package/src/server/serverFns/story/story-children.ts +1 -1
- package/src/server/serverFns/story/story-comments.ts +4 -1
- package/src/server/serverFns/story/story-crud/activities.ts +1 -1
- package/src/server/serverFns/story/story-crud/archive.ts +2 -1
- package/src/server/serverFns/story/story-crud/bulk.ts +4 -1
- package/src/server/serverFns/story/story-crud/detail.ts +2 -1
- package/src/server/serverFns/story/story-crud/label-suggest-core.ts +15 -6
- package/src/server/serverFns/story/story-crud/label-upsert.ts +1 -1
- package/src/server/serverFns/story/story-crud/labels.ts +3 -1
- package/src/server/serverFns/story/story-crud.ts +6 -1
- package/src/server/serverFns/story/story-dependencies.ts +4 -1
- package/src/server/serverFns/story/story-groups.ts +4 -1
- package/src/server/serverFns/story/story-links.ts +4 -1
- package/src/server/serverFns/story/story-reactions.ts +4 -1
- package/src/server/serverFns/story/story-search.ts +2 -1
- package/src/server/serverFns/story/story-transfer.ts +7 -2
- package/src/server/serverFns/story/story-tree.ts +5 -1
- package/src/server/serverFns/story/types.ts +2 -1
- package/src/server/serverFns/story-display-options.ts +3 -1
- package/src/server/serverFns/story-view.ts +5 -1
- package/src/server/serverFns/team.ts +19 -1
- package/src/server/serverFns/translation.ts +7 -7
- package/src/server/serverFns/user/avatar.ts +1 -1
- package/src/server/serverFns/user/settings.ts +1 -1
- package/src/server/serverFns/user/update-locale.ts +1 -1
- package/src/server/serverFns/web-search.ts +20 -4
- package/src/server/serverFns/workspace-kb.ts +9 -1
- package/src/server/serverFns/workspace.ts +16 -1
- package/src/start.ts +4 -0
- package/src/styles/globals.css +124 -84
- package/vite.shared.ts +23 -1
- package/src/components/ai/global-chat-panel.tsx +0 -137
- package/src/components/ai/use-knowledge-bases.ts +0 -41
- package/src/components/ai/use-selected-model.ts +0 -41
- package/src/components/chat/__tests__/ai-conversation.test.tsx +0 -79
- package/src/components/chat/ai-chat-history/components/conversation-group.tsx +0 -97
- package/src/components/chat/ai-chat-history/components/conversation-item.tsx +0 -280
- package/src/components/chat/ai-chat-history/index.tsx +0 -205
- package/src/components/chat/ai-chat-history/types.ts +0 -40
- package/src/components/chat/ai-conversation.tsx +0 -332
- package/src/components/chat/ai-message/components/message-actions.tsx +0 -127
- package/src/components/chat/ai-message/hooks/use-streaming-text.ts +0 -73
- package/src/components/chat/ai-message/index.tsx +0 -128
- package/src/components/chat/ai-message/types.ts +0 -25
- package/src/components/chat/ai-message.tsx +0 -19
- package/src/components/chat/ai-prompt-input/components/action-buttons.tsx +0 -204
- package/src/components/chat/ai-prompt-input/components/agent-mode-select.tsx +0 -56
- package/src/components/chat/ai-prompt-input/components/kb-context-selector.tsx +0 -187
- package/src/components/chat/ai-prompt-input/components/model-select.tsx +0 -131
- package/src/components/chat/ai-prompt-input/components/page-user-context-selector.tsx +0 -188
- package/src/components/chat/ai-prompt-input/index.tsx +0 -353
- package/src/components/chat/chat-thread-page.tsx +0 -164
- package/src/components/chat/interrupt-approval.tsx +0 -120
- package/src/components/devtools/ai-chat-panel.tsx +0 -54
- package/src/components/devtools/devtools-panel.tsx +0 -100
- package/src/components/devtools/index.ts +0 -20
- package/src/components/devtools/session-panel.tsx +0 -102
- package/src/components/ui/sonner.tsx +0 -37
- package/src/lib/chat-handoff.ts +0 -77
- package/src/routes/_nav/agents/route.tsx +0 -12
- package/src/routes/_nav/chat/$threadId.tsx +0 -31
- package/src/routes/_nav/chat/route.lazy.tsx +0 -427
- package/src/routes/_nav/chat/route.tsx +0 -23
- package/src/routes/_nav/settings/ai/$providerId/route.lazy.tsx +0 -35
- package/src/server/serverFns/agents/resolve-overrides.ts +0 -66
- package/src/server/serverFns/ai/detect.ts +0 -34
- package/src/server/serverFns/ai/execute.ts +0 -36
- /package/src/components/{chat → ai}/ai-prompt-input/components/context-badge.tsx +0 -0
- /package/src/components/{chat → ai}/ai-prompt-input/constants.tsx +0 -0
- /package/src/components/{chat → ai}/ai-prompt-input/types.ts +0 -0
- /package/src/components/{chat → ai}/ai-prompt-input.tsx +0 -0
- /package/src/components/{chat → harness}/ai-chat-history/components/conversation-header.tsx +0 -0
- /package/src/components/{chat → harness}/ai-chat-history/components/conversation-search.tsx +0 -0
- /package/src/components/{chat → harness}/ai-chat-history/components/empty-state.tsx +0 -0
- /package/src/components/{chat → harness}/ai-chat-history/utils/group-conversations.ts +0 -0
- /package/src/components/{chat → harness}/ai-chat-history.tsx +0 -0
- /package/src/components/{chat → harness}/ai-citations/components/citation-item.tsx +0 -0
- /package/src/components/{chat → harness}/ai-citations/components/citations-list.tsx +0 -0
- /package/src/components/{chat → harness}/ai-citations/components/inline-citation.tsx +0 -0
- /package/src/components/{chat → harness}/ai-citations/components/source-components.tsx +0 -0
- /package/src/components/{chat → harness}/ai-citations/index.tsx +0 -0
- /package/src/components/{chat → harness}/ai-citations/types.ts +0 -0
- /package/src/components/{chat → harness}/ai-citations/utils.ts +0 -0
- /package/src/components/{chat → harness}/ai-citations.tsx +0 -0
- /package/src/components/{chat → harness}/ai-message/components/code-block.tsx +0 -0
- /package/src/components/{chat → harness}/ai-message/components/markdown-content.tsx +0 -0
- /package/src/components/{chat → harness}/ai-message/components/streaming-indicator.tsx +0 -0
- /package/src/components/{chat → harness}/ai-message/utils/dom-utils.ts +0 -0
- /package/src/components/{chat → harness}/ai-thinking.tsx +0 -0
|
@@ -0,0 +1,2311 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
|
|
3
|
+
/** @type {any} */
|
|
4
|
+
const URLPattern = {}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The project's base locale.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* if (locale === baseLocale) {
|
|
11
|
+
* // do something
|
|
12
|
+
* }
|
|
13
|
+
*/
|
|
14
|
+
export const baseLocale = "zh";
|
|
15
|
+
/**
|
|
16
|
+
* The project's locales that have been specified in the settings.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* if (locales.includes(userSelectedLocale) === false) {
|
|
20
|
+
* throw new Error('Locale is not available');
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
export const locales = /** @type {const} */ (["zh","en"]);
|
|
24
|
+
/** @type {string} */
|
|
25
|
+
export const cookieName = "lng";
|
|
26
|
+
/** @type {number} */
|
|
27
|
+
export const cookieMaxAge = 34560000;
|
|
28
|
+
/** @type {string} */
|
|
29
|
+
export const cookieDomain = "";
|
|
30
|
+
/** @type {string} */
|
|
31
|
+
export const localStorageKey = "PARAGLIDE_LOCALE";
|
|
32
|
+
/**
|
|
33
|
+
* @type {Array<"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage" | `custom-${string}`>}
|
|
34
|
+
*/
|
|
35
|
+
export const strategy = [
|
|
36
|
+
"cookie",
|
|
37
|
+
"preferredLanguage",
|
|
38
|
+
"baseLocale"
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Route-level strategy overrides.
|
|
42
|
+
*
|
|
43
|
+
* `match` uses URLPattern syntax.
|
|
44
|
+
*
|
|
45
|
+
* @type {Array<{
|
|
46
|
+
* match: string;
|
|
47
|
+
* strategy?: Array<"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage" | `custom-${string}`>;
|
|
48
|
+
* exclude?: boolean;
|
|
49
|
+
* }>}
|
|
50
|
+
*/
|
|
51
|
+
export const routeStrategies = [];
|
|
52
|
+
/**
|
|
53
|
+
* The used URL patterns.
|
|
54
|
+
*
|
|
55
|
+
* @type {Array<{ pattern: string, localized: Array<[Locale, string]> }>}
|
|
56
|
+
*/
|
|
57
|
+
export const urlPatterns = [
|
|
58
|
+
{
|
|
59
|
+
"pattern": ":protocol://:domain(.*)::port?/:path(.*)?",
|
|
60
|
+
"localized": [
|
|
61
|
+
[
|
|
62
|
+
"en",
|
|
63
|
+
":protocol://:domain(.*)::port?/en/:path(.*)?"
|
|
64
|
+
],
|
|
65
|
+
[
|
|
66
|
+
"zh",
|
|
67
|
+
":protocol://:domain(.*)::port?/:path(.*)?"
|
|
68
|
+
]
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
/**
|
|
73
|
+
* Controls trailing slash canonicalization for localized URLs.
|
|
74
|
+
*
|
|
75
|
+
* @type {"always" | "never" | undefined}
|
|
76
|
+
*/
|
|
77
|
+
export const trailingSlash = undefined;
|
|
78
|
+
/**
|
|
79
|
+
* @typedef {{
|
|
80
|
+
* getStore(): {
|
|
81
|
+
* locale?: Locale,
|
|
82
|
+
* origin?: string,
|
|
83
|
+
* messageCalls?: Set<string>
|
|
84
|
+
* } | undefined,
|
|
85
|
+
* run: (store: { locale?: Locale, origin?: string, messageCalls?: Set<string>},
|
|
86
|
+
* cb: any) => any
|
|
87
|
+
* }} ParaglideAsyncLocalStorage
|
|
88
|
+
*/
|
|
89
|
+
/**
|
|
90
|
+
* Server side async local storage that is set by `serverMiddleware()`.
|
|
91
|
+
*
|
|
92
|
+
* The variable is used to retrieve the locale and origin in a server-side
|
|
93
|
+
* rendering context without effecting other requests.
|
|
94
|
+
*
|
|
95
|
+
* @type {ParaglideAsyncLocalStorage | undefined}
|
|
96
|
+
*/
|
|
97
|
+
export let serverAsyncLocalStorage = undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Returns the current server-side async local storage instance.
|
|
100
|
+
*
|
|
101
|
+
* Accessing the mutable value through a function keeps it observable when
|
|
102
|
+
* module interceptors wrap exported bindings and snapshot their initial value.
|
|
103
|
+
*
|
|
104
|
+
* @returns {ParaglideAsyncLocalStorage | undefined}
|
|
105
|
+
*/
|
|
106
|
+
export function getServerAsyncLocalStorage() {
|
|
107
|
+
return serverAsyncLocalStorage;
|
|
108
|
+
}
|
|
109
|
+
export const disableAsyncLocalStorage = false;
|
|
110
|
+
export const experimentalMiddlewareLocaleSplitting = false;
|
|
111
|
+
export const isServer = typeof window === 'undefined';
|
|
112
|
+
/** @type {Locale | undefined} */
|
|
113
|
+
export const experimentalStaticLocale = undefined;
|
|
114
|
+
/**
|
|
115
|
+
* Sets the server side async local storage.
|
|
116
|
+
*
|
|
117
|
+
* The function is needed because the `runtime.js` file
|
|
118
|
+
* must define the `serverAsyncLocalStorage` variable to
|
|
119
|
+
* avoid a circular import between `runtime.js` and
|
|
120
|
+
* `server.js` files.
|
|
121
|
+
*
|
|
122
|
+
* @param {ParaglideAsyncLocalStorage | undefined} value
|
|
123
|
+
*/
|
|
124
|
+
export function overwriteServerAsyncLocalStorage(value) {
|
|
125
|
+
serverAsyncLocalStorage = value;
|
|
126
|
+
}
|
|
127
|
+
const TREE_SHAKE_COOKIE_STRATEGY_USED = true;
|
|
128
|
+
const TREE_SHAKE_URL_STRATEGY_USED = false;
|
|
129
|
+
const TREE_SHAKE_GLOBAL_VARIABLE_STRATEGY_USED = false;
|
|
130
|
+
const TREE_SHAKE_PREFERRED_LANGUAGE_STRATEGY_USED = true;
|
|
131
|
+
const TREE_SHAKE_DEFAULT_URL_PATTERN_USED = true;
|
|
132
|
+
const TREE_SHAKE_LOCAL_STORAGE_STRATEGY_USED = false;
|
|
133
|
+
|
|
134
|
+
/** @type {any} */ (globalThis).__paraglide =
|
|
135
|
+
/** @type {any} */ (globalThis).__paraglide ?? {};
|
|
136
|
+
/** @type {any} */ (globalThis).__paraglide.ssr =
|
|
137
|
+
/** @type {any} */ (globalThis).__paraglide.ssr ?? {};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* This is a fallback to get started with a custom
|
|
141
|
+
* strategy and avoid type errors.
|
|
142
|
+
*
|
|
143
|
+
* The implementation is overwritten
|
|
144
|
+
* by `overwriteGetLocale()` and `defineSetLocale()`.
|
|
145
|
+
*
|
|
146
|
+
* @type {Locale | undefined}
|
|
147
|
+
*/
|
|
148
|
+
let _locale;
|
|
149
|
+
let localeInitiallySet = false;
|
|
150
|
+
/**
|
|
151
|
+
* Get the current locale.
|
|
152
|
+
*
|
|
153
|
+
* The locale is resolved using your configured strategies (URL, cookie, localStorage, etc.)
|
|
154
|
+
* in the order they are defined. In SSR contexts, the locale is retrieved from AsyncLocalStorage
|
|
155
|
+
* which is set by the `paraglideMiddleware()`.
|
|
156
|
+
*
|
|
157
|
+
* @see https://paraglidejs.com/strategy - Configure locale detection strategies
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* if (getLocale() === 'de') {
|
|
161
|
+
* console.log('Germany 🇩🇪');
|
|
162
|
+
* } else if (getLocale() === 'nl') {
|
|
163
|
+
* console.log('Netherlands 🇳🇱');
|
|
164
|
+
* }
|
|
165
|
+
*
|
|
166
|
+
* @returns {Locale} The current locale.
|
|
167
|
+
*/
|
|
168
|
+
export let getLocale = () => {
|
|
169
|
+
if (experimentalStaticLocale !== undefined) {
|
|
170
|
+
return experimentalStaticLocale;
|
|
171
|
+
}
|
|
172
|
+
// if running in a server-side rendering context
|
|
173
|
+
// retrieve the locale from the async local storage
|
|
174
|
+
if (serverAsyncLocalStorage) {
|
|
175
|
+
const locale = serverAsyncLocalStorage?.getStore()?.locale;
|
|
176
|
+
if (locale) {
|
|
177
|
+
return locale;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
let strategyToUse = strategy;
|
|
181
|
+
if (!isServer && typeof window !== "undefined" && window.location?.href) {
|
|
182
|
+
strategyToUse = getStrategyForUrl(window.location.href);
|
|
183
|
+
}
|
|
184
|
+
const resolved = resolveLocaleWithStrategies(strategyToUse, typeof window !== "undefined" ? window.location?.href : undefined);
|
|
185
|
+
if (resolved) {
|
|
186
|
+
if (!localeInitiallySet) {
|
|
187
|
+
_locale = resolved;
|
|
188
|
+
// https://github.com/opral/inlang-paraglide-js/issues/455
|
|
189
|
+
localeInitiallySet = true;
|
|
190
|
+
setLocale(resolved, { reload: false });
|
|
191
|
+
}
|
|
192
|
+
return resolved;
|
|
193
|
+
}
|
|
194
|
+
throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Resolve locale for a given URL using route-aware strategies.
|
|
198
|
+
*
|
|
199
|
+
* @param {string | URL} url
|
|
200
|
+
* @returns {Locale}
|
|
201
|
+
*/
|
|
202
|
+
export function getLocaleForUrl(url) {
|
|
203
|
+
if (experimentalStaticLocale !== undefined) {
|
|
204
|
+
return experimentalStaticLocale;
|
|
205
|
+
}
|
|
206
|
+
const strategyToUse = getStrategyForUrl(url);
|
|
207
|
+
const resolved = resolveLocaleWithStrategies(strategyToUse, typeof url === "string" ? url : url.href);
|
|
208
|
+
if (resolved) {
|
|
209
|
+
return resolved;
|
|
210
|
+
}
|
|
211
|
+
throw new Error("No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found");
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* @param {typeof strategy} strategyToUse
|
|
215
|
+
* @param {string | undefined} urlForUrlStrategy
|
|
216
|
+
* @returns {Locale | undefined}
|
|
217
|
+
*/
|
|
218
|
+
function resolveLocaleWithStrategies(strategyToUse, urlForUrlStrategy) {
|
|
219
|
+
/** @type {string | undefined} */
|
|
220
|
+
let locale;
|
|
221
|
+
for (const strat of strategyToUse) {
|
|
222
|
+
if (TREE_SHAKE_COOKIE_STRATEGY_USED && strat === "cookie") {
|
|
223
|
+
locale = extractLocaleFromCookie();
|
|
224
|
+
}
|
|
225
|
+
else if (strat === "baseLocale") {
|
|
226
|
+
locale = baseLocale;
|
|
227
|
+
}
|
|
228
|
+
else if (TREE_SHAKE_URL_STRATEGY_USED &&
|
|
229
|
+
strat === "url" &&
|
|
230
|
+
!isServer &&
|
|
231
|
+
typeof urlForUrlStrategy === "string") {
|
|
232
|
+
locale = extractLocaleFromUrl(urlForUrlStrategy);
|
|
233
|
+
}
|
|
234
|
+
else if (TREE_SHAKE_GLOBAL_VARIABLE_STRATEGY_USED &&
|
|
235
|
+
strat === "globalVariable" &&
|
|
236
|
+
_locale !== undefined) {
|
|
237
|
+
locale = _locale;
|
|
238
|
+
}
|
|
239
|
+
else if (TREE_SHAKE_PREFERRED_LANGUAGE_STRATEGY_USED &&
|
|
240
|
+
strat === "preferredLanguage" &&
|
|
241
|
+
!isServer) {
|
|
242
|
+
locale = extractLocaleFromNavigator();
|
|
243
|
+
}
|
|
244
|
+
else if (TREE_SHAKE_LOCAL_STORAGE_STRATEGY_USED &&
|
|
245
|
+
strat === "localStorage" &&
|
|
246
|
+
!isServer) {
|
|
247
|
+
locale = localStorage.getItem(localStorageKey) ?? undefined;
|
|
248
|
+
}
|
|
249
|
+
else if (isCustomStrategy(strat) && customClientStrategies.has(strat)) {
|
|
250
|
+
const handler = customClientStrategies.get(strat);
|
|
251
|
+
if (handler) {
|
|
252
|
+
const result = handler.getLocale();
|
|
253
|
+
// Handle both sync and async results - skip async in sync getLocale
|
|
254
|
+
if (result instanceof Promise) {
|
|
255
|
+
// Can't await in sync function, skip async strategies
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (result !== undefined) {
|
|
259
|
+
return assertIsLocale(result);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
const matchedLocale = toLocale(locale);
|
|
264
|
+
if (matchedLocale) {
|
|
265
|
+
return matchedLocale;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Overwrite the `getLocale()` function.
|
|
272
|
+
*
|
|
273
|
+
* Use this function to overwrite how the locale is resolved. This is useful
|
|
274
|
+
* for custom locale resolution or advanced use cases like SSG with concurrent rendering.
|
|
275
|
+
*
|
|
276
|
+
* @see https://paraglidejs.com/strategy
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* overwriteGetLocale(() => {
|
|
280
|
+
* return Cookies.get('locale') ?? baseLocale
|
|
281
|
+
* });
|
|
282
|
+
*
|
|
283
|
+
* @param {() => Locale} fn - The new implementation for `getLocale()`.
|
|
284
|
+
*/
|
|
285
|
+
export const overwriteGetLocale = (fn) => {
|
|
286
|
+
getLocale = fn;
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
const rtlLanguages = new Set([
|
|
290
|
+
"ar",
|
|
291
|
+
"dv",
|
|
292
|
+
"fa",
|
|
293
|
+
"he",
|
|
294
|
+
"ks",
|
|
295
|
+
"ku",
|
|
296
|
+
"ps",
|
|
297
|
+
"sd",
|
|
298
|
+
"ug",
|
|
299
|
+
"ur",
|
|
300
|
+
"yi",
|
|
301
|
+
]);
|
|
302
|
+
/**
|
|
303
|
+
* Get writing direction for a locale.
|
|
304
|
+
*
|
|
305
|
+
* Uses `Intl.Locale` text info when available and falls back to a
|
|
306
|
+
* language-based RTL check for runtimes without `getTextInfo()`.
|
|
307
|
+
*
|
|
308
|
+
* @example
|
|
309
|
+
* getTextDirection(); // "ltr" or "rtl" for current locale
|
|
310
|
+
* getTextDirection("ar"); // "rtl"
|
|
311
|
+
* getTextDirection("en"); // "ltr"
|
|
312
|
+
*
|
|
313
|
+
* @param {string} [locale] - Target locale. If not provided, uses `getLocale()`
|
|
314
|
+
* @returns {"ltr" | "rtl"}
|
|
315
|
+
*/
|
|
316
|
+
export function getTextDirection(locale = getLocale()) {
|
|
317
|
+
try {
|
|
318
|
+
const intlLocale = /** @type {Intl.Locale & {
|
|
319
|
+
getTextInfo?: () => { direction?: string };
|
|
320
|
+
textInfo?: { direction?: string };
|
|
321
|
+
}} */ (new Intl.Locale(locale));
|
|
322
|
+
const direction = intlLocale.getTextInfo?.().direction ?? intlLocale.textInfo?.direction;
|
|
323
|
+
if (direction === "ltr" || direction === "rtl") {
|
|
324
|
+
return direction;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
// Ignore Intl.Locale parsing/runtime errors and use fallback below.
|
|
329
|
+
}
|
|
330
|
+
const language = locale.split("-")[0]?.toLowerCase();
|
|
331
|
+
return rtlLanguages.has(language ?? "") ? "rtl" : "ltr";
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Navigates to the localized URL, or reloads the current page
|
|
336
|
+
*
|
|
337
|
+
* @param {string} [newLocation] The new location
|
|
338
|
+
*/
|
|
339
|
+
const navigateOrReload = (newLocation) => {
|
|
340
|
+
if (newLocation) {
|
|
341
|
+
// reload the page by navigating to the new url
|
|
342
|
+
window.location.href = newLocation;
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
// reload the page to reflect the new locale
|
|
346
|
+
window.location.reload();
|
|
347
|
+
}
|
|
348
|
+
};
|
|
349
|
+
/**
|
|
350
|
+
* @typedef {(newLocale: Locale, options?: { reload?: boolean }) => void | Promise<void>} SetLocaleFn
|
|
351
|
+
*/
|
|
352
|
+
/**
|
|
353
|
+
* Set the locale.
|
|
354
|
+
*
|
|
355
|
+
* Updates the locale using your configured strategies (cookie, localStorage, URL, etc.).
|
|
356
|
+
* By default, this navigates the client to the localized URL or reloads the current
|
|
357
|
+
* document to reflect the new locale. `reload: false` is a narrow browser-only escape
|
|
358
|
+
* hatch for a fully client-rendered, non-URL-routed surface that owns its reactive
|
|
359
|
+
* updates and document state. It does not re-render the UI or update the document.
|
|
360
|
+
* Do not use it for normal locale pickers, URL-routed pages, or switching an SSR,
|
|
361
|
+
* SSG, or hydrated document. It is incompatible with per-locale builds.
|
|
362
|
+
*
|
|
363
|
+
* If any custom strategy's `setLocale` function is async, then this function
|
|
364
|
+
* will become async as well.
|
|
365
|
+
*
|
|
366
|
+
* @see https://paraglidejs.com/strategy
|
|
367
|
+
*
|
|
368
|
+
* @example
|
|
369
|
+
* setLocale('en');
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* setLocale('en', { reload: false });
|
|
373
|
+
*
|
|
374
|
+
* @type {SetLocaleFn}
|
|
375
|
+
*/
|
|
376
|
+
export let setLocale = (newLocale, options) => {
|
|
377
|
+
const optionsWithDefaults = {
|
|
378
|
+
reload: true,
|
|
379
|
+
...options,
|
|
380
|
+
};
|
|
381
|
+
if (experimentalStaticLocale !== undefined &&
|
|
382
|
+
newLocale !== experimentalStaticLocale &&
|
|
383
|
+
optionsWithDefaults.reload === false) {
|
|
384
|
+
console.warn(`Paraglide: setLocale(${JSON.stringify(newLocale)}, { reload: false }) cannot switch away from the statically built locale ${JSON.stringify(experimentalStaticLocale)}. A document navigation is required; reload has been forced to true.`);
|
|
385
|
+
optionsWithDefaults.reload = true;
|
|
386
|
+
}
|
|
387
|
+
// locale is already set
|
|
388
|
+
// https://github.com/opral/inlang-paraglide-js/issues/430
|
|
389
|
+
/** @type {Locale | undefined} */
|
|
390
|
+
let currentLocale;
|
|
391
|
+
try {
|
|
392
|
+
currentLocale = getLocale();
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
// do nothing, no locale has been set yet.
|
|
396
|
+
}
|
|
397
|
+
/** @type {Array<Promise<void>>} */
|
|
398
|
+
const customSetLocalePromises = [];
|
|
399
|
+
/** @type {string | undefined} */
|
|
400
|
+
let newLocation = undefined;
|
|
401
|
+
let strategyToUse = strategy;
|
|
402
|
+
if (!isServer && typeof window !== "undefined" && window.location?.href) {
|
|
403
|
+
strategyToUse = getStrategyForUrl(window.location.href);
|
|
404
|
+
}
|
|
405
|
+
for (const strat of strategyToUse) {
|
|
406
|
+
if (TREE_SHAKE_GLOBAL_VARIABLE_STRATEGY_USED &&
|
|
407
|
+
strat === "globalVariable") {
|
|
408
|
+
// a default for a custom strategy to get started quickly
|
|
409
|
+
// is likely overwritten by `defineSetLocale()`
|
|
410
|
+
_locale = newLocale;
|
|
411
|
+
}
|
|
412
|
+
else if (TREE_SHAKE_COOKIE_STRATEGY_USED && strat === "cookie") {
|
|
413
|
+
if (isServer ||
|
|
414
|
+
typeof document === "undefined" ||
|
|
415
|
+
typeof window === "undefined") {
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
// set the cookie
|
|
419
|
+
const cookieString = `${cookieName}=${newLocale}; path=/; max-age=${cookieMaxAge}`;
|
|
420
|
+
document.cookie = cookieDomain
|
|
421
|
+
? `${cookieString}; domain=${cookieDomain}`
|
|
422
|
+
: cookieString;
|
|
423
|
+
clearLocaleCookieCache();
|
|
424
|
+
}
|
|
425
|
+
else if (strat === "baseLocale") {
|
|
426
|
+
// nothing to be set here. baseLocale is only a fallback
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
else if (TREE_SHAKE_URL_STRATEGY_USED &&
|
|
430
|
+
strat === "url" &&
|
|
431
|
+
typeof window !== "undefined") {
|
|
432
|
+
// route to the new url
|
|
433
|
+
//
|
|
434
|
+
// this triggers a page reload but a user rarely
|
|
435
|
+
// switches locales, so this should be fine.
|
|
436
|
+
//
|
|
437
|
+
// if the behavior is not desired, the implementation
|
|
438
|
+
// can be overwritten by `defineSetLocale()` to avoid
|
|
439
|
+
// a full page reload.
|
|
440
|
+
newLocation = localizeUrl(window.location.href, {
|
|
441
|
+
locale: newLocale,
|
|
442
|
+
}).href;
|
|
443
|
+
}
|
|
444
|
+
else if (TREE_SHAKE_LOCAL_STORAGE_STRATEGY_USED &&
|
|
445
|
+
strat === "localStorage" &&
|
|
446
|
+
typeof window !== "undefined") {
|
|
447
|
+
// set the localStorage
|
|
448
|
+
localStorage.setItem(localStorageKey, newLocale);
|
|
449
|
+
}
|
|
450
|
+
else if (isCustomStrategy(strat) && customClientStrategies.has(strat)) {
|
|
451
|
+
const handler = customClientStrategies.get(strat);
|
|
452
|
+
if (handler) {
|
|
453
|
+
let result = handler.setLocale(newLocale);
|
|
454
|
+
// Handle async setLocale
|
|
455
|
+
if (result instanceof Promise) {
|
|
456
|
+
result = result.catch((error) => {
|
|
457
|
+
throw new Error(`Custom strategy "${strat}" setLocale failed.`, {
|
|
458
|
+
cause: error,
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
customSetLocalePromises.push(result);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
const runReload = () => {
|
|
467
|
+
if (!isServer &&
|
|
468
|
+
optionsWithDefaults.reload &&
|
|
469
|
+
window.location &&
|
|
470
|
+
newLocale !== currentLocale) {
|
|
471
|
+
navigateOrReload(newLocation);
|
|
472
|
+
}
|
|
473
|
+
};
|
|
474
|
+
if (customSetLocalePromises.length) {
|
|
475
|
+
return Promise.all(customSetLocalePromises).then(() => {
|
|
476
|
+
runReload();
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
runReload();
|
|
480
|
+
return;
|
|
481
|
+
};
|
|
482
|
+
/**
|
|
483
|
+
* Overwrite the `setLocale()` function.
|
|
484
|
+
*
|
|
485
|
+
* Use this function to overwrite how the locale is set. For example,
|
|
486
|
+
* modify a cookie, env variable, or a user's preference.
|
|
487
|
+
*
|
|
488
|
+
* @example
|
|
489
|
+
* overwriteSetLocale((newLocale) => {
|
|
490
|
+
* // set the locale in a cookie
|
|
491
|
+
* return Cookies.set('locale', newLocale)
|
|
492
|
+
* });
|
|
493
|
+
*
|
|
494
|
+
* @param {SetLocaleFn} fn
|
|
495
|
+
*/
|
|
496
|
+
export const overwriteSetLocale = (fn) => {
|
|
497
|
+
setLocale = fn;
|
|
498
|
+
};
|
|
499
|
+
|
|
500
|
+
/**
|
|
501
|
+
* The origin of the current URL.
|
|
502
|
+
*
|
|
503
|
+
* Defaults to "http://example.com" in non-browser environments. If this
|
|
504
|
+
* behavior is not desired, the implementation can be overwritten
|
|
505
|
+
* by `overwriteGetUrlOrigin()`.
|
|
506
|
+
*
|
|
507
|
+
* @type {() => string}
|
|
508
|
+
*/
|
|
509
|
+
export let getUrlOrigin = () => {
|
|
510
|
+
if (serverAsyncLocalStorage) {
|
|
511
|
+
return serverAsyncLocalStorage.getStore()?.origin ?? "http://fallback.com";
|
|
512
|
+
}
|
|
513
|
+
else if (typeof window !== "undefined") {
|
|
514
|
+
return window.location.origin;
|
|
515
|
+
}
|
|
516
|
+
return "http://fallback.com";
|
|
517
|
+
};
|
|
518
|
+
/**
|
|
519
|
+
* Overwrite the getUrlOrigin function.
|
|
520
|
+
*
|
|
521
|
+
* Use this function in server environments to
|
|
522
|
+
* define how the URL origin is resolved.
|
|
523
|
+
*
|
|
524
|
+
* @param {() => string} fn - The new implementation for `getUrlOrigin()`.
|
|
525
|
+
*/
|
|
526
|
+
export let overwriteGetUrlOrigin = (fn) => {
|
|
527
|
+
getUrlOrigin = fn;
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Coerces a locale-like string to the canonical locale value used by the runtime.
|
|
532
|
+
*
|
|
533
|
+
* @param {unknown} value
|
|
534
|
+
* @returns {Locale | undefined}
|
|
535
|
+
*/
|
|
536
|
+
export function toLocale(value) {
|
|
537
|
+
if (typeof value !== "string") {
|
|
538
|
+
return undefined;
|
|
539
|
+
}
|
|
540
|
+
const lowerValue = value.toLowerCase();
|
|
541
|
+
for (const locale of locales) {
|
|
542
|
+
if (locale.toLowerCase() === lowerValue) {
|
|
543
|
+
return locale;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
return undefined;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Check if something is an available locale with the canonical project casing.
|
|
550
|
+
*
|
|
551
|
+
* @example
|
|
552
|
+
* if (isLocale(params.locale)) {
|
|
553
|
+
* setLocale(params.locale);
|
|
554
|
+
* } else {
|
|
555
|
+
* setLocale('en');
|
|
556
|
+
* }
|
|
557
|
+
*
|
|
558
|
+
* Use `toLocale()` when you want case-insensitive matching and canonicalization.
|
|
559
|
+
*
|
|
560
|
+
* @param {unknown} locale
|
|
561
|
+
* @returns {locale is Locale}
|
|
562
|
+
*/
|
|
563
|
+
export function isLocale(locale) {
|
|
564
|
+
return !!locale && locales.some((item) => item === locale);
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Asserts that the input can be normalized to a locale.
|
|
568
|
+
*
|
|
569
|
+
* @param {unknown} input - The input to check.
|
|
570
|
+
* @returns {Locale} The input normalized to a Locale.
|
|
571
|
+
* @throws {Error} If the input is not a locale.
|
|
572
|
+
*/
|
|
573
|
+
export function assertIsLocale(input) {
|
|
574
|
+
const locale = toLocale(input);
|
|
575
|
+
if (locale)
|
|
576
|
+
return locale;
|
|
577
|
+
throw new Error(`Invalid locale: ${input}. Expected one of: ${locales.join(", ")}`);
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
/**
|
|
581
|
+
* Applies the configured trailing slash policy to a URL.
|
|
582
|
+
*
|
|
583
|
+
* The root pathname always remains `/`. Query parameters and hashes are not
|
|
584
|
+
* modified.
|
|
585
|
+
*
|
|
586
|
+
* @param {URL} url
|
|
587
|
+
* @returns {URL}
|
|
588
|
+
*/
|
|
589
|
+
function normalizeTrailingSlash(url) {
|
|
590
|
+
if (trailingSlash === undefined || url.pathname === "/") {
|
|
591
|
+
return url;
|
|
592
|
+
}
|
|
593
|
+
if (trailingSlash === "never") {
|
|
594
|
+
url.pathname = url.pathname.replace(/\/+$/, "") || "/";
|
|
595
|
+
}
|
|
596
|
+
else if (trailingSlash === "always") {
|
|
597
|
+
url.pathname = url.pathname.replace(/\/+$/, "") + "/";
|
|
598
|
+
}
|
|
599
|
+
return url;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* Matches a canonical URL while allowing configured patterns to retain their
|
|
604
|
+
* existing trailing slash style.
|
|
605
|
+
*
|
|
606
|
+
* @param {URLPattern} pattern
|
|
607
|
+
* @param {URL} url
|
|
608
|
+
* @returns {any}
|
|
609
|
+
*/
|
|
610
|
+
function execUrlPattern(pattern, url) {
|
|
611
|
+
if (trailingSlash === undefined || url.pathname === "/") {
|
|
612
|
+
return pattern.exec(url.href);
|
|
613
|
+
}
|
|
614
|
+
const alias = new URL(url);
|
|
615
|
+
if (trailingSlash === "always") {
|
|
616
|
+
alias.pathname = alias.pathname.replace(/\/+$/, "") || "/";
|
|
617
|
+
// Prefer the slashless alias so the canonical slash does not become part
|
|
618
|
+
// of a terminal wildcard capture.
|
|
619
|
+
return pattern.exec(alias.href) ?? pattern.exec(url.href);
|
|
620
|
+
}
|
|
621
|
+
else if (trailingSlash === "never") {
|
|
622
|
+
const match = pattern.exec(url.href);
|
|
623
|
+
if (match) {
|
|
624
|
+
return match;
|
|
625
|
+
}
|
|
626
|
+
alias.pathname = alias.pathname.replace(/\/+$/, "") + "/";
|
|
627
|
+
return pattern.exec(alias.href);
|
|
628
|
+
}
|
|
629
|
+
return pattern.exec(url.href);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* @typedef {object} ExtractLocaleFromRequestOptions
|
|
634
|
+
* @property {string | URL} [effectiveRequestUrl] - Effective request URL to use for route matching and locale detection with the URL strategy.
|
|
635
|
+
*/
|
|
636
|
+
/**
|
|
637
|
+
* Extracts a locale from a request.
|
|
638
|
+
*
|
|
639
|
+
* Use the function on the server to extract the locale
|
|
640
|
+
* from a request.
|
|
641
|
+
*
|
|
642
|
+
* The function goes through the strategies in the order
|
|
643
|
+
* they are defined. If a strategy returns an invalid locale,
|
|
644
|
+
* it will fall back to the next strategy.
|
|
645
|
+
*
|
|
646
|
+
* Note: Custom server strategies are not supported in this synchronous version.
|
|
647
|
+
* Use `extractLocaleFromRequestAsync` if you need custom server strategies with async getLocale methods.
|
|
648
|
+
*
|
|
649
|
+
* @example
|
|
650
|
+
* const locale = extractLocaleFromRequest(request);
|
|
651
|
+
*
|
|
652
|
+
* @param {Request} request
|
|
653
|
+
* @param {ExtractLocaleFromRequestOptions} [options]
|
|
654
|
+
* @returns {Locale}
|
|
655
|
+
*/
|
|
656
|
+
export const extractLocaleFromRequest = (request, options = {}) => {
|
|
657
|
+
const effectiveRequestUrl = resolveEffectiveRequestUrl(request, options.effectiveRequestUrl);
|
|
658
|
+
return extractLocaleFromRequestWithStrategies(request, getStrategyForUrl(effectiveRequestUrl), effectiveRequestUrl);
|
|
659
|
+
};
|
|
660
|
+
/**
|
|
661
|
+
* Extracts a locale from a request using the provided strategy order.
|
|
662
|
+
*
|
|
663
|
+
* @param {Request} request
|
|
664
|
+
* @param {typeof strategy} strategies
|
|
665
|
+
* @param {string | URL} [url]
|
|
666
|
+
* @returns {Locale}
|
|
667
|
+
*/
|
|
668
|
+
export const extractLocaleFromRequestWithStrategies = (request, strategies, url = request.url) => {
|
|
669
|
+
const effectiveRequestUrl = resolveEffectiveRequestUrl(request, url);
|
|
670
|
+
/** @type {string|undefined} */
|
|
671
|
+
let locale;
|
|
672
|
+
for (const strat of strategies) {
|
|
673
|
+
if (TREE_SHAKE_COOKIE_STRATEGY_USED && strat === "cookie") {
|
|
674
|
+
const cookiePrefix = cookieName + "=";
|
|
675
|
+
locale = request.headers
|
|
676
|
+
.get("cookie")
|
|
677
|
+
?.split(";")
|
|
678
|
+
.map((c) => c.trim())
|
|
679
|
+
.find((c) => c.startsWith(cookiePrefix))
|
|
680
|
+
?.slice(cookiePrefix.length);
|
|
681
|
+
}
|
|
682
|
+
else if (TREE_SHAKE_URL_STRATEGY_USED && strat === "url") {
|
|
683
|
+
locale = extractLocaleFromUrl(effectiveRequestUrl);
|
|
684
|
+
}
|
|
685
|
+
else if (TREE_SHAKE_PREFERRED_LANGUAGE_STRATEGY_USED &&
|
|
686
|
+
strat === "preferredLanguage") {
|
|
687
|
+
locale = extractLocaleFromHeader(request);
|
|
688
|
+
}
|
|
689
|
+
else if (strat === "globalVariable") {
|
|
690
|
+
locale = _locale;
|
|
691
|
+
}
|
|
692
|
+
else if (strat === "baseLocale") {
|
|
693
|
+
return baseLocale;
|
|
694
|
+
}
|
|
695
|
+
else if (strat === "localStorage") {
|
|
696
|
+
continue;
|
|
697
|
+
}
|
|
698
|
+
else if (isCustomStrategy(strat)) {
|
|
699
|
+
// Custom strategies are not supported in sync version
|
|
700
|
+
// Use extractLocaleFromRequestAsync for custom server strategies
|
|
701
|
+
continue;
|
|
702
|
+
}
|
|
703
|
+
const matchedLocale = toLocale(locale);
|
|
704
|
+
if (matchedLocale) {
|
|
705
|
+
return matchedLocale;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
throw new Error("No locale found. There is an error in your strategy. Try adding 'baseLocale' as the very last strategy. Read more here https://paraglidejs.com/errors#no-locale-found");
|
|
709
|
+
};
|
|
710
|
+
/**
|
|
711
|
+
* @param {Request} request
|
|
712
|
+
* @param {string | URL | undefined} effectiveRequestUrl
|
|
713
|
+
* @returns {URL}
|
|
714
|
+
*/
|
|
715
|
+
function resolveEffectiveRequestUrl(request, effectiveRequestUrl = request.url) {
|
|
716
|
+
if (effectiveRequestUrl instanceof URL) {
|
|
717
|
+
return new URL(effectiveRequestUrl.href);
|
|
718
|
+
}
|
|
719
|
+
return new URL(effectiveRequestUrl, request.url);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* Asynchronously extracts a locale from a request.
|
|
724
|
+
*
|
|
725
|
+
* This function supports async custom server strategies, unlike the synchronous
|
|
726
|
+
* `extractLocaleFromRequest`. Use this function when you have custom server strategies
|
|
727
|
+
* that need to perform asynchronous operations (like database calls) in their getLocale method.
|
|
728
|
+
*
|
|
729
|
+
* The function first processes any custom server strategies asynchronously, then falls back
|
|
730
|
+
* to the synchronous `extractLocaleFromRequest` for all other strategies.
|
|
731
|
+
*
|
|
732
|
+
* @see {@link https://github.com/opral/inlang-paraglide-js/issues/527#issuecomment-2978151022}
|
|
733
|
+
*
|
|
734
|
+
* @example
|
|
735
|
+
* // Basic usage
|
|
736
|
+
* const locale = await extractLocaleFromRequestAsync(request);
|
|
737
|
+
*
|
|
738
|
+
* @example
|
|
739
|
+
* // With custom async server strategy
|
|
740
|
+
* defineCustomServerStrategy("custom-database", {
|
|
741
|
+
* getLocale: async (request) => {
|
|
742
|
+
* const userId = extractUserIdFromRequest(request);
|
|
743
|
+
* return await getUserLocaleFromDatabase(userId);
|
|
744
|
+
* }
|
|
745
|
+
* });
|
|
746
|
+
*
|
|
747
|
+
* const locale = await extractLocaleFromRequestAsync(request);
|
|
748
|
+
*
|
|
749
|
+
* @param {Request} request - The request object to extract the locale from.
|
|
750
|
+
* @param {{ effectiveRequestUrl?: string | URL }} [options] - Effective request URL to use for route matching and locale detection with the URL strategy.
|
|
751
|
+
* @returns {Promise<Locale>} The extracted locale.
|
|
752
|
+
*/
|
|
753
|
+
export const extractLocaleFromRequestAsync = async (request, options = {}) => {
|
|
754
|
+
/** @type {string|undefined} */
|
|
755
|
+
let locale;
|
|
756
|
+
const effectiveRequestUrl = resolveEffectiveRequestUrlFromRequestAsync(request, options.effectiveRequestUrl);
|
|
757
|
+
const strategy = getStrategyForUrl(effectiveRequestUrl);
|
|
758
|
+
// Process custom strategies first, in order
|
|
759
|
+
for (const strat of strategy) {
|
|
760
|
+
if (isCustomStrategy(strat) && customServerStrategies.has(strat)) {
|
|
761
|
+
const handler = customServerStrategies.get(strat);
|
|
762
|
+
if (handler) {
|
|
763
|
+
/** @type {string|undefined} */
|
|
764
|
+
locale = await handler.getLocale(request);
|
|
765
|
+
}
|
|
766
|
+
// If we got a valid locale from this custom strategy, use it
|
|
767
|
+
const matchedLocale = toLocale(locale);
|
|
768
|
+
if (matchedLocale) {
|
|
769
|
+
return matchedLocale;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
// If no custom strategy provided a valid locale, fall back to sync version
|
|
774
|
+
return extractLocaleFromRequestWithStrategies(request, strategy, effectiveRequestUrl);
|
|
775
|
+
};
|
|
776
|
+
/**
|
|
777
|
+
* @param {Request} request
|
|
778
|
+
* @param {string | URL | undefined} effectiveRequestUrl
|
|
779
|
+
* @returns {URL}
|
|
780
|
+
*/
|
|
781
|
+
function resolveEffectiveRequestUrlFromRequestAsync(request, effectiveRequestUrl = request.url) {
|
|
782
|
+
if (effectiveRequestUrl instanceof URL) {
|
|
783
|
+
return new URL(effectiveRequestUrl.href);
|
|
784
|
+
}
|
|
785
|
+
return new URL(effectiveRequestUrl, request.url);
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
const cookieNamePattern = cookieName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
789
|
+
const localeCookiePattern = new RegExp(`(?:^|;\\s*)${cookieNamePattern}=([^;]*)`);
|
|
790
|
+
const noCachedLocale = Symbol();
|
|
791
|
+
/** @type {Locale | undefined | typeof noCachedLocale} */
|
|
792
|
+
let cachedLocaleFromCookie = noCachedLocale;
|
|
793
|
+
/**
|
|
794
|
+
* Clears the cached locale from `document.cookie`.
|
|
795
|
+
*/
|
|
796
|
+
function clearLocaleCookieCache() {
|
|
797
|
+
cachedLocaleFromCookie = noCachedLocale;
|
|
798
|
+
}
|
|
799
|
+
function scheduleLocaleCookieCacheClear() {
|
|
800
|
+
if (typeof queueMicrotask === "function") {
|
|
801
|
+
queueMicrotask(clearLocaleCookieCache);
|
|
802
|
+
}
|
|
803
|
+
else {
|
|
804
|
+
Promise.resolve().then(clearLocaleCookieCache);
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
/**
|
|
808
|
+
* Extracts a cookie from the document.
|
|
809
|
+
*
|
|
810
|
+
* Will return undefined if the document is not available or if the cookie is not set.
|
|
811
|
+
* The `document` object is not available in server-side rendering, so this function should not be called in that context.
|
|
812
|
+
*
|
|
813
|
+
* @returns {Locale | undefined}
|
|
814
|
+
*/
|
|
815
|
+
export function extractLocaleFromCookie() {
|
|
816
|
+
if (typeof document === "undefined") {
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
if (cachedLocaleFromCookie !== noCachedLocale) {
|
|
820
|
+
return cachedLocaleFromCookie;
|
|
821
|
+
}
|
|
822
|
+
const match = document.cookie.match(localeCookiePattern);
|
|
823
|
+
const locale = match?.[1];
|
|
824
|
+
cachedLocaleFromCookie = toLocale(locale);
|
|
825
|
+
scheduleLocaleCookieCacheClear();
|
|
826
|
+
return cachedLocaleFromCookie;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* Extracts a locale from the accept-language header.
|
|
831
|
+
*
|
|
832
|
+
* Use the function on the server to extract the locale
|
|
833
|
+
* from the accept-language header that is sent by the client.
|
|
834
|
+
*
|
|
835
|
+
* @example
|
|
836
|
+
* const locale = extractLocaleFromHeader(request);
|
|
837
|
+
*
|
|
838
|
+
* @param {Request} request - The request object to extract the locale from.
|
|
839
|
+
* @returns {Locale | undefined} The negotiated preferred language.
|
|
840
|
+
*/
|
|
841
|
+
export function extractLocaleFromHeader(request) {
|
|
842
|
+
const acceptLanguageHeader = request.headers.get("accept-language");
|
|
843
|
+
if (acceptLanguageHeader) {
|
|
844
|
+
// Parse language preferences with their q-values and base language codes
|
|
845
|
+
const languages = acceptLanguageHeader
|
|
846
|
+
.split(",")
|
|
847
|
+
.map((lang) => {
|
|
848
|
+
const [tag, q = "1"] = lang.trim().split(";q=");
|
|
849
|
+
// Get both the full tag and base language code
|
|
850
|
+
const baseTag = tag?.split("-")[0];
|
|
851
|
+
return {
|
|
852
|
+
fullTag: tag,
|
|
853
|
+
baseTag,
|
|
854
|
+
q: Number(q),
|
|
855
|
+
};
|
|
856
|
+
})
|
|
857
|
+
.sort((a, b) => b.q - a.q);
|
|
858
|
+
for (const lang of languages) {
|
|
859
|
+
const fullLocale = toLocale(lang.fullTag);
|
|
860
|
+
if (fullLocale) {
|
|
861
|
+
return fullLocale;
|
|
862
|
+
}
|
|
863
|
+
const baseLocale = toLocale(lang.baseTag);
|
|
864
|
+
if (baseLocale) {
|
|
865
|
+
return baseLocale;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
return undefined;
|
|
869
|
+
}
|
|
870
|
+
return undefined;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Negotiates a preferred language from navigator.languages.
|
|
875
|
+
*
|
|
876
|
+
* Use the function on the client to extract the locale
|
|
877
|
+
* from the navigator.languages array.
|
|
878
|
+
*
|
|
879
|
+
* @example
|
|
880
|
+
* const locale = extractLocaleFromNavigator();
|
|
881
|
+
*
|
|
882
|
+
* @returns {Locale | undefined}
|
|
883
|
+
*/
|
|
884
|
+
export function extractLocaleFromNavigator() {
|
|
885
|
+
if (!navigator?.languages?.length) {
|
|
886
|
+
return undefined;
|
|
887
|
+
}
|
|
888
|
+
const languages = navigator.languages.map((lang) => ({
|
|
889
|
+
fullTag: lang,
|
|
890
|
+
baseTag: lang.split("-")[0],
|
|
891
|
+
}));
|
|
892
|
+
for (const lang of languages) {
|
|
893
|
+
const fullLocale = toLocale(lang.fullTag);
|
|
894
|
+
if (fullLocale) {
|
|
895
|
+
return fullLocale;
|
|
896
|
+
}
|
|
897
|
+
const baseLocale = toLocale(lang.baseTag);
|
|
898
|
+
if (baseLocale) {
|
|
899
|
+
return baseLocale;
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
return undefined;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
/**
|
|
906
|
+
* If extractLocaleFromUrl is called many times on the same page and the URL
|
|
907
|
+
* hasn't changed, we don't need to recompute it every time which can get expensive.
|
|
908
|
+
* We might use a LRU cache if needed, but for now storing only the last result is enough.
|
|
909
|
+
* https://github.com/opral/monorepo/pull/3575#discussion_r2066731243
|
|
910
|
+
*/
|
|
911
|
+
/** @type {string|undefined} */
|
|
912
|
+
let cachedUrl;
|
|
913
|
+
/** @type {Locale|undefined} */
|
|
914
|
+
let cachedLocale;
|
|
915
|
+
/**
|
|
916
|
+
* Extracts the locale from a given URL using native URLPattern.
|
|
917
|
+
*
|
|
918
|
+
* The built-in default `/:locale/...` routing is case-insensitive because it
|
|
919
|
+
* canonicalizes the first path segment with `toLocale()`. Custom `urlPatterns`
|
|
920
|
+
* keep URLPattern's normal exact matching semantics for path segments.
|
|
921
|
+
*
|
|
922
|
+
* @param {URL|string} url - The full URL from which to extract the locale.
|
|
923
|
+
* @returns {Locale|undefined} The extracted locale, or undefined if no locale is found.
|
|
924
|
+
*/
|
|
925
|
+
export function extractLocaleFromUrl(url) {
|
|
926
|
+
const urlString = typeof url === "string" ? url : url.href;
|
|
927
|
+
if (cachedUrl === urlString) {
|
|
928
|
+
return cachedLocale;
|
|
929
|
+
}
|
|
930
|
+
/** @type {Locale | undefined} */
|
|
931
|
+
let result;
|
|
932
|
+
if (TREE_SHAKE_DEFAULT_URL_PATTERN_USED) {
|
|
933
|
+
const urlObj = typeof url === "string"
|
|
934
|
+
? new URL(url, "http://example.com")
|
|
935
|
+
: new URL(url);
|
|
936
|
+
result = defaultUrlPatternExtractLocale(normalizeTrailingSlash(urlObj));
|
|
937
|
+
}
|
|
938
|
+
else {
|
|
939
|
+
const urlObj = normalizeTrailingSlash(typeof url === "string" ? new URL(url) : new URL(url));
|
|
940
|
+
// Iterate over URL patterns
|
|
941
|
+
for (const element of urlPatterns) {
|
|
942
|
+
for (const [locale, localizedPattern] of element.localized) {
|
|
943
|
+
const match = execUrlPattern(new URLPattern(localizedPattern, urlObj.href), urlObj);
|
|
944
|
+
if (match) {
|
|
945
|
+
result = locale;
|
|
946
|
+
break;
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
if (result)
|
|
950
|
+
break;
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
cachedUrl = urlString;
|
|
954
|
+
cachedLocale = result;
|
|
955
|
+
return result;
|
|
956
|
+
}
|
|
957
|
+
/**
|
|
958
|
+
* https://github.com/opral/inlang-paraglide-js/issues/381
|
|
959
|
+
*
|
|
960
|
+
* @param {URL | string} url - The full URL from which to extract the locale.
|
|
961
|
+
* @returns {Locale | undefined} The extracted locale, or undefined if no locale is found.
|
|
962
|
+
*/
|
|
963
|
+
function defaultUrlPatternExtractLocale(url) {
|
|
964
|
+
const urlObj = new URL(url, "http://example.com");
|
|
965
|
+
const pathSegments = urlObj.pathname.split("/").filter(Boolean);
|
|
966
|
+
return toLocale(pathSegments[0]) || baseLocale;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
/**
|
|
970
|
+
* Lower-level URL localization function, primarily used in server contexts.
|
|
971
|
+
*
|
|
972
|
+
* This function is designed for server-side usage where you need precise control
|
|
973
|
+
* over URL localization, such as in middleware or request handlers. It works with
|
|
974
|
+
* URL objects and always returns absolute URLs.
|
|
975
|
+
*
|
|
976
|
+
* For client-side UI components, use `localizeHref()` instead, which provides
|
|
977
|
+
* a more convenient API with relative paths and automatic locale detection.
|
|
978
|
+
*
|
|
979
|
+
* @see https://paraglidejs.com/i18n-routing
|
|
980
|
+
*
|
|
981
|
+
* @example
|
|
982
|
+
* ```typescript
|
|
983
|
+
* // Server middleware example
|
|
984
|
+
* app.use((req, res, next) => {
|
|
985
|
+
* const url = new URL(req.url, `${req.protocol}://${req.headers.host}`);
|
|
986
|
+
* const localized = localizeUrl(url, { locale: "de" });
|
|
987
|
+
*
|
|
988
|
+
* if (localized.href !== url.href) {
|
|
989
|
+
* return res.redirect(localized.href);
|
|
990
|
+
* }
|
|
991
|
+
* next();
|
|
992
|
+
* });
|
|
993
|
+
* ```
|
|
994
|
+
*
|
|
995
|
+
* @example
|
|
996
|
+
* ```typescript
|
|
997
|
+
* // Using with URL patterns
|
|
998
|
+
* const url = new URL("https://example.com/about");
|
|
999
|
+
* localizeUrl(url, { locale: "de" });
|
|
1000
|
+
* // => URL("https://example.com/de/about")
|
|
1001
|
+
*
|
|
1002
|
+
* // Using with domain-based localization
|
|
1003
|
+
* const url = new URL("https://example.com/store");
|
|
1004
|
+
* localizeUrl(url, { locale: "de" });
|
|
1005
|
+
* // => URL("https://de.example.com/store")
|
|
1006
|
+
* ```
|
|
1007
|
+
*
|
|
1008
|
+
* @param {string | URL} url - The URL to localize. If string, must be absolute.
|
|
1009
|
+
* @param {object} [options] - Options for localization
|
|
1010
|
+
* @param {Locale} [options.locale] - Target locale. If not provided, uses getLocale()
|
|
1011
|
+
* @returns {URL} The localized URL, always absolute
|
|
1012
|
+
*/
|
|
1013
|
+
export function localizeUrl(url, options) {
|
|
1014
|
+
const targetLocale = options?.locale
|
|
1015
|
+
? assertIsLocale(options?.locale)
|
|
1016
|
+
: getLocale();
|
|
1017
|
+
if (TREE_SHAKE_DEFAULT_URL_PATTERN_USED) {
|
|
1018
|
+
return localizeUrlDefaultPattern(url, targetLocale);
|
|
1019
|
+
}
|
|
1020
|
+
const originalUrl = typeof url === "string" ? new URL(url) : url;
|
|
1021
|
+
const urlObj = trailingSlash === undefined
|
|
1022
|
+
? originalUrl
|
|
1023
|
+
: normalizeTrailingSlash(new URL(originalUrl));
|
|
1024
|
+
// Iterate over URL patterns
|
|
1025
|
+
for (const element of urlPatterns) {
|
|
1026
|
+
// Most applications use a locale prefix (and sometimes a fixed domain)
|
|
1027
|
+
// with a trailing catch-all path. Those routes do not need URLPattern's
|
|
1028
|
+
// parser or matcher on every call. Keep the generic matcher below as the
|
|
1029
|
+
// fallback for every other URLPattern shape. This stays inside the outer
|
|
1030
|
+
// loop so specific patterns retain precedence over a later catch-all.
|
|
1031
|
+
const fastPathLocalized = localizeUrlFastPath(urlObj, targetLocale, element);
|
|
1032
|
+
if (fastPathLocalized !== undefined) {
|
|
1033
|
+
return fastPathLocalized;
|
|
1034
|
+
}
|
|
1035
|
+
// match localized patterns
|
|
1036
|
+
for (const [, localizedPattern] of element.localized) {
|
|
1037
|
+
const match = execUrlPattern(getUrlPattern(localizedPattern, urlObj), urlObj);
|
|
1038
|
+
if (!match) {
|
|
1039
|
+
continue;
|
|
1040
|
+
}
|
|
1041
|
+
const targetPattern = element.localized.find(([locale]) => locale === targetLocale)?.[1];
|
|
1042
|
+
if (!targetPattern) {
|
|
1043
|
+
continue;
|
|
1044
|
+
}
|
|
1045
|
+
const localizedUrl = fillPattern(targetPattern, aggregateGroups(match), urlObj.origin);
|
|
1046
|
+
return normalizeTrailingSlash(fillMissingUrlParts(localizedUrl, match));
|
|
1047
|
+
}
|
|
1048
|
+
const unlocalizedMatch = execUrlPattern(getUrlPattern(element.pattern, urlObj), urlObj);
|
|
1049
|
+
if (unlocalizedMatch) {
|
|
1050
|
+
const targetPattern = element.localized.find(([locale]) => locale === targetLocale)?.[1];
|
|
1051
|
+
if (targetPattern) {
|
|
1052
|
+
const localizedUrl = fillPattern(targetPattern, aggregateGroups(unlocalizedMatch), urlObj.origin);
|
|
1053
|
+
return normalizeTrailingSlash(fillMissingUrlParts(localizedUrl, unlocalizedMatch));
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
// If no match found, return the original URL
|
|
1058
|
+
return originalUrl;
|
|
1059
|
+
}
|
|
1060
|
+
/**
|
|
1061
|
+
* https://github.com/opral/inlang-paraglide-js/issues/381
|
|
1062
|
+
*
|
|
1063
|
+
* @param {string | URL} url
|
|
1064
|
+
* @param {Locale} locale
|
|
1065
|
+
* @returns {URL}
|
|
1066
|
+
*/
|
|
1067
|
+
function localizeUrlDefaultPattern(url, locale) {
|
|
1068
|
+
const urlObj = normalizeTrailingSlash(typeof url === "string" ? new URL(url, getUrlOrigin()) : new URL(url));
|
|
1069
|
+
const currentLocale = extractLocaleFromUrl(urlObj);
|
|
1070
|
+
// If current locale matches target locale, no change needed
|
|
1071
|
+
if (currentLocale === locale) {
|
|
1072
|
+
return normalizeTrailingSlash(urlObj);
|
|
1073
|
+
}
|
|
1074
|
+
const pathSegments = urlObj.pathname.split("/").filter(Boolean);
|
|
1075
|
+
// If current path starts with a locale, remove it
|
|
1076
|
+
if (pathSegments.length > 0 && toLocale(pathSegments[0])) {
|
|
1077
|
+
pathSegments.shift();
|
|
1078
|
+
}
|
|
1079
|
+
// For base locale, don't add prefix
|
|
1080
|
+
if (locale === baseLocale) {
|
|
1081
|
+
urlObj.pathname = "/" + pathSegments.join("/");
|
|
1082
|
+
}
|
|
1083
|
+
else {
|
|
1084
|
+
// For other locales, add prefix
|
|
1085
|
+
urlObj.pathname = "/" + locale + "/" + pathSegments.join("/");
|
|
1086
|
+
}
|
|
1087
|
+
return normalizeTrailingSlash(urlObj);
|
|
1088
|
+
}
|
|
1089
|
+
/**
|
|
1090
|
+
* Low-level URL de-localization function, primarily used in server contexts.
|
|
1091
|
+
*
|
|
1092
|
+
* This function is designed for server-side usage where you need precise control
|
|
1093
|
+
* over URL de-localization, such as in middleware or request handlers. It works with
|
|
1094
|
+
* URL objects and always returns absolute URLs.
|
|
1095
|
+
*
|
|
1096
|
+
* For client-side UI components, use `deLocalizeHref()` instead, which provides
|
|
1097
|
+
* a more convenient API with relative paths.
|
|
1098
|
+
*
|
|
1099
|
+
* @see https://paraglidejs.com/i18n-routing
|
|
1100
|
+
*
|
|
1101
|
+
* @example
|
|
1102
|
+
* ```typescript
|
|
1103
|
+
* // Server middleware example
|
|
1104
|
+
* app.use((req, res, next) => {
|
|
1105
|
+
* const url = new URL(req.url, `${req.protocol}://${req.headers.host}`);
|
|
1106
|
+
* const baseUrl = deLocalizeUrl(url);
|
|
1107
|
+
*
|
|
1108
|
+
* // Store the base URL for later use
|
|
1109
|
+
* req.baseUrl = baseUrl;
|
|
1110
|
+
* next();
|
|
1111
|
+
* });
|
|
1112
|
+
* ```
|
|
1113
|
+
*
|
|
1114
|
+
* @example
|
|
1115
|
+
* ```typescript
|
|
1116
|
+
* // Using with URL patterns
|
|
1117
|
+
* const url = new URL("https://example.com/de/about");
|
|
1118
|
+
* deLocalizeUrl(url); // => URL("https://example.com/about")
|
|
1119
|
+
*
|
|
1120
|
+
* // Using with domain-based localization
|
|
1121
|
+
* const url = new URL("https://de.example.com/store");
|
|
1122
|
+
* deLocalizeUrl(url); // => URL("https://example.com/store")
|
|
1123
|
+
* ```
|
|
1124
|
+
*
|
|
1125
|
+
* @param {string | URL} url - The URL to de-localize. If string, must be absolute.
|
|
1126
|
+
* @returns {URL} The de-localized URL, always absolute
|
|
1127
|
+
*/
|
|
1128
|
+
export function deLocalizeUrl(url) {
|
|
1129
|
+
if (TREE_SHAKE_DEFAULT_URL_PATTERN_USED) {
|
|
1130
|
+
return deLocalizeUrlDefaultPattern(url);
|
|
1131
|
+
}
|
|
1132
|
+
const originalUrl = typeof url === "string" ? new URL(url) : url;
|
|
1133
|
+
const urlObj = trailingSlash === undefined
|
|
1134
|
+
? originalUrl
|
|
1135
|
+
: normalizeTrailingSlash(new URL(originalUrl));
|
|
1136
|
+
// Iterate over URL patterns
|
|
1137
|
+
for (const element of urlPatterns) {
|
|
1138
|
+
const fastPathDeLocalized = deLocalizeUrlFastPath(urlObj, element);
|
|
1139
|
+
if (fastPathDeLocalized !== undefined) {
|
|
1140
|
+
return fastPathDeLocalized;
|
|
1141
|
+
}
|
|
1142
|
+
// Iterate over localized versions
|
|
1143
|
+
for (const [, localizedPattern] of element.localized) {
|
|
1144
|
+
const match = execUrlPattern(getUrlPattern(localizedPattern, urlObj), urlObj);
|
|
1145
|
+
if (match) {
|
|
1146
|
+
// Convert localized URL back to the base pattern
|
|
1147
|
+
const groups = aggregateGroups(match);
|
|
1148
|
+
const baseUrl = fillPattern(element.pattern, groups, urlObj.origin);
|
|
1149
|
+
return normalizeTrailingSlash(fillMissingUrlParts(baseUrl, match));
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
// match unlocalized pattern
|
|
1153
|
+
const unlocalizedMatch = execUrlPattern(getUrlPattern(element.pattern, urlObj), urlObj);
|
|
1154
|
+
if (unlocalizedMatch) {
|
|
1155
|
+
const baseUrl = fillPattern(element.pattern, aggregateGroups(unlocalizedMatch), urlObj.origin);
|
|
1156
|
+
return normalizeTrailingSlash(fillMissingUrlParts(baseUrl, unlocalizedMatch));
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
// no match found return the original url
|
|
1160
|
+
return originalUrl;
|
|
1161
|
+
}
|
|
1162
|
+
/**
|
|
1163
|
+
* De-localizes a URL using the default pattern (/:locale/*)
|
|
1164
|
+
* @param {string|URL} url
|
|
1165
|
+
* @returns {URL}
|
|
1166
|
+
*/
|
|
1167
|
+
function deLocalizeUrlDefaultPattern(url) {
|
|
1168
|
+
const urlObj = normalizeTrailingSlash(typeof url === "string" ? new URL(url, getUrlOrigin()) : new URL(url));
|
|
1169
|
+
const pathSegments = urlObj.pathname.split("/").filter(Boolean);
|
|
1170
|
+
// If first segment is a locale, remove it
|
|
1171
|
+
if (pathSegments.length > 0 && toLocale(pathSegments[0])) {
|
|
1172
|
+
urlObj.pathname = "/" + pathSegments.slice(1).join("/");
|
|
1173
|
+
}
|
|
1174
|
+
return normalizeTrailingSlash(urlObj);
|
|
1175
|
+
}
|
|
1176
|
+
/**
|
|
1177
|
+
* Takes matches of implicit wildcards in the UrlPattern (when a part is missing
|
|
1178
|
+
* it is equal to '*') and adds them back to the result of fillPattern.
|
|
1179
|
+
*
|
|
1180
|
+
* At least protocol and hostname are required to create a valid URL inside fillPattern.
|
|
1181
|
+
*
|
|
1182
|
+
* @param {URL} url
|
|
1183
|
+
* @param {any} match
|
|
1184
|
+
* @returns {URL}
|
|
1185
|
+
*/
|
|
1186
|
+
function fillMissingUrlParts(url, match) {
|
|
1187
|
+
if (match.protocol.groups["0"]) {
|
|
1188
|
+
url.protocol = match.protocol.groups["0"] ?? "";
|
|
1189
|
+
}
|
|
1190
|
+
if (match.hostname.groups["0"]) {
|
|
1191
|
+
url.hostname = match.hostname.groups["0"] ?? "";
|
|
1192
|
+
}
|
|
1193
|
+
if (match.username.groups["0"]) {
|
|
1194
|
+
url.username = match.username.groups["0"] ?? "";
|
|
1195
|
+
}
|
|
1196
|
+
if (match.password.groups["0"]) {
|
|
1197
|
+
url.password = match.password.groups["0"] ?? "";
|
|
1198
|
+
}
|
|
1199
|
+
if (match.port.groups["0"]) {
|
|
1200
|
+
url.port = match.port.groups["0"] ?? "";
|
|
1201
|
+
}
|
|
1202
|
+
if (match.pathname.groups["0"]) {
|
|
1203
|
+
url.pathname = match.pathname.groups["0"] ?? "";
|
|
1204
|
+
}
|
|
1205
|
+
if (match.search.groups["0"]) {
|
|
1206
|
+
url.search = match.search.groups["0"] ?? "";
|
|
1207
|
+
}
|
|
1208
|
+
if (match.hash.groups["0"]) {
|
|
1209
|
+
url.hash = match.hash.groups["0"] ?? "";
|
|
1210
|
+
}
|
|
1211
|
+
return url;
|
|
1212
|
+
}
|
|
1213
|
+
/**
|
|
1214
|
+
* Fills a URL pattern with values for named groups, supporting all URLPattern-style modifiers.
|
|
1215
|
+
*
|
|
1216
|
+
* This function will eventually be replaced by https://github.com/whatwg/urlpattern/issues/73
|
|
1217
|
+
*
|
|
1218
|
+
* Matches:
|
|
1219
|
+
* - :name -> Simple
|
|
1220
|
+
* - :name? -> Optional
|
|
1221
|
+
* - :name+ -> One or more
|
|
1222
|
+
* - :name* -> Zero or more
|
|
1223
|
+
* - :name(...) -> Regex group
|
|
1224
|
+
* - {text} -> Group delimiter
|
|
1225
|
+
* - {text}? -> Optional group delimiter
|
|
1226
|
+
*
|
|
1227
|
+
* If the value is `null`, the segment is removed.
|
|
1228
|
+
*
|
|
1229
|
+
* @param {string} pattern - The URL pattern containing named groups.
|
|
1230
|
+
* @param {Record<string, string | null | undefined>} values - Object of values for named groups.
|
|
1231
|
+
* @param {string} origin - Base URL to use for URL construction.
|
|
1232
|
+
* @returns {URL} - The constructed URL with named groups filled.
|
|
1233
|
+
*/
|
|
1234
|
+
function fillPattern(pattern, values, origin) {
|
|
1235
|
+
// Pre-process the pattern to handle explicit port numbers
|
|
1236
|
+
// This detects patterns like "http://localhost:5173" and protects the port number
|
|
1237
|
+
// from being interpreted as a parameter
|
|
1238
|
+
let processedPattern = pattern.replace(/(https?:\/\/[^:/]+):(\d+)(\/|$)/g, (_, protocol, port, slash) => {
|
|
1239
|
+
// Replace ":5173" with "#PORT-5173#" to protect it from parameter replacement
|
|
1240
|
+
return `${protocol}#PORT-${port}#${slash}`;
|
|
1241
|
+
});
|
|
1242
|
+
// First, handle group delimiters with curly braces
|
|
1243
|
+
let processedGroupDelimiters = processedPattern.replace(/\{([^{}]*)\}([?+*]?)/g, (_, content, modifier) => {
|
|
1244
|
+
// For optional group delimiters
|
|
1245
|
+
if (modifier === "?") {
|
|
1246
|
+
// For optional groups, we'll include the content
|
|
1247
|
+
return content;
|
|
1248
|
+
}
|
|
1249
|
+
// For non-optional group delimiters, always include the content
|
|
1250
|
+
return content;
|
|
1251
|
+
});
|
|
1252
|
+
// Then handle named groups
|
|
1253
|
+
let filled = processedGroupDelimiters.replace(/(\/?):([a-zA-Z0-9_]+)(\([^)]*\))?([?+*]?)/g, (_, slash, name, __, modifier) => {
|
|
1254
|
+
const value = values[name];
|
|
1255
|
+
if (value === null) {
|
|
1256
|
+
// If value is null, remove the entire segment including the preceding slash
|
|
1257
|
+
return "";
|
|
1258
|
+
}
|
|
1259
|
+
if (modifier === "?") {
|
|
1260
|
+
// Optional segment
|
|
1261
|
+
return value !== undefined ? `${slash}${value}` : "";
|
|
1262
|
+
}
|
|
1263
|
+
if (modifier === "+" || modifier === "*") {
|
|
1264
|
+
// Repeatable segments
|
|
1265
|
+
if (value === undefined && modifier === "+") {
|
|
1266
|
+
throw new Error(`Missing value for "${name}" (one or more required)`);
|
|
1267
|
+
}
|
|
1268
|
+
return value ? `${slash}${value}` : "";
|
|
1269
|
+
}
|
|
1270
|
+
// Simple named group (no modifier)
|
|
1271
|
+
if (value === undefined) {
|
|
1272
|
+
throw new Error(`Missing value for "${name}"`);
|
|
1273
|
+
}
|
|
1274
|
+
return `${slash}${value}`;
|
|
1275
|
+
});
|
|
1276
|
+
// Restore port numbers
|
|
1277
|
+
filled = filled.replace(/#PORT-(\d+)#/g, ":$1");
|
|
1278
|
+
return new URL(filled, origin);
|
|
1279
|
+
}
|
|
1280
|
+
/**
|
|
1281
|
+
* Aggregates named groups from various parts of the URLPattern match result.
|
|
1282
|
+
*
|
|
1283
|
+
*
|
|
1284
|
+
* @param {any} match - The URLPattern match result object.
|
|
1285
|
+
* @returns {Record<string, string | null | undefined>} An object containing all named groups from the match.
|
|
1286
|
+
*/
|
|
1287
|
+
export function aggregateGroups(match) {
|
|
1288
|
+
return {
|
|
1289
|
+
...match.hash.groups,
|
|
1290
|
+
...match.hostname.groups,
|
|
1291
|
+
...match.password.groups,
|
|
1292
|
+
...match.pathname.groups,
|
|
1293
|
+
...match.port.groups,
|
|
1294
|
+
...match.protocol.groups,
|
|
1295
|
+
...match.search.groups,
|
|
1296
|
+
...match.username.groups,
|
|
1297
|
+
};
|
|
1298
|
+
}
|
|
1299
|
+
/** @type {Map<string, URLPattern>} */
|
|
1300
|
+
const urlPatternCache = new Map();
|
|
1301
|
+
const URL_PATTERN_CACHE_LIMIT = 128;
|
|
1302
|
+
const ABSOLUTE_URL_PATTERN = /^(?:[A-Za-z][A-Za-z\d+.-]*|:[A-Za-z][A-Za-z\d_-]*):\/\//;
|
|
1303
|
+
/**
|
|
1304
|
+
* URLPattern's base URL affects relative patterns. Absolute patterns only
|
|
1305
|
+
* depend on the pattern itself, while root-relative patterns also depend on
|
|
1306
|
+
* the URL origin. Other relative patterns are deliberately not cached because
|
|
1307
|
+
* their semantics depend on the complete base URL.
|
|
1308
|
+
*
|
|
1309
|
+
* @param {string} pattern
|
|
1310
|
+
* @param {URL} url
|
|
1311
|
+
* @returns {URLPattern}
|
|
1312
|
+
*/
|
|
1313
|
+
function getUrlPattern(pattern, url) {
|
|
1314
|
+
const isAbsolutePattern = ABSOLUTE_URL_PATTERN.test(pattern);
|
|
1315
|
+
const isRootRelativePattern = pattern.startsWith("/");
|
|
1316
|
+
if (!isAbsolutePattern && !isRootRelativePattern) {
|
|
1317
|
+
return new URLPattern(pattern, url.href);
|
|
1318
|
+
}
|
|
1319
|
+
const key = isAbsolutePattern
|
|
1320
|
+
? pattern
|
|
1321
|
+
: JSON.stringify([url.origin, pattern]);
|
|
1322
|
+
const cached = urlPatternCache.get(key);
|
|
1323
|
+
if (cached !== undefined) {
|
|
1324
|
+
// Refresh the entry so frequently used patterns stay in the bounded cache.
|
|
1325
|
+
urlPatternCache.delete(key);
|
|
1326
|
+
urlPatternCache.set(key, cached);
|
|
1327
|
+
return cached;
|
|
1328
|
+
}
|
|
1329
|
+
const compiled = new URLPattern(pattern, url.href);
|
|
1330
|
+
if (urlPatternCache.size >= URL_PATTERN_CACHE_LIMIT) {
|
|
1331
|
+
const oldestKey = urlPatternCache.keys().next().value;
|
|
1332
|
+
if (oldestKey !== undefined)
|
|
1333
|
+
urlPatternCache.delete(oldestKey);
|
|
1334
|
+
}
|
|
1335
|
+
urlPatternCache.set(key, compiled);
|
|
1336
|
+
return compiled;
|
|
1337
|
+
}
|
|
1338
|
+
/**
|
|
1339
|
+
* A small, deliberately conservative subset of URLPattern routing.
|
|
1340
|
+
*
|
|
1341
|
+
* The compiler emits routes such as `/:path(.*)?`, `/de/:path*`, or
|
|
1342
|
+
* `https://example.com/:path*`. For those routes matching is equivalent to a
|
|
1343
|
+
* pathname prefix check and (optionally) an origin check. Everything that has
|
|
1344
|
+
* a dynamic host, a custom path regexp, or another URLPattern modifier keeps
|
|
1345
|
+
* using the generic implementation above.
|
|
1346
|
+
*
|
|
1347
|
+
* @typedef {{
|
|
1348
|
+
* protocol: string | undefined;
|
|
1349
|
+
* hostname: string | undefined;
|
|
1350
|
+
* port: string | undefined;
|
|
1351
|
+
* pathnamePrefix: string;
|
|
1352
|
+
* pathMode: "segments" | "catch-all-optional" | "catch-all-required";
|
|
1353
|
+
* }} FastPathPattern
|
|
1354
|
+
* @typedef {{
|
|
1355
|
+
* base: FastPathPattern;
|
|
1356
|
+
* localized: Array<{ locale: string; pattern: FastPathPattern }>;
|
|
1357
|
+
* }} FastPathRoute
|
|
1358
|
+
*/
|
|
1359
|
+
/** @type {WeakMap<object, FastPathRoute | null>} */
|
|
1360
|
+
const fastPathRouteCache = new WeakMap();
|
|
1361
|
+
/**
|
|
1362
|
+
* @param {URL} urlObj
|
|
1363
|
+
* @param {string} targetLocale
|
|
1364
|
+
* @param {{ pattern: string; localized: Array<[string, string]> }} element
|
|
1365
|
+
* @returns {URL | undefined}
|
|
1366
|
+
*/
|
|
1367
|
+
function localizeUrlFastPath(urlObj, targetLocale, element) {
|
|
1368
|
+
const route = getFastPathRoute(element);
|
|
1369
|
+
if (route === null)
|
|
1370
|
+
return undefined;
|
|
1371
|
+
// Preserve URLPattern's ordering: localized patterns are checked before
|
|
1372
|
+
// the unlocalized pattern, and the first matching pattern wins.
|
|
1373
|
+
for (const localized of route.localized) {
|
|
1374
|
+
const suffix = matchFastPathPattern(localized.pattern, urlObj);
|
|
1375
|
+
if (suffix === undefined)
|
|
1376
|
+
continue;
|
|
1377
|
+
const target = route.localized.find((candidate) => candidate.locale === targetLocale)?.pattern;
|
|
1378
|
+
if (target === undefined)
|
|
1379
|
+
continue;
|
|
1380
|
+
return applyFastPathPattern(target, suffix, urlObj);
|
|
1381
|
+
}
|
|
1382
|
+
const suffix = matchFastPathPattern(route.base, urlObj);
|
|
1383
|
+
if (suffix !== undefined) {
|
|
1384
|
+
const target = route.localized.find((candidate) => candidate.locale === targetLocale)?.pattern;
|
|
1385
|
+
if (target !== undefined) {
|
|
1386
|
+
return applyFastPathPattern(target, suffix, urlObj);
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
return undefined;
|
|
1390
|
+
}
|
|
1391
|
+
/**
|
|
1392
|
+
* @param {URL} urlObj
|
|
1393
|
+
* @param {{ pattern: string; localized: Array<[string, string]> }} element
|
|
1394
|
+
* @returns {URL | undefined}
|
|
1395
|
+
*/
|
|
1396
|
+
function deLocalizeUrlFastPath(urlObj, element) {
|
|
1397
|
+
const route = getFastPathRoute(element);
|
|
1398
|
+
if (route === null)
|
|
1399
|
+
return undefined;
|
|
1400
|
+
for (const localized of route.localized) {
|
|
1401
|
+
const suffix = matchFastPathPattern(localized.pattern, urlObj);
|
|
1402
|
+
if (suffix !== undefined) {
|
|
1403
|
+
return applyFastPathPattern(route.base, suffix, urlObj);
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
const suffix = matchFastPathPattern(route.base, urlObj);
|
|
1407
|
+
if (suffix !== undefined) {
|
|
1408
|
+
return applyFastPathPattern(route.base, suffix, urlObj);
|
|
1409
|
+
}
|
|
1410
|
+
return undefined;
|
|
1411
|
+
}
|
|
1412
|
+
/**
|
|
1413
|
+
* @param {{ pattern: string; localized: Array<[string, string]> }} element
|
|
1414
|
+
* @returns {FastPathRoute | null}
|
|
1415
|
+
*/
|
|
1416
|
+
function getFastPathRoute(element) {
|
|
1417
|
+
const cached = fastPathRouteCache.get(element);
|
|
1418
|
+
if (cached !== undefined)
|
|
1419
|
+
return cached;
|
|
1420
|
+
const base = parseFastPathPattern(element.pattern);
|
|
1421
|
+
if (base === undefined) {
|
|
1422
|
+
fastPathRouteCache.set(element, null);
|
|
1423
|
+
return null;
|
|
1424
|
+
}
|
|
1425
|
+
const localized = [];
|
|
1426
|
+
for (const [locale, pattern] of element.localized) {
|
|
1427
|
+
const parsed = parseFastPathPattern(pattern);
|
|
1428
|
+
if (parsed === undefined || parsed.pathMode !== base.pathMode) {
|
|
1429
|
+
fastPathRouteCache.set(element, null);
|
|
1430
|
+
return null;
|
|
1431
|
+
}
|
|
1432
|
+
localized.push({ locale, pattern: parsed });
|
|
1433
|
+
}
|
|
1434
|
+
const route = { base, localized };
|
|
1435
|
+
fastPathRouteCache.set(element, route);
|
|
1436
|
+
return route;
|
|
1437
|
+
}
|
|
1438
|
+
/**
|
|
1439
|
+
* Parse only catch-all path patterns. In particular, do not treat `:path(.)?`
|
|
1440
|
+
* as a catch-all: URLPattern's `(.)` means exactly one character and cannot be
|
|
1441
|
+
* represented by this prefix matcher without changing routing semantics.
|
|
1442
|
+
*
|
|
1443
|
+
* @param {string} pattern
|
|
1444
|
+
* @returns {FastPathPattern | undefined}
|
|
1445
|
+
*/
|
|
1446
|
+
function parseFastPathPattern(pattern) {
|
|
1447
|
+
const wildcard = pattern.match(/\/:path(?:\(\.\*\)(?:\?)?|\*)$/);
|
|
1448
|
+
if (wildcard === null || wildcard.index === undefined)
|
|
1449
|
+
return undefined;
|
|
1450
|
+
const prefix = pattern.slice(0, wildcard.index);
|
|
1451
|
+
const originAndPath = parseFastPathOriginAndPath(prefix);
|
|
1452
|
+
if (originAndPath === undefined)
|
|
1453
|
+
return undefined;
|
|
1454
|
+
const pathMode = wildcard[0].endsWith("*")
|
|
1455
|
+
? "segments"
|
|
1456
|
+
: wildcard[0].endsWith("?")
|
|
1457
|
+
? "catch-all-optional"
|
|
1458
|
+
: "catch-all-required";
|
|
1459
|
+
return { ...originAndPath, pathMode };
|
|
1460
|
+
}
|
|
1461
|
+
/**
|
|
1462
|
+
* @param {string} prefix
|
|
1463
|
+
* @returns {FastPathPattern | undefined}
|
|
1464
|
+
*/
|
|
1465
|
+
function parseFastPathOriginAndPath(prefix) {
|
|
1466
|
+
if (prefix === "" || prefix.startsWith("/")) {
|
|
1467
|
+
if (hasUrlPatternSyntax(prefix))
|
|
1468
|
+
return undefined;
|
|
1469
|
+
return {
|
|
1470
|
+
protocol: undefined,
|
|
1471
|
+
hostname: undefined,
|
|
1472
|
+
port: undefined,
|
|
1473
|
+
pathnamePrefix: normalizePathPrefix(prefix),
|
|
1474
|
+
pathMode: "catch-all-optional",
|
|
1475
|
+
};
|
|
1476
|
+
}
|
|
1477
|
+
// A `:protocol://host` pattern is common in generated configurations. The
|
|
1478
|
+
// protocol is intentionally left unconstrained, just like URLPattern.
|
|
1479
|
+
const dynamicProtocol = prefix.match(/^:protocol:\/\/([^/]+)(\/.*)?$/);
|
|
1480
|
+
const staticOrigin = prefix.match(/^([A-Za-z][A-Za-z\d+.-]*):\/\/([^/]+)(\/.*)?$/);
|
|
1481
|
+
if (dynamicProtocol !== null) {
|
|
1482
|
+
const dynamicHost = dynamicProtocol[1] ?? "";
|
|
1483
|
+
const hostMatch = dynamicHost.match(/^([^:(){}?*+]+)(?::(\d+))?$/);
|
|
1484
|
+
if (hostMatch === null ||
|
|
1485
|
+
(dynamicProtocol[2] !== undefined &&
|
|
1486
|
+
hasUrlPatternSyntax(dynamicProtocol[2]))) {
|
|
1487
|
+
return undefined;
|
|
1488
|
+
}
|
|
1489
|
+
return {
|
|
1490
|
+
protocol: undefined,
|
|
1491
|
+
hostname: (hostMatch[1] ?? "").toLowerCase(),
|
|
1492
|
+
port: hostMatch[2],
|
|
1493
|
+
pathnamePrefix: normalizePathPrefix(dynamicProtocol[2] ?? ""),
|
|
1494
|
+
pathMode: "catch-all-optional",
|
|
1495
|
+
};
|
|
1496
|
+
}
|
|
1497
|
+
if (staticOrigin === null)
|
|
1498
|
+
return undefined;
|
|
1499
|
+
const host = staticOrigin[2] ?? "";
|
|
1500
|
+
const pathname = staticOrigin[3];
|
|
1501
|
+
const hostMatch = host.match(/^([^:(){}?*+]+)(?::(\d+))?$/);
|
|
1502
|
+
if (hostMatch === null ||
|
|
1503
|
+
(pathname !== undefined && hasUrlPatternSyntax(pathname))) {
|
|
1504
|
+
return undefined;
|
|
1505
|
+
}
|
|
1506
|
+
return {
|
|
1507
|
+
protocol: `${staticOrigin[1]}:`,
|
|
1508
|
+
hostname: (hostMatch[1] ?? "").toLowerCase(),
|
|
1509
|
+
port: normalizePatternPort(hostMatch[2], `${staticOrigin[1]}:`),
|
|
1510
|
+
pathnamePrefix: normalizePathPrefix(pathname ?? ""),
|
|
1511
|
+
pathMode: "catch-all-optional",
|
|
1512
|
+
};
|
|
1513
|
+
}
|
|
1514
|
+
/**
|
|
1515
|
+
* @param {string | undefined} port
|
|
1516
|
+
* @param {string} protocol
|
|
1517
|
+
* @returns {string | undefined}
|
|
1518
|
+
*/
|
|
1519
|
+
function normalizePatternPort(port, protocol) {
|
|
1520
|
+
if (port === "80" && protocol === "http:")
|
|
1521
|
+
return "";
|
|
1522
|
+
if (port === "443" && protocol === "https:")
|
|
1523
|
+
return "";
|
|
1524
|
+
return port;
|
|
1525
|
+
}
|
|
1526
|
+
/**
|
|
1527
|
+
* @param {string} value
|
|
1528
|
+
* @returns {boolean}
|
|
1529
|
+
*/
|
|
1530
|
+
function hasUrlPatternSyntax(value) {
|
|
1531
|
+
return /[:(){}?*+]/.test(value);
|
|
1532
|
+
}
|
|
1533
|
+
/**
|
|
1534
|
+
* @param {string} pathname
|
|
1535
|
+
* @returns {string}
|
|
1536
|
+
*/
|
|
1537
|
+
function normalizePathPrefix(pathname) {
|
|
1538
|
+
if (pathname === "" || pathname === "/")
|
|
1539
|
+
return "/";
|
|
1540
|
+
return pathname.endsWith("/") ? pathname.slice(0, -1) : pathname;
|
|
1541
|
+
}
|
|
1542
|
+
/**
|
|
1543
|
+
* @param {FastPathPattern} pattern
|
|
1544
|
+
* @param {URL} urlObj
|
|
1545
|
+
* @returns {string | undefined}
|
|
1546
|
+
*/
|
|
1547
|
+
function matchFastPathPattern(pattern, urlObj) {
|
|
1548
|
+
if (pattern.protocol !== undefined && pattern.protocol !== urlObj.protocol) {
|
|
1549
|
+
return undefined;
|
|
1550
|
+
}
|
|
1551
|
+
if (pattern.hostname !== undefined &&
|
|
1552
|
+
pattern.hostname !== urlObj.hostname.toLowerCase()) {
|
|
1553
|
+
return undefined;
|
|
1554
|
+
}
|
|
1555
|
+
if (pattern.hostname !== undefined) {
|
|
1556
|
+
const expectedPort = pattern.port ?? defaultPortForProtocol(pattern.protocol ?? urlObj.protocol);
|
|
1557
|
+
if (expectedPort !== urlObj.port)
|
|
1558
|
+
return undefined;
|
|
1559
|
+
}
|
|
1560
|
+
const prefix = pattern.pathnamePrefix;
|
|
1561
|
+
if (prefix === "/") {
|
|
1562
|
+
if (urlObj.pathname.startsWith("//"))
|
|
1563
|
+
return undefined;
|
|
1564
|
+
if (pattern.pathMode === "segments") {
|
|
1565
|
+
return isNonEmptyPathSegments(urlObj.pathname)
|
|
1566
|
+
? urlObj.pathname
|
|
1567
|
+
: undefined;
|
|
1568
|
+
}
|
|
1569
|
+
return urlObj.pathname;
|
|
1570
|
+
}
|
|
1571
|
+
if (urlObj.pathname === prefix) {
|
|
1572
|
+
return pattern.pathMode === "catch-all-required" ? undefined : "";
|
|
1573
|
+
}
|
|
1574
|
+
if (urlObj.pathname.startsWith(`${prefix}/`)) {
|
|
1575
|
+
const suffix = urlObj.pathname.slice(prefix.length);
|
|
1576
|
+
if (suffix.startsWith("//"))
|
|
1577
|
+
return undefined;
|
|
1578
|
+
if (pattern.pathMode === "segments" &&
|
|
1579
|
+
!isNonEmptyPathSegments(suffix)) {
|
|
1580
|
+
return undefined;
|
|
1581
|
+
}
|
|
1582
|
+
return suffix;
|
|
1583
|
+
}
|
|
1584
|
+
return undefined;
|
|
1585
|
+
}
|
|
1586
|
+
/**
|
|
1587
|
+
* @param {string} pathname
|
|
1588
|
+
* @returns {boolean}
|
|
1589
|
+
*/
|
|
1590
|
+
function isNonEmptyPathSegments(pathname) {
|
|
1591
|
+
return pathname.length > 1 && !pathname.endsWith("/") && !pathname.includes("//");
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* URLPattern treats the default port as empty in URL instances.
|
|
1595
|
+
*
|
|
1596
|
+
* @param {string} protocol
|
|
1597
|
+
* @returns {string}
|
|
1598
|
+
*/
|
|
1599
|
+
function defaultPortForProtocol(protocol) {
|
|
1600
|
+
if (protocol === "http:")
|
|
1601
|
+
return "";
|
|
1602
|
+
if (protocol === "https:")
|
|
1603
|
+
return "";
|
|
1604
|
+
return "";
|
|
1605
|
+
}
|
|
1606
|
+
/**
|
|
1607
|
+
* @param {FastPathPattern} pattern
|
|
1608
|
+
* @param {string} suffix
|
|
1609
|
+
* @param {URL} source
|
|
1610
|
+
* @returns {URL}
|
|
1611
|
+
*/
|
|
1612
|
+
function applyFastPathPattern(pattern, suffix, source) {
|
|
1613
|
+
const localized = new URL(source.href);
|
|
1614
|
+
if (pattern.protocol !== undefined)
|
|
1615
|
+
localized.protocol = pattern.protocol;
|
|
1616
|
+
if (pattern.hostname !== undefined) {
|
|
1617
|
+
localized.hostname = pattern.hostname;
|
|
1618
|
+
localized.port =
|
|
1619
|
+
pattern.port ?? defaultPortForProtocol(localized.protocol);
|
|
1620
|
+
}
|
|
1621
|
+
localized.pathname = joinFastPathPrefix(pattern.pathnamePrefix, suffix);
|
|
1622
|
+
return localized;
|
|
1623
|
+
}
|
|
1624
|
+
/**
|
|
1625
|
+
* @param {string} prefix
|
|
1626
|
+
* @param {string} suffix
|
|
1627
|
+
* @returns {string}
|
|
1628
|
+
*/
|
|
1629
|
+
function joinFastPathPrefix(prefix, suffix) {
|
|
1630
|
+
if (prefix === "/")
|
|
1631
|
+
return suffix === "" ? "/" : suffix;
|
|
1632
|
+
if (suffix === "")
|
|
1633
|
+
return prefix;
|
|
1634
|
+
return `${prefix}${suffix.startsWith("/") ? suffix : `/${suffix}`}`;
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
/** @type {string | undefined} */
|
|
1638
|
+
let cachedRouteStrategyUrl;
|
|
1639
|
+
/** @type {{ match: string; strategy?: typeof strategy; exclude?: boolean } | undefined} */
|
|
1640
|
+
let cachedRouteStrategy;
|
|
1641
|
+
/**
|
|
1642
|
+
* Match route policy against both the public URL and its canonical URL.
|
|
1643
|
+
*
|
|
1644
|
+
* The function is deliberately separate from variables.js: configuration is
|
|
1645
|
+
* inert data, while canonicalization and route selection form a routing layer.
|
|
1646
|
+
*
|
|
1647
|
+
* @param {string | URL} url
|
|
1648
|
+
* @returns {{ match: string; strategy?: typeof strategy; exclude?: boolean } | undefined}
|
|
1649
|
+
*/
|
|
1650
|
+
export function findMatchingRouteStrategy(url) {
|
|
1651
|
+
if (routeStrategies.length === 0) {
|
|
1652
|
+
return undefined;
|
|
1653
|
+
}
|
|
1654
|
+
const urlString = typeof url === "string" ? url : url.href;
|
|
1655
|
+
if (cachedRouteStrategyUrl === urlString) {
|
|
1656
|
+
return cachedRouteStrategy;
|
|
1657
|
+
}
|
|
1658
|
+
const publicUrl = normalizeTrailingSlash(new URL(urlString, "http://example.com"));
|
|
1659
|
+
const canonicalUrl = deLocalizeUrl(publicUrl);
|
|
1660
|
+
const candidateUrls = canonicalUrl.href === publicUrl.href
|
|
1661
|
+
? [publicUrl]
|
|
1662
|
+
: [publicUrl, canonicalUrl];
|
|
1663
|
+
let match;
|
|
1664
|
+
for (const candidateUrl of candidateUrls) {
|
|
1665
|
+
for (const routeStrategy of routeStrategies) {
|
|
1666
|
+
const pattern = new URLPattern(routeStrategy.match, candidateUrl.href);
|
|
1667
|
+
if (execUrlPattern(pattern, candidateUrl)) {
|
|
1668
|
+
match = routeStrategy;
|
|
1669
|
+
break;
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
if (match)
|
|
1673
|
+
break;
|
|
1674
|
+
}
|
|
1675
|
+
cachedRouteStrategyUrl = urlString;
|
|
1676
|
+
cachedRouteStrategy = match;
|
|
1677
|
+
return match;
|
|
1678
|
+
}
|
|
1679
|
+
/**
|
|
1680
|
+
* Returns the strategy to use for a specific URL.
|
|
1681
|
+
*
|
|
1682
|
+
* If no route strategy matches (or the matching rule is `exclude: true`),
|
|
1683
|
+
* the global strategy is returned.
|
|
1684
|
+
*
|
|
1685
|
+
* @param {string | URL} url
|
|
1686
|
+
* @returns {typeof strategy}
|
|
1687
|
+
*/
|
|
1688
|
+
export function getStrategyForUrl(url) {
|
|
1689
|
+
const routeStrategy = findMatchingRouteStrategy(url);
|
|
1690
|
+
if (routeStrategy &&
|
|
1691
|
+
routeStrategy.exclude !== true &&
|
|
1692
|
+
Array.isArray(routeStrategy.strategy)) {
|
|
1693
|
+
return routeStrategy.strategy;
|
|
1694
|
+
}
|
|
1695
|
+
return strategy;
|
|
1696
|
+
}
|
|
1697
|
+
/**
|
|
1698
|
+
* Returns whether the given URL is excluded from middleware i18n processing.
|
|
1699
|
+
*
|
|
1700
|
+
* @param {string | URL} url
|
|
1701
|
+
* @returns {boolean}
|
|
1702
|
+
*/
|
|
1703
|
+
export function isExcludedByRouteStrategy(url) {
|
|
1704
|
+
return findMatchingRouteStrategy(url)?.exclude === true;
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
/**
|
|
1708
|
+
* @typedef {object} ShouldRedirectServerInput
|
|
1709
|
+
* @property {Request} request
|
|
1710
|
+
* @property {string | URL} [effectiveRequestUrl] - Effective request URL to use for route matching, locale detection with the URL strategy, and redirect targets.
|
|
1711
|
+
* @property {Locale} [locale]
|
|
1712
|
+
*
|
|
1713
|
+
* @typedef {object} ShouldRedirectClientInput
|
|
1714
|
+
* @property {undefined} [request]
|
|
1715
|
+
* @property {string | URL} [url]
|
|
1716
|
+
* @property {Locale} [locale]
|
|
1717
|
+
*
|
|
1718
|
+
* @typedef {ShouldRedirectServerInput | ShouldRedirectClientInput} ShouldRedirectInput
|
|
1719
|
+
*
|
|
1720
|
+
* @typedef {object} ShouldRedirectResult
|
|
1721
|
+
* @property {boolean} shouldRedirect - Indicates whether the consumer should perform a redirect.
|
|
1722
|
+
* @property {Locale} locale - Locale resolved using the configured strategies.
|
|
1723
|
+
* @property {URL | undefined} redirectUrl - Destination URL when a redirect is required.
|
|
1724
|
+
*/
|
|
1725
|
+
/**
|
|
1726
|
+
* Determines whether a redirect is required to align the current URL with the active locale.
|
|
1727
|
+
*
|
|
1728
|
+
* This helper mirrors the logic that powers `paraglideMiddleware`, but works in both server
|
|
1729
|
+
* and client environments. It evaluates the configured strategies in order, computes the
|
|
1730
|
+
* canonical localized URL, and reports when the current URL does not match.
|
|
1731
|
+
*
|
|
1732
|
+
* When called in the browser without arguments, the current `window.location.href` is used.
|
|
1733
|
+
*
|
|
1734
|
+
* @see https://paraglidejs.com/i18n-routing#redirects
|
|
1735
|
+
*
|
|
1736
|
+
* @example
|
|
1737
|
+
* // Client side usage (e.g. TanStack Router beforeLoad hook)
|
|
1738
|
+
* async function beforeLoad({ location }) {
|
|
1739
|
+
* const decision = await shouldRedirect({ url: location.href });
|
|
1740
|
+
*
|
|
1741
|
+
* if (decision.shouldRedirect) {
|
|
1742
|
+
* throw redirect({ to: decision.redirectUrl.href });
|
|
1743
|
+
* }
|
|
1744
|
+
* }
|
|
1745
|
+
*
|
|
1746
|
+
* @example
|
|
1747
|
+
* // Server side usage with a Request
|
|
1748
|
+
* export async function handle(request) {
|
|
1749
|
+
* const decision = await shouldRedirect({ request });
|
|
1750
|
+
*
|
|
1751
|
+
* if (decision.shouldRedirect) {
|
|
1752
|
+
* return Response.redirect(decision.redirectUrl, 307);
|
|
1753
|
+
* }
|
|
1754
|
+
*
|
|
1755
|
+
* return render(request, decision.locale);
|
|
1756
|
+
* }
|
|
1757
|
+
*
|
|
1758
|
+
* @example
|
|
1759
|
+
* // Server side usage behind a proxy where request.url is not public-facing
|
|
1760
|
+
* export async function handle(request) {
|
|
1761
|
+
* const effectiveRequestUrl = new URL(request.url);
|
|
1762
|
+
* effectiveRequestUrl.protocol = "https:";
|
|
1763
|
+
* effectiveRequestUrl.host = "example.com";
|
|
1764
|
+
*
|
|
1765
|
+
* const decision = await shouldRedirect({
|
|
1766
|
+
* request,
|
|
1767
|
+
* effectiveRequestUrl,
|
|
1768
|
+
* });
|
|
1769
|
+
*
|
|
1770
|
+
* if (decision.shouldRedirect) {
|
|
1771
|
+
* return Response.redirect(decision.redirectUrl, 307);
|
|
1772
|
+
* }
|
|
1773
|
+
* }
|
|
1774
|
+
*
|
|
1775
|
+
* @param {ShouldRedirectInput} [input]
|
|
1776
|
+
* @returns {Promise<ShouldRedirectResult>}
|
|
1777
|
+
*/
|
|
1778
|
+
export async function shouldRedirect(input = {}) {
|
|
1779
|
+
const currentUrl = resolveUrl(input);
|
|
1780
|
+
const locale = await resolveLocale(input, currentUrl);
|
|
1781
|
+
const strategy = getStrategyForUrl(currentUrl.href);
|
|
1782
|
+
if (isExcludedByRouteStrategy(currentUrl.href) || !strategy.includes("url")) {
|
|
1783
|
+
return { shouldRedirect: false, locale, redirectUrl: undefined };
|
|
1784
|
+
}
|
|
1785
|
+
const localizedUrl = localizeUrl(currentUrl.href, { locale });
|
|
1786
|
+
const shouldRedirectToLocalizedUrl = normalizeUrl(localizedUrl.href) !== normalizeUrl(currentUrl.href);
|
|
1787
|
+
return {
|
|
1788
|
+
shouldRedirect: shouldRedirectToLocalizedUrl,
|
|
1789
|
+
locale,
|
|
1790
|
+
redirectUrl: shouldRedirectToLocalizedUrl ? localizedUrl : undefined,
|
|
1791
|
+
};
|
|
1792
|
+
}
|
|
1793
|
+
/**
|
|
1794
|
+
* Resolves the locale either from the provided input or by using the configured strategies.
|
|
1795
|
+
*
|
|
1796
|
+
* @param {ShouldRedirectInput} input
|
|
1797
|
+
* @param {URL} currentUrl
|
|
1798
|
+
* @returns {Promise<Locale>}
|
|
1799
|
+
*/
|
|
1800
|
+
async function resolveLocale(input, currentUrl) {
|
|
1801
|
+
const locale = toLocale(input.locale);
|
|
1802
|
+
if (locale) {
|
|
1803
|
+
return locale;
|
|
1804
|
+
}
|
|
1805
|
+
if (input.request) {
|
|
1806
|
+
return extractLocaleFromRequestAsync(input.request, {
|
|
1807
|
+
effectiveRequestUrl: currentUrl,
|
|
1808
|
+
});
|
|
1809
|
+
}
|
|
1810
|
+
if ("url" in input && typeof input.url !== "undefined") {
|
|
1811
|
+
return getLocaleForUrl(currentUrl.href);
|
|
1812
|
+
}
|
|
1813
|
+
return getLocale();
|
|
1814
|
+
}
|
|
1815
|
+
/**
|
|
1816
|
+
* Resolves the current URL from the provided input or runtime context.
|
|
1817
|
+
*
|
|
1818
|
+
* @param {ShouldRedirectInput} input
|
|
1819
|
+
* @returns {URL}
|
|
1820
|
+
*/
|
|
1821
|
+
function resolveUrl(input) {
|
|
1822
|
+
if ("effectiveRequestUrl" in input &&
|
|
1823
|
+
input.effectiveRequestUrl instanceof URL) {
|
|
1824
|
+
return new URL(input.effectiveRequestUrl.href);
|
|
1825
|
+
}
|
|
1826
|
+
if ("effectiveRequestUrl" in input &&
|
|
1827
|
+
typeof input.effectiveRequestUrl === "string") {
|
|
1828
|
+
return new URL(input.effectiveRequestUrl, input.request ? input.request.url : getUrlOrigin());
|
|
1829
|
+
}
|
|
1830
|
+
if (input.request) {
|
|
1831
|
+
return new URL(input.request.url);
|
|
1832
|
+
}
|
|
1833
|
+
if ("url" in input && input.url instanceof URL) {
|
|
1834
|
+
return new URL(input.url.href);
|
|
1835
|
+
}
|
|
1836
|
+
if ("url" in input && typeof input.url === "string") {
|
|
1837
|
+
return new URL(input.url, getUrlOrigin());
|
|
1838
|
+
}
|
|
1839
|
+
if (typeof window !== "undefined" && window?.location?.href) {
|
|
1840
|
+
return new URL(window.location.href);
|
|
1841
|
+
}
|
|
1842
|
+
throw new Error("shouldRedirect() requires either a request, an absolute URL, or must run in a browser environment.");
|
|
1843
|
+
}
|
|
1844
|
+
/**
|
|
1845
|
+
* Normalize url for comparison by stripping the trailing slash.
|
|
1846
|
+
*
|
|
1847
|
+
* @param {string} url
|
|
1848
|
+
* @returns {string}
|
|
1849
|
+
*/
|
|
1850
|
+
function normalizeUrl(url) {
|
|
1851
|
+
const urlObj = new URL(url);
|
|
1852
|
+
if (trailingSlash === undefined) {
|
|
1853
|
+
urlObj.pathname = urlObj.pathname.replace(/\/$/, "");
|
|
1854
|
+
}
|
|
1855
|
+
return urlObj.href;
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
/**
|
|
1859
|
+
* High-level URL localization function optimized for client-side UI usage.
|
|
1860
|
+
*
|
|
1861
|
+
* This is a convenience wrapper around `localizeUrl()` that provides features
|
|
1862
|
+
* needed in UI:
|
|
1863
|
+
*
|
|
1864
|
+
* - Accepts relative paths (e.g., "/about")
|
|
1865
|
+
* - Returns relative paths when possible
|
|
1866
|
+
* - Automatically detects current locale if not specified
|
|
1867
|
+
* - Handles string input/output instead of URL objects
|
|
1868
|
+
*
|
|
1869
|
+
* @see https://paraglidejs.com/i18n-routing
|
|
1870
|
+
*
|
|
1871
|
+
* @example
|
|
1872
|
+
* ```typescript
|
|
1873
|
+
* // In a React/Vue/Svelte component
|
|
1874
|
+
* const NavLink = ({ href }) => {
|
|
1875
|
+
* // Automatically uses current locale, keeps path relative
|
|
1876
|
+
* return <a href={localizeHref(href)}>...</a>;
|
|
1877
|
+
* };
|
|
1878
|
+
*
|
|
1879
|
+
* // Examples:
|
|
1880
|
+
* localizeHref("/about")
|
|
1881
|
+
* // => "/de/about" (if current locale is "de")
|
|
1882
|
+
* localizeHref("/store", { locale: "fr" })
|
|
1883
|
+
* // => "/fr/store" (explicit locale)
|
|
1884
|
+
*
|
|
1885
|
+
* // Cross-origin links remain absolute
|
|
1886
|
+
* localizeHref("https://other-site.com/about")
|
|
1887
|
+
* // => "https://other-site.com/de/about"
|
|
1888
|
+
* ```
|
|
1889
|
+
*
|
|
1890
|
+
* For server-side URL localization (e.g., in middleware), use `localizeUrl()`
|
|
1891
|
+
* which provides more precise control over URL handling.
|
|
1892
|
+
*
|
|
1893
|
+
* @param {string} href - The href to localize (can be relative or absolute)
|
|
1894
|
+
* @param {object} [options] - Options for localization
|
|
1895
|
+
* @param {Locale} [options.locale] - Target locale. If not provided, uses `getLocale()`
|
|
1896
|
+
* @returns {string} The localized href, relative if input was relative
|
|
1897
|
+
*/
|
|
1898
|
+
export function localizeHref(href, options) {
|
|
1899
|
+
const currentLocale = getLocale();
|
|
1900
|
+
const locale = options?.locale ?? currentLocale;
|
|
1901
|
+
const url = new URL(href, getUrlOrigin());
|
|
1902
|
+
const localized = localizeUrl(url, { locale });
|
|
1903
|
+
// if the origin is identical and the href is relative,
|
|
1904
|
+
// return the relative path
|
|
1905
|
+
if (href.startsWith("/") && url.origin === localized.origin) {
|
|
1906
|
+
// check for cross origin localization in which case an absolute URL must be returned.
|
|
1907
|
+
if (locale !== currentLocale) {
|
|
1908
|
+
const localizedCurrentLocale = localizeUrl(url, {
|
|
1909
|
+
locale: currentLocale,
|
|
1910
|
+
});
|
|
1911
|
+
if (localizedCurrentLocale.origin !== localized.origin) {
|
|
1912
|
+
return localized.href;
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
return localized.pathname + localized.search + localized.hash;
|
|
1916
|
+
}
|
|
1917
|
+
return localized.href;
|
|
1918
|
+
}
|
|
1919
|
+
/**
|
|
1920
|
+
* High-level URL de-localization function optimized for client-side UI usage.
|
|
1921
|
+
*
|
|
1922
|
+
* This is a convenience wrapper around `deLocalizeUrl()` that provides features
|
|
1923
|
+
* needed in the UI:
|
|
1924
|
+
*
|
|
1925
|
+
* - Accepts relative paths (e.g., "/de/about")
|
|
1926
|
+
* - Returns relative paths when possible
|
|
1927
|
+
* - Handles string input/output instead of URL objects
|
|
1928
|
+
*
|
|
1929
|
+
* @see https://paraglidejs.com/i18n-routing
|
|
1930
|
+
*
|
|
1931
|
+
* @example
|
|
1932
|
+
* ```typescript
|
|
1933
|
+
* // In a React/Vue/Svelte component
|
|
1934
|
+
* const LocaleSwitcher = ({ href }) => {
|
|
1935
|
+
* // Remove locale prefix before switching
|
|
1936
|
+
* const baseHref = deLocalizeHref(href);
|
|
1937
|
+
* return locales.map(locale =>
|
|
1938
|
+
* <a href={localizeHref(baseHref, { locale })}>
|
|
1939
|
+
* Switch to {locale}
|
|
1940
|
+
* </a>
|
|
1941
|
+
* );
|
|
1942
|
+
* };
|
|
1943
|
+
*
|
|
1944
|
+
* // Examples:
|
|
1945
|
+
* deLocalizeHref("/de/about") // => "/about"
|
|
1946
|
+
* deLocalizeHref("/fr/store") // => "/store"
|
|
1947
|
+
*
|
|
1948
|
+
* // Cross-origin links remain absolute
|
|
1949
|
+
* deLocalizeHref("https://example.com/de/about")
|
|
1950
|
+
* // => "https://example.com/about"
|
|
1951
|
+
* ```
|
|
1952
|
+
*
|
|
1953
|
+
* For server-side URL de-localization (e.g., in middleware), use `deLocalizeUrl()`
|
|
1954
|
+
* which provides more precise control over URL handling.
|
|
1955
|
+
*
|
|
1956
|
+
* @param {string} href - The href to de-localize (can be relative or absolute)
|
|
1957
|
+
* @returns {string} The de-localized href, relative if input was relative
|
|
1958
|
+
*/
|
|
1959
|
+
export function deLocalizeHref(href) {
|
|
1960
|
+
const url = new URL(href, getUrlOrigin());
|
|
1961
|
+
const deLocalized = deLocalizeUrl(url);
|
|
1962
|
+
// If the origin is identical and the href is relative,
|
|
1963
|
+
// return the relative path instead of the full URL.
|
|
1964
|
+
if (href.startsWith("/") && url.origin === deLocalized.origin) {
|
|
1965
|
+
return deLocalized.pathname + deLocalized.search + deLocalized.hash;
|
|
1966
|
+
}
|
|
1967
|
+
return deLocalized.href;
|
|
1968
|
+
}
|
|
1969
|
+
|
|
1970
|
+
/**
|
|
1971
|
+
* @param {string} safeModuleId
|
|
1972
|
+
* @param {Locale} locale
|
|
1973
|
+
*/
|
|
1974
|
+
export function trackMessageCall(safeModuleId, locale) {
|
|
1975
|
+
if (isServer === false)
|
|
1976
|
+
return;
|
|
1977
|
+
const store = serverAsyncLocalStorage?.getStore();
|
|
1978
|
+
if (store) {
|
|
1979
|
+
store.messageCalls?.add(`${safeModuleId}:${locale}`);
|
|
1980
|
+
}
|
|
1981
|
+
}
|
|
1982
|
+
|
|
1983
|
+
/**
|
|
1984
|
+
* Generates localized URL variants for all provided URLs based on your configured locales and URL patterns.
|
|
1985
|
+
*
|
|
1986
|
+
* This function is essential for Static Site Generation (SSG) where you need to tell your framework
|
|
1987
|
+
* which pages to pre-render at build time. It's also useful for generating sitemaps and
|
|
1988
|
+
* `<link rel="alternate" hreflang>` tags for SEO.
|
|
1989
|
+
*
|
|
1990
|
+
* The function respects your `urlPatterns` configuration - if you have translated pathnames
|
|
1991
|
+
* (e.g., `/about` → `/ueber-uns` for German), it will generate the correct localized paths.
|
|
1992
|
+
*
|
|
1993
|
+
* @see https://paraglidejs.com/static-site-generation
|
|
1994
|
+
*
|
|
1995
|
+
* @example
|
|
1996
|
+
* // Basic usage - generate all locale variants for a list of paths
|
|
1997
|
+
* const localizedUrls = generateStaticLocalizedUrls([
|
|
1998
|
+
* "/",
|
|
1999
|
+
* "/about",
|
|
2000
|
+
* "/blog/post-1",
|
|
2001
|
+
* ]);
|
|
2002
|
+
* // Returns URL objects for each locale:
|
|
2003
|
+
* // ["/en/", "/de/", "/en/about", "/de/about", "/en/blog/post-1", "/de/blog/post-1"]
|
|
2004
|
+
*
|
|
2005
|
+
* @example
|
|
2006
|
+
* // Use with framework SSG APIs
|
|
2007
|
+
* // SvelteKit
|
|
2008
|
+
* export function entries() {
|
|
2009
|
+
* const paths = ["/", "/about", "/contact"];
|
|
2010
|
+
* return generateStaticLocalizedUrls(paths).map(url => ({
|
|
2011
|
+
* locale: extractLocaleFromUrl(url)
|
|
2012
|
+
* }));
|
|
2013
|
+
* }
|
|
2014
|
+
*
|
|
2015
|
+
* @example
|
|
2016
|
+
* // Sitemap generation
|
|
2017
|
+
* const allPages = ["/", "/about", "/blog"];
|
|
2018
|
+
* const sitemapUrls = generateStaticLocalizedUrls(allPages);
|
|
2019
|
+
*
|
|
2020
|
+
* @param {(string | URL)[]} urls - List of canonical URLs or paths to generate localized versions for.
|
|
2021
|
+
* Can be absolute URLs (`https://example.com/about`) or paths (`/about`).
|
|
2022
|
+
* Paths are resolved against `http://localhost` internally.
|
|
2023
|
+
* @returns {URL[]} Array of URL objects representing all localized variants.
|
|
2024
|
+
* The order follows each input URL with all its locale variants before moving to the next URL.
|
|
2025
|
+
*/
|
|
2026
|
+
export function generateStaticLocalizedUrls(urls) {
|
|
2027
|
+
/** @type {Set<URL>} */
|
|
2028
|
+
const localizedUrls = new Set();
|
|
2029
|
+
// For default URL pattern, we can optimize the generation
|
|
2030
|
+
if (TREE_SHAKE_DEFAULT_URL_PATTERN_USED) {
|
|
2031
|
+
for (const urlInput of urls) {
|
|
2032
|
+
const originalUrl = urlInput instanceof URL
|
|
2033
|
+
? urlInput
|
|
2034
|
+
: new URL(urlInput, "http://localhost");
|
|
2035
|
+
const url = trailingSlash === undefined
|
|
2036
|
+
? originalUrl
|
|
2037
|
+
: normalizeTrailingSlash(new URL(originalUrl));
|
|
2038
|
+
// Base locale doesn't get a prefix
|
|
2039
|
+
localizedUrls.add(url);
|
|
2040
|
+
// Other locales get their code as prefix
|
|
2041
|
+
for (const locale of locales) {
|
|
2042
|
+
if (locale !== baseLocale) {
|
|
2043
|
+
const localizedPath = `/${locale}${url.pathname}${url.search}${url.hash}`;
|
|
2044
|
+
const localizedUrl = new URL(localizedPath, url.origin);
|
|
2045
|
+
localizedUrls.add(normalizeTrailingSlash(localizedUrl));
|
|
2046
|
+
}
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
return Array.from(localizedUrls);
|
|
2050
|
+
}
|
|
2051
|
+
// For custom URL patterns, we need to use localizeUrl for each URL and locale
|
|
2052
|
+
for (const urlInput of urls) {
|
|
2053
|
+
const originalUrl = urlInput instanceof URL
|
|
2054
|
+
? urlInput
|
|
2055
|
+
: new URL(urlInput, "http://localhost");
|
|
2056
|
+
const url = normalizeTrailingSlash(new URL(originalUrl));
|
|
2057
|
+
// Try each URL pattern to find one that matches
|
|
2058
|
+
let patternFound = false;
|
|
2059
|
+
for (const pattern of urlPatterns) {
|
|
2060
|
+
try {
|
|
2061
|
+
// Try to match the unlocalized pattern
|
|
2062
|
+
const unlocalizedMatch = execUrlPattern(new URLPattern(pattern.pattern, url.href), url);
|
|
2063
|
+
if (!unlocalizedMatch)
|
|
2064
|
+
continue;
|
|
2065
|
+
patternFound = true;
|
|
2066
|
+
// Track unique localized URLs to avoid duplicates when patterns are the same
|
|
2067
|
+
const seenUrls = new Set();
|
|
2068
|
+
// Generate localized URL for each locale
|
|
2069
|
+
for (const [locale] of pattern.localized) {
|
|
2070
|
+
try {
|
|
2071
|
+
const localizedUrl = localizeUrl(url, { locale });
|
|
2072
|
+
const urlString = localizedUrl.href;
|
|
2073
|
+
// Only add if we haven't seen this exact URL before
|
|
2074
|
+
if (!seenUrls.has(urlString)) {
|
|
2075
|
+
seenUrls.add(urlString);
|
|
2076
|
+
localizedUrls.add(localizedUrl);
|
|
2077
|
+
}
|
|
2078
|
+
}
|
|
2079
|
+
catch {
|
|
2080
|
+
// Skip if localization fails for this locale
|
|
2081
|
+
continue;
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
break;
|
|
2085
|
+
}
|
|
2086
|
+
catch {
|
|
2087
|
+
// Skip if pattern matching fails
|
|
2088
|
+
continue;
|
|
2089
|
+
}
|
|
2090
|
+
}
|
|
2091
|
+
// If no pattern matched, use the URL as is
|
|
2092
|
+
if (!patternFound) {
|
|
2093
|
+
localizedUrls.add(originalUrl);
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
return Array.from(localizedUrls);
|
|
2097
|
+
}
|
|
2098
|
+
|
|
2099
|
+
/**
|
|
2100
|
+
* @typedef {"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage"} BuiltInStrategy
|
|
2101
|
+
*/
|
|
2102
|
+
/**
|
|
2103
|
+
* @typedef {`custom_${string}`} CustomStrategy
|
|
2104
|
+
*/
|
|
2105
|
+
/**
|
|
2106
|
+
* @typedef {BuiltInStrategy | CustomStrategy} Strategy
|
|
2107
|
+
*/
|
|
2108
|
+
/**
|
|
2109
|
+
* @typedef {Array<Strategy>} Strategies
|
|
2110
|
+
*/
|
|
2111
|
+
/**
|
|
2112
|
+
* @typedef {{ getLocale: (request?: Request) => Promise<string | undefined> | (string | undefined) }} CustomServerStrategyHandler
|
|
2113
|
+
*/
|
|
2114
|
+
/**
|
|
2115
|
+
* @typedef {{ getLocale: () => Promise<string|undefined> | (string | undefined), setLocale: (locale: string) => Promise<void> | void }} CustomClientStrategyHandler
|
|
2116
|
+
*/
|
|
2117
|
+
/** @type {Map<string, CustomServerStrategyHandler>} */
|
|
2118
|
+
export const customServerStrategies = new Map();
|
|
2119
|
+
/** @type {Map<string, CustomClientStrategyHandler>} */
|
|
2120
|
+
export const customClientStrategies = new Map();
|
|
2121
|
+
/**
|
|
2122
|
+
* Checks if the given strategy is a custom strategy.
|
|
2123
|
+
*
|
|
2124
|
+
* @param {unknown} strategy The name of the custom strategy to validate.
|
|
2125
|
+
* Must be a string that starts with "custom-" followed by alphanumeric characters, hyphens, or underscores.
|
|
2126
|
+
* @returns {boolean} Returns true if it is a custom strategy, false otherwise.
|
|
2127
|
+
*/
|
|
2128
|
+
export function isCustomStrategy(strategy) {
|
|
2129
|
+
return (typeof strategy === "string" && /^custom-[A-Za-z0-9_-]+$/.test(strategy));
|
|
2130
|
+
}
|
|
2131
|
+
/**
|
|
2132
|
+
* Defines a custom strategy that is executed on the server.
|
|
2133
|
+
*
|
|
2134
|
+
* @see https://paraglidejs.com/strategy#write-your-own-strategy
|
|
2135
|
+
*
|
|
2136
|
+
* @param {string} strategy The name of the custom strategy to define. Must follow the pattern custom-name with alphanumeric characters, hyphens, or underscores.
|
|
2137
|
+
* @param {CustomServerStrategyHandler} handler The handler for the custom strategy, which should implement
|
|
2138
|
+
* the method getLocale.
|
|
2139
|
+
* @returns {void}
|
|
2140
|
+
*/
|
|
2141
|
+
export function defineCustomServerStrategy(strategy, handler) {
|
|
2142
|
+
if (!isCustomStrategy(strategy)) {
|
|
2143
|
+
throw new Error(`Invalid custom strategy: "${strategy}". Must be a custom strategy following the pattern custom-name.`);
|
|
2144
|
+
}
|
|
2145
|
+
customServerStrategies.set(strategy, handler);
|
|
2146
|
+
}
|
|
2147
|
+
/**
|
|
2148
|
+
* Defines a custom strategy that is executed on the client.
|
|
2149
|
+
*
|
|
2150
|
+
* @see https://paraglidejs.com/strategy#write-your-own-strategy
|
|
2151
|
+
*
|
|
2152
|
+
* @param {string} strategy The name of the custom strategy to define. Must follow the pattern custom-name with alphanumeric characters, hyphens, or underscores.
|
|
2153
|
+
* @param {CustomClientStrategyHandler} handler The handler for the custom strategy, which should implement the
|
|
2154
|
+
* methods getLocale and setLocale.
|
|
2155
|
+
* @returns {void}
|
|
2156
|
+
*/
|
|
2157
|
+
export function defineCustomClientStrategy(strategy, handler) {
|
|
2158
|
+
if (!isCustomStrategy(strategy)) {
|
|
2159
|
+
throw new Error(`Invalid custom strategy: "${strategy}". Must be a custom strategy following the pattern custom-name.`);
|
|
2160
|
+
}
|
|
2161
|
+
customClientStrategies.set(strategy, handler);
|
|
2162
|
+
}
|
|
2163
|
+
|
|
2164
|
+
// ------ TYPES ------
|
|
2165
|
+
export {};
|
|
2166
|
+
/**
|
|
2167
|
+
* A locale that is available in the project.
|
|
2168
|
+
*
|
|
2169
|
+
* @example
|
|
2170
|
+
* setLocale(request.locale as Locale)
|
|
2171
|
+
*
|
|
2172
|
+
* @typedef {typeof locales[number]} Locale
|
|
2173
|
+
*/
|
|
2174
|
+
/**
|
|
2175
|
+
* A branded type representing a localized string.
|
|
2176
|
+
*
|
|
2177
|
+
* Message functions return this type instead of \`string\`, enabling TypeScript
|
|
2178
|
+
* to distinguish translated strings from regular strings at compile time.
|
|
2179
|
+
* This allows you to enforce that only properly localized content is used
|
|
2180
|
+
* in your UI components.
|
|
2181
|
+
*
|
|
2182
|
+
* Since \`LocalizedString\` is a branded subtype of \`string\`, it remains fully
|
|
2183
|
+
* backward compatible—you can pass it anywhere a \`string\` is expected.
|
|
2184
|
+
*
|
|
2185
|
+
* @example
|
|
2186
|
+
* // Enforce localized strings in your components
|
|
2187
|
+
* function PageTitle(props: { title: LocalizedString }) {
|
|
2188
|
+
* return <h1>{props.title}</h1>
|
|
2189
|
+
* }
|
|
2190
|
+
*
|
|
2191
|
+
* // ✅ Correct: using a message function
|
|
2192
|
+
* <PageTitle title={m.welcome_title()} />
|
|
2193
|
+
*
|
|
2194
|
+
* // ❌ Type error: raw strings are not LocalizedString
|
|
2195
|
+
* <PageTitle title="Welcome" />
|
|
2196
|
+
*
|
|
2197
|
+
* @example
|
|
2198
|
+
* // LocalizedString is assignable to string (backward compatible)
|
|
2199
|
+
* const localized: LocalizedString = m.greeting()
|
|
2200
|
+
* const str: string = localized // ✅ works fine
|
|
2201
|
+
*
|
|
2202
|
+
* // But string is not assignable to LocalizedString
|
|
2203
|
+
* const raw: LocalizedString = "Hello" // ❌ Type error
|
|
2204
|
+
*
|
|
2205
|
+
* @example
|
|
2206
|
+
* // Catches accidental string concatenation
|
|
2207
|
+
* function showMessage(msg: LocalizedString) { ... }
|
|
2208
|
+
*
|
|
2209
|
+
* showMessage(m.hello()) // ✅
|
|
2210
|
+
* showMessage("Hello " + userName) // ❌ Type error
|
|
2211
|
+
* showMessage(m.hello_user({ name: userName })) // ✅ use params instead
|
|
2212
|
+
*
|
|
2213
|
+
* @typedef {string & { readonly __brand: 'LocalizedString' }} LocalizedString
|
|
2214
|
+
*/
|
|
2215
|
+
/**
|
|
2216
|
+
* A single markup option passed to a tag instance.
|
|
2217
|
+
*
|
|
2218
|
+
* @typedef {{
|
|
2219
|
+
* name: string;
|
|
2220
|
+
* value: unknown;
|
|
2221
|
+
* }} MessageMarkupOption
|
|
2222
|
+
*/
|
|
2223
|
+
/**
|
|
2224
|
+
* A single static markup attribute attached to a tag instance.
|
|
2225
|
+
*
|
|
2226
|
+
* @typedef {{
|
|
2227
|
+
* name: string;
|
|
2228
|
+
* value: string | true;
|
|
2229
|
+
* }} MessageMarkupAttribute
|
|
2230
|
+
*/
|
|
2231
|
+
/**
|
|
2232
|
+
* Record of markup options for a tag instance.
|
|
2233
|
+
*
|
|
2234
|
+
* @typedef {Record<string, unknown>} MessageMarkupOptions
|
|
2235
|
+
*/
|
|
2236
|
+
/**
|
|
2237
|
+
* Record of markup attributes for a tag instance.
|
|
2238
|
+
*
|
|
2239
|
+
* @typedef {Record<string, string | true>} MessageMarkupAttributes
|
|
2240
|
+
*/
|
|
2241
|
+
/**
|
|
2242
|
+
* Type-level schema for a single markup tag.
|
|
2243
|
+
*
|
|
2244
|
+
* @typedef {{
|
|
2245
|
+
* options: MessageMarkupOptions;
|
|
2246
|
+
* attributes: MessageMarkupAttributes;
|
|
2247
|
+
* children: boolean;
|
|
2248
|
+
* }} MessageMarkupTag
|
|
2249
|
+
*/
|
|
2250
|
+
/**
|
|
2251
|
+
* Type-level schema for all markup tags in a message.
|
|
2252
|
+
*
|
|
2253
|
+
* @typedef {Record<string, MessageMarkupTag>} MessageMarkupSchema
|
|
2254
|
+
*/
|
|
2255
|
+
/**
|
|
2256
|
+
* Type-only metadata attached to compiled message functions.
|
|
2257
|
+
*
|
|
2258
|
+
* @template Inputs
|
|
2259
|
+
* @template Options
|
|
2260
|
+
* @template {MessageMarkupSchema} [Markup = MessageMarkupSchema]
|
|
2261
|
+
* @typedef {{
|
|
2262
|
+
* readonly __paraglide?: {
|
|
2263
|
+
* inputs: Inputs;
|
|
2264
|
+
* options: Options;
|
|
2265
|
+
* markup: Markup;
|
|
2266
|
+
* };
|
|
2267
|
+
* }} MessageMetadata
|
|
2268
|
+
*/
|
|
2269
|
+
/**
|
|
2270
|
+
* A compiled, framework-neutral message part.
|
|
2271
|
+
*
|
|
2272
|
+
* @typedef {{
|
|
2273
|
+
* type: "text";
|
|
2274
|
+
* value: string;
|
|
2275
|
+
* } | {
|
|
2276
|
+
* type: "markup-start";
|
|
2277
|
+
* name: string;
|
|
2278
|
+
* options: MessageMarkupOptions;
|
|
2279
|
+
* attributes: MessageMarkupAttributes;
|
|
2280
|
+
* } | {
|
|
2281
|
+
* type: "markup-end";
|
|
2282
|
+
* name: string;
|
|
2283
|
+
* options: MessageMarkupOptions;
|
|
2284
|
+
* attributes: MessageMarkupAttributes;
|
|
2285
|
+
* } | {
|
|
2286
|
+
* type: "markup-standalone";
|
|
2287
|
+
* name: string;
|
|
2288
|
+
* options: MessageMarkupOptions;
|
|
2289
|
+
* attributes: MessageMarkupAttributes;
|
|
2290
|
+
* }} MessagePart
|
|
2291
|
+
*/
|
|
2292
|
+
/**
|
|
2293
|
+
* A message function is a message for a specific locale.
|
|
2294
|
+
*
|
|
2295
|
+
* @example
|
|
2296
|
+
* m.hello({ name: 'world' })
|
|
2297
|
+
*
|
|
2298
|
+
* @typedef {(inputs?: Record<string, never>) => LocalizedString} MessageFunction
|
|
2299
|
+
*/
|
|
2300
|
+
/**
|
|
2301
|
+
* A message bundle function that selects the message to be returned.
|
|
2302
|
+
*
|
|
2303
|
+
* Uses `getLocale()` under the hood to determine the locale with an option.
|
|
2304
|
+
*
|
|
2305
|
+
* @template {string} T
|
|
2306
|
+
*
|
|
2307
|
+
* @example
|
|
2308
|
+
* * m.hello({ name: 'world' }, { locale: "en" })
|
|
2309
|
+
*
|
|
2310
|
+
* @typedef {(params: Record<string, never>, options: { locale: T }) => LocalizedString} MessageBundleFunction
|
|
2311
|
+
*/
|