@protobase/ui 0.63.5 → 0.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account/change-email-dialog.js +1 -1
- package/dist/account/devices-section.js +11 -5
- package/dist/account/messages.js +2 -333
- package/dist/account/passkeys-section.js +2 -2
- package/dist/account/password-change-dialog.js +3 -3
- package/dist/account/sign-in-policy-form.js +6 -3
- package/dist/account/sign-in-providers-section.js +1 -1
- package/dist/account/staff-sign-in-log.js +4 -4
- package/dist/action-card/messages.js +2 -5
- package/dist/activity-chart/activity-chart.js +4 -6
- package/dist/activity-chart/messages.js +2 -11
- package/dist/app/app.js +1 -2
- package/dist/app/batch-failure.js +5 -1
- package/dist/app/bottom-bar-from-meta.js +2 -3
- package/dist/app/change-confirm/messages.js +2 -13
- package/dist/app/change-confirm/use-change-confirm.js +1 -1
- package/dist/app/charts/chart-groups.js +3 -1
- package/dist/app/charts/group-bars.js +1 -1
- package/dist/app/charts/messages.js +2 -23
- package/dist/app/charts/period-chart.js +1 -1
- package/dist/app/comments/messages.js +2 -19
- package/dist/app/confirm-sign-in-messages.js +2 -19
- package/dist/app/confirm-sign-in.js +1 -1
- package/dist/app/create/create-page.js +3 -3
- package/dist/app/create/create-record-form.js +2 -2
- package/dist/app/create/create-route.js +1 -1
- package/dist/app/create/messages.js +2 -29
- package/dist/app/custom-section.js +1 -2
- package/dist/app/delete/blocked-delete.js +5 -2
- package/dist/app/delete/dialogs.js +21 -8
- package/dist/app/delete/messages.js +2 -63
- package/dist/app/delete/use-delete-flow.js +5 -4
- package/dist/app/displays/board-column.js +1 -1
- package/dist/app/displays/board-columns.js +1 -1
- package/dist/app/displays/board-display.js +21 -9
- package/dist/app/displays/calendar-display.js +15 -6
- package/dist/app/displays/cards-display.js +1 -1
- package/dist/app/displays/custom-display.js +1 -2
- package/dist/app/displays/list-cards.js +1 -1
- package/dist/app/displays/map-display.js +19 -6
- package/dist/app/displays/messages.js +2 -147
- package/dist/app/displays/period-controls.js +2 -2
- package/dist/app/displays/timeline-display.js +15 -6
- package/dist/app/displays/timeline-range.js +1 -1
- package/dist/app/displays/use-board-move.js +3 -3
- package/dist/app/displays/use-calendar-move.js +1 -1
- package/dist/app/document-title.js +1 -1
- package/dist/app/embedded-list/cut-off-note.js +7 -1
- package/dist/app/embedded-list/embedded-row-targets.js +3 -3
- package/dist/app/embedded-list/messages.js +2 -21
- package/dist/app/export/builder-port.js +1 -1
- package/dist/app/export/export-dialog.js +14 -8
- package/dist/app/export/messages.js +2 -75
- package/dist/app/export/use-export-flow.js +9 -3
- package/dist/app/field-editor.js +2 -2
- package/dist/app/field-errors.js +18 -7
- package/dist/app/field-messages.js +2 -45
- package/dist/app/field-types/members/messages.js +2 -15
- package/dist/app/field-types/messages.js +2 -5
- package/dist/app/field-types/widget-part.js +1 -1
- package/dist/app/file-field.js +3 -3
- package/dist/app/gallery/gallery-section.js +5 -2
- package/dist/app/gallery/messages.js +2 -27
- package/dist/app/gallery/photo-details.js +2 -2
- package/dist/app/hand-order/hand-sorted-list.js +1 -2
- package/dist/app/hand-order/messages.js +2 -29
- package/dist/app/hand-order/use-hand-order.js +1 -1
- package/dist/app/history/describe-change.js +1 -1
- package/dist/app/history/messages.js +2 -29
- package/dist/app/import/convert.js +19 -10
- package/dist/app/import/import-check-step.js +5 -5
- package/dist/app/import/import-dialog.js +5 -2
- package/dist/app/import/import-file-step.js +1 -1
- package/dist/app/import/import-mapping-step.js +3 -3
- package/dist/app/import/messages.js +2 -197
- package/dist/app/import/prepare-rows.js +11 -4
- package/dist/app/import/sheet-cell.js +1 -1
- package/dist/app/import/xlsx-reader.js +2 -2
- package/dist/app/import/zip-reader.js +4 -1
- package/dist/app/list-actions/use-list-actions.js +4 -1
- package/dist/app/list-edit/messages.js +2 -11
- package/dist/app/list-empty-state.js +7 -4
- package/dist/app/list-group-chart.js +1 -1
- package/dist/app/list-messages.js +2 -53
- package/dist/app/list-page.js +9 -9
- package/dist/app/live-update/messages.js +2 -11
- package/dist/app/map/messages.js +2 -11
- package/dist/app/menu-icons.js +10 -3
- package/dist/app/messages.js +2 -139
- package/dist/app/meta-gate-messages.js +2 -13
- package/dist/app/nav-from-meta.js +8 -9
- package/dist/app/new-version/messages.js +2 -21
- package/dist/app/new-version/new-version-banner.js +1 -2
- package/dist/app/pages/action-inputs/action-inputs-dialog.js +1 -1
- package/dist/app/pages/action-inputs/input-answers.js +1 -1
- package/dist/app/pages/blocks/modal-form.js +1 -1
- package/dist/app/pages/blocks/settings.js +1 -1
- package/dist/app/pages/blocks/tabs.js +1 -1
- package/dist/app/pages/composed-page.js +1 -2
- package/dist/app/pages/custom-boundary.js +1 -2
- package/dist/app/pages/messages.js +2 -79
- package/dist/app/pages/render-node.js +2 -3
- package/dist/app/pages/use-run-action.js +14 -6
- package/dist/app/rank-after/dependency-rule.js +8 -2
- package/dist/app/rank-after/messages.js +2 -5
- package/dist/app/rank-after/ranked-place.js +7 -1
- package/dist/app/record-chart/messages.js +2 -25
- package/dist/app/record-lines-cell.js +4 -1
- package/dist/app/record-lines.js +2 -2
- package/dist/app/record-messages.js +2 -83
- package/dist/app/record-page.js +3 -3
- package/dist/app/record-row/messages.js +2 -23
- package/dist/app/record-row/record-row-body.js +1 -1
- package/dist/app/record-row/record-row.js +2 -2
- package/dist/app/record-row/saved-record-row.js +2 -2
- package/dist/app/related-cards/messages.js +2 -15
- package/dist/app/related-dots/dots-summary.js +1 -1
- package/dist/app/related-dots/messages.js +2 -5
- package/dist/app/related-dots/related-dots.js +2 -3
- package/dist/app/relation-picker.js +1 -1
- package/dist/app/runtime/messages.js +2 -55
- package/dist/app/runtime/runtime-status.js +12 -3
- package/dist/app/saved/messages.js +2 -19
- package/dist/app/saved/saved-list.js +2 -2
- package/dist/app/search/messages.js +2 -19
- package/dist/app/search/navigation-hits.js +1 -1
- package/dist/app/search/search-model.js +9 -3
- package/dist/app/searches/messages.js +2 -93
- package/dist/app/searches/save-search-button.js +3 -3
- package/dist/app/searches/saved-search-rows.js +2 -2
- package/dist/app/searches/saved-search-section.js +3 -3
- package/dist/app/searches/saved-searches.js +13 -11
- package/dist/app/searches/search-controls.js +1 -1
- package/dist/app/searches/search-diff.js +8 -2
- package/dist/app/searches/update-search-dialog.js +9 -3
- package/dist/app/searches/use-save-search.js +1 -1
- package/dist/app/searches/use-search-row.js +2 -2
- package/dist/app/sensitive-field.js +3 -3
- package/dist/app/source-notice.js +3 -3
- package/dist/app/staff-banner.js +12 -8
- package/dist/app/use-live-save.js +2 -2
- package/dist/app/user-menu-from-meta.js +2 -3
- package/dist/app/value-badge.js +3 -4
- package/dist/app-shell/global-search.js +2 -2
- package/dist/app-shell/messages.js +2 -63
- package/dist/app-shell/sidebar-group.js +2 -2
- package/dist/app-shell/sidebar.js +1 -2
- package/dist/app-shell/top-bar.js +1 -1
- package/dist/assistant-dock/messages.js +2 -23
- package/dist/auth/auth-gate.js +1 -1
- package/dist/auth/auth-messages.js +9 -88
- package/dist/auth/email-code-form.js +2 -3
- package/dist/auth/forgot-password-form.js +2 -3
- package/dist/auth/messages.js +2 -203
- package/dist/auth/provider-sign-in-page.js +3 -3
- package/dist/auth/resend-code-button.js +1 -1
- package/dist/auth/reset-password-form.js +1 -1
- package/dist/auth/reset-password-page.js +1 -1
- package/dist/auth/sign-in-form.js +2 -2
- package/dist/auth/sign-up-code-form.js +2 -3
- package/dist/auth/sign-up-details-form.js +3 -4
- package/dist/auth/staff-sign-in-form.js +3 -3
- package/dist/calls/call-guests-panel.js +1 -1
- package/dist/calls/call-lobby-notice.js +1 -1
- package/dist/calls/call-mark.js +1 -1
- package/dist/calls/call-people.js +1 -1
- package/dist/calls/call-tile.js +2 -2
- package/dist/calls/messages.js +2 -139
- package/dist/carousel/carousel-controls.js +4 -1
- package/dist/carousel/messages.js +2 -13
- package/dist/chat/messages.js +2 -19
- package/dist/compact-table/compact-table.js +1 -1
- package/dist/compact-table/messages.js +2 -15
- package/dist/data-grid/cell-text.js +6 -5
- package/dist/data-grid/cells.js +7 -4
- package/dist/data-grid/grid-footer.js +1 -1
- package/dist/data-grid/grid-row.js +1 -1
- package/dist/data-grid/header-menu.js +1 -1
- package/dist/data-grid/messages.js +2 -49
- package/dist/data-grid/resize-handle.js +1 -1
- package/dist/data-grid/row-reorder.js +20 -5
- package/dist/filter-panel/active-filter-chips.js +1 -1
- package/dist/filter-panel/date-presets.js +2 -2
- package/dist/filter-panel/facet-combobox.js +1 -1
- package/dist/filter-panel/facet-group.js +1 -1
- package/dist/filter-panel/messages.js +2 -49
- package/dist/filter-panel/range-filter.js +1 -1
- package/dist/format/date.js +4 -4
- package/dist/format/messages.js +2 -21
- package/dist/format/money.js +1 -1
- package/dist/format/number.js +5 -2
- package/dist/forms/messages.js +2 -21
- package/dist/inline-child-table/inline-child-table.js +19 -4
- package/dist/inline-child-table/line-row.js +2 -2
- package/dist/inline-child-table/messages.js +2 -35
- package/dist/invitations/link-notice.js +2 -3
- package/dist/invitations/messages.js +2 -21
- package/dist/invitations/pending-invitation-row.js +1 -1
- package/dist/lists/messages.js +2 -5
- package/dist/live/columns-from-model.js +14 -31
- package/dist/live/display-value.js +1 -1
- package/dist/live/messages.js +2 -15
- package/dist/live/value-color.js +13 -3
- package/dist/live/view-fields.js +4 -2
- package/dist/locale/en.js +1399 -0
- package/dist/locale/messages.js +38 -7
- package/dist/locale/nl.js +1399 -0
- package/dist/markdown/messages.js +2 -13
- package/dist/mentions/messages.js +2 -13
- package/dist/notifications/bell/messages.js +2 -35
- package/dist/notifications/bell/unread-label.js +1 -1
- package/dist/organizations/invitation-page.js +31 -13
- package/dist/organizations/invitations-page.js +1 -1
- package/dist/organizations/members-page.js +2 -2
- package/dist/organizations/messages.js +2 -187
- package/dist/organizations/organization-page.js +4 -4
- package/dist/organizations/organizations-page.js +1 -1
- package/dist/package.js +1 -1
- package/dist/plugins/load-plugin.js +2 -2
- package/dist/plugins/messages.js +2 -33
- package/dist/plugins/plugin-notice.js +7 -5
- package/dist/primitives/badge.d.ts +2 -1
- package/dist/primitives/messages.js +2 -13
- package/dist/primitives/token.js +1 -1
- package/dist/record-view/field.js +2 -2
- package/dist/record-view/messages.js +2 -33
- package/dist/record-view/record-header.js +2 -2
- package/dist/roles/messages.js +2 -11
- package/dist/shell/assets/app-BOuBCV1m.js +8 -0
- package/dist/shell/assets/{calls-CPiQcC70.js → calls-C22bYKio.js} +2 -2
- package/dist/shell/assets/export-worker-ClXdfeuq.js +15 -0
- package/dist/shell/assets/{index-_ZpZ2ro0.js → index-G0fdUd70.js} +2 -2
- package/dist/shell/assets/{maplibre-CjNYwEqW.js → maplibre-CRmpQfDl.js} +3 -3
- package/dist/shell/assets/parse-worker-DxsmAjef.js +18 -0
- package/dist/shell/assets/preload-helper-BgLOXTzV.js +2 -0
- package/dist/shell/assets/{record-map-DjqQGqZ2.js → record-map-DsP4sXes.js} +2 -2
- package/dist/shell/assets/{records-map-DU29d6QK.js → records-map-BtWK38Kn.js} +2 -2
- package/dist/shell/assets/shared-protobase-ui-xqMMtr7u.js +2 -0
- package/dist/shell/assets/vendor-Kvdo8Jrw.js +73 -0
- package/dist/shell/index.html +5 -5
- package/dist/shell/protobase.shell.json +2 -2
- package/dist/shell/protobase.sw.js +2 -2
- package/dist/shell-source-maps/assets/app-BOuBCV1m.js.map +1 -0
- package/dist/shell-source-maps/assets/{calls-CPiQcC70.js.map → calls-C22bYKio.js.map} +1 -1
- package/dist/shell-source-maps/assets/export-worker-ClXdfeuq.js.map +1 -0
- package/dist/shell-source-maps/assets/{index-_ZpZ2ro0.js.map → index-G0fdUd70.js.map} +1 -1
- package/dist/shell-source-maps/assets/{maplibre-CjNYwEqW.js.map → maplibre-CRmpQfDl.js.map} +1 -1
- package/dist/shell-source-maps/assets/parse-worker-DxsmAjef.js.map +1 -0
- package/dist/shell-source-maps/assets/preload-helper-BgLOXTzV.js.map +1 -0
- package/dist/shell-source-maps/assets/{record-map-DjqQGqZ2.js.map → record-map-DsP4sXes.js.map} +1 -1
- package/dist/shell-source-maps/assets/{records-map-DU29d6QK.js.map → records-map-BtWK38Kn.js.map} +1 -1
- package/dist/shell-source-maps/assets/shared-protobase-ui-xqMMtr7u.js.map +1 -0
- package/dist/shell-source-maps/assets/vendor-Kvdo8Jrw.js.map +1 -0
- package/dist/side-panel/messages.js +2 -5
- package/dist/status/messages.js +2 -59
- package/dist/toasts/messages.js +2 -5
- package/dist/users/create-user-form.js +1 -1
- package/dist/users/messages.js +2 -49
- package/package.json +5 -4
- package/dist/app/icons.js +0 -27
- package/dist/app-shell/nav.js +0 -85
- package/dist/locale/slotted.js +0 -14
- package/dist/mocks/activity.js +0 -24
- package/dist/mocks/rng.js +0 -20
- package/dist/mocks/users.js +0 -63
- package/dist/shell/assets/app-BPv_SjnU.js +0 -9
- package/dist/shell/assets/export-worker-3e4Zsv0a.js +0 -3
- package/dist/shell/assets/parse-worker-UhbwEjS0.js +0 -6
- package/dist/shell/assets/preload-helper-SYSsmQ2O.js +0 -2
- package/dist/shell/assets/shared-protobase-ui-Cab5nqST.js +0 -2
- package/dist/shell/assets/vendor-iwLB0x-s.js +0 -63
- package/dist/shell-source-maps/assets/app-BPv_SjnU.js.map +0 -1
- package/dist/shell-source-maps/assets/export-worker-3e4Zsv0a.js.map +0 -1
- package/dist/shell-source-maps/assets/parse-worker-UhbwEjS0.js.map +0 -1
- package/dist/shell-source-maps/assets/preload-helper-SYSsmQ2O.js.map +0 -1
- package/dist/shell-source-maps/assets/shared-protobase-ui-Cab5nqST.js.map +0 -1
- package/dist/shell-source-maps/assets/vendor-iwLB0x-s.js.map +0 -1
package/dist/auth/messages.js
CHANGED
|
@@ -1,206 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/auth/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
loading: "Loading",
|
|
6
|
-
cannotReach: (message) => `Cannot reach the server: ${message}`,
|
|
7
|
-
tryAgain: "Try again",
|
|
8
|
-
passwordChanged: "Your password is changed. Sign in with the new one.",
|
|
9
|
-
noAnswer: "The server did not answer",
|
|
10
|
-
code: "Code",
|
|
11
|
-
backupCode: "Backup code",
|
|
12
|
-
email: "Email",
|
|
13
|
-
password: "Password",
|
|
14
|
-
passwordOptional: "Password (optional)",
|
|
15
|
-
signIn: "Sign in",
|
|
16
|
-
signOut: "Sign out",
|
|
17
|
-
continue: "Continue",
|
|
18
|
-
backToSignIn: "Back to sign in",
|
|
19
|
-
useAnotherAddress: "Use another address",
|
|
20
|
-
checkEmail: "Check your email",
|
|
21
|
-
newCodeSent: "A new code is on its way. Only the newest one works.",
|
|
22
|
-
sendNewCode: "Send a new code",
|
|
23
|
-
sendNewCodeIn: (seconds) => `Send a new code in ${seconds}s`,
|
|
24
|
-
signInCodeDescription: "Enter the code we sent to sign in.",
|
|
25
|
-
signInCodeSent: "If {} has an account, a 6-digit code is on its way. It works for 5 minutes, once.",
|
|
26
|
-
signUpCodeDescription: "Enter the code we sent to create your account.",
|
|
27
|
-
signUpCodeSent: "A 6-digit code is on its way to {}. It works for 5 minutes, once. If the address has an account already, the email says so instead.",
|
|
28
|
-
noAdminTitle: "No admin yet",
|
|
29
|
-
noAdminDescription: "This Protobase has no users to sign in with.",
|
|
30
|
-
noAdminExplanation: "Run this in the terminal where Protobase runs, then reload. The first admin is created on the server, not in the browser, so nobody else can claim a fresh URL.",
|
|
31
|
-
copyCommand: "Copy command",
|
|
32
|
-
firstAdminExplanation: "The first user is added in the Protobase Cloud console, not in the browser, so nobody else can claim a fresh URL. Add yourself there, then reload.",
|
|
33
|
-
firstAdminLink: "Add your first user in the Protobase Cloud console",
|
|
34
|
-
reload: "Reload",
|
|
35
|
-
tooManyRequests: "Too many requests. Wait a minute and try again.",
|
|
36
|
-
tooManyAttempts: "Too many attempts. Wait a minute and try again.",
|
|
37
|
-
resetTitle: "Reset your password",
|
|
38
|
-
resetDescription: "We email you a link to choose a new one.",
|
|
39
|
-
sendResetLink: "Send reset link",
|
|
40
|
-
resetSent: "If {} has an account, an email with a link to choose a new password is on its way. The link works once, for a limited time.",
|
|
41
|
-
linkExpiredTitle: "This link no longer works",
|
|
42
|
-
linkExpiredExplanation: "A reset link works once, for a limited time. Ask for a new one to choose your password.",
|
|
43
|
-
sendNewLink: "Send a new link",
|
|
44
|
-
passwordsDiffer: "The passwords are not the same.",
|
|
45
|
-
choosePassword: "Choose a new password",
|
|
46
|
-
atLeast: (length) => `At least ${length} characters.`,
|
|
47
|
-
useAtLeast: (length) => `Use at least ${length} characters.`,
|
|
48
|
-
passwordTooLong: "That password is too long.",
|
|
49
|
-
newPassword: "New password",
|
|
50
|
-
repeatPassword: "Repeat new password",
|
|
51
|
-
setPassword: "Set new password",
|
|
52
|
-
signingInWith: (name) => `Signing in with ${name}`,
|
|
53
|
-
takingYouTo: (name) => `Taking you to ${name}…`,
|
|
54
|
-
providerNotOffered: (name) => `Signing in with ${name} is not offered here. Sign in another way.`,
|
|
55
|
-
turnOnTwoFactor: "Turn on two-factor authentication",
|
|
56
|
-
addPasskey: "Add a passkey",
|
|
57
|
-
requiredForEveryAccount: "This app requires it for every account.",
|
|
58
|
-
passkeyExplanation: "A passkey signs you in with Face ID, Touch ID, Windows Hello, your phone or a security key. Your browser asks which one to use.",
|
|
59
|
-
couldNotReadAccount: "Could not read your account",
|
|
60
|
-
signInTitle: "Sign in to Protobase",
|
|
61
|
-
continueWith: (name) => `Continue with ${name}`,
|
|
62
|
-
signInWithPasskey: "Sign in with a passkey",
|
|
63
|
-
passkeyFor: (domain) => `Use a passkey made for ${domain}`,
|
|
64
|
-
or: "or",
|
|
65
|
-
emailSignInCode: "Email me a sign-in code",
|
|
66
|
-
usePassword: "Use a password",
|
|
67
|
-
forgotPassword: "Forgot password?",
|
|
68
|
-
newHere: "New here?",
|
|
69
|
-
haveAccount: "Have an account?",
|
|
70
|
-
createAnAccount: "Create an account",
|
|
71
|
-
browse: "Continue without signing in",
|
|
72
|
-
notNow: "Not now",
|
|
73
|
-
detailsTitle: "Your details",
|
|
74
|
-
detailsDescription: "One last step to create your account.",
|
|
75
|
-
yourName: "Your name",
|
|
76
|
-
codeWasRight: "The code was right: the account is for {}.",
|
|
77
|
-
withoutPassword: " Without one, you sign in with a code we email you.",
|
|
78
|
-
createAccount: "Create account",
|
|
79
|
-
codeToConfirm: "We email you a code to make sure the address is yours.",
|
|
80
|
-
emailCode: "Email me a code",
|
|
81
|
-
browseWithoutAccount: "Continue without an account",
|
|
82
|
-
staffTitle: "Staff sign-in",
|
|
83
|
-
staffUnavailable: "Staff of the team that runs this app cannot sign in as people here.",
|
|
84
|
-
signInAsPerson: "Sign in as a person",
|
|
85
|
-
forStaffOf: (operator) => `For staff of ${operator}, to help someone with this app.`,
|
|
86
|
-
theirEmail: "Their email",
|
|
87
|
-
reason: "Reason",
|
|
88
|
-
reasonExample: "Ticket 4211: the invoice totals look wrong",
|
|
89
|
-
staffExplanation: (operator) => `You sign in at ${operator} with a passkey or a second step. The session is short, shows a banner, and cannot change their sign-in. The app's admins see who signed in as whom, and why.`,
|
|
90
|
-
totpInstruction: "Enter the 6-digit code from your authenticator app.",
|
|
91
|
-
otpInstruction: "Enter the 6-digit code we emailed you. It works for 5 minutes.",
|
|
92
|
-
backupInstruction: "Enter one of the backup codes you saved when you set up the authenticator app. Each works once.",
|
|
93
|
-
twoFactorTitle: "Two-factor authentication",
|
|
94
|
-
twoFactorDescription: "One more step to sign in.",
|
|
95
|
-
codeToFinish: "We email you a code to finish signing in.",
|
|
96
|
-
trustBrowser: "Trust this browser",
|
|
97
|
-
trustBrowserFor: "Don't ask again in this browser for 30 days",
|
|
98
|
-
verify: "Verify",
|
|
99
|
-
useAuthenticator: "Use the authenticator app",
|
|
100
|
-
emailCodeInstead: "Email me a code instead",
|
|
101
|
-
useBackupCode: "Use a backup code",
|
|
102
|
-
admin: "Admin"
|
|
103
|
-
},
|
|
104
|
-
nl: {
|
|
105
|
-
loading: "Laden",
|
|
106
|
-
cannotReach: (message) => `Kan de server niet bereiken: ${message}`,
|
|
107
|
-
tryAgain: "Opnieuw proberen",
|
|
108
|
-
passwordChanged: "Je wachtwoord is gewijzigd. Log in met het nieuwe.",
|
|
109
|
-
noAnswer: "De server antwoordde niet",
|
|
110
|
-
code: "Code",
|
|
111
|
-
backupCode: "Back-upcode",
|
|
112
|
-
email: "E-mailadres",
|
|
113
|
-
password: "Wachtwoord",
|
|
114
|
-
passwordOptional: "Wachtwoord (optioneel)",
|
|
115
|
-
signIn: "Inloggen",
|
|
116
|
-
signOut: "Uitloggen",
|
|
117
|
-
continue: "Doorgaan",
|
|
118
|
-
backToSignIn: "Terug naar inloggen",
|
|
119
|
-
useAnotherAddress: "Een ander adres gebruiken",
|
|
120
|
-
checkEmail: "Kijk in je e-mail",
|
|
121
|
-
newCodeSent: "Er is een nieuwe code onderweg. Alleen de nieuwste werkt.",
|
|
122
|
-
sendNewCode: "Nieuwe code sturen",
|
|
123
|
-
sendNewCodeIn: (seconds) => `Nieuwe code sturen over ${seconds}s`,
|
|
124
|
-
signInCodeDescription: "Vul de code in die we stuurden om in te loggen.",
|
|
125
|
-
signInCodeSent: "Als {} een account heeft, is er een code van 6 cijfers onderweg. Die werkt 5 minuten, één keer.",
|
|
126
|
-
signUpCodeDescription: "Vul de code in die we stuurden om je account te maken.",
|
|
127
|
-
signUpCodeSent: "Er is een code van 6 cijfers onderweg naar {}. Die werkt 5 minuten, één keer. Heeft het adres al een account, dan staat dat in de e-mail.",
|
|
128
|
-
noAdminTitle: "Nog geen beheerder",
|
|
129
|
-
noAdminDescription: "Deze Protobase heeft geen gebruikers om mee in te loggen.",
|
|
130
|
-
noAdminExplanation: "Voer dit uit in de terminal waar Protobase draait en laad de pagina daarna opnieuw. De eerste beheerder wordt op de server gemaakt, niet in de browser, zodat niemand anders een nieuwe URL kan opeisen.",
|
|
131
|
-
copyCommand: "Opdracht kopiëren",
|
|
132
|
-
firstAdminExplanation: "De eerste gebruiker wordt in de Protobase Cloud-console toegevoegd, niet in de browser, zodat niemand anders een nieuwe URL kan opeisen. Voeg jezelf daar toe en laad de pagina daarna opnieuw.",
|
|
133
|
-
firstAdminLink: "Voeg je eerste gebruiker toe in de Protobase Cloud-console",
|
|
134
|
-
reload: "Opnieuw laden",
|
|
135
|
-
tooManyRequests: "Te veel verzoeken. Wacht een minuut en probeer het opnieuw.",
|
|
136
|
-
tooManyAttempts: "Te veel pogingen. Wacht een minuut en probeer het opnieuw.",
|
|
137
|
-
resetTitle: "Je wachtwoord herstellen",
|
|
138
|
-
resetDescription: "We mailen je een link om een nieuw te kiezen.",
|
|
139
|
-
sendResetLink: "Herstellink sturen",
|
|
140
|
-
resetSent: "Als {} een account heeft, is er een e-mail onderweg met een link om een nieuw wachtwoord te kiezen. De link werkt één keer, een beperkte tijd.",
|
|
141
|
-
linkExpiredTitle: "Deze link werkt niet meer",
|
|
142
|
-
linkExpiredExplanation: "Een herstellink werkt één keer, een beperkte tijd. Vraag een nieuwe aan om je wachtwoord te kiezen.",
|
|
143
|
-
sendNewLink: "Nieuwe link sturen",
|
|
144
|
-
passwordsDiffer: "De wachtwoorden zijn niet hetzelfde.",
|
|
145
|
-
choosePassword: "Kies een nieuw wachtwoord",
|
|
146
|
-
atLeast: (length) => `Minstens ${length} tekens.`,
|
|
147
|
-
useAtLeast: (length) => `Gebruik minstens ${length} tekens.`,
|
|
148
|
-
passwordTooLong: "Dat wachtwoord is te lang.",
|
|
149
|
-
newPassword: "Nieuw wachtwoord",
|
|
150
|
-
repeatPassword: "Nieuw wachtwoord herhalen",
|
|
151
|
-
setPassword: "Nieuw wachtwoord instellen",
|
|
152
|
-
signingInWith: (name) => `Inloggen met ${name}`,
|
|
153
|
-
takingYouTo: (name) => `Je gaat naar ${name}…`,
|
|
154
|
-
providerNotOffered: (name) => `Inloggen met ${name} kan hier niet. Log op een andere manier in.`,
|
|
155
|
-
turnOnTwoFactor: "Tweestapsverificatie aanzetten",
|
|
156
|
-
addPasskey: "Passkey toevoegen",
|
|
157
|
-
requiredForEveryAccount: "Deze app vraagt het voor elk account.",
|
|
158
|
-
passkeyExplanation: "Met een passkey log je in met Face ID, Touch ID, Windows Hello, je telefoon of een beveiligingssleutel. Je browser vraagt welke je gebruikt.",
|
|
159
|
-
couldNotReadAccount: "Kon je account niet lezen",
|
|
160
|
-
signInTitle: "Inloggen bij Protobase",
|
|
161
|
-
continueWith: (name) => `Doorgaan met ${name}`,
|
|
162
|
-
signInWithPasskey: "Inloggen met een passkey",
|
|
163
|
-
passkeyFor: (domain) => `Een passkey voor ${domain} gebruiken`,
|
|
164
|
-
or: "of",
|
|
165
|
-
emailSignInCode: "Mail me een inlogcode",
|
|
166
|
-
usePassword: "Een wachtwoord gebruiken",
|
|
167
|
-
forgotPassword: "Wachtwoord vergeten?",
|
|
168
|
-
newHere: "Nieuw hier?",
|
|
169
|
-
haveAccount: "Heb je een account?",
|
|
170
|
-
createAnAccount: "Account maken",
|
|
171
|
-
browse: "Doorgaan zonder in te loggen",
|
|
172
|
-
notNow: "Niet nu",
|
|
173
|
-
detailsTitle: "Je gegevens",
|
|
174
|
-
detailsDescription: "Nog één stap om je account te maken.",
|
|
175
|
-
yourName: "Je naam",
|
|
176
|
-
codeWasRight: "De code klopte: het account is voor {}.",
|
|
177
|
-
withoutPassword: " Zonder wachtwoord log je in met een code die we je mailen.",
|
|
178
|
-
createAccount: "Account maken",
|
|
179
|
-
codeToConfirm: "We mailen je een code om te controleren dat het adres van jou is.",
|
|
180
|
-
emailCode: "Mail me een code",
|
|
181
|
-
browseWithoutAccount: "Doorgaan zonder account",
|
|
182
|
-
staffTitle: "Inloggen als medewerker",
|
|
183
|
-
staffUnavailable: "Medewerkers van het team dat deze app beheert, kunnen hier niet als iemand anders inloggen.",
|
|
184
|
-
signInAsPerson: "Inloggen als iemand anders",
|
|
185
|
-
forStaffOf: (operator) => `Voor medewerkers van ${operator}, om iemand met deze app te helpen.`,
|
|
186
|
-
theirEmail: "Hun e-mailadres",
|
|
187
|
-
reason: "Reden",
|
|
188
|
-
reasonExample: "Ticket 4211: de factuurtotalen kloppen niet",
|
|
189
|
-
staffExplanation: (operator) => `Je logt in bij ${operator} met een passkey of een tweede stap. De sessie is kort, toont een balk en kan hun inlog niet wijzigen. De beheerders van de app zien wie als wie inlogde, en waarom.`,
|
|
190
|
-
totpInstruction: "Vul de code van 6 cijfers uit je authenticator-app in.",
|
|
191
|
-
otpInstruction: "Vul de code van 6 cijfers in die we je mailden. Die werkt 5 minuten.",
|
|
192
|
-
backupInstruction: "Vul een van de back-upcodes in die je bewaarde toen je de authenticator-app instelde. Elke code werkt één keer.",
|
|
193
|
-
twoFactorTitle: "Tweestapsverificatie",
|
|
194
|
-
twoFactorDescription: "Nog één stap om in te loggen.",
|
|
195
|
-
codeToFinish: "We mailen je een code om het inloggen af te ronden.",
|
|
196
|
-
trustBrowser: "Deze browser vertrouwen",
|
|
197
|
-
trustBrowserFor: "Niet meer vragen in deze browser, 30 dagen lang",
|
|
198
|
-
verify: "Controleren",
|
|
199
|
-
useAuthenticator: "De authenticator-app gebruiken",
|
|
200
|
-
emailCodeInstead: "Mail me liever een code",
|
|
201
|
-
useBackupCode: "Een back-upcode gebruiken",
|
|
202
|
-
admin: "Beheerder"
|
|
203
|
-
}
|
|
204
|
-
});
|
|
3
|
+
const text = messages("auth");
|
|
205
4
|
//#endregion
|
|
206
5
|
export { text };
|
|
@@ -10,7 +10,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
10
10
|
//#region src/auth/provider-sign-in-page.tsx
|
|
11
11
|
/** What the page shows while the browser leaves for the provider `name`. */
|
|
12
12
|
const ProviderRedirect = ({ name, workspace }) => /* @__PURE__ */ jsx(AuthLayout, {
|
|
13
|
-
title: text("signingInWith", name),
|
|
13
|
+
title: text("signingInWith", { name }),
|
|
14
14
|
description: workspace,
|
|
15
15
|
children: /* @__PURE__ */ jsxs("p", {
|
|
16
16
|
role: "status",
|
|
@@ -18,7 +18,7 @@ const ProviderRedirect = ({ name, workspace }) => /* @__PURE__ */ jsx(AuthLayout
|
|
|
18
18
|
children: [
|
|
19
19
|
/* @__PURE__ */ jsx(Spinner, {}),
|
|
20
20
|
" ",
|
|
21
|
-
text("takingYouTo", name)
|
|
21
|
+
text("takingYouTo", { name })
|
|
22
22
|
]
|
|
23
23
|
})
|
|
24
24
|
});
|
|
@@ -34,7 +34,7 @@ const ProviderSignInPage = ({ provider, workspace, onFailed }) => {
|
|
|
34
34
|
useEffect(() => {
|
|
35
35
|
if (started.current) return;
|
|
36
36
|
started.current = true;
|
|
37
|
-
if (!offered) return onFailed(text("providerNotOffered", name));
|
|
37
|
+
if (!offered) return onFailed(text("providerNotOffered", { name }));
|
|
38
38
|
signInSocial(provider).catch((failure) => {
|
|
39
39
|
if (!(failure instanceof AuthError)) throw failure;
|
|
40
40
|
onFailed(signInMessage(failure));
|
|
@@ -23,7 +23,7 @@ const ResendCodeButton = ({ onResend, cooldown = 30, disabled }) => {
|
|
|
23
23
|
onResend();
|
|
24
24
|
},
|
|
25
25
|
className: "min-h-10",
|
|
26
|
-
children: left > 0 ? text("sendNewCodeIn", left) : text("sendNewCode")
|
|
26
|
+
children: left > 0 ? text("sendNewCodeIn", { seconds: left }) : text("sendNewCode")
|
|
27
27
|
});
|
|
28
28
|
};
|
|
29
29
|
//#endregion
|
|
@@ -31,7 +31,7 @@ const ResetPasswordForm = ({ onSubmit, invalidLink, onRequestNewLink, onBack, bu
|
|
|
31
31
|
const shown = mismatch ? text("passwordsDiffer") : error;
|
|
32
32
|
return /* @__PURE__ */ jsx(AuthLayout, {
|
|
33
33
|
title: text("choosePassword"),
|
|
34
|
-
description: text("atLeast", 12),
|
|
34
|
+
description: text("atLeast", { length: 12 }),
|
|
35
35
|
children: /* @__PURE__ */ jsxs("form", {
|
|
36
36
|
className: "flex flex-col gap-4",
|
|
37
37
|
onSubmit: (event) => {
|
|
@@ -9,7 +9,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
9
9
|
/** Better Auth's answers to a new password, in words for the person at the keyboard. */
|
|
10
10
|
const resetPasswordMessage = (error) => {
|
|
11
11
|
if (error.status === 429) return text("tooManyAttempts");
|
|
12
|
-
if (error.code === "PASSWORD_TOO_SHORT") return text("useAtLeast", 12);
|
|
12
|
+
if (error.code === "PASSWORD_TOO_SHORT") return text("useAtLeast", { length: 12 });
|
|
13
13
|
if (error.code === "PASSWORD_TOO_LONG") return text("passwordTooLong");
|
|
14
14
|
return authMessage(error);
|
|
15
15
|
};
|
|
@@ -47,7 +47,7 @@ const SignInForm = ({ onSubmit, busy, error, workspace, notice, methods = ["pass
|
|
|
47
47
|
onClick: () => onContinueWith?.(provider.id),
|
|
48
48
|
disabled: busy,
|
|
49
49
|
className: "min-h-10 w-full",
|
|
50
|
-
children: [/* @__PURE__ */ jsx(ProviderIcon, { id: provider.id }), text("continueWith", provider.name)]
|
|
50
|
+
children: [/* @__PURE__ */ jsx(ProviderIcon, { id: provider.id }), text("continueWith", { name: provider.name })]
|
|
51
51
|
}, provider.id)),
|
|
52
52
|
withPasskey && /* @__PURE__ */ jsxs(Button, {
|
|
53
53
|
onClick: () => onPasskey?.(),
|
|
@@ -61,7 +61,7 @@ const SignInForm = ({ onSubmit, busy, error, workspace, notice, methods = ["pass
|
|
|
61
61
|
onClick: () => onPasskey?.(domain),
|
|
62
62
|
disabled: busy,
|
|
63
63
|
className: "w-full",
|
|
64
|
-
children: text("passkeyFor", domain)
|
|
64
|
+
children: text("passkeyFor", { domain })
|
|
65
65
|
}, domain))
|
|
66
66
|
]
|
|
67
67
|
}), withPassword || withCode ? /* @__PURE__ */ jsx(Divider, {}) : error && /* @__PURE__ */ jsx("p", {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { text } from "./messages.js";
|
|
2
|
-
import { slotted } from "../locale/slotted.js";
|
|
3
2
|
import { CodeForm } from "./code-form.js";
|
|
4
3
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
5
4
|
//#region src/auth/sign-up-code-form.tsx
|
|
@@ -7,10 +6,10 @@ import { Fragment, jsx } from "react/jsx-runtime";
|
|
|
7
6
|
const SignUpCodeForm = ({ email, onBack, ...rest }) => /* @__PURE__ */ jsx(CodeForm, {
|
|
8
7
|
title: text("checkEmail"),
|
|
9
8
|
description: text("signUpCodeDescription"),
|
|
10
|
-
explanation: /* @__PURE__ */ jsx(Fragment, { children:
|
|
9
|
+
explanation: /* @__PURE__ */ jsx(Fragment, { children: text.rich("signUpCodeSent", { email: /* @__PURE__ */ jsx("span", {
|
|
11
10
|
className: "font-medium text-foreground",
|
|
12
11
|
children: email
|
|
13
|
-
})) }),
|
|
12
|
+
}) }) }),
|
|
14
13
|
submitLabel: text("continue"),
|
|
15
14
|
onChangeAddress: onBack,
|
|
16
15
|
changeAddressLabel: text("useAnotherAddress"),
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { text } from "./messages.js";
|
|
2
2
|
import { Button } from "../primitives/button.js";
|
|
3
3
|
import { Input } from "../primitives/input.js";
|
|
4
|
-
import { slotted } from "../locale/slotted.js";
|
|
5
4
|
import { AuthLayout } from "./auth-layout.js";
|
|
6
5
|
import { useId, useState } from "react";
|
|
7
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -18,10 +17,10 @@ const SignUpDetailsForm = ({ email, onSubmit, onBack, methods, busy, error }) =>
|
|
|
18
17
|
description: text("detailsDescription"),
|
|
19
18
|
children: [/* @__PURE__ */ jsx("p", {
|
|
20
19
|
className: "mb-4 text-muted-foreground",
|
|
21
|
-
children:
|
|
20
|
+
children: text.rich("codeWasRight", { email: /* @__PURE__ */ jsx("span", {
|
|
22
21
|
className: "font-medium text-foreground",
|
|
23
22
|
children: email
|
|
24
|
-
}))
|
|
23
|
+
}) })
|
|
25
24
|
}), /* @__PURE__ */ jsxs("form", {
|
|
26
25
|
className: "flex flex-col gap-4",
|
|
27
26
|
onSubmit: (event) => {
|
|
@@ -64,7 +63,7 @@ const SignUpDetailsForm = ({ email, onSubmit, onBack, methods, busy, error }) =>
|
|
|
64
63
|
}), /* @__PURE__ */ jsxs("p", {
|
|
65
64
|
id: passwordHint,
|
|
66
65
|
className: "text-xs text-muted-foreground",
|
|
67
|
-
children: [text("atLeast", 12), passwordOptional && text("withoutPassword")]
|
|
66
|
+
children: [text("atLeast", { length: 12 }), passwordOptional && text("withoutPassword")]
|
|
68
67
|
})]
|
|
69
68
|
}),
|
|
70
69
|
error && /* @__PURE__ */ jsx("p", {
|
|
@@ -27,7 +27,7 @@ const StaffSignInForm = ({ operator, email: givenEmail = "", reason: givenReason
|
|
|
27
27
|
});
|
|
28
28
|
return /* @__PURE__ */ jsx(AuthLayout, {
|
|
29
29
|
title: text("signInAsPerson"),
|
|
30
|
-
description: text("forStaffOf", operator),
|
|
30
|
+
description: text("forStaffOf", { operator }),
|
|
31
31
|
children: /* @__PURE__ */ jsxs("form", {
|
|
32
32
|
className: "flex flex-col gap-4",
|
|
33
33
|
onSubmit: (event) => {
|
|
@@ -62,7 +62,7 @@ const StaffSignInForm = ({ operator, email: givenEmail = "", reason: givenReason
|
|
|
62
62
|
}),
|
|
63
63
|
/* @__PURE__ */ jsx("p", {
|
|
64
64
|
className: "text-xs text-muted-foreground",
|
|
65
|
-
children: text("staffExplanation", operator)
|
|
65
|
+
children: text("staffExplanation", { operator })
|
|
66
66
|
}),
|
|
67
67
|
error && /* @__PURE__ */ jsx("p", {
|
|
68
68
|
role: "alert",
|
|
@@ -74,7 +74,7 @@ const StaffSignInForm = ({ operator, email: givenEmail = "", reason: givenReason
|
|
|
74
74
|
type: "submit",
|
|
75
75
|
loading: busy,
|
|
76
76
|
className: "min-h-10",
|
|
77
|
-
children: text("continueWith", operator)
|
|
77
|
+
children: text("continueWith", { name: operator })
|
|
78
78
|
}),
|
|
79
79
|
/* @__PURE__ */ jsx(Button, {
|
|
80
80
|
variant: "ghost",
|
|
@@ -136,7 +136,7 @@ const CallGuestsPanel = ({ lobby, inCall, guests, linkOf, open, onClose }) => {
|
|
|
136
136
|
})
|
|
137
137
|
}), /* @__PURE__ */ jsxs("span", {
|
|
138
138
|
className: "flex items-center justify-between gap-2 text-xs text-muted-foreground",
|
|
139
|
-
children: [link.expires_at ? text("linkUntil", new Date(link.expires_at).toLocaleString()) : text("linkUntilEnd"), /* @__PURE__ */ jsx(Button, {
|
|
139
|
+
children: [link.expires_at ? text("linkUntil", { until: new Date(link.expires_at).toLocaleString() }) : text("linkUntilEnd"), /* @__PURE__ */ jsx(Button, {
|
|
140
140
|
size: "sm",
|
|
141
141
|
onClick: () => run(() => guests.revoke(link.id)),
|
|
142
142
|
children: text("revoke")
|
|
@@ -14,7 +14,7 @@ const CallLobbyNotice = ({ waiting, guests }) => {
|
|
|
14
14
|
children: [
|
|
15
15
|
/* @__PURE__ */ jsx("span", {
|
|
16
16
|
className: "min-w-0 flex-1 truncate",
|
|
17
|
-
children: refused ? text("guestRefused") : text("waitingGuest", first.name)
|
|
17
|
+
children: refused ? text("guestRefused") : text("waitingGuest", { name: first.name })
|
|
18
18
|
}),
|
|
19
19
|
/* @__PURE__ */ jsx(Button, {
|
|
20
20
|
size: "sm",
|
package/dist/calls/call-mark.js
CHANGED
|
@@ -36,7 +36,7 @@ const CallMark = ({ resource, recordKey, className }) => {
|
|
|
36
36
|
children: "·"
|
|
37
37
|
}),
|
|
38
38
|
/* @__PURE__ */ jsx("span", {
|
|
39
|
-
"aria-label": text("people", count),
|
|
39
|
+
"aria-label": text("people", { count }),
|
|
40
40
|
children: count
|
|
41
41
|
}),
|
|
42
42
|
!joining && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
@@ -10,7 +10,7 @@ const callPeople = ({ members, self, tracks, own, nameOf, speaker, connections,
|
|
|
10
10
|
}, ...members]).map(({ member, name }) => {
|
|
11
11
|
const shared = {
|
|
12
12
|
member,
|
|
13
|
-
name: member.startsWith("guest:") ? text("guestName", name ?? "") : name ?? nameOf(member),
|
|
13
|
+
name: member.startsWith("guest:") ? text("guestName", { name: name ?? "" }) : name ?? nameOf(member),
|
|
14
14
|
...speaker === member && { speaking: true }
|
|
15
15
|
};
|
|
16
16
|
if (member === self) return {
|
package/dist/calls/call-tile.js
CHANGED
|
@@ -13,7 +13,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
*/
|
|
14
14
|
const CallTile = ({ person, screen = false, className }) => {
|
|
15
15
|
const track = screen ? person.screen : person.cameraOff ? void 0 : person.camera;
|
|
16
|
-
const label = screen ? person.self ? text("youAreSharing") : text("sharing", person.name) : person.self ? `${person.name} (${text("you")})` : person.name;
|
|
16
|
+
const label = screen ? person.self ? text("youAreSharing") : text("sharing", { name: person.name }) : person.self ? `${person.name} (${text("you")})` : person.name;
|
|
17
17
|
return /* @__PURE__ */ jsxs("figure", {
|
|
18
18
|
"data-member": person.member,
|
|
19
19
|
"data-speaking": person.speaking ? "true" : void 0,
|
|
@@ -32,7 +32,7 @@ const CallTile = ({ person, screen = false, className }) => {
|
|
|
32
32
|
person.connection === "failed" && !person.self && /* @__PURE__ */ jsx("p", {
|
|
33
33
|
role: "status",
|
|
34
34
|
className: "absolute inset-x-1 top-1 truncate rounded bg-black/70 px-2 py-1 text-center text-xs text-white",
|
|
35
|
-
children: text("cannotConnect", person.name)
|
|
35
|
+
children: text("cannotConnect", { name: person.name })
|
|
36
36
|
}),
|
|
37
37
|
/* @__PURE__ */ jsxs("figcaption", {
|
|
38
38
|
className: "absolute bottom-1.5 left-1.5 flex max-w-[calc(100%-0.75rem)] items-center gap-1 rounded bg-black/60 px-1.5 py-0.5 text-xs text-white",
|
package/dist/calls/messages.js
CHANGED
|
@@ -1,142 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/calls/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
accept: "Accept",
|
|
6
|
-
decline: "Decline",
|
|
7
|
-
startCall: "Start call",
|
|
8
|
-
join: "Join",
|
|
9
|
-
inProgress: "Call in progress",
|
|
10
|
-
people: (count) => count === 1 ? "1 person" : `${count} people`,
|
|
11
|
-
joinCall: "Join call",
|
|
12
|
-
leave: "Leave",
|
|
13
|
-
microphone: "Microphone",
|
|
14
|
-
camera: "Camera",
|
|
15
|
-
shareScreen: "Share screen",
|
|
16
|
-
stopSharing: "Stop sharing",
|
|
17
|
-
muted: "Muted",
|
|
18
|
-
you: "You",
|
|
19
|
-
alone: "You are the only one here",
|
|
20
|
-
connecting: "Joining…",
|
|
21
|
-
reconnecting: "Reconnecting…",
|
|
22
|
-
full: "This call is full",
|
|
23
|
-
removed: "You were removed from this call",
|
|
24
|
-
ended: "The call ended",
|
|
25
|
-
refused: "You cannot join this call",
|
|
26
|
-
unavailable: "The call cannot be reached now. Try again in a moment.",
|
|
27
|
-
callAgain: "Join again",
|
|
28
|
-
noMicrophone: "Your microphone is blocked: allow it in the browser to be heard.",
|
|
29
|
-
noCamera: "Your camera is blocked: allow it in the browser to be seen.",
|
|
30
|
-
noDevices: "No camera or microphone was found.",
|
|
31
|
-
cannotConnect: (name) => `Cannot connect to ${name}`,
|
|
32
|
-
poorConnection: "Poor connection",
|
|
33
|
-
goodConnection: "Good connection",
|
|
34
|
-
sharing: (name) => `${name} is sharing their screen`,
|
|
35
|
-
youAreSharing: "You are sharing your screen",
|
|
36
|
-
speaking: "Speaking",
|
|
37
|
-
preview: "Your camera before you join",
|
|
38
|
-
guestName: (name) => `${name} (guest)`,
|
|
39
|
-
denied: "Nobody in the call let you in",
|
|
40
|
-
waiting: "Waiting for someone in the call to let you in…",
|
|
41
|
-
askToJoin: "Ask to join",
|
|
42
|
-
someone: "Someone in the call",
|
|
43
|
-
guests: "Guests",
|
|
44
|
-
waitingGuest: (name) => `${name} is waiting to join`,
|
|
45
|
-
admit: "Let in",
|
|
46
|
-
deny: "Turn away",
|
|
47
|
-
remove: "Remove",
|
|
48
|
-
revoke: "Revoke",
|
|
49
|
-
newLink: "Create guest link",
|
|
50
|
-
copyLink: "Copy link",
|
|
51
|
-
copied: "Copied",
|
|
52
|
-
guestLinks: "Guest links",
|
|
53
|
-
noLinks: "No guest link yet. Anyone with a link waits here until someone in the call lets them in.",
|
|
54
|
-
inLobby: "Waiting to join",
|
|
55
|
-
guestsInCall: "Guests in the call",
|
|
56
|
-
guestsMaySend: "Guests may send",
|
|
57
|
-
sendAll: "Everything",
|
|
58
|
-
sendCamera: "Camera and mic",
|
|
59
|
-
sendMicrophone: "Mic only",
|
|
60
|
-
linkUntil: (until) => `Until ${until}`,
|
|
61
|
-
linkUntilEnd: "Until the call ends",
|
|
62
|
-
linkLasts: "The link works",
|
|
63
|
-
forAnHour: "For an hour",
|
|
64
|
-
addressesVisible: "In a call between browsers, a guest and the people in the call can see each other’s network addresses.",
|
|
65
|
-
guestRefused: "This could not be done: the guest or link is gone, the call is full, or guest links are off.",
|
|
66
|
-
close: "Close",
|
|
67
|
-
yourName: "Your name",
|
|
68
|
-
guestIntro: "You are invited to a call. Give your name, check your microphone and camera, and someone in the call lets you in.",
|
|
69
|
-
continue: "Continue",
|
|
70
|
-
youLeft: "You left the call"
|
|
71
|
-
},
|
|
72
|
-
nl: {
|
|
73
|
-
accept: "Opnemen",
|
|
74
|
-
decline: "Weigeren",
|
|
75
|
-
startCall: "Gesprek starten",
|
|
76
|
-
join: "Deelnemen",
|
|
77
|
-
inProgress: "Gesprek bezig",
|
|
78
|
-
people: (count) => count === 1 ? "1 persoon" : `${count} personen`,
|
|
79
|
-
joinCall: "Deelnemen aan gesprek",
|
|
80
|
-
leave: "Verlaten",
|
|
81
|
-
microphone: "Microfoon",
|
|
82
|
-
camera: "Camera",
|
|
83
|
-
shareScreen: "Scherm delen",
|
|
84
|
-
stopSharing: "Stoppen met delen",
|
|
85
|
-
muted: "Gedempt",
|
|
86
|
-
you: "Jij",
|
|
87
|
-
alone: "Je bent de enige hier",
|
|
88
|
-
connecting: "Deelnemen…",
|
|
89
|
-
reconnecting: "Opnieuw verbinden…",
|
|
90
|
-
full: "Dit gesprek is vol",
|
|
91
|
-
removed: "Je bent uit dit gesprek gehaald",
|
|
92
|
-
ended: "Het gesprek is afgelopen",
|
|
93
|
-
refused: "Je kunt niet aan dit gesprek deelnemen",
|
|
94
|
-
unavailable: "Het gesprek is nu niet bereikbaar. Probeer het zo opnieuw.",
|
|
95
|
-
callAgain: "Opnieuw deelnemen",
|
|
96
|
-
noMicrophone: "Je microfoon is geblokkeerd: sta hem toe in de browser om gehoord te worden.",
|
|
97
|
-
noCamera: "Je camera is geblokkeerd: sta hem toe in de browser om gezien te worden.",
|
|
98
|
-
noDevices: "Er is geen camera of microfoon gevonden.",
|
|
99
|
-
cannotConnect: (name) => `Kan geen verbinding maken met ${name}`,
|
|
100
|
-
poorConnection: "Slechte verbinding",
|
|
101
|
-
goodConnection: "Goede verbinding",
|
|
102
|
-
sharing: (name) => `${name} deelt het scherm`,
|
|
103
|
-
youAreSharing: "Je deelt je scherm",
|
|
104
|
-
speaking: "Spreekt",
|
|
105
|
-
preview: "Je camera voordat je deelneemt",
|
|
106
|
-
guestName: (name) => `${name} (gast)`,
|
|
107
|
-
denied: "Niemand in het gesprek heeft je binnengelaten",
|
|
108
|
-
waiting: "Wachten tot iemand in het gesprek je binnenlaat…",
|
|
109
|
-
askToJoin: "Vragen om deel te nemen",
|
|
110
|
-
someone: "Iemand in het gesprek",
|
|
111
|
-
guests: "Gasten",
|
|
112
|
-
waitingGuest: (name) => `${name} wacht om deel te nemen`,
|
|
113
|
-
admit: "Binnenlaten",
|
|
114
|
-
deny: "Weigeren",
|
|
115
|
-
remove: "Verwijderen",
|
|
116
|
-
revoke: "Intrekken",
|
|
117
|
-
newLink: "Gastlink maken",
|
|
118
|
-
copyLink: "Link kopiëren",
|
|
119
|
-
copied: "Gekopieerd",
|
|
120
|
-
guestLinks: "Gastlinks",
|
|
121
|
-
noLinks: "Nog geen gastlink. Wie een link heeft, wacht hier tot iemand in het gesprek hem binnenlaat.",
|
|
122
|
-
inLobby: "Wacht om deel te nemen",
|
|
123
|
-
guestsInCall: "Gasten in het gesprek",
|
|
124
|
-
guestsMaySend: "Gasten mogen sturen",
|
|
125
|
-
sendAll: "Alles",
|
|
126
|
-
sendCamera: "Camera en microfoon",
|
|
127
|
-
sendMicrophone: "Alleen geluid",
|
|
128
|
-
linkUntil: (until) => `Tot ${until}`,
|
|
129
|
-
linkUntilEnd: "Tot het gesprek afloopt",
|
|
130
|
-
linkLasts: "De link werkt",
|
|
131
|
-
forAnHour: "Een uur lang",
|
|
132
|
-
addressesVisible: "In een gesprek tussen browsers zien een gast en de mensen in het gesprek elkaars netwerkadressen.",
|
|
133
|
-
guestRefused: "Dit lukte niet: de gast of link is weg, het gesprek is vol, of gastlinks staan uit.",
|
|
134
|
-
close: "Sluiten",
|
|
135
|
-
yourName: "Je naam",
|
|
136
|
-
guestIntro: "Je bent uitgenodigd voor een gesprek. Geef je naam, controleer je microfoon en camera, en iemand in het gesprek laat je binnen.",
|
|
137
|
-
continue: "Verder",
|
|
138
|
-
youLeft: "Je hebt het gesprek verlaten"
|
|
139
|
-
}
|
|
140
|
-
});
|
|
3
|
+
const text = messages("calls");
|
|
141
4
|
//#endregion
|
|
142
5
|
export { text };
|
|
@@ -40,7 +40,10 @@ const CarouselControls = ({ carousel, count, swipe, reveal, className }) => {
|
|
|
40
40
|
"aria-live": "polite",
|
|
41
41
|
children: [/* @__PURE__ */ jsx("span", {
|
|
42
42
|
className: "sr-only",
|
|
43
|
-
children: text("photoOf",
|
|
43
|
+
children: text("photoOf", {
|
|
44
|
+
index: index + 1,
|
|
45
|
+
count
|
|
46
|
+
})
|
|
44
47
|
}), /* @__PURE__ */ jsx("span", {
|
|
45
48
|
className: "flex items-center gap-1 rounded-full bg-background/70 px-1.5 py-1 leading-none",
|
|
46
49
|
"aria-hidden": true,
|
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/carousel/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
photoOf: (index, count) => `Photo ${index} of ${count}`,
|
|
6
|
-
previousPhoto: "Previous photo",
|
|
7
|
-
nextPhoto: "Next photo"
|
|
8
|
-
},
|
|
9
|
-
nl: {
|
|
10
|
-
photoOf: (index, count) => `Foto ${index} van ${count}`,
|
|
11
|
-
previousPhoto: "Vorige foto",
|
|
12
|
-
nextPhoto: "Volgende foto"
|
|
13
|
-
}
|
|
14
|
-
});
|
|
3
|
+
const text = messages("carousel");
|
|
15
4
|
//#endregion
|
|
16
5
|
export { text };
|
package/dist/chat/messages.js
CHANGED
|
@@ -1,22 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/chat/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
message: "Message",
|
|
6
|
-
send: "Send",
|
|
7
|
-
today: "Today",
|
|
8
|
-
yesterday: "Yesterday",
|
|
9
|
-
newMessages: "New messages",
|
|
10
|
-
loadEarlier: "Load earlier messages"
|
|
11
|
-
},
|
|
12
|
-
nl: {
|
|
13
|
-
message: "Bericht",
|
|
14
|
-
send: "Versturen",
|
|
15
|
-
today: "Vandaag",
|
|
16
|
-
yesterday: "Gisteren",
|
|
17
|
-
newMessages: "Nieuwe berichten",
|
|
18
|
-
loadEarlier: "Eerdere berichten laden"
|
|
19
|
-
}
|
|
20
|
-
});
|
|
3
|
+
const text = messages("chat");
|
|
21
4
|
//#endregion
|
|
22
5
|
export { text };
|
|
@@ -37,7 +37,7 @@ const CompactTable = ({ columns, rows, caption, truncated, className }) => /* @_
|
|
|
37
37
|
}),
|
|
38
38
|
/* @__PURE__ */ jsxs("footer", {
|
|
39
39
|
className: "border-t border-border px-3 py-1.5 text-[11px] text-muted-foreground",
|
|
40
|
-
children: [text("rows", rows.length), truncated && text("cutOff")]
|
|
40
|
+
children: [text("rows", { count: rows.length }), truncated && text("cutOff")]
|
|
41
41
|
})
|
|
42
42
|
]
|
|
43
43
|
});
|