@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
|
@@ -1,18 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/compact-table/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
table: "Table",
|
|
6
|
-
noRows: "No rows.",
|
|
7
|
-
rows: (count) => `${count} ${count === 1 ? "row" : "rows"}`,
|
|
8
|
-
cutOff: ", cut off at the limit"
|
|
9
|
-
},
|
|
10
|
-
nl: {
|
|
11
|
-
table: "Tabel",
|
|
12
|
-
noRows: "Geen rijen.",
|
|
13
|
-
rows: (count) => `${count} ${count === 1 ? "rij" : "rijen"}`,
|
|
14
|
-
cutOff: ", afgekapt bij de limiet"
|
|
15
|
-
}
|
|
16
|
-
});
|
|
3
|
+
const text = messages("compact-table");
|
|
17
4
|
//#endregion
|
|
18
5
|
export { text };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { formatDate, formatDateTime, formatRelativeTime } from "../format/date.js";
|
|
2
2
|
import { formatInt, formatPercent, formatSigned } from "../format/number.js";
|
|
3
3
|
import { formatMoney } from "../format/money.js";
|
|
4
|
-
import { userById } from "../mocks/users.js";
|
|
5
4
|
import { fileShown } from "../live/file-values.js";
|
|
6
5
|
import { text } from "./messages.js";
|
|
7
6
|
import { enumLabel } from "@protobase/schema";
|
|
@@ -14,17 +13,19 @@ const cellText = (spec, value) => {
|
|
|
14
13
|
switch (spec.kind) {
|
|
15
14
|
case "text":
|
|
16
15
|
case "id": return String(value);
|
|
17
|
-
case "money":
|
|
16
|
+
case "money":
|
|
17
|
+
if (spec.currency === void 0) throw new Error(`Money column "${spec.id}" has no currency`);
|
|
18
|
+
return `${formatMoney(Number(value), spec.currency, spec.decimals)}${spec.suffix ?? ""}`;
|
|
18
19
|
case "date": return formatDate(Number(value));
|
|
19
20
|
case "datetime": return spec.relative ? formatRelativeTime(Math.round((Date.now() - Number(value)) / 1e3)) : formatDateTime(Number(value));
|
|
20
|
-
case "number": return `${formatInt(Number(value))}${spec.suffix ?? ""}`;
|
|
21
|
-
case "signed": return `${formatSigned(Number(value))}${spec.suffix ?? ""}`;
|
|
21
|
+
case "number": return `${spec.prefix ?? ""}${formatInt(Number(value))}${spec.suffix ?? ""}`;
|
|
22
|
+
case "signed": return `${spec.prefix ?? ""}${formatSigned(Number(value))}${spec.suffix ?? ""}`;
|
|
22
23
|
case "percent": return Number(value) === 0 ? "—" : formatPercent(Number(value));
|
|
23
24
|
case "status": return enumLabel(String(value), spec.labels);
|
|
24
25
|
case "relation": return relationLabel(value);
|
|
25
26
|
case "boolean": return value ? void 0 : text("no");
|
|
26
27
|
case "file": return fileShown(value)?.name ?? "—";
|
|
27
|
-
case "user": return
|
|
28
|
+
case "user": return spec.users?.(String(value))?.name ?? String(value);
|
|
28
29
|
}
|
|
29
30
|
};
|
|
30
31
|
//#endregion
|
package/dist/data-grid/cells.js
CHANGED
|
@@ -3,13 +3,12 @@ import { Badge } from "../primitives/badge.js";
|
|
|
3
3
|
import { Avatar } from "../primitives/avatar.js";
|
|
4
4
|
import { viewerZone, zoneLabel } from "../format/zone.js";
|
|
5
5
|
import { formatDateTime } from "../format/date.js";
|
|
6
|
-
import { userById } from "../mocks/users.js";
|
|
7
6
|
import { fileShown, shownImage } from "../live/file-values.js";
|
|
8
7
|
import { text } from "./messages.js";
|
|
9
8
|
import { cellText } from "./cell-text.js";
|
|
9
|
+
import { valueColor } from "../live/value-color.js";
|
|
10
10
|
import { FileImage } from "../live/file-image.js";
|
|
11
11
|
import { ContactLink } from "../live/contact-link.js";
|
|
12
|
-
import { valueColor } from "../live/value-color.js";
|
|
13
12
|
import { TruncatedText } from "./truncated-text.js";
|
|
14
13
|
import { Check, Paperclip } from "lucide-react";
|
|
15
14
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -41,7 +40,7 @@ const renderCell = (spec, value) => {
|
|
|
41
40
|
});
|
|
42
41
|
case "datetime": return /* @__PURE__ */ jsx("span", {
|
|
43
42
|
className: "tabular-nums text-muted-foreground",
|
|
44
|
-
title: spec.relative ? formatDateTime(Number(value)) : text("shownIn", zoneLabel(Number(value), viewerZone())),
|
|
43
|
+
title: spec.relative ? formatDateTime(Number(value)) : text("shownIn", { zone: zoneLabel(Number(value), viewerZone()) }),
|
|
45
44
|
children: text$1
|
|
46
45
|
});
|
|
47
46
|
case "number": return /* @__PURE__ */ jsx("span", {
|
|
@@ -93,7 +92,11 @@ const renderCell = (spec, value) => {
|
|
|
93
92
|
});
|
|
94
93
|
}
|
|
95
94
|
case "user": {
|
|
96
|
-
const user =
|
|
95
|
+
const user = spec.users?.(String(value));
|
|
96
|
+
if (!user) return /* @__PURE__ */ jsx(TruncatedText, {
|
|
97
|
+
text: text$1,
|
|
98
|
+
className: "text-muted-foreground"
|
|
99
|
+
});
|
|
97
100
|
return /* @__PURE__ */ jsxs("span", {
|
|
98
101
|
className: "inline-flex items-center gap-2 truncate",
|
|
99
102
|
children: [/* @__PURE__ */ jsx(Avatar, {
|
|
@@ -12,7 +12,7 @@ const GridFooter = ({ total, selectedCount, bulkActions = [], className }) => /*
|
|
|
12
12
|
formatApproxRows(total),
|
|
13
13
|
selectedCount > 0 && /* @__PURE__ */ jsx("span", {
|
|
14
14
|
className: "ml-3 font-medium text-primary-text",
|
|
15
|
-
children: text("selected", formatInt(selectedCount))
|
|
15
|
+
children: text("selected", { count: formatInt(selectedCount) })
|
|
16
16
|
}),
|
|
17
17
|
selectedCount > 0 && bulkActions.map((action) => /* @__PURE__ */ jsx("button", {
|
|
18
18
|
type: "button",
|
|
@@ -28,7 +28,7 @@ const Gutter = ({ width, index, selectable, selected, onToggle, edge }) => /* @_
|
|
|
28
28
|
style: { width },
|
|
29
29
|
children: [selectable && /* @__PURE__ */ jsx(Checkbox, {
|
|
30
30
|
checked: Boolean(selected),
|
|
31
|
-
label: text("selectRow", index + 1)
|
|
31
|
+
label: text("selectRow", { row: index + 1 })
|
|
32
32
|
}), width > 40 && /* @__PURE__ */ jsx("span", {
|
|
33
33
|
className: "min-w-6 text-right text-[11px] tabular-nums text-faint-foreground",
|
|
34
34
|
children: formatInt(index + 1)
|
|
@@ -18,7 +18,7 @@ const HeaderMenu = ({ header, pinned, sortable, onTogglePin }) => {
|
|
|
18
18
|
children: [/* @__PURE__ */ jsx("button", {
|
|
19
19
|
ref: button,
|
|
20
20
|
type: "button",
|
|
21
|
-
"aria-label": text("columnMenu", header),
|
|
21
|
+
"aria-label": text("columnMenu", { header }),
|
|
22
22
|
"aria-haspopup": "menu",
|
|
23
23
|
"aria-expanded": open,
|
|
24
24
|
onClick: () => setOpen(!open),
|
|
@@ -1,52 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/data-grid/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
unsortable: "This column can't be sorted",
|
|
6
|
-
columnMenu: (header) => `${header} column menu`,
|
|
7
|
-
unpin: "Unpin",
|
|
8
|
-
pinToLeft: "Pin to left",
|
|
9
|
-
resizeColumn: (header) => `Resize ${header} column`,
|
|
10
|
-
selected: (count) => `${count} selected`,
|
|
11
|
-
no: "No",
|
|
12
|
-
shownIn: (zone) => `Shown in ${zone}`,
|
|
13
|
-
new: "New",
|
|
14
|
-
clearSelection: "Clear selection",
|
|
15
|
-
noRowsSelected: "No rows selected",
|
|
16
|
-
selectRow: (row) => `Select row ${row}`,
|
|
17
|
-
rowActions: "Row actions",
|
|
18
|
-
row: "row",
|
|
19
|
-
move: (label) => `Move ${label}`,
|
|
20
|
-
reorderInstructions: "To move a row, press Space on its handle, move it with the up and down arrow keys, and press Space again to drop it there. Escape puts it back.",
|
|
21
|
-
pickedUp: (name, row, rows) => `Picked up ${name}, row ${row} of ${rows}.`,
|
|
22
|
-
isOver: (name, row, rows) => `${name} is over row ${row} of ${rows}.`,
|
|
23
|
-
droppedAt: (name, row, rows) => `${name} was dropped at row ${row} of ${rows}.`,
|
|
24
|
-
putBack: (name) => `${name} was put back.`,
|
|
25
|
-
cancelled: (name, row) => `Moving ${name} was cancelled. It is back at row ${row}.`
|
|
26
|
-
},
|
|
27
|
-
nl: {
|
|
28
|
-
unsortable: "Op deze kolom kan niet worden gesorteerd",
|
|
29
|
-
columnMenu: (header) => `Kolommenu ${header}`,
|
|
30
|
-
unpin: "Losmaken",
|
|
31
|
-
pinToLeft: "Links vastzetten",
|
|
32
|
-
resizeColumn: (header) => `Breedte kolom ${header}`,
|
|
33
|
-
selected: (count) => `${count} geselecteerd`,
|
|
34
|
-
no: "Nee",
|
|
35
|
-
shownIn: (zone) => `Getoond in ${zone}`,
|
|
36
|
-
new: "Nieuw",
|
|
37
|
-
clearSelection: "Selectie wissen",
|
|
38
|
-
noRowsSelected: "Geen rijen geselecteerd",
|
|
39
|
-
selectRow: (row) => `Rij ${row} selecteren`,
|
|
40
|
-
rowActions: "Rijacties",
|
|
41
|
-
row: "rij",
|
|
42
|
-
move: (label) => `${label} verplaatsen`,
|
|
43
|
-
reorderInstructions: "Om een rij te verplaatsen, druk op Spatie op de greep, verplaats hem met de pijltjestoetsen omhoog en omlaag, en druk nogmaals op Spatie om hem daar neer te zetten. Escape zet hem terug.",
|
|
44
|
-
pickedUp: (name, row, rows) => `${name} opgepakt, rij ${row} van ${rows}.`,
|
|
45
|
-
isOver: (name, row, rows) => `${name} is boven rij ${row} van ${rows}.`,
|
|
46
|
-
droppedAt: (name, row, rows) => `${name} is neergezet op rij ${row} van ${rows}.`,
|
|
47
|
-
putBack: (name) => `${name} is teruggezet.`,
|
|
48
|
-
cancelled: (name, row) => `Verplaatsen van ${name} is geannuleerd. Hij staat weer op rij ${row}.`
|
|
49
|
-
}
|
|
50
|
-
});
|
|
3
|
+
const text = messages("data-grid");
|
|
51
4
|
//#endregion
|
|
52
5
|
export { text };
|
|
@@ -8,7 +8,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
8
8
|
const ResizeHandle = ({ id, header, width, resize }) => /* @__PURE__ */ jsx("div", {
|
|
9
9
|
role: "separator",
|
|
10
10
|
"aria-orientation": "vertical",
|
|
11
|
-
"aria-label": text("resizeColumn", header),
|
|
11
|
+
"aria-label": text("resizeColumn", { header }),
|
|
12
12
|
"aria-valuemin": 64,
|
|
13
13
|
"aria-valuenow": width,
|
|
14
14
|
tabIndex: 0,
|
|
@@ -17,10 +17,25 @@ const ReorderRows = ({ ids, rowAt, reorder, children }) => {
|
|
|
17
17
|
return row ? reorder.label(row) : text("row");
|
|
18
18
|
};
|
|
19
19
|
const announcements = {
|
|
20
|
-
onDragStart: ({ active }) => text("pickedUp",
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
onDragStart: ({ active }) => text("pickedUp", {
|
|
21
|
+
name: name(active.id),
|
|
22
|
+
row: place(active.id) + 1,
|
|
23
|
+
rows: ids.length
|
|
24
|
+
}),
|
|
25
|
+
onDragOver: ({ active, over }) => over ? text("isOver", {
|
|
26
|
+
name: name(active.id),
|
|
27
|
+
row: place(over.id) + 1,
|
|
28
|
+
rows: ids.length
|
|
29
|
+
}) : void 0,
|
|
30
|
+
onDragEnd: ({ active, over }) => over ? text("droppedAt", {
|
|
31
|
+
name: name(active.id),
|
|
32
|
+
row: place(over.id) + 1,
|
|
33
|
+
rows: ids.length
|
|
34
|
+
}) : text("putBack", { name: name(active.id) }),
|
|
35
|
+
onDragCancel: ({ active }) => text("cancelled", {
|
|
36
|
+
name: name(active.id),
|
|
37
|
+
row: place(active.id) + 1
|
|
38
|
+
})
|
|
24
39
|
};
|
|
25
40
|
const end = ({ active, over }) => {
|
|
26
41
|
if (!over || active.id === over.id) return;
|
|
@@ -47,7 +62,7 @@ const SortableRow = ({ row, label, ...props }) => {
|
|
|
47
62
|
const handle = /* @__PURE__ */ jsx("button", {
|
|
48
63
|
ref: setActivatorNodeRef,
|
|
49
64
|
type: "button",
|
|
50
|
-
"aria-label": text("move", label),
|
|
65
|
+
"aria-label": text("move", { label }),
|
|
51
66
|
...attributes,
|
|
52
67
|
...listeners,
|
|
53
68
|
onClick: (event) => event.stopPropagation(),
|
|
@@ -16,7 +16,7 @@ const ActiveFilterChips = ({ chips, lockedLabels = [], onRemove, onClear, scroll
|
|
|
16
16
|
className: chipClass,
|
|
17
17
|
children: [chip.label, /* @__PURE__ */ jsx("button", {
|
|
18
18
|
type: "button",
|
|
19
|
-
"aria-label": text("remove", chip.label),
|
|
19
|
+
"aria-label": text("remove", { label: chip.label }),
|
|
20
20
|
onClick: () => onRemove(chip.key),
|
|
21
21
|
className: "rounded-full p-0.5 hover:bg-primary-border/60",
|
|
22
22
|
children: /* @__PURE__ */ jsx(X, { className: "size-3" })
|
|
@@ -10,10 +10,10 @@ const DatePresets = ({ value, presets = defaultDatePresets, onChange }) => /* @_
|
|
|
10
10
|
return /* @__PURE__ */ jsx("button", {
|
|
11
11
|
type: "button",
|
|
12
12
|
disabled: !label,
|
|
13
|
-
title: label ? void 0 : text("unknownPreset", id),
|
|
13
|
+
title: label ? void 0 : text("unknownPreset", { id }),
|
|
14
14
|
onClick: () => onChange(value === id ? void 0 : id),
|
|
15
15
|
className: cn("h-7 rounded-md border px-2.5 text-body font-medium transition-colors", !label && "border-dashed text-danger-text", value === id ? "border-primary-border bg-primary-soft text-primary-text" : "border-border-strong bg-background text-muted-foreground hover:bg-muted"),
|
|
16
|
-
children: label ?? text("unsupported", id)
|
|
16
|
+
children: label ?? text("unsupported", { id })
|
|
17
17
|
}, id);
|
|
18
18
|
})
|
|
19
19
|
});
|
|
@@ -65,7 +65,7 @@ const FacetCombobox = ({ config, selected, onToggle, inline = false }) => {
|
|
|
65
65
|
"aria-controls": `${id}-options`,
|
|
66
66
|
"aria-autocomplete": "list",
|
|
67
67
|
"aria-activedescendant": options[active] ? `${id}-${active}` : void 0,
|
|
68
|
-
placeholder: selected.length > 0 ? "" : text("searchIn", config.label),
|
|
68
|
+
placeholder: selected.length > 0 ? "" : text("searchIn", { label: config.label }),
|
|
69
69
|
className: "h-6 min-w-16 flex-1 bg-transparent text-foreground outline-none placeholder:text-faint-foreground",
|
|
70
70
|
value: query,
|
|
71
71
|
onChange: (event) => search(event.target.value),
|
|
@@ -16,7 +16,7 @@ const FacetGroup = ({ config, selected, onToggle }) => {
|
|
|
16
16
|
config.searchable && /* @__PURE__ */ jsx(Input, {
|
|
17
17
|
wrapperClassName: "mb-1 h-7",
|
|
18
18
|
leading: /* @__PURE__ */ jsx(Search, { className: "size-3.5" }),
|
|
19
|
-
placeholder: text("searchIn", config.label),
|
|
19
|
+
placeholder: text("searchIn", { label: config.label }),
|
|
20
20
|
value: query,
|
|
21
21
|
onChange: (event) => setQuery(event.target.value)
|
|
22
22
|
}),
|
|
@@ -1,52 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/filter-panel/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
today: "Today",
|
|
6
|
-
yesterday: "Yesterday",
|
|
7
|
-
"24h": "Last 24 hours",
|
|
8
|
-
"7d": "Last 7 days",
|
|
9
|
-
"30d": "Last 30 days",
|
|
10
|
-
"90d": "Last 90 days",
|
|
11
|
-
month: "This month",
|
|
12
|
-
quarter: "This quarter",
|
|
13
|
-
year: "This year",
|
|
14
|
-
unknownPreset: (id) => `The server offers the preset "${id}", which this UI does not know`,
|
|
15
|
-
unsupported: (id) => `${id} (unsupported)`,
|
|
16
|
-
remove: (label) => `Remove ${label}`,
|
|
17
|
-
clearAll: "Clear all",
|
|
18
|
-
searchIn: (label) => `Search ${label.toLowerCase()}`,
|
|
19
|
-
noMatches: "No matches",
|
|
20
|
-
moreFilters: "More filters",
|
|
21
|
-
filters: "Filters",
|
|
22
|
-
date: "Date",
|
|
23
|
-
showOnly: "Show only",
|
|
24
|
-
minimum: (label) => `${label} minimum`,
|
|
25
|
-
maximum: (label) => `${label} maximum`
|
|
26
|
-
},
|
|
27
|
-
nl: {
|
|
28
|
-
today: "Vandaag",
|
|
29
|
-
yesterday: "Gisteren",
|
|
30
|
-
"24h": "Afgelopen 24 uur",
|
|
31
|
-
"7d": "Afgelopen 7 dagen",
|
|
32
|
-
"30d": "Afgelopen 30 dagen",
|
|
33
|
-
"90d": "Afgelopen 90 dagen",
|
|
34
|
-
month: "Deze maand",
|
|
35
|
-
quarter: "Dit kwartaal",
|
|
36
|
-
year: "Dit jaar",
|
|
37
|
-
unknownPreset: (id) => `De server biedt de periode "${id}", die deze UI niet kent`,
|
|
38
|
-
unsupported: (id) => `${id} (niet ondersteund)`,
|
|
39
|
-
remove: (label) => `${label} verwijderen`,
|
|
40
|
-
clearAll: "Alles wissen",
|
|
41
|
-
searchIn: (label) => `Zoeken in ${label.toLowerCase()}`,
|
|
42
|
-
noMatches: "Niets gevonden",
|
|
43
|
-
moreFilters: "Meer filters",
|
|
44
|
-
filters: "Filters",
|
|
45
|
-
date: "Datum",
|
|
46
|
-
showOnly: "Alleen tonen",
|
|
47
|
-
minimum: (label) => `${label} minimum`,
|
|
48
|
-
maximum: (label) => `${label} maximum`
|
|
49
|
-
}
|
|
50
|
-
});
|
|
3
|
+
const text = messages("filter-panel");
|
|
51
4
|
//#endregion
|
|
52
5
|
export { text };
|
|
@@ -49,7 +49,7 @@ const RangeFilter = ({ config, value, onChange }) => {
|
|
|
49
49
|
children: [0, 1].map((thumb) => /* @__PURE__ */ jsx("input", {
|
|
50
50
|
type: "range",
|
|
51
51
|
className: "pb-range",
|
|
52
|
-
"aria-label": thumb === 0 ? text("minimum", config.label) : text("maximum", config.label),
|
|
52
|
+
"aria-label": thumb === 0 ? text("minimum", { label: config.label }) : text("maximum", { label: config.label }),
|
|
53
53
|
min,
|
|
54
54
|
max,
|
|
55
55
|
step,
|
package/dist/format/date.js
CHANGED
|
@@ -63,10 +63,10 @@ const formatDayRange = (from, to) => day().formatRange(from, to);
|
|
|
63
63
|
/** "09:30": an instant's time on the clock of `zone`, the viewer's unless given. */
|
|
64
64
|
const formatTime = (ms, zone = viewerZone()) => zonedFormats(zone).time.format(ms);
|
|
65
65
|
const formatAgo = (seconds) => {
|
|
66
|
-
if (seconds < 60) return text("secondsAgo", seconds);
|
|
67
|
-
if (seconds < 3600) return text("minutesAgo", Math.floor(seconds / 60));
|
|
68
|
-
if (seconds < 86400) return text("hoursAgo", Math.floor(seconds / 3600));
|
|
69
|
-
return text("daysAgo", Math.floor(seconds / 86400));
|
|
66
|
+
if (seconds < 60) return text("secondsAgo", { count: seconds });
|
|
67
|
+
if (seconds < 3600) return text("minutesAgo", { count: Math.floor(seconds / 60) });
|
|
68
|
+
if (seconds < 86400) return text("hoursAgo", { count: Math.floor(seconds / 3600) });
|
|
69
|
+
return text("daysAgo", { count: Math.floor(seconds / 86400) });
|
|
70
70
|
};
|
|
71
71
|
const relative = () => cachedFormat("relative", (tag) => new Intl.RelativeTimeFormat(tag, { numeric: "auto" }));
|
|
72
72
|
const units = [
|
package/dist/format/messages.js
CHANGED
|
@@ -1,24 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/format/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
rows: (count, one) => `${count} ${one ? "row" : "rows"}`,
|
|
6
|
-
aboutRows: (count) => `about ${count} rows`,
|
|
7
|
-
secondsAgo: (count) => `${count} s ago`,
|
|
8
|
-
minutesAgo: (count) => `${count} min ago`,
|
|
9
|
-
hoursAgo: (count) => `${count} h ago`,
|
|
10
|
-
daysAgo: (count) => `${count} d ago`,
|
|
11
|
-
justNow: "just now"
|
|
12
|
-
},
|
|
13
|
-
nl: {
|
|
14
|
-
rows: (count, one) => `${count} ${one ? "rij" : "rijen"}`,
|
|
15
|
-
aboutRows: (count) => `ongeveer ${count} rijen`,
|
|
16
|
-
secondsAgo: (count) => `${count} s geleden`,
|
|
17
|
-
minutesAgo: (count) => `${count} min geleden`,
|
|
18
|
-
hoursAgo: (count) => `${count} u geleden`,
|
|
19
|
-
daysAgo: (count) => `${count} d geleden`,
|
|
20
|
-
justNow: "zojuist"
|
|
21
|
-
}
|
|
22
|
-
});
|
|
3
|
+
const text = messages("format");
|
|
23
4
|
//#endregion
|
|
24
5
|
export { text };
|
package/dist/format/money.js
CHANGED
|
@@ -9,6 +9,6 @@ const formatterFor = (currency, decimals) => cachedFormat(`money:${currency}:${d
|
|
|
9
9
|
}
|
|
10
10
|
}));
|
|
11
11
|
/** An amount in cents in the currency, with its usual decimals or `decimals` of them. */
|
|
12
|
-
const formatMoney = (cents, currency
|
|
12
|
+
const formatMoney = (cents, currency, decimals) => formatterFor(currency, decimals).format(cents / 100);
|
|
13
13
|
//#endregion
|
|
14
14
|
export { formatMoney };
|
package/dist/format/number.js
CHANGED
|
@@ -6,9 +6,12 @@ const formatInt = (value) => grouped().format(value);
|
|
|
6
6
|
const formatSigned = (value) => value > 0 ? `+${grouped().format(value)}` : grouped().format(value).replace("-", "−");
|
|
7
7
|
const formatPercent = (value) => `${value}%`;
|
|
8
8
|
const formatApproxRows = (count) => {
|
|
9
|
-
if (count < 1e4) return text("rows",
|
|
9
|
+
if (count < 1e4) return text("rows", {
|
|
10
|
+
count: formatInt(count),
|
|
11
|
+
n: count
|
|
12
|
+
});
|
|
10
13
|
const magnitude = 10 ** (Math.floor(Math.log10(count)) - 3);
|
|
11
|
-
return text("aboutRows", formatInt(Math.round(count / magnitude) * magnitude));
|
|
14
|
+
return text("aboutRows", { count: formatInt(Math.round(count / magnitude) * magnitude) });
|
|
12
15
|
};
|
|
13
16
|
//#endregion
|
|
14
17
|
export { formatApproxRows, formatInt, formatPercent, formatSigned };
|
package/dist/forms/messages.js
CHANGED
|
@@ -1,24 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/forms/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
loading: "Loading",
|
|
6
|
-
notFound: "Not found",
|
|
7
|
-
noForm: "There is no form at this address.",
|
|
8
|
-
setByDatabase: "Set by the database",
|
|
9
|
-
notSent: "Not sent",
|
|
10
|
-
send: "Send",
|
|
11
|
-
checkTooLong: "The check that you are not a bot took too long; send the form again"
|
|
12
|
-
},
|
|
13
|
-
nl: {
|
|
14
|
-
loading: "Laden",
|
|
15
|
-
notFound: "Niet gevonden",
|
|
16
|
-
noForm: "Er is geen formulier op dit adres.",
|
|
17
|
-
setByDatabase: "Ingevuld door de database",
|
|
18
|
-
notSent: "Niet verzonden",
|
|
19
|
-
send: "Verzenden",
|
|
20
|
-
checkTooLong: "De controle of je geen bot bent duurde te lang; verzend het formulier opnieuw"
|
|
21
|
-
}
|
|
22
|
-
});
|
|
3
|
+
const text = messages("forms");
|
|
23
4
|
//#endregion
|
|
24
5
|
export { text };
|
|
@@ -17,10 +17,25 @@ const announcementsFor = (lines, lineName) => {
|
|
|
17
17
|
};
|
|
18
18
|
const place = (id) => lines.findIndex((line) => line.id === id) + 1;
|
|
19
19
|
return {
|
|
20
|
-
onDragStart: ({ active }) => text("pickedUp",
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
onDragStart: ({ active }) => text("pickedUp", {
|
|
21
|
+
name: name(active.id),
|
|
22
|
+
place: place(active.id),
|
|
23
|
+
count: lines.length
|
|
24
|
+
}),
|
|
25
|
+
onDragOver: ({ active, over }) => over ? text("over", {
|
|
26
|
+
name: name(active.id),
|
|
27
|
+
place: place(over.id),
|
|
28
|
+
count: lines.length
|
|
29
|
+
}) : void 0,
|
|
30
|
+
onDragEnd: ({ active, over }) => over ? text("dropped", {
|
|
31
|
+
name: name(active.id),
|
|
32
|
+
place: place(over.id),
|
|
33
|
+
count: lines.length
|
|
34
|
+
}) : text("droppedAtStart", { name: name(active.id) }),
|
|
35
|
+
onDragCancel: ({ active }) => text("cancelled", {
|
|
36
|
+
name: name(active.id),
|
|
37
|
+
place: place(active.id)
|
|
38
|
+
})
|
|
24
39
|
};
|
|
25
40
|
};
|
|
26
41
|
/** The lines of a record as rows of the given columns, put in order by dragging or from each row's menu. */
|
|
@@ -37,7 +37,7 @@ const LineRow = ({ line, name, columns, position, count, reorderable, onRemove,
|
|
|
37
37
|
reorderable ? /* @__PURE__ */ jsx("button", {
|
|
38
38
|
ref: setActivatorNodeRef,
|
|
39
39
|
type: "button",
|
|
40
|
-
"aria-label": text("dragToReorder", name),
|
|
40
|
+
"aria-label": text("dragToReorder", { name }),
|
|
41
41
|
...attributes,
|
|
42
42
|
...listeners,
|
|
43
43
|
style: { touchAction: "none" },
|
|
@@ -49,7 +49,7 @@ const LineRow = ({ line, name, columns, position, count, reorderable, onRemove,
|
|
|
49
49
|
children: column.cell(line)
|
|
50
50
|
}, column.key)),
|
|
51
51
|
menu.length > 0 ? /* @__PURE__ */ jsx(LineMenu, {
|
|
52
|
-
label: text("actionsFor", name),
|
|
52
|
+
label: text("actionsFor", { name }),
|
|
53
53
|
items: menu
|
|
54
54
|
}) : /* @__PURE__ */ jsx("span", {}),
|
|
55
55
|
error && /* @__PURE__ */ jsx("p", {
|
|
@@ -1,38 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/inline-child-table/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
instructions: "To pick up a line, press space or enter on its drag handle. Use the up and down arrow keys to move it, space or enter to drop it, and escape to cancel. The row menu also has Move up and Move down.",
|
|
6
|
-
line: "line",
|
|
7
|
-
pickedUp: (name, place, count) => `Picked up ${name}, line ${place} of ${count}.`,
|
|
8
|
-
over: (name, place, count) => `${name} is over line ${place} of ${count}.`,
|
|
9
|
-
dropped: (name, place, count) => `${name} was dropped at line ${place} of ${count}.`,
|
|
10
|
-
droppedAtStart: (name) => `${name} was dropped where it started.`,
|
|
11
|
-
cancelled: (name, place) => `Moving ${name} was cancelled. It is back at line ${place}.`,
|
|
12
|
-
addLine: "Add line",
|
|
13
|
-
noLines: "No lines yet.",
|
|
14
|
-
moveUp: "Move up",
|
|
15
|
-
moveDown: "Move down",
|
|
16
|
-
removeLine: "Remove line",
|
|
17
|
-
dragToReorder: (name) => `Drag to reorder ${name}`,
|
|
18
|
-
actionsFor: (name) => `Actions for ${name}`
|
|
19
|
-
},
|
|
20
|
-
nl: {
|
|
21
|
-
instructions: "Druk op spatie of enter op de sleepgreep om een regel op te pakken. Verplaats hem met de pijltjestoetsen omhoog en omlaag, zet hem neer met spatie of enter, en annuleer met escape. Het regelmenu heeft ook Omhoog en Omlaag.",
|
|
22
|
-
line: "regel",
|
|
23
|
-
pickedUp: (name, place, count) => `${name} opgepakt, regel ${place} van ${count}.`,
|
|
24
|
-
over: (name, place, count) => `${name} is boven regel ${place} van ${count}.`,
|
|
25
|
-
dropped: (name, place, count) => `${name} is neergezet op regel ${place} van ${count}.`,
|
|
26
|
-
droppedAtStart: (name) => `${name} is neergezet waar hij begon.`,
|
|
27
|
-
cancelled: (name, place) => `Verplaatsen van ${name} is geannuleerd. Hij staat weer op regel ${place}.`,
|
|
28
|
-
addLine: "Regel toevoegen",
|
|
29
|
-
noLines: "Nog geen regels.",
|
|
30
|
-
moveUp: "Omhoog",
|
|
31
|
-
moveDown: "Omlaag",
|
|
32
|
-
removeLine: "Regel verwijderen",
|
|
33
|
-
dragToReorder: (name) => `Sleep om ${name} te verplaatsen`,
|
|
34
|
-
actionsFor: (name) => `Acties voor ${name}`
|
|
35
|
-
}
|
|
36
|
-
});
|
|
3
|
+
const text = messages("inline-child-table");
|
|
37
4
|
//#endregion
|
|
38
5
|
export { text };
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { slotted } from "../locale/slotted.js";
|
|
2
1
|
import { text } from "./messages.js";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
4
3
|
//#region src/invitations/link-notice.tsx
|
|
5
4
|
/** The invitation link to pass on, when the app cannot email it. */
|
|
6
5
|
const LinkNotice = ({ link }) => link ? /* @__PURE__ */ jsx("p", {
|
|
7
6
|
className: "mt-3 break-all rounded-md border bg-muted px-3 py-2 text-xs",
|
|
8
|
-
children:
|
|
7
|
+
children: text.rich("passLinkOn", { link: /* @__PURE__ */ jsx("span", {
|
|
9
8
|
className: "font-mono",
|
|
10
9
|
children: link
|
|
11
|
-
}))
|
|
10
|
+
}) })
|
|
12
11
|
}) : null;
|
|
13
12
|
//#endregion
|
|
14
13
|
export { LinkNotice };
|
|
@@ -1,24 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/invitations/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: {
|
|
5
|
-
email: "Email",
|
|
6
|
-
invite: "Invite",
|
|
7
|
-
expired: "Expired",
|
|
8
|
-
until: (date) => `Until ${date}`,
|
|
9
|
-
sendAgain: "Send again",
|
|
10
|
-
revoke: "Revoke",
|
|
11
|
-
passLinkOn: "This app cannot send email, so pass this link on yourself. It works once, until the invitation expires: {}"
|
|
12
|
-
},
|
|
13
|
-
nl: {
|
|
14
|
-
email: "E-mailadres",
|
|
15
|
-
invite: "Uitnodigen",
|
|
16
|
-
expired: "Verlopen",
|
|
17
|
-
until: (date) => `Tot ${date}`,
|
|
18
|
-
sendAgain: "Opnieuw sturen",
|
|
19
|
-
revoke: "Intrekken",
|
|
20
|
-
passLinkOn: "Deze app kan geen e-mail sturen, dus geef deze link zelf door. Die werkt één keer, tot de uitnodiging verloopt: {}"
|
|
21
|
-
}
|
|
22
|
-
});
|
|
3
|
+
const text = messages("invitations");
|
|
23
4
|
//#endregion
|
|
24
5
|
export { text };
|
|
@@ -28,7 +28,7 @@ const PendingInvitationRow = ({ email, gives, expiresAt, onResend, onRevoke }) =
|
|
|
28
28
|
children: [
|
|
29
29
|
gives,
|
|
30
30
|
" · ",
|
|
31
|
-
expired ? text("expired") : text("until", new Date(expiresAt).toLocaleDateString(formatTag()))
|
|
31
|
+
expired ? text("expired") : text("until", { date: new Date(expiresAt).toLocaleDateString(formatTag()) })
|
|
32
32
|
]
|
|
33
33
|
})]
|
|
34
34
|
}),
|
package/dist/lists/messages.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { messages } from "../locale/messages.js";
|
|
2
2
|
//#region src/lists/messages.ts
|
|
3
|
-
const text =
|
|
4
|
-
en: { showMore: "Show more" },
|
|
5
|
-
nl: { showMore: "Meer tonen" }
|
|
6
|
-
});
|
|
3
|
+
const text = messages("lists");
|
|
7
4
|
//#endregion
|
|
8
5
|
export { text };
|