@stapel/workspaces-react 0.17.0 → 0.19.1
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/CHANGELOG.md +218 -0
- package/README.md +39 -8
- package/dist/api/generated/schema.d.ts +187 -60
- package/dist/api/generated/schema.d.ts.map +1 -1
- package/dist/default/ActiveWorkspace.d.ts +43 -0
- package/dist/default/ActiveWorkspace.d.ts.map +1 -0
- package/dist/default/ActiveWorkspace.js +33 -0
- package/dist/default/ActiveWorkspace.js.map +1 -0
- package/dist/default/AuditTrailPane.d.ts +12 -0
- package/dist/default/AuditTrailPane.d.ts.map +1 -0
- package/dist/default/AuditTrailPane.js +154 -0
- package/dist/default/AuditTrailPane.js.map +1 -0
- package/dist/default/InvitationsPane.d.ts +19 -0
- package/dist/default/InvitationsPane.d.ts.map +1 -0
- package/dist/default/InvitationsPane.js +217 -0
- package/dist/default/InvitationsPane.js.map +1 -0
- package/dist/default/InviteAcceptPage.d.ts +7 -0
- package/dist/default/InviteAcceptPage.d.ts.map +1 -1
- package/dist/default/InviteAcceptPage.js +74 -38
- package/dist/default/InviteAcceptPage.js.map +1 -1
- package/dist/default/MembersManager.d.ts +12 -4
- package/dist/default/MembersManager.d.ts.map +1 -1
- package/dist/default/MembersManager.js +320 -84
- package/dist/default/MembersManager.js.map +1 -1
- package/dist/default/RoleSelectField.d.ts +64 -0
- package/dist/default/RoleSelectField.d.ts.map +1 -0
- package/dist/default/RoleSelectField.js +78 -0
- package/dist/default/RoleSelectField.js.map +1 -0
- package/dist/default/WorkspaceSettings.d.ts +7 -1
- package/dist/default/WorkspaceSettings.d.ts.map +1 -1
- package/dist/default/WorkspaceSettings.js +203 -45
- package/dist/default/WorkspaceSettings.js.map +1 -1
- package/dist/default/WorkspacesPage.d.ts +13 -0
- package/dist/default/WorkspacesPage.d.ts.map +1 -0
- package/dist/default/WorkspacesPage.js +109 -0
- package/dist/default/WorkspacesPage.js.map +1 -0
- package/dist/default/index.d.ts +28 -7
- package/dist/default/index.d.ts.map +1 -1
- package/dist/default/index.js +24 -7
- package/dist/default/index.js.map +1 -1
- package/dist/default/parts.d.ts +104 -0
- package/dist/default/parts.d.ts.map +1 -0
- package/dist/default/parts.js +143 -0
- package/dist/default/parts.js.map +1 -0
- package/dist/headless/Members.d.ts +59 -14
- package/dist/headless/Members.d.ts.map +1 -1
- package/dist/headless/Members.js +35 -10
- package/dist/headless/Members.js.map +1 -1
- package/dist/headless/RoleSelect.d.ts +9 -3
- package/dist/headless/RoleSelect.d.ts.map +1 -1
- package/dist/headless/RoleSelect.js +3 -2
- package/dist/headless/RoleSelect.js.map +1 -1
- package/dist/i18n/es.d.ts +11 -12
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +267 -14
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -1
- package/dist/i18n/generated/errors.es.gen.js +5 -0
- package/dist/i18n/generated/errors.es.gen.js.map +1 -1
- package/dist/i18n/generated/errors.gen.d.ts +30 -0
- package/dist/i18n/generated/errors.gen.d.ts.map +1 -1
- package/dist/i18n/generated/errors.gen.js +15 -0
- package/dist/i18n/generated/errors.gen.js.map +1 -1
- package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -1
- package/dist/i18n/generated/errors.ru.gen.js +5 -0
- package/dist/i18n/generated/errors.ru.gen.js.map +1 -1
- package/dist/i18n/keys.d.ts +209 -1
- package/dist/i18n/keys.d.ts.map +1 -1
- package/dist/i18n/keys.js +410 -4
- package/dist/i18n/keys.js.map +1 -1
- package/dist/i18n/ru.d.ts +7 -2
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +209 -4
- package/dist/i18n/ru.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/model/format.d.ts +56 -0
- package/dist/model/format.d.ts.map +1 -0
- package/dist/model/format.js +125 -0
- package/dist/model/format.js.map +1 -0
- package/dist/model/selection.d.ts +15 -0
- package/dist/model/selection.d.ts.map +1 -1
- package/dist/model/selection.js +18 -1
- package/dist/model/selection.js.map +1 -1
- package/dist/nav/manifest.d.ts +45 -0
- package/dist/nav/manifest.d.ts.map +1 -0
- package/dist/nav/manifest.js +77 -0
- package/dist/nav/manifest.js.map +1 -0
- package/llms.txt +11 -10
- package/manifest.json +281 -69
- package/package.json +18 -12
- package/src/analytics/generated/events.json +1 -1
- package/src/api/generated/schema.ts +187 -60
- package/src/default/ActiveWorkspace.tsx +97 -0
- package/src/default/AuditTrailPane.tsx +309 -0
- package/src/default/InvitationsPane.tsx +501 -0
- package/src/default/InviteAcceptPage.tsx +187 -90
- package/src/default/MembersManager.tsx +832 -222
- package/src/default/RoleSelectField.tsx +187 -0
- package/src/default/WorkspaceSettings.tsx +540 -125
- package/src/default/WorkspacesPage.tsx +394 -0
- package/src/default/index.ts +28 -7
- package/src/default/parts.tsx +315 -0
- package/src/headless/Members.tsx +84 -16
- package/src/headless/RoleSelect.tsx +12 -5
- package/src/i18n/es.ts +326 -14
- package/src/i18n/generated/errors.es.gen.ts +5 -0
- package/src/i18n/generated/errors.gen.ts +15 -0
- package/src/i18n/generated/errors.json +37 -0
- package/src/i18n/generated/errors.ru.gen.ts +5 -0
- package/src/i18n/keys.ts +462 -5
- package/src/i18n/ru.ts +259 -5
- package/src/index.ts +1 -0
- package/src/model/format.ts +158 -0
- package/src/model/selection.tsx +19 -1
- package/src/nav/manifest.ts +120 -0
- package/dist/default/ErrorAlert.d.ts +0 -8
- package/dist/default/ErrorAlert.d.ts.map +0 -1
- package/dist/default/ErrorAlert.js +0 -30
- package/dist/default/ErrorAlert.js.map +0 -1
- package/src/default/ErrorAlert.tsx +0 -47
package/dist/i18n/keys.js
CHANGED
|
@@ -7,13 +7,32 @@ import { workspacesErrorBundleEn } from "./generated/errors.gen.js";
|
|
|
7
7
|
* English fallbacks for both the backend error codes (generated) and the
|
|
8
8
|
* pair's own UI keys. Point core's `loadLocale` at stapel-translate to override
|
|
9
9
|
* per locale. Add UI keys under the `workspaces.` namespace as you build flows.
|
|
10
|
+
*
|
|
11
|
+
* COUNTS ARE PLURAL FAMILIES. A key named `*.count` is rendered with core's
|
|
12
|
+
* `useTPlural()`, which looks up `<key>.<CLDR category>` for the reader's
|
|
13
|
+
* language and falls back to the flat key. Every family therefore ships three
|
|
14
|
+
* spellings here — the flat fallback, `.one` and `.other` — and a language with
|
|
15
|
+
* more categories (Russian's `few`/`many`) adds them in its own bundle. This is
|
|
16
|
+
* what "1 workspace(s)" was standing in for.
|
|
10
17
|
*/
|
|
11
18
|
export const WORKSPACES_I18N_KEYS = {
|
|
12
19
|
unknownError: "workspaces.error.unknown",
|
|
13
20
|
// Retry affordance beside a stated failure — an error a person cannot act
|
|
14
21
|
// on is only half the message.
|
|
15
22
|
retry: "workspaces.retry",
|
|
16
|
-
|
|
23
|
+
/**
|
|
24
|
+
* The accessible name of a dialog's dismissal — the modal's close button and
|
|
25
|
+
* the bottom sheet's grab handle (`SkinDialog`'s required `dismissLabel`).
|
|
26
|
+
* Surface-neutral on purpose: the same dialog is a sheet on a phone and a
|
|
27
|
+
* modal on a tablet, and the word for "get me out of here" is the same one.
|
|
28
|
+
*/
|
|
29
|
+
dialogClose: "workspaces.dialog.close",
|
|
30
|
+
cancel: "workspaces.cancel",
|
|
31
|
+
// Anchor pagination (members / invitations / audit share one pager).
|
|
32
|
+
pagerPrev: "workspaces.pager.prev",
|
|
33
|
+
pagerNext: "workspaces.pager.next",
|
|
34
|
+
pagerPosition: "workspaces.pager.position",
|
|
35
|
+
// Workspace list (WorkspaceList headless + WorkspacesPage skin)
|
|
17
36
|
listLoading: "workspaces.list.loading",
|
|
18
37
|
listEmpty: "workspaces.list.empty",
|
|
19
38
|
/**
|
|
@@ -30,6 +49,7 @@ export const WORKSPACES_I18N_KEYS = {
|
|
|
30
49
|
membersEmpty: "workspaces.members.empty",
|
|
31
50
|
membersLoadFailed: "workspaces.members.load_failed",
|
|
32
51
|
rolesLoadFailed: "workspaces.roles.load_failed",
|
|
52
|
+
rolesEmpty: "workspaces.roles.empty",
|
|
33
53
|
membersInvite: "workspaces.members.invite",
|
|
34
54
|
membersInviting: "workspaces.members.inviting",
|
|
35
55
|
membersUpdateRole: "workspaces.members.update_role",
|
|
@@ -44,22 +64,124 @@ export const WORKSPACES_I18N_KEYS = {
|
|
|
44
64
|
fieldName: "workspaces.settings.field.name",
|
|
45
65
|
fieldSlug: "workspaces.settings.field.slug",
|
|
46
66
|
fieldType: "workspaces.settings.field.type",
|
|
67
|
+
typePersonal: "workspaces.settings.type.personal",
|
|
68
|
+
typeWork: "workspaces.settings.type.work",
|
|
47
69
|
save: "workspaces.settings.save",
|
|
48
70
|
// Why a settings control is switched off (core's `useActionGate`).
|
|
49
|
-
|
|
71
|
+
/** The caller's ROLE does not carry `workspace.update`. Not "you are not
|
|
72
|
+
* the owner": a deployment role can hold the capability without being one,
|
|
73
|
+
* and the server answers on the capability, so the screen says the same. */
|
|
74
|
+
blockedCannotManage: "workspaces.settings.blocked.cannot_manage",
|
|
50
75
|
blockedNameRequired: "workspaces.settings.blocked.name_required",
|
|
76
|
+
blockedUnchanged: "workspaces.settings.blocked.unchanged",
|
|
51
77
|
saving: "workspaces.settings.saving",
|
|
52
78
|
dangerZoneTitle: "workspaces.settings.danger_zone.title",
|
|
53
79
|
deleteWorkspace: "workspaces.settings.danger_zone.delete",
|
|
54
80
|
deleteWorkspaceConfirm: "workspaces.settings.danger_zone.delete_confirm",
|
|
81
|
+
deleteWorkspaceConfirmBody: "workspaces.settings.danger_zone.delete_confirm_body",
|
|
82
|
+
/** The refusal a workspace carries no CODE for — the belt under
|
|
83
|
+
* `delete_blocked_reason`, which is normally an `error.409.*` key the
|
|
84
|
+
* generated bundle already translates. */
|
|
85
|
+
deleteBlockedFallback: "workspaces.settings.danger_zone.blocked",
|
|
86
|
+
// Security card (WorkspaceSettings — the require_mfa policy, org-program §C3)
|
|
87
|
+
securityTitle: "workspaces.settings.security.title",
|
|
88
|
+
securitySubtitle: "workspaces.settings.security.subtitle",
|
|
89
|
+
securityRequireMfa: "workspaces.settings.security.require_mfa",
|
|
90
|
+
securityRequireMfaHint: "workspaces.settings.security.require_mfa_hint",
|
|
91
|
+
securityPoliciesLabel: "workspaces.settings.security.policies_label",
|
|
92
|
+
securityPoliciesHint: "workspaces.settings.security.policies_hint",
|
|
93
|
+
securityPolicyPasswordChange: "workspaces.settings.security.policy.password_change",
|
|
94
|
+
securityPolicyMfaEnroll: "workspaces.settings.security.policy.mfa_enroll",
|
|
95
|
+
securitySave: "workspaces.settings.security.save",
|
|
96
|
+
securitySaving: "workspaces.settings.security.saving",
|
|
97
|
+
securityBlockedCapability: "workspaces.settings.security.blocked.capability",
|
|
98
|
+
securityStepUpNotice: "workspaces.settings.security.step_up_notice",
|
|
99
|
+
// What the policy has actually ACHIEVED (MFAEnforcementStatus) — the
|
|
100
|
+
// difference between "somebody asked for MFA" and "MFA holds".
|
|
101
|
+
mfaStatusTitle: "workspaces.settings.security.mfa.status_title",
|
|
102
|
+
mfaStateLabel: "workspaces.settings.security.mfa.state_label",
|
|
103
|
+
mfaStatePending: "workspaces.settings.security.mfa.state.pending",
|
|
104
|
+
mfaStateEnforcing: "workspaces.settings.security.mfa.state.enforcing",
|
|
105
|
+
mfaStateEnforced: "workspaces.settings.security.mfa.state.enforced",
|
|
106
|
+
mfaStateFailed: "workspaces.settings.security.mfa.state.failed",
|
|
107
|
+
mfaStateOther: "workspaces.settings.security.mfa.state.other",
|
|
108
|
+
mfaCheckedCount: "workspaces.settings.security.mfa.checked_count",
|
|
109
|
+
mfaNoncompliantCount: "workspaces.settings.security.mfa.noncompliant_count",
|
|
110
|
+
mfaUnverifiedCount: "workspaces.settings.security.mfa.unverified_count",
|
|
111
|
+
mfaAttemptsCount: "workspaces.settings.security.mfa.attempts_count",
|
|
112
|
+
mfaLastAttempt: "workspaces.settings.security.mfa.last_attempt",
|
|
113
|
+
mfaCompletedAt: "workspaces.settings.security.mfa.completed_at",
|
|
114
|
+
mfaLastError: "workspaces.settings.security.mfa.last_error",
|
|
115
|
+
mfaUnverifiedHint: "workspaces.settings.security.mfa.unverified_hint",
|
|
116
|
+
mfaOffNotice: "workspaces.settings.security.mfa.off",
|
|
117
|
+
/** The policy IS on and the sweep has not reported yet — a different
|
|
118
|
+
* fact from "not required here", and the one the screen used to get
|
|
119
|
+
* wrong by deriving the sentence from the absence of a status. */
|
|
120
|
+
mfaNoStatusYet: "workspaces.settings.security.mfa.no_status_yet",
|
|
55
121
|
// Members manager (default skin — MembersManager)
|
|
56
122
|
membersTitle: "workspaces.members.title",
|
|
57
123
|
membersSubtitle: "workspaces.members.subtitle",
|
|
124
|
+
membersCount: "workspaces.members.count",
|
|
125
|
+
membersJoined: "workspaces.members.joined",
|
|
126
|
+
membersLastSeen: "workspaces.members.last_seen",
|
|
127
|
+
membersLastSeenNever: "workspaces.members.last_seen_never",
|
|
128
|
+
membersSearchPlaceholder: "workspaces.members.search_placeholder",
|
|
129
|
+
membersRolePickerLabel: "workspaces.members.role_picker_label",
|
|
130
|
+
membersBlockedReadOnly: "workspaces.members.blocked.read_only",
|
|
131
|
+
// The MFA evidence per member (`MemberResponse.mfa_compliant`): true /
|
|
132
|
+
// false / null, and null is a state of its own — nobody has asked yet.
|
|
133
|
+
membersMfaLabel: "workspaces.members.mfa_label",
|
|
134
|
+
membersMfaCompliant: "workspaces.members.mfa.compliant",
|
|
135
|
+
membersMfaNoncompliant: "workspaces.members.mfa.noncompliant",
|
|
136
|
+
membersMfaUnknown: "workspaces.members.mfa.unknown",
|
|
137
|
+
membersSuspended: "workspaces.members.suspended",
|
|
138
|
+
membersSuspendedNoMfa: "workspaces.members.suspended.no_mfa",
|
|
139
|
+
membersProvisioned: "workspaces.members.provisioned",
|
|
58
140
|
membersInviteDialogTitle: "workspaces.members.invite_dialog.title",
|
|
59
141
|
membersInviteEmailsLabel: "workspaces.members.invite_dialog.emails_label",
|
|
60
142
|
membersInviteEmailsPlaceholder: "workspaces.members.invite_dialog.emails_placeholder",
|
|
61
143
|
membersInviteRoleLabel: "workspaces.members.invite_dialog.role_label",
|
|
144
|
+
membersInviteNameLabel: "workspaces.members.invite_dialog.name_label",
|
|
145
|
+
membersInviteNamePlaceholder: "workspaces.members.invite_dialog.name_placeholder",
|
|
146
|
+
membersInviteSubmit: "workspaces.members.invite_dialog.submit",
|
|
147
|
+
// Why the invite dialog's submit is switched off (core's `useActionGate`).
|
|
148
|
+
membersInviteBlockedNoEmails: "workspaces.members.invite_dialog.blocked.no_emails",
|
|
149
|
+
membersInviteBlockedBadEmail: "workspaces.members.invite_dialog.blocked.bad_email",
|
|
62
150
|
membersRemoveConfirm: "workspaces.members.remove_confirm",
|
|
151
|
+
membersRemoveConfirmBody: "workspaces.members.remove_confirm_body",
|
|
152
|
+
/** Why a row's "Remove" is switched off: the backend's last-owner
|
|
153
|
+
* protection would refuse it, so the control never offers it. */
|
|
154
|
+
membersRemoveBlockedLastOwner: "workspaces.members.remove.blocked.last_owner",
|
|
155
|
+
/** Why a row's "Remove" is switched off on the READER's own row. Answered
|
|
156
|
+
* by the server (`MemberResponse.is_self`), never by comparing a session id
|
|
157
|
+
* this pair does not have. */
|
|
158
|
+
membersRemoveBlockedSelf: "workspaces.members.remove.blocked.self",
|
|
159
|
+
/**
|
|
160
|
+
* Reset a member's password on the organization's order. The endpoint is
|
|
161
|
+
* declared `high`, so the confirm says a step-up is coming BEFORE the
|
|
162
|
+
* click, and the one-shot credential is labelled as one — it is shown
|
|
163
|
+
* exactly once and can never be fetched again.
|
|
164
|
+
*/
|
|
165
|
+
membersResetPassword: "workspaces.members.reset_password",
|
|
166
|
+
/** Why "Reset password" is switched off on the READER's own row: the server
|
|
167
|
+
* answers a self-target with the same 404 it gives for a stranger, so an
|
|
168
|
+
* ungated button here reads its own refusal as "this member is gone". */
|
|
169
|
+
membersResetBlockedSelf: "workspaces.members.reset_password.blocked.self",
|
|
170
|
+
membersResetDialogTitle: "workspaces.members.reset_password_dialog.title",
|
|
171
|
+
membersResetDialogBody: "workspaces.members.reset_password_dialog.body",
|
|
172
|
+
membersResetStepUp: "workspaces.members.reset_password_dialog.step_up",
|
|
173
|
+
membersResetSubmit: "workspaces.members.reset_password_dialog.submit",
|
|
174
|
+
membersResetDone: "workspaces.members.reset_password_dialog.done",
|
|
175
|
+
membersResetGenerated: "workspaces.members.reset_password_dialog.generated",
|
|
176
|
+
membersResetGeneratedHint: "workspaces.members.reset_password_dialog.generated_hint",
|
|
177
|
+
membersResetNotNotified: "workspaces.members.reset_password_dialog.not_notified",
|
|
178
|
+
membersRename: "workspaces.members.rename",
|
|
179
|
+
membersRenameDialogTitle: "workspaces.members.rename_dialog.title",
|
|
180
|
+
membersRenameLabel: "workspaces.members.rename_dialog.label",
|
|
181
|
+
membersRenamePlaceholder: "workspaces.members.rename_dialog.placeholder",
|
|
182
|
+
membersRenameHint: "workspaces.members.rename_dialog.hint",
|
|
183
|
+
membersRenameSubmit: "workspaces.members.rename_dialog.submit",
|
|
184
|
+
membersRenameBlockedUnchanged: "workspaces.members.rename_dialog.blocked.unchanged",
|
|
63
185
|
roleOwner: "workspaces.members.role.owner",
|
|
64
186
|
roleAdmin: "workspaces.members.role.admin",
|
|
65
187
|
roleMember: "workspaces.members.role.member",
|
|
@@ -72,6 +194,82 @@ export const WORKSPACES_I18N_KEYS = {
|
|
|
72
194
|
roleLabelAdmin: "workspaces.role.admin",
|
|
73
195
|
roleLabelMember: "workspaces.role.member",
|
|
74
196
|
roleLabelViewer: "workspaces.role.viewer",
|
|
197
|
+
roleRankCaption: "workspaces.role.rank_caption",
|
|
198
|
+
// Workspaces page (default skin — WorkspacesPage over the WorkspaceList bag)
|
|
199
|
+
pageTitle: "workspaces.page.title",
|
|
200
|
+
pageSubtitle: "workspaces.page.subtitle",
|
|
201
|
+
listCount: "workspaces.list.count",
|
|
202
|
+
listMemberCount: "workspaces.list.member_count",
|
|
203
|
+
listOwnerLine: "workspaces.list.owner_line",
|
|
204
|
+
listYourRole: "workspaces.list.your_role",
|
|
205
|
+
listOpen: "workspaces.list.open",
|
|
206
|
+
listPreferredTag: "workspaces.list.preferred",
|
|
207
|
+
listSetPreferred: "workspaces.list.set_preferred",
|
|
208
|
+
listClearPreferred: "workspaces.list.clear_preferred",
|
|
209
|
+
listEmptyHint: "workspaces.list.empty_hint",
|
|
210
|
+
listGuestNotice: "workspaces.list.guest_notice",
|
|
211
|
+
listInstanceClosed: "workspaces.list.instance_closed",
|
|
212
|
+
listCreateDialogTitle: "workspaces.list.create_dialog.title",
|
|
213
|
+
listCreateNameLabel: "workspaces.list.create_dialog.name_label",
|
|
214
|
+
listCreateNamePlaceholder: "workspaces.list.create_dialog.name_placeholder",
|
|
215
|
+
listCreateSubmit: "workspaces.list.create_dialog.submit",
|
|
216
|
+
listCreateBlockedNoName: "workspaces.list.create_dialog.blocked.no_name",
|
|
217
|
+
listCreateBlockedPolicy: "workspaces.list.blocked.create_policy",
|
|
218
|
+
// Invitation administration (default skin — InvitationsPane, #109)
|
|
219
|
+
invitationsTitle: "workspaces.invitations.title",
|
|
220
|
+
invitationsSubtitle: "workspaces.invitations.subtitle",
|
|
221
|
+
invitationsCount: "workspaces.invitations.count",
|
|
222
|
+
invitationsEmpty: "workspaces.invitations.empty",
|
|
223
|
+
invitationsExpiresLabel: "workspaces.invitations.expires_label",
|
|
224
|
+
invitationsSentLabel: "workspaces.invitations.sent_label",
|
|
225
|
+
invitationsSentNever: "workspaces.invitations.sent_never",
|
|
226
|
+
invitationsSearchPlaceholder: "workspaces.invitations.search_placeholder",
|
|
227
|
+
invitationsFilterLabel: "workspaces.invitations.filter_label",
|
|
228
|
+
invitationsFilterPending: "workspaces.invitations.filter.pending",
|
|
229
|
+
invitationsFilterNeverAccepted: "workspaces.invitations.filter.never_accepted",
|
|
230
|
+
invitationsFilterAll: "workspaces.invitations.filter.all",
|
|
231
|
+
invitationsStatusPending: "workspaces.invitations.status.pending",
|
|
232
|
+
invitationsStatusAccepted: "workspaces.invitations.status.accepted",
|
|
233
|
+
invitationsStatusDeclined: "workspaces.invitations.status.declined",
|
|
234
|
+
invitationsStatusRevoked: "workspaces.invitations.status.revoked",
|
|
235
|
+
invitationsStatusExpired: "workspaces.invitations.status.expired",
|
|
236
|
+
invitationsResend: "workspaces.invitations.resend",
|
|
237
|
+
invitationsResendConfirm: "workspaces.invitations.resend_confirm",
|
|
238
|
+
invitationsResendConfirmBody: "workspaces.invitations.resend_confirm_body",
|
|
239
|
+
invitationsRevoke: "workspaces.invitations.revoke",
|
|
240
|
+
invitationsRevokeConfirm: "workspaces.invitations.revoke_confirm",
|
|
241
|
+
invitationsRevokeConfirmBody: "workspaces.invitations.revoke_confirm_body",
|
|
242
|
+
invitationsRename: "workspaces.invitations.rename",
|
|
243
|
+
invitationsRenameDialogTitle: "workspaces.invitations.rename_dialog.title",
|
|
244
|
+
invitationsBlockedTerminal: "workspaces.invitations.blocked.terminal",
|
|
245
|
+
invitationsBlockedResendTerminal: "workspaces.invitations.blocked.resend_terminal",
|
|
246
|
+
/** One sentence for the whole ROW — see `rowReasonKey` in InvitationsPane. */
|
|
247
|
+
invitationsBlockedRowClosed: "workspaces.invitations.blocked.row_closed",
|
|
248
|
+
invitationsBlockedRowResendOnly: "workspaces.invitations.blocked.row_resend_only",
|
|
249
|
+
// Membership history (default skin — AuditTrailPane, GET /{ws}/audit)
|
|
250
|
+
auditTitle: "workspaces.audit.title",
|
|
251
|
+
auditSubtitle: "workspaces.audit.subtitle",
|
|
252
|
+
auditEmpty: "workspaces.audit.empty",
|
|
253
|
+
auditFilterLabel: "workspaces.audit.filter_label",
|
|
254
|
+
auditFilterAll: "workspaces.audit.filter.all",
|
|
255
|
+
auditActorUnknown: "workspaces.audit.actor_unknown",
|
|
256
|
+
auditBy: "workspaces.audit.by",
|
|
257
|
+
auditRoleLine: "workspaces.audit.role_line",
|
|
258
|
+
// The CLOSED action vocabulary (`models.AuditAction`). A deployment on a
|
|
259
|
+
// newer backend can send one this bundle has no label for — the pane falls
|
|
260
|
+
// back to the raw action key, exactly as RoleSelect does for roles.
|
|
261
|
+
auditActionInvitationCreated: "workspaces.audit.action.invitation_created",
|
|
262
|
+
auditActionInvitationAccepted: "workspaces.audit.action.invitation_accepted",
|
|
263
|
+
auditActionInvitationRevoked: "workspaces.audit.action.invitation_revoked",
|
|
264
|
+
auditActionInvitationDeclined: "workspaces.audit.action.invitation_declined",
|
|
265
|
+
auditActionAccountCreatedByInvitation: "workspaces.audit.action.account_created_by_invitation",
|
|
266
|
+
auditActionMemberJoined: "workspaces.audit.action.member_joined",
|
|
267
|
+
auditActionMemberProvisioned: "workspaces.audit.action.member_provisioned",
|
|
268
|
+
auditActionMemberRemoved: "workspaces.audit.action.member_removed",
|
|
269
|
+
auditActionMemberRoleChanged: "workspaces.audit.action.member_role_changed",
|
|
270
|
+
auditActionMemberSuspended: "workspaces.audit.action.member_suspended",
|
|
271
|
+
auditActionMemberUnsuspended: "workspaces.audit.action.member_unsuspended",
|
|
272
|
+
auditActionDeleted: "workspaces.audit.action.deleted",
|
|
75
273
|
// Invite accept flow (org-program §B4 — InviteAcceptFlow headless +
|
|
76
274
|
// InviteAcceptPage default skin), one key per flow screen.
|
|
77
275
|
inviteLoading: "workspaces.invite.loading",
|
|
@@ -80,12 +278,16 @@ export const WORKSPACES_I18N_KEYS = {
|
|
|
80
278
|
inviteEmailLine: "workspaces.invite.emailLine",
|
|
81
279
|
inviteJoinCta: "workspaces.invite.joinCta",
|
|
82
280
|
inviteDeclineCta: "workspaces.invite.declineCta",
|
|
281
|
+
inviteDeclineConfirm: "workspaces.invite.declineConfirm",
|
|
282
|
+
inviteDeclineConfirmBody: "workspaces.invite.declineConfirmBody",
|
|
83
283
|
inviteAccepted: "workspaces.invite.accepted",
|
|
84
284
|
inviteDeclined: "workspaces.invite.declined",
|
|
85
285
|
inviteUnavailableExpired: "workspaces.invite.unavailable.expired",
|
|
86
286
|
inviteUnavailableRevoked: "workspaces.invite.unavailable.revoked",
|
|
87
287
|
inviteUnavailableAccepted: "workspaces.invite.unavailable.accepted",
|
|
88
288
|
inviteUnavailableDeclined: "workspaces.invite.unavailable.declined",
|
|
289
|
+
inviteUnavailableNextStep: "workspaces.invite.unavailable.next_step",
|
|
290
|
+
inviteExitCta: "workspaces.invite.exitCta",
|
|
89
291
|
inviteWrongAccount: "workspaces.invite.wrongAccount",
|
|
90
292
|
inviteWrongAccountHint: "workspaces.invite.wrongAccountHint",
|
|
91
293
|
inviteSwitchAccountCta: "workspaces.invite.switchAccountCta",
|
|
@@ -98,6 +300,26 @@ export const WORKSPACES_I18N_KEYS = {
|
|
|
98
300
|
inviteRetryCta: "workspaces.invite.retryCta",
|
|
99
301
|
inviteBasicDataTitle: "workspaces.invite.basicDataTitle",
|
|
100
302
|
inviteBasicDataContinueCta: "workspaces.invite.basicDataContinueCta",
|
|
303
|
+
inviteBlockedBusy: "workspaces.invite.blocked.busy",
|
|
304
|
+
/**
|
|
305
|
+
* A workspace-scoped screen mounted from the nav manifest, with no active
|
|
306
|
+
* workspace to be about. The active workspace is runtime state (the
|
|
307
|
+
* selection the container writes), not a route param, so "there is none
|
|
308
|
+
* yet" is a state every such screen can reach — and it is drawn, never
|
|
309
|
+
* blank. Two different sentences, because they are two different
|
|
310
|
+
* situations: nothing is SELECTED vs the person belongs to nothing.
|
|
311
|
+
*/
|
|
312
|
+
activeChooseTitle: "workspaces.active.choose.title",
|
|
313
|
+
activeChooseHint: "workspaces.active.choose.hint",
|
|
314
|
+
activeNoneTitle: "workspaces.active.none.title",
|
|
315
|
+
activeNoneHint: "workspaces.active.none.hint",
|
|
316
|
+
// Nav manifest labels (the scripted-fullstack nav contract)
|
|
317
|
+
navWorkspaces: "workspaces.nav.workspaces",
|
|
318
|
+
navSettings: "workspaces.nav.settings",
|
|
319
|
+
navMembers: "workspaces.nav.members",
|
|
320
|
+
navInvitations: "workspaces.nav.invitations",
|
|
321
|
+
navAudit: "workspaces.nav.audit",
|
|
322
|
+
navInvite: "workspaces.nav.invite",
|
|
101
323
|
};
|
|
102
324
|
/**
|
|
103
325
|
* English fallback bundle for workspaces-react UI keys + backend error codes.
|
|
@@ -112,6 +334,11 @@ export const workspacesI18nBundleEn = {
|
|
|
112
334
|
// workspaces-react UI
|
|
113
335
|
"workspaces.error.unknown": "Something went wrong. Please try again.",
|
|
114
336
|
"workspaces.retry": "Try again",
|
|
337
|
+
"workspaces.dialog.close": "Close",
|
|
338
|
+
"workspaces.cancel": "Cancel",
|
|
339
|
+
"workspaces.pager.prev": "Previous",
|
|
340
|
+
"workspaces.pager.next": "Next",
|
|
341
|
+
"workspaces.pager.position": "Page {page}",
|
|
115
342
|
"workspaces.list.loading": "Loading workspaces…",
|
|
116
343
|
"workspaces.list.empty": "No workspaces yet.",
|
|
117
344
|
"workspaces.list.load_failed": "We could not load your workspaces. This is a problem on our side, not a sign that you have none.",
|
|
@@ -120,7 +347,8 @@ export const workspacesI18nBundleEn = {
|
|
|
120
347
|
"workspaces.members.loading": "Loading members…",
|
|
121
348
|
"workspaces.members.empty": "No members yet.",
|
|
122
349
|
"workspaces.members.load_failed": "We could not load the member list.",
|
|
123
|
-
"workspaces.roles.load_failed": "We could not load the role list, so
|
|
350
|
+
"workspaces.roles.load_failed": "We could not load the role list, so roles cannot be changed right now. This does not mean the workspace has no roles.",
|
|
351
|
+
"workspaces.roles.empty": "This installation defines no roles, so there is nothing to choose from.",
|
|
124
352
|
"workspaces.members.invite": "Invite",
|
|
125
353
|
"workspaces.members.inviting": "Inviting…",
|
|
126
354
|
"workspaces.members.update_role": "Change role",
|
|
@@ -133,20 +361,103 @@ export const workspacesI18nBundleEn = {
|
|
|
133
361
|
"workspaces.settings.field.name": "Workspace name",
|
|
134
362
|
"workspaces.settings.field.slug": "URL slug",
|
|
135
363
|
"workspaces.settings.field.type": "Type",
|
|
364
|
+
"workspaces.settings.type.personal": "Personal",
|
|
365
|
+
"workspaces.settings.type.work": "Work",
|
|
136
366
|
"workspaces.settings.save": "Save changes",
|
|
137
|
-
"workspaces.settings.blocked.
|
|
367
|
+
"workspaces.settings.blocked.cannot_manage": "Your role cannot change this workspace's settings.",
|
|
138
368
|
"workspaces.settings.blocked.name_required": "Enter a workspace name.",
|
|
369
|
+
"workspaces.settings.blocked.unchanged": "Nothing has changed yet.",
|
|
139
370
|
"workspaces.settings.saving": "Saving…",
|
|
140
371
|
"workspaces.settings.danger_zone.title": "Danger zone",
|
|
141
372
|
"workspaces.settings.danger_zone.delete": "Delete workspace",
|
|
142
373
|
"workspaces.settings.danger_zone.delete_confirm": "Delete this workspace? This can't be undone.",
|
|
374
|
+
"workspaces.settings.danger_zone.delete_confirm_body": "Everyone loses access immediately. Other services keep what they hold for this workspace under their own retention rules.",
|
|
375
|
+
"workspaces.settings.danger_zone.blocked": "This workspace cannot be deleted.",
|
|
376
|
+
"workspaces.settings.security.title": "Security",
|
|
377
|
+
"workspaces.settings.security.subtitle": "Rules everyone in this workspace has to meet.",
|
|
378
|
+
"workspaces.settings.security.require_mfa": "Require two-factor authentication",
|
|
379
|
+
"workspaces.settings.security.require_mfa_hint": "Members without a confirmed second factor are not admitted until they add one.",
|
|
380
|
+
"workspaces.settings.security.policies_label": "First-login steps for accounts this workspace creates",
|
|
381
|
+
"workspaces.settings.security.policies_hint": "Independent demands, not alternatives — an organization may ask for both.",
|
|
382
|
+
"workspaces.settings.security.policy.password_change": "Change the password",
|
|
383
|
+
"workspaces.settings.security.policy.mfa_enroll": "Set up two-factor authentication",
|
|
384
|
+
"workspaces.settings.security.save": "Save security settings",
|
|
385
|
+
"workspaces.settings.security.saving": "Saving…",
|
|
386
|
+
"workspaces.settings.security.blocked.capability": "Your role cannot change security settings.",
|
|
387
|
+
"workspaces.settings.security.step_up_notice": "You will be asked to confirm your identity before this is saved.",
|
|
388
|
+
"workspaces.settings.security.mfa.status_title": "Enforcement",
|
|
389
|
+
"workspaces.settings.security.mfa.state_label": "State",
|
|
390
|
+
"workspaces.settings.security.mfa.state.pending": "Waiting for the first check",
|
|
391
|
+
"workspaces.settings.security.mfa.state.enforcing": "Checking members",
|
|
392
|
+
"workspaces.settings.security.mfa.state.enforced": "In force",
|
|
393
|
+
"workspaces.settings.security.mfa.state.failed": "The last check failed",
|
|
394
|
+
"workspaces.settings.security.mfa.state.other": "Unrecognized state ({state})",
|
|
395
|
+
"workspaces.settings.security.mfa.checked_count": "{count} members checked",
|
|
396
|
+
"workspaces.settings.security.mfa.checked_count.one": "{count} member checked",
|
|
397
|
+
"workspaces.settings.security.mfa.checked_count.other": "{count} members checked",
|
|
398
|
+
"workspaces.settings.security.mfa.noncompliant_count": "{count} suspended for having no second factor",
|
|
399
|
+
"workspaces.settings.security.mfa.noncompliant_count.one": "{count} member suspended for having no second factor",
|
|
400
|
+
"workspaces.settings.security.mfa.noncompliant_count.other": "{count} members suspended for having no second factor",
|
|
401
|
+
"workspaces.settings.security.mfa.unverified_count": "{count} still unverified",
|
|
402
|
+
"workspaces.settings.security.mfa.unverified_count.one": "{count} member still unverified",
|
|
403
|
+
"workspaces.settings.security.mfa.unverified_count.other": "{count} members still unverified",
|
|
404
|
+
"workspaces.settings.security.mfa.attempts_count": "{count} checks so far",
|
|
405
|
+
"workspaces.settings.security.mfa.attempts_count.one": "{count} check so far",
|
|
406
|
+
"workspaces.settings.security.mfa.attempts_count.other": "{count} checks so far",
|
|
407
|
+
"workspaces.settings.security.mfa.last_attempt": "Last check {date}",
|
|
408
|
+
"workspaces.settings.security.mfa.completed_at": "Fully covered since {date}",
|
|
409
|
+
"workspaces.settings.security.mfa.last_error": "Last error: {error}",
|
|
410
|
+
"workspaces.settings.security.mfa.unverified_hint": "Unverified members are not admitted while the policy is on. Ask them to add a second factor — the number to get to zero is above.",
|
|
411
|
+
"workspaces.settings.security.mfa.off": "Two-factor authentication is not required in this workspace.",
|
|
412
|
+
"workspaces.settings.security.mfa.no_status_yet": "Two-factor authentication is required here. No check has run yet, so nobody has been confirmed.",
|
|
143
413
|
"workspaces.members.title": "Members",
|
|
144
414
|
"workspaces.members.subtitle": "Manage who has access to this workspace.",
|
|
415
|
+
"workspaces.members.count": "{count} members",
|
|
416
|
+
"workspaces.members.count.one": "{count} member",
|
|
417
|
+
"workspaces.members.count.other": "{count} members",
|
|
418
|
+
"workspaces.members.joined": "Joined {date}",
|
|
419
|
+
"workspaces.members.last_seen": "Last seen {date}",
|
|
420
|
+
"workspaces.members.last_seen_never": "Has not opened this workspace yet",
|
|
421
|
+
"workspaces.members.search_placeholder": "Search by name or email",
|
|
422
|
+
"workspaces.members.role_picker_label": "Role of {member}",
|
|
423
|
+
"workspaces.members.blocked.read_only": "You can see who is here, but not change it.",
|
|
424
|
+
"workspaces.members.mfa_label": "Two-factor",
|
|
425
|
+
"workspaces.members.mfa.compliant": "Confirmed",
|
|
426
|
+
"workspaces.members.mfa.noncompliant": "Missing",
|
|
427
|
+
"workspaces.members.mfa.unknown": "Not checked yet",
|
|
428
|
+
"workspaces.members.suspended": "Suspended",
|
|
429
|
+
"workspaces.members.suspended.no_mfa": "Suspended until a second factor is confirmed.",
|
|
430
|
+
"workspaces.members.provisioned": "Created by an admin",
|
|
145
431
|
"workspaces.members.invite_dialog.title": "Invite members",
|
|
146
432
|
"workspaces.members.invite_dialog.emails_label": "Emails",
|
|
147
433
|
"workspaces.members.invite_dialog.emails_placeholder": "Type an email and press Enter",
|
|
148
434
|
"workspaces.members.invite_dialog.role_label": "Role",
|
|
435
|
+
"workspaces.members.invite_dialog.name_label": "Name (optional)",
|
|
436
|
+
"workspaces.members.invite_dialog.name_placeholder": "Shown until they set their own",
|
|
437
|
+
"workspaces.members.invite_dialog.submit": "Send invitations",
|
|
438
|
+
"workspaces.members.invite_dialog.blocked.no_emails": "Enter at least one email address.",
|
|
439
|
+
"workspaces.members.invite_dialog.blocked.bad_email": "{email} is not an email address.",
|
|
149
440
|
"workspaces.members.remove_confirm": "Remove this member?",
|
|
441
|
+
"workspaces.members.remove_confirm_body": "{member} loses access to this workspace right away. You can invite them again later.",
|
|
442
|
+
"workspaces.members.remove.blocked.last_owner": "This is the workspace's only owner. Give someone else the owner role first.",
|
|
443
|
+
"workspaces.members.remove.blocked.self": "This is you. Ask another owner or admin to remove you from the workspace.",
|
|
444
|
+
"workspaces.members.reset_password": "Reset password",
|
|
445
|
+
"workspaces.members.reset_password.blocked.self": "This is you. Change your own password in your account settings — this acts on somebody else's account.",
|
|
446
|
+
"workspaces.members.reset_password_dialog.title": "Reset the password of {member}?",
|
|
447
|
+
"workspaces.members.reset_password_dialog.body": "Their current password stops working straight away, and they are told you did it. The letter never carries the new password.",
|
|
448
|
+
"workspaces.members.reset_password_dialog.step_up": "You will be asked to confirm it is you before this goes through.",
|
|
449
|
+
"workspaces.members.reset_password_dialog.submit": "Reset password",
|
|
450
|
+
"workspaces.members.reset_password_dialog.done": "{member} has a new password.",
|
|
451
|
+
"workspaces.members.reset_password_dialog.generated": "One-time password",
|
|
452
|
+
"workspaces.members.reset_password_dialog.generated_hint": "Shown once and never again. Hand it over through a channel you trust; they set their own the first time they sign in.",
|
|
453
|
+
"workspaces.members.reset_password_dialog.not_notified": "There was no channel to tell them on, so tell them yourself.",
|
|
454
|
+
"workspaces.members.rename": "Rename",
|
|
455
|
+
"workspaces.members.rename_dialog.title": "Correct the name",
|
|
456
|
+
"workspaces.members.rename_dialog.label": "Display name",
|
|
457
|
+
"workspaces.members.rename_dialog.placeholder": "Leave empty to clear the name",
|
|
458
|
+
"workspaces.members.rename_dialog.hint": "This is the person's name across the product, not a note kept in this workspace.",
|
|
459
|
+
"workspaces.members.rename_dialog.submit": "Save name",
|
|
460
|
+
"workspaces.members.rename_dialog.blocked.unchanged": "Change the name first.",
|
|
150
461
|
"workspaces.members.role.owner": "Owner",
|
|
151
462
|
"workspaces.members.role.admin": "Admin",
|
|
152
463
|
"workspaces.members.role.member": "Member",
|
|
@@ -156,6 +467,84 @@ export const workspacesI18nBundleEn = {
|
|
|
156
467
|
"workspaces.role.admin": "Admin",
|
|
157
468
|
"workspaces.role.member": "Member",
|
|
158
469
|
"workspaces.role.viewer": "Viewer",
|
|
470
|
+
"workspaces.role.rank_caption": "Rank {rank}",
|
|
471
|
+
// Workspaces page
|
|
472
|
+
"workspaces.page.title": "Workspaces",
|
|
473
|
+
"workspaces.page.subtitle": "Every workspace you belong to.",
|
|
474
|
+
"workspaces.list.count": "{count} workspaces",
|
|
475
|
+
"workspaces.list.count.one": "{count} workspace",
|
|
476
|
+
"workspaces.list.count.other": "{count} workspaces",
|
|
477
|
+
"workspaces.list.member_count": "{count} members",
|
|
478
|
+
"workspaces.list.member_count.one": "{count} member",
|
|
479
|
+
"workspaces.list.member_count.other": "{count} members",
|
|
480
|
+
"workspaces.list.owner_line": "Owned by {owner}",
|
|
481
|
+
"workspaces.list.your_role": "Your role",
|
|
482
|
+
"workspaces.list.open": "Open",
|
|
483
|
+
"workspaces.list.preferred": "Home",
|
|
484
|
+
"workspaces.list.set_preferred": "Make home",
|
|
485
|
+
"workspaces.list.clear_preferred": "Clear home",
|
|
486
|
+
"workspaces.list.empty_hint": "Create one to invite people and keep your work together.",
|
|
487
|
+
"workspaces.list.guest_notice": "You are here as a guest. Guests can open what they were sent, but do not belong to a workspace.",
|
|
488
|
+
"workspaces.list.instance_closed": "Ask whoever runs this installation for an invitation.",
|
|
489
|
+
"workspaces.list.create_dialog.title": "New workspace",
|
|
490
|
+
"workspaces.list.create_dialog.name_label": "Name",
|
|
491
|
+
"workspaces.list.create_dialog.name_placeholder": "e.g. Acme Engineering",
|
|
492
|
+
"workspaces.list.create_dialog.submit": "Create workspace",
|
|
493
|
+
"workspaces.list.create_dialog.blocked.no_name": "Enter a name.",
|
|
494
|
+
"workspaces.list.blocked.create_policy": "This installation only lets its owner create workspaces.",
|
|
495
|
+
// Invitation administration
|
|
496
|
+
"workspaces.invitations.title": "Invitations",
|
|
497
|
+
"workspaces.invitations.subtitle": "Who has been invited and has not joined yet.",
|
|
498
|
+
"workspaces.invitations.count": "{count} invitations",
|
|
499
|
+
"workspaces.invitations.count.one": "{count} invitation",
|
|
500
|
+
"workspaces.invitations.count.other": "{count} invitations",
|
|
501
|
+
"workspaces.invitations.empty": "Nobody is waiting on an invitation.",
|
|
502
|
+
"workspaces.invitations.expires_label": "Expires",
|
|
503
|
+
"workspaces.invitations.sent_label": "Last sent",
|
|
504
|
+
"workspaces.invitations.sent_never": "No letter sent yet",
|
|
505
|
+
"workspaces.invitations.search_placeholder": "Search by email",
|
|
506
|
+
"workspaces.invitations.filter_label": "Show",
|
|
507
|
+
"workspaces.invitations.filter.pending": "Waiting",
|
|
508
|
+
"workspaces.invitations.filter.never_accepted": "Never accepted",
|
|
509
|
+
"workspaces.invitations.filter.all": "All",
|
|
510
|
+
"workspaces.invitations.status.pending": "Waiting",
|
|
511
|
+
"workspaces.invitations.status.accepted": "Accepted",
|
|
512
|
+
"workspaces.invitations.status.declined": "Declined",
|
|
513
|
+
"workspaces.invitations.status.revoked": "Revoked",
|
|
514
|
+
"workspaces.invitations.status.expired": "Expired",
|
|
515
|
+
"workspaces.invitations.resend": "Resend",
|
|
516
|
+
"workspaces.invitations.resend_confirm": "Send the invitation again?",
|
|
517
|
+
"workspaces.invitations.resend_confirm_body": "A fresh link goes out to {email} and the earlier one stops working.",
|
|
518
|
+
"workspaces.invitations.revoke": "Revoke",
|
|
519
|
+
"workspaces.invitations.revoke_confirm": "Withdraw this invitation?",
|
|
520
|
+
"workspaces.invitations.revoke_confirm_body": "The link to {email} stops working. Nobody is told; you can invite them again later.",
|
|
521
|
+
"workspaces.invitations.rename": "Rename",
|
|
522
|
+
"workspaces.invitations.rename_dialog.title": "Correct the invitee's name",
|
|
523
|
+
"workspaces.invitations.blocked.terminal": "This invitation was already accepted, declined, revoked or expired.",
|
|
524
|
+
"workspaces.invitations.blocked.resend_terminal": "Only a waiting or expired invitation can be sent again.",
|
|
525
|
+
"workspaces.invitations.blocked.row_closed": "This invitation is closed — there is nothing left to do with it.",
|
|
526
|
+
"workspaces.invitations.blocked.row_resend_only": "This invitation has run out. Sending it again is the only thing left to do.",
|
|
527
|
+
// Membership history
|
|
528
|
+
"workspaces.audit.title": "Membership history",
|
|
529
|
+
"workspaces.audit.subtitle": "Who let this person in, who took them out, and when.",
|
|
530
|
+
"workspaces.audit.empty": "Nothing has happened here yet.",
|
|
531
|
+
"workspaces.audit.filter_label": "Event",
|
|
532
|
+
"workspaces.audit.filter.all": "All events",
|
|
533
|
+
"workspaces.audit.actor_unknown": "The system",
|
|
534
|
+
"workspaces.audit.by": "by {actor}",
|
|
535
|
+
"workspaces.audit.role_line": "Role: {role}",
|
|
536
|
+
"workspaces.audit.action.invitation_created": "Invitation sent",
|
|
537
|
+
"workspaces.audit.action.invitation_accepted": "Invitation accepted",
|
|
538
|
+
"workspaces.audit.action.invitation_revoked": "Invitation revoked",
|
|
539
|
+
"workspaces.audit.action.invitation_declined": "Invitation declined",
|
|
540
|
+
"workspaces.audit.action.account_created_by_invitation": "Account created from an invitation",
|
|
541
|
+
"workspaces.audit.action.member_joined": "Joined the workspace",
|
|
542
|
+
"workspaces.audit.action.member_provisioned": "Added by an admin",
|
|
543
|
+
"workspaces.audit.action.member_removed": "Removed from the workspace",
|
|
544
|
+
"workspaces.audit.action.member_role_changed": "Role changed",
|
|
545
|
+
"workspaces.audit.action.member_suspended": "Access suspended",
|
|
546
|
+
"workspaces.audit.action.member_unsuspended": "Access restored",
|
|
547
|
+
"workspaces.audit.action.deleted": "Workspace deleted",
|
|
159
548
|
// Invite accept flow (org-program §B4)
|
|
160
549
|
"workspaces.invite.loading": "Loading invitation…",
|
|
161
550
|
"workspaces.invite.acceptTitle": "Join {workspace}",
|
|
@@ -163,12 +552,16 @@ export const workspacesI18nBundleEn = {
|
|
|
163
552
|
"workspaces.invite.emailLine": "Invitation for {email}",
|
|
164
553
|
"workspaces.invite.joinCta": "Join workspace",
|
|
165
554
|
"workspaces.invite.declineCta": "Decline",
|
|
555
|
+
"workspaces.invite.declineConfirm": "Decline this invitation?",
|
|
556
|
+
"workspaces.invite.declineConfirmBody": "The workspace is told you said no and the link stops working. Ask for a new invitation if you change your mind.",
|
|
166
557
|
"workspaces.invite.accepted": "You've joined {workspace}.",
|
|
167
558
|
"workspaces.invite.declined": "Invitation declined.",
|
|
168
559
|
"workspaces.invite.unavailable.expired": "This invitation has expired. Ask for a new one.",
|
|
169
560
|
"workspaces.invite.unavailable.revoked": "This invitation was revoked.",
|
|
170
561
|
"workspaces.invite.unavailable.accepted": "This invitation has already been used.",
|
|
171
562
|
"workspaces.invite.unavailable.declined": "This invitation was declined.",
|
|
563
|
+
"workspaces.invite.unavailable.next_step": "Ask an administrator of {workspace} to send you a new invitation.",
|
|
564
|
+
"workspaces.invite.exitCta": "Go to your workspaces",
|
|
172
565
|
"workspaces.invite.wrongAccount": "This invitation is for a different account",
|
|
173
566
|
"workspaces.invite.wrongAccountHint": "You're signed in as {email}, but the invitation was sent to {invited}. Switch accounts to continue.",
|
|
174
567
|
"workspaces.invite.switchAccountCta": "Switch account",
|
|
@@ -181,6 +574,19 @@ export const workspacesI18nBundleEn = {
|
|
|
181
574
|
"workspaces.invite.retryCta": "Try again",
|
|
182
575
|
"workspaces.invite.basicDataTitle": "Set up your profile",
|
|
183
576
|
"workspaces.invite.basicDataContinueCta": "Continue",
|
|
577
|
+
"workspaces.invite.blocked.busy": "Finishing the step already under way…",
|
|
578
|
+
// A workspace-scoped screen with no active workspace
|
|
579
|
+
"workspaces.active.choose.title": "Choose a workspace",
|
|
580
|
+
"workspaces.active.choose.hint": "This screen manages one workspace at a time. Pick one on the Workspaces page and come back.",
|
|
581
|
+
"workspaces.active.none.title": "You are not in a workspace yet",
|
|
582
|
+
"workspaces.active.none.hint": "Create one, or ask an owner to invite you — then there will be something to manage here.",
|
|
583
|
+
// Nav manifest labels
|
|
584
|
+
"workspaces.nav.workspaces": "Workspaces",
|
|
585
|
+
"workspaces.nav.settings": "Workspace",
|
|
586
|
+
"workspaces.nav.members": "Members",
|
|
587
|
+
"workspaces.nav.invitations": "Invitations",
|
|
588
|
+
"workspaces.nav.audit": "History",
|
|
589
|
+
"workspaces.nav.invite": "Invitation",
|
|
184
590
|
};
|
|
185
591
|
/**
|
|
186
592
|
* Register workspaces-react's key bundle into a core i18n engine (call once at
|
package/dist/i18n/keys.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/i18n/keys.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/ru.d.ts
CHANGED
|
@@ -11,9 +11,14 @@ export { workspacesErrorBundleRu } from "./generated/errors.ru.gen.js";
|
|
|
11
11
|
* error texts (from stapel-workspaces's `translations/errors.ru.json`
|
|
12
12
|
* catalog, seeded from the curated stapel-translate corpus — `pnpm
|
|
13
13
|
* gen:errors`) are spread first for coverage by construction; the
|
|
14
|
-
* hand-written ru UI copy for the pair-owned
|
|
15
|
-
*
|
|
14
|
+
* hand-written ru UI copy for the pair-owned `WORKSPACES_I18N_KEYS` follows.
|
|
15
|
+
* Override any key by registering a host bundle AFTER this one
|
|
16
16
|
* (merge-priority convention — see keys.ts).
|
|
17
|
+
*
|
|
18
|
+
* PLURALS. Russian takes four CLDR categories where English takes two, so a
|
|
19
|
+
* `*.count` family ships `one`/`few`/`many`/`other` here and `one`/`other`
|
|
20
|
+
* there. That asymmetry is the translation being right, not a key being
|
|
21
|
+
* wrong — `useTPlural` picks the category from the reader's locale.
|
|
17
22
|
*/
|
|
18
23
|
export declare const workspacesI18nBundleRu: I18nDictionary;
|
|
19
24
|
/**
|
package/dist/i18n/ru.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ru.d.ts","sourceRoot":"","sources":["../../src/i18n/ru.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE
|
|
1
|
+
{"version":3,"file":"ru.d.ts","sourceRoot":"","sources":["../../src/i18n/ru.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB,EAAE,cA4UpC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAGjE"}
|