@protobase/ui 0.66.6 → 0.66.7
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/blocks/password-block.js +1 -1
- package/dist/account/change-email-dialog.js +5 -1
- package/dist/account/password-change-dialog.js +4 -11
- package/dist/account/password-section.js +2 -2
- package/dist/app/error-reporting.js +8 -3
- package/dist/app/field-types/field-type-cells.js +2 -1
- package/dist/auth/email-code-form.js +8 -4
- package/dist/auth/sign-up-code-form.js +8 -4
- package/dist/auth/two-factor-form.js +2 -1
- package/dist/locale/en.js +5 -4
- package/dist/locale/nl.js +5 -4
- package/dist/package.js +1 -1
- package/dist/shell/assets/app-BZ_OcfpZ.js +8 -0
- package/dist/shell/assets/calls-uuSb7D6L.js +2 -0
- package/dist/shell/assets/cn-B1sdg8aY.js +2 -0
- package/dist/shell/assets/export-worker-CcXp0ZdG.js +15 -0
- package/dist/shell/assets/index-B2M0LDVQ.js +2 -0
- package/dist/shell/assets/maplibre-DfXLXH-O.js +815 -0
- package/dist/shell/assets/{markdown-content-DOuciTNH.js → markdown-content-L1MZShpP.js} +2 -2
- package/dist/shell/assets/parse-worker-CUJ2o-AL.js +35 -0
- package/dist/shell/assets/preload-helper-Ru-oozfe.js +2 -0
- package/dist/shell/assets/{prod-YZ9ZMG1O.js → prod-DSoLg5cQ.js} +3 -3
- package/dist/shell/assets/{react-CR5VJ85Q.js → react-CqoBMk9d.js} +2 -2
- package/dist/shell/assets/record-map-Cocva8wo.js +2 -0
- package/dist/shell/assets/records-map-B1PDo3PS.js +2 -0
- package/dist/shell/assets/rolldown-runtime-DXfiGoCU.js +1 -0
- package/dist/shell/assets/shared-protobase-ui-V8ARYzmY.js +2 -0
- package/dist/shell/assets/shared-react-CJlT6JLM.js +1 -0
- package/dist/shell/assets/shared-react-dom-untDBgp5.js +1 -0
- package/dist/shell/assets/shared-react-jsx-runtime-DGG2WguE.js +1 -0
- package/dist/shell/assets/{vendor-Kvdo8Jrw.js → vendor-qs9zUu9T.js} +2 -2
- package/dist/shell/index.html +8 -8
- package/dist/shell/protobase.shell.json +2 -2
- package/dist/shell/protobase.sw.js +2 -2
- package/dist/shell-source-maps/assets/app-BZ_OcfpZ.js.map +1 -0
- package/dist/shell-source-maps/assets/calls-uuSb7D6L.js.map +1 -0
- package/dist/shell-source-maps/assets/cn-B1sdg8aY.js.map +1 -0
- package/dist/shell-source-maps/assets/export-worker-CcXp0ZdG.js.map +1 -0
- package/dist/shell-source-maps/assets/index-B2M0LDVQ.js.map +1 -0
- package/dist/shell-source-maps/assets/maplibre-DfXLXH-O.js.map +1 -0
- package/dist/shell-source-maps/assets/{markdown-content-DOuciTNH.js.map → markdown-content-L1MZShpP.js.map} +1 -1
- package/dist/shell-source-maps/assets/parse-worker-CUJ2o-AL.js.map +1 -0
- package/dist/shell-source-maps/assets/preload-helper-Ru-oozfe.js.map +1 -0
- package/dist/shell-source-maps/assets/prod-DSoLg5cQ.js.map +1 -0
- package/dist/shell-source-maps/assets/react-CqoBMk9d.js.map +1 -0
- package/dist/shell-source-maps/assets/record-map-Cocva8wo.js.map +1 -0
- package/dist/shell-source-maps/assets/records-map-B1PDo3PS.js.map +1 -0
- package/dist/shell-source-maps/assets/shared-protobase-ui-V8ARYzmY.js.map +1 -0
- package/dist/shell-source-maps/assets/{vendor-Kvdo8Jrw.js.map → vendor-qs9zUu9T.js.map} +1 -1
- package/package.json +4 -4
- package/dist/shell/assets/app-D1iOLNRp.js +0 -8
- package/dist/shell/assets/calls-CMM47K7J.js +0 -2
- package/dist/shell/assets/cn-Bi0ZEjD9.js +0 -2
- package/dist/shell/assets/export-worker-BKuC4P2E.js +0 -15
- package/dist/shell/assets/index-DYuB1IqS.js +0 -2
- package/dist/shell/assets/maplibre-lc2A-_P4.js +0 -815
- package/dist/shell/assets/parse-worker-BzLD2jKf.js +0 -35
- package/dist/shell/assets/preload-helper-DedkISGJ.js +0 -2
- package/dist/shell/assets/record-map-CupIwJyD.js +0 -2
- package/dist/shell/assets/records-map-Cs38aEuP.js +0 -2
- package/dist/shell/assets/rolldown-runtime-hePW80VL.js +0 -1
- package/dist/shell/assets/shared-protobase-ui-CMNP9cBW.js +0 -2
- package/dist/shell/assets/shared-react-CuZpzdyh.js +0 -1
- package/dist/shell/assets/shared-react-dom-BNlY7-7i.js +0 -1
- package/dist/shell/assets/shared-react-jsx-runtime-Csr2Kx2w.js +0 -1
- package/dist/shell-source-maps/assets/app-D1iOLNRp.js.map +0 -1
- package/dist/shell-source-maps/assets/calls-CMM47K7J.js.map +0 -1
- package/dist/shell-source-maps/assets/cn-Bi0ZEjD9.js.map +0 -1
- package/dist/shell-source-maps/assets/export-worker-BKuC4P2E.js.map +0 -1
- package/dist/shell-source-maps/assets/index-DYuB1IqS.js.map +0 -1
- package/dist/shell-source-maps/assets/maplibre-lc2A-_P4.js.map +0 -1
- package/dist/shell-source-maps/assets/parse-worker-BzLD2jKf.js.map +0 -1
- package/dist/shell-source-maps/assets/preload-helper-DedkISGJ.js.map +0 -1
- package/dist/shell-source-maps/assets/prod-YZ9ZMG1O.js.map +0 -1
- package/dist/shell-source-maps/assets/react-CR5VJ85Q.js.map +0 -1
- package/dist/shell-source-maps/assets/record-map-CupIwJyD.js.map +0 -1
- package/dist/shell-source-maps/assets/records-map-Cs38aEuP.js.map +0 -1
- package/dist/shell-source-maps/assets/shared-protobase-ui-CMNP9cBW.js.map +0 -1
|
@@ -19,7 +19,7 @@ const PasswordBlock = () => {
|
|
|
19
19
|
rule: methods.policy.password,
|
|
20
20
|
hasPassword: methods.account.password,
|
|
21
21
|
staff: state.kind === "signed-in" && Boolean(state.staff),
|
|
22
|
-
onChange: (current, next
|
|
22
|
+
onChange: (current, next) => account.changePassword(current, next).then(reload),
|
|
23
23
|
onSet: (next) => account.setPassword(next).then(reload)
|
|
24
24
|
});
|
|
25
25
|
};
|
|
@@ -6,6 +6,7 @@ import { OtpInput } from "../primitives/otp-input.js";
|
|
|
6
6
|
import { SectionError } from "./account-section.js";
|
|
7
7
|
import { authMessage } from "../auth/auth-messages.js";
|
|
8
8
|
import { useState } from "react";
|
|
9
|
+
import { emailCodeMinutes } from "@protobase/schema/internal";
|
|
9
10
|
import { AuthError } from "@protobase/client";
|
|
10
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
12
|
//#region src/account/change-email-dialog.tsx
|
|
@@ -64,7 +65,10 @@ const ChangeEmailDialog = ({ email, change, onDone, onClose }) => {
|
|
|
64
65
|
});
|
|
65
66
|
return /* @__PURE__ */ jsxs(Dialog, {
|
|
66
67
|
title: text("changeEmail"),
|
|
67
|
-
description: text("codeSentTo", {
|
|
68
|
+
description: text("codeSentTo", {
|
|
69
|
+
email: sentTo,
|
|
70
|
+
minutes: emailCodeMinutes
|
|
71
|
+
}),
|
|
68
72
|
onClose,
|
|
69
73
|
actions: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Button, {
|
|
70
74
|
variant: "ghost",
|
|
@@ -2,7 +2,6 @@ import { text } from "./messages.js";
|
|
|
2
2
|
import { Button } from "../primitives/button.js";
|
|
3
3
|
import { Dialog } from "../primitives/dialog.js";
|
|
4
4
|
import { Input } from "../primitives/input.js";
|
|
5
|
-
import { Checkbox } from "../primitives/checkbox.js";
|
|
6
5
|
import { SectionError } from "./account-section.js";
|
|
7
6
|
import { authMessage } from "../auth/auth-messages.js";
|
|
8
7
|
import { useId, useState } from "react";
|
|
@@ -23,7 +22,6 @@ const PasswordChangeDialog = ({ hasPassword, onSave, onClose }) => {
|
|
|
23
22
|
const [current, setCurrent] = useState("");
|
|
24
23
|
const [next, setNext] = useState("");
|
|
25
24
|
const [repeat, setRepeat] = useState("");
|
|
26
|
-
const [signOutOthers, setSignOutOthers] = useState(false);
|
|
27
25
|
const [busy, setBusy] = useState(false);
|
|
28
26
|
const [error, setError] = useState();
|
|
29
27
|
const formId = useId();
|
|
@@ -36,8 +34,7 @@ const PasswordChangeDialog = ({ hasPassword, onSave, onClose }) => {
|
|
|
36
34
|
try {
|
|
37
35
|
await onSave({
|
|
38
36
|
current,
|
|
39
|
-
next
|
|
40
|
-
signOutOthers
|
|
37
|
+
next
|
|
41
38
|
});
|
|
42
39
|
} catch (failure) {
|
|
43
40
|
if (!(failure instanceof AuthError)) throw failure;
|
|
@@ -102,13 +99,9 @@ const PasswordChangeDialog = ({ hasPassword, onSave, onClose }) => {
|
|
|
102
99
|
onChange: (event) => setRepeat(event.target.value)
|
|
103
100
|
})]
|
|
104
101
|
}),
|
|
105
|
-
hasPassword && /* @__PURE__ */
|
|
106
|
-
className: "
|
|
107
|
-
children:
|
|
108
|
-
checked: signOutOthers,
|
|
109
|
-
onChange: setSignOutOthers,
|
|
110
|
-
label: text("signOutOthers")
|
|
111
|
-
}), text("signOutOthers")]
|
|
102
|
+
hasPassword && /* @__PURE__ */ jsx("p", {
|
|
103
|
+
className: "text-muted-foreground",
|
|
104
|
+
children: text("changeSignsOutOthers")
|
|
112
105
|
}),
|
|
113
106
|
/* @__PURE__ */ jsx(SectionError, { message: error })
|
|
114
107
|
]
|
|
@@ -38,8 +38,8 @@ const PasswordSection = ({ rule, hasPassword, staff, onChange, onSet }) => {
|
|
|
38
38
|
editing && /* @__PURE__ */ jsx(PasswordChangeDialog, {
|
|
39
39
|
hasPassword,
|
|
40
40
|
onClose: () => setEditing(false),
|
|
41
|
-
onSave: async ({ current, next
|
|
42
|
-
await (hasPassword ? onChange(current, next
|
|
41
|
+
onSave: async ({ current, next }) => {
|
|
42
|
+
await (hasPassword ? onChange(current, next) : onSet(next));
|
|
43
43
|
setEditing(false);
|
|
44
44
|
setSaved(true);
|
|
45
45
|
}
|
|
@@ -1,18 +1,23 @@
|
|
|
1
|
-
import { redactSecrets } from "@protobase/schema/internal";
|
|
1
|
+
import { firstPartyCodeKey, redactSecrets } from "@protobase/schema/internal";
|
|
2
2
|
//#region src/app/error-reporting.ts
|
|
3
3
|
let loading;
|
|
4
4
|
let capture;
|
|
5
5
|
/**
|
|
6
6
|
* Sends the app's uncaught errors to the error tracker `/meta` names, from the first call on; the Sentry SDK loads only
|
|
7
7
|
* then, so an app without a DSN never loads it. Errors only, with no performance tracing and no session tracking,
|
|
8
|
-
* every event without its secrets (see `redactSecrets`).
|
|
8
|
+
* every event without its secrets (see `redactSecrets`). An error none of whose stack frames is in the app's own scripts,
|
|
9
|
+
* which their build marks (see `firstPartyCodeKey`), is not the app's and goes unreported; `protobase dev` serves no
|
|
10
|
+
* built scripts, so there every error is reported.
|
|
9
11
|
*/
|
|
10
12
|
const startErrorReporting = ({ dsn, environment }) => {
|
|
11
13
|
loading ??= import("@sentry/browser").then((sentry) => {
|
|
12
14
|
sentry.init({
|
|
13
15
|
dsn,
|
|
14
16
|
...environment && { environment },
|
|
15
|
-
integrations: (defaults) => defaults.filter((integration) => integration.name !== "BrowserSession"),
|
|
17
|
+
integrations: (defaults) => [...defaults.filter((integration) => integration.name !== "BrowserSession"), ...import.meta.env?.DEV ? [] : [sentry.thirdPartyErrorFilterIntegration({
|
|
18
|
+
filterKeys: [firstPartyCodeKey],
|
|
19
|
+
behaviour: "drop-error-if-exclusively-contains-third-party-frames"
|
|
20
|
+
})]],
|
|
16
21
|
beforeSend: (event) => redactSecrets(event)
|
|
17
22
|
});
|
|
18
23
|
capture = (error, componentStack) => sentry.captureException(error, componentStack ? { contexts: { react: { componentStack } } } : void 0);
|
|
@@ -3,6 +3,7 @@ import { WidgetPart } from "./widget-part.js";
|
|
|
3
3
|
import { renderCell } from "../../data-grid/cells.js";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region src/app/field-types/field-type-cells.tsx
|
|
6
|
+
const apiValue = (field, value) => field.type === "relation" && typeof value === "object" && value !== null && "id" in value ? value.id : value;
|
|
6
7
|
/**
|
|
7
8
|
* The list's columns, where the view shows a field with a field type drawn by the field type's cell (else its
|
|
8
9
|
* display), with the built-in cell as its fallback.
|
|
@@ -17,7 +18,7 @@ const withFieldTypeCells = (columns, model, view, fieldTypes) => columns.map((sp
|
|
|
17
18
|
shown,
|
|
18
19
|
part: "cell",
|
|
19
20
|
field,
|
|
20
|
-
value: row[spec.id],
|
|
21
|
+
value: apiValue(field, row[spec.id]),
|
|
21
22
|
fallback: renderCell(spec, spec.value ? spec.value(row) : row[spec.id])
|
|
22
23
|
})
|
|
23
24
|
};
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { text } from "./messages.js";
|
|
2
2
|
import { CodeForm } from "./code-form.js";
|
|
3
|
+
import { emailCodeMinutes } from "@protobase/schema/internal";
|
|
3
4
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/auth/email-code-form.tsx
|
|
5
6
|
/** The second half of signing in with an emailed code: the code from the email. */
|
|
6
7
|
const EmailCodeForm = ({ email, onBack, ...rest }) => /* @__PURE__ */ jsx(CodeForm, {
|
|
7
8
|
title: text("checkEmail"),
|
|
8
9
|
description: text("signInCodeDescription"),
|
|
9
|
-
explanation: /* @__PURE__ */ jsx(Fragment, { children: text.rich("signInCodeSent", {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
explanation: /* @__PURE__ */ jsx(Fragment, { children: text.rich("signInCodeSent", {
|
|
11
|
+
email: /* @__PURE__ */ jsx("span", {
|
|
12
|
+
className: "font-medium text-foreground",
|
|
13
|
+
children: email
|
|
14
|
+
}),
|
|
15
|
+
minutes: emailCodeMinutes
|
|
16
|
+
}) }),
|
|
13
17
|
submitLabel: text("signIn"),
|
|
14
18
|
onChangeAddress: onBack,
|
|
15
19
|
changeAddressLabel: text("backToSignIn"),
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { text } from "./messages.js";
|
|
2
2
|
import { CodeForm } from "./code-form.js";
|
|
3
|
+
import { emailCodeMinutes } from "@protobase/schema/internal";
|
|
3
4
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/auth/sign-up-code-form.tsx
|
|
5
6
|
/** The second step of making an account: the emailed code on its own, before the name and password. */
|
|
6
7
|
const SignUpCodeForm = ({ email, onBack, ...rest }) => /* @__PURE__ */ jsx(CodeForm, {
|
|
7
8
|
title: text("checkEmail"),
|
|
8
9
|
description: text("signUpCodeDescription"),
|
|
9
|
-
explanation: /* @__PURE__ */ jsx(Fragment, { children: text.rich("signUpCodeSent", {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
explanation: /* @__PURE__ */ jsx(Fragment, { children: text.rich("signUpCodeSent", {
|
|
11
|
+
email: /* @__PURE__ */ jsx("span", {
|
|
12
|
+
className: "font-medium text-foreground",
|
|
13
|
+
children: email
|
|
14
|
+
}),
|
|
15
|
+
minutes: emailCodeMinutes
|
|
16
|
+
}) }),
|
|
13
17
|
submitLabel: text("continue"),
|
|
14
18
|
onChangeAddress: onBack,
|
|
15
19
|
changeAddressLabel: text("useAnotherAddress"),
|
|
@@ -5,6 +5,7 @@ import { OtpInput } from "../primitives/otp-input.js";
|
|
|
5
5
|
import { Checkbox } from "../primitives/checkbox.js";
|
|
6
6
|
import { AuthLayout } from "./auth-layout.js";
|
|
7
7
|
import { useState } from "react";
|
|
8
|
+
import { emailCodeMinutes } from "@protobase/schema/internal";
|
|
8
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
10
|
//#region src/auth/two-factor-form.tsx
|
|
10
11
|
const instructions = {
|
|
@@ -59,7 +60,7 @@ const TwoFactorForm = ({ methods, onVerify, onSendCode, onBack, busy, error, cod
|
|
|
59
60
|
children: [
|
|
60
61
|
/* @__PURE__ */ jsx("p", {
|
|
61
62
|
className: "text-muted-foreground",
|
|
62
|
-
children: text(instructions[step])
|
|
63
|
+
children: text(instructions[step], { minutes: emailCodeMinutes })
|
|
63
64
|
}),
|
|
64
65
|
/* @__PURE__ */ jsxs("label", {
|
|
65
66
|
className: "flex flex-col gap-1.5 font-medium",
|
package/dist/locale/en.js
CHANGED
|
@@ -16,7 +16,7 @@ var en_default = {
|
|
|
16
16
|
"changeEmailDescription": "We email a code to the new address. Once you enter it here, you sign in with that address.",
|
|
17
17
|
"newEmail": "New email",
|
|
18
18
|
"sendCode": "Send code",
|
|
19
|
-
"codeSentTo": "Enter the 6-digit code we emailed to {email}. It works for
|
|
19
|
+
"codeSentTo": "Enter the 6-digit code we emailed to {email}. It works for {minutes, plural, one {# minute} other {# minutes}}. No code comes when another account has the address.",
|
|
20
20
|
"code": "Code",
|
|
21
21
|
"otherAddress": "Use another address",
|
|
22
22
|
"theProvider": "the provider",
|
|
@@ -39,6 +39,7 @@ var en_default = {
|
|
|
39
39
|
"currentPassword": "Current password",
|
|
40
40
|
"newPassword": "New password",
|
|
41
41
|
"repeatPassword": "Repeat new password",
|
|
42
|
+
"changeSignsOutOthers": "Saving signs out your other devices.",
|
|
42
43
|
"atLeast": "At least {length} characters.",
|
|
43
44
|
"useAtLeast": "Use at least {length} characters.",
|
|
44
45
|
"passwordTooLong": "That password is too long.",
|
|
@@ -885,9 +886,9 @@ var en_default = {
|
|
|
885
886
|
"sendNewCode": "Send a new code",
|
|
886
887
|
"sendNewCodeIn": "Send a new code in {seconds}s",
|
|
887
888
|
"signInCodeDescription": "Enter the code we sent to sign in.",
|
|
888
|
-
"signInCodeSent": "If {email} has an account, a 6-digit code is on its way. It works for
|
|
889
|
+
"signInCodeSent": "If {email} has an account, a 6-digit code is on its way. It works for {minutes, plural, one {# minute} other {# minutes}}, once.",
|
|
889
890
|
"signUpCodeDescription": "Enter the code we sent to create your account.",
|
|
890
|
-
"signUpCodeSent": "A 6-digit code is on its way to {email}. It works for
|
|
891
|
+
"signUpCodeSent": "A 6-digit code is on its way to {email}. It works for {minutes, plural, one {# minute} other {# minutes}}, once. If the address has an account already, the email says so instead.",
|
|
891
892
|
"noAdminTitle": "No admin yet",
|
|
892
893
|
"noAdminDescription": "This Protobase has no users to sign in with.",
|
|
893
894
|
"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.",
|
|
@@ -951,7 +952,7 @@ var en_default = {
|
|
|
951
952
|
"reasonExample": "Ticket 4211: the invoice totals look wrong",
|
|
952
953
|
"staffExplanation": "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.",
|
|
953
954
|
"totpInstruction": "Enter the 6-digit code from your authenticator app.",
|
|
954
|
-
"otpInstruction": "Enter the 6-digit code we emailed you. It works for
|
|
955
|
+
"otpInstruction": "Enter the 6-digit code we emailed you. It works for {minutes, plural, one {# minute} other {# minutes}}.",
|
|
955
956
|
"backupInstruction": "Enter one of the backup codes you saved when you set up the authenticator app. Each works once.",
|
|
956
957
|
"twoFactorTitle": "Two-factor authentication",
|
|
957
958
|
"twoFactorDescription": "One more step to sign in.",
|
package/dist/locale/nl.js
CHANGED
|
@@ -16,7 +16,7 @@ var nl_default = {
|
|
|
16
16
|
"changeEmailDescription": "We mailen een code naar het nieuwe adres. Zodra je die hier invult, log je in met dat adres.",
|
|
17
17
|
"newEmail": "Nieuw e-mailadres",
|
|
18
18
|
"sendCode": "Code versturen",
|
|
19
|
-
"codeSentTo": "Vul de code van 6 cijfers in die we naar {email} mailden. Die werkt
|
|
19
|
+
"codeSentTo": "Vul de code van 6 cijfers in die we naar {email} mailden. Die werkt {minutes, plural, one {# minuut} other {# minuten}}. Heeft een ander account het adres, dan komt er geen code.",
|
|
20
20
|
"code": "Code",
|
|
21
21
|
"otherAddress": "Ander adres gebruiken",
|
|
22
22
|
"theProvider": "de provider",
|
|
@@ -38,6 +38,7 @@ var nl_default = {
|
|
|
38
38
|
"setPassword": "Wachtwoord instellen",
|
|
39
39
|
"currentPassword": "Huidig wachtwoord",
|
|
40
40
|
"newPassword": "Nieuw wachtwoord",
|
|
41
|
+
"changeSignsOutOthers": "Opslaan logt je uit op je andere apparaten.",
|
|
41
42
|
"repeatPassword": "Nieuw wachtwoord herhalen",
|
|
42
43
|
"atLeast": "Minstens {length} tekens.",
|
|
43
44
|
"useAtLeast": "Gebruik minstens {length} tekens.",
|
|
@@ -885,9 +886,9 @@ var nl_default = {
|
|
|
885
886
|
"sendNewCode": "Nieuwe code sturen",
|
|
886
887
|
"sendNewCodeIn": "Nieuwe code sturen over {seconds}s",
|
|
887
888
|
"signInCodeDescription": "Vul de code in die we stuurden om in te loggen.",
|
|
888
|
-
"signInCodeSent": "Als {email} een account heeft, is er een code van 6 cijfers onderweg. Die werkt
|
|
889
|
+
"signInCodeSent": "Als {email} een account heeft, is er een code van 6 cijfers onderweg. Die werkt {minutes, plural, one {# minuut} other {# minuten}}, één keer.",
|
|
889
890
|
"signUpCodeDescription": "Vul de code in die we stuurden om je account te maken.",
|
|
890
|
-
"signUpCodeSent": "Er is een code van 6 cijfers onderweg naar {email}. Die werkt
|
|
891
|
+
"signUpCodeSent": "Er is een code van 6 cijfers onderweg naar {email}. Die werkt {minutes, plural, one {# minuut} other {# minuten}}, één keer. Heeft het adres al een account, dan staat dat in de e-mail.",
|
|
891
892
|
"noAdminTitle": "Nog geen beheerder",
|
|
892
893
|
"noAdminDescription": "Deze Protobase heeft geen gebruikers om mee in te loggen.",
|
|
893
894
|
"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.",
|
|
@@ -951,7 +952,7 @@ var nl_default = {
|
|
|
951
952
|
"reasonExample": "Ticket 4211: de factuurtotalen kloppen niet",
|
|
952
953
|
"staffExplanation": "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.",
|
|
953
954
|
"totpInstruction": "Vul de code van 6 cijfers uit je authenticator-app in.",
|
|
954
|
-
"otpInstruction": "Vul de code van 6 cijfers in die we je mailden. Die werkt
|
|
955
|
+
"otpInstruction": "Vul de code van 6 cijfers in die we je mailden. Die werkt {minutes, plural, one {# minuut} other {# minuten}}.",
|
|
955
956
|
"backupInstruction": "Vul een van de back-upcodes in die je bewaarde toen je de authenticator-app instelde. Elke code werkt één keer.",
|
|
956
957
|
"twoFactorTitle": "Tweestapsverificatie",
|
|
957
958
|
"twoFactorDescription": "Nog één stap om in te loggen.",
|
package/dist/package.js
CHANGED