@stapel/workspaces-react 0.16.0 → 0.19.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.
Files changed (128) hide show
  1. package/CHANGELOG.md +194 -0
  2. package/README.md +39 -8
  3. package/dist/api/generated/schema.d.ts +187 -60
  4. package/dist/api/generated/schema.d.ts.map +1 -1
  5. package/dist/default/ActiveWorkspace.d.ts +43 -0
  6. package/dist/default/ActiveWorkspace.d.ts.map +1 -0
  7. package/dist/default/ActiveWorkspace.js +33 -0
  8. package/dist/default/ActiveWorkspace.js.map +1 -0
  9. package/dist/default/AuditTrailPane.d.ts +12 -0
  10. package/dist/default/AuditTrailPane.d.ts.map +1 -0
  11. package/dist/default/AuditTrailPane.js +154 -0
  12. package/dist/default/AuditTrailPane.js.map +1 -0
  13. package/dist/default/InvitationsPane.d.ts +19 -0
  14. package/dist/default/InvitationsPane.d.ts.map +1 -0
  15. package/dist/default/InvitationsPane.js +217 -0
  16. package/dist/default/InvitationsPane.js.map +1 -0
  17. package/dist/default/InviteAcceptPage.d.ts +7 -0
  18. package/dist/default/InviteAcceptPage.d.ts.map +1 -1
  19. package/dist/default/InviteAcceptPage.js +74 -38
  20. package/dist/default/InviteAcceptPage.js.map +1 -1
  21. package/dist/default/MembersManager.d.ts +12 -4
  22. package/dist/default/MembersManager.d.ts.map +1 -1
  23. package/dist/default/MembersManager.js +320 -84
  24. package/dist/default/MembersManager.js.map +1 -1
  25. package/dist/default/RoleSelectField.d.ts +64 -0
  26. package/dist/default/RoleSelectField.d.ts.map +1 -0
  27. package/dist/default/RoleSelectField.js +78 -0
  28. package/dist/default/RoleSelectField.js.map +1 -0
  29. package/dist/default/WorkspaceSettings.d.ts +7 -1
  30. package/dist/default/WorkspaceSettings.d.ts.map +1 -1
  31. package/dist/default/WorkspaceSettings.js +203 -45
  32. package/dist/default/WorkspaceSettings.js.map +1 -1
  33. package/dist/default/WorkspacesPage.d.ts +13 -0
  34. package/dist/default/WorkspacesPage.d.ts.map +1 -0
  35. package/dist/default/WorkspacesPage.js +108 -0
  36. package/dist/default/WorkspacesPage.js.map +1 -0
  37. package/dist/default/index.d.ts +28 -7
  38. package/dist/default/index.d.ts.map +1 -1
  39. package/dist/default/index.js +24 -7
  40. package/dist/default/index.js.map +1 -1
  41. package/dist/default/parts.d.ts +104 -0
  42. package/dist/default/parts.d.ts.map +1 -0
  43. package/dist/default/parts.js +140 -0
  44. package/dist/default/parts.js.map +1 -0
  45. package/dist/headless/Members.d.ts +59 -14
  46. package/dist/headless/Members.d.ts.map +1 -1
  47. package/dist/headless/Members.js +35 -10
  48. package/dist/headless/Members.js.map +1 -1
  49. package/dist/headless/RoleSelect.d.ts +9 -3
  50. package/dist/headless/RoleSelect.d.ts.map +1 -1
  51. package/dist/headless/RoleSelect.js +3 -2
  52. package/dist/headless/RoleSelect.js.map +1 -1
  53. package/dist/i18n/es.d.ts +11 -12
  54. package/dist/i18n/es.d.ts.map +1 -1
  55. package/dist/i18n/es.js +267 -14
  56. package/dist/i18n/es.js.map +1 -1
  57. package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -1
  58. package/dist/i18n/generated/errors.es.gen.js +5 -0
  59. package/dist/i18n/generated/errors.es.gen.js.map +1 -1
  60. package/dist/i18n/generated/errors.gen.d.ts +30 -0
  61. package/dist/i18n/generated/errors.gen.d.ts.map +1 -1
  62. package/dist/i18n/generated/errors.gen.js +15 -0
  63. package/dist/i18n/generated/errors.gen.js.map +1 -1
  64. package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -1
  65. package/dist/i18n/generated/errors.ru.gen.js +5 -0
  66. package/dist/i18n/generated/errors.ru.gen.js.map +1 -1
  67. package/dist/i18n/keys.d.ts +209 -1
  68. package/dist/i18n/keys.d.ts.map +1 -1
  69. package/dist/i18n/keys.js +410 -4
  70. package/dist/i18n/keys.js.map +1 -1
  71. package/dist/i18n/ru.d.ts +7 -2
  72. package/dist/i18n/ru.d.ts.map +1 -1
  73. package/dist/i18n/ru.js +209 -4
  74. package/dist/i18n/ru.js.map +1 -1
  75. package/dist/index.d.ts +2 -2
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +6 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/model/format.d.ts +56 -0
  80. package/dist/model/format.d.ts.map +1 -0
  81. package/dist/model/format.js +125 -0
  82. package/dist/model/format.js.map +1 -0
  83. package/dist/model/mandate.d.ts +23 -1
  84. package/dist/model/mandate.d.ts.map +1 -1
  85. package/dist/model/mandate.js +24 -0
  86. package/dist/model/mandate.js.map +1 -1
  87. package/dist/model/selection.d.ts +15 -0
  88. package/dist/model/selection.d.ts.map +1 -1
  89. package/dist/model/selection.js +18 -1
  90. package/dist/model/selection.js.map +1 -1
  91. package/dist/nav/manifest.d.ts +45 -0
  92. package/dist/nav/manifest.d.ts.map +1 -0
  93. package/dist/nav/manifest.js +77 -0
  94. package/dist/nav/manifest.js.map +1 -0
  95. package/llms.txt +11 -10
  96. package/manifest.json +282 -69
  97. package/package.json +18 -12
  98. package/src/analytics/generated/events.json +1 -1
  99. package/src/api/generated/schema.ts +187 -60
  100. package/src/default/ActiveWorkspace.tsx +97 -0
  101. package/src/default/AuditTrailPane.tsx +309 -0
  102. package/src/default/InvitationsPane.tsx +501 -0
  103. package/src/default/InviteAcceptPage.tsx +187 -90
  104. package/src/default/MembersManager.tsx +832 -222
  105. package/src/default/RoleSelectField.tsx +187 -0
  106. package/src/default/WorkspaceSettings.tsx +540 -125
  107. package/src/default/WorkspacesPage.tsx +387 -0
  108. package/src/default/index.ts +28 -7
  109. package/src/default/parts.tsx +308 -0
  110. package/src/headless/Members.tsx +84 -16
  111. package/src/headless/RoleSelect.tsx +12 -5
  112. package/src/i18n/es.ts +326 -14
  113. package/src/i18n/generated/errors.es.gen.ts +5 -0
  114. package/src/i18n/generated/errors.gen.ts +15 -0
  115. package/src/i18n/generated/errors.json +37 -0
  116. package/src/i18n/generated/errors.ru.gen.ts +5 -0
  117. package/src/i18n/keys.ts +462 -5
  118. package/src/i18n/ru.ts +259 -5
  119. package/src/index.ts +6 -1
  120. package/src/model/format.ts +158 -0
  121. package/src/model/mandate.ts +26 -1
  122. package/src/model/selection.tsx +19 -1
  123. package/src/nav/manifest.ts +120 -0
  124. package/dist/default/ErrorAlert.d.ts +0 -8
  125. package/dist/default/ErrorAlert.d.ts.map +0 -1
  126. package/dist/default/ErrorAlert.js +0 -30
  127. package/dist/default/ErrorAlert.js.map +0 -1
  128. package/src/default/ErrorAlert.tsx +0 -47
@@ -0,0 +1,217 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * `<InvitationsPane/>` — the admin's "who has not joined yet" console
4
+ * (stapel-workspaces #109). Four endpoints that had four hooks and zero
5
+ * pixels: list, revoke, resend, rename.
6
+ *
7
+ * ## Why each control is gated the way it is
8
+ *
9
+ * The three writes are refused by the backend on the invitation's own state,
10
+ * not on the caller's role, so the state is what the screen gates on and the
11
+ * reason is the one the endpoint would give:
12
+ *
13
+ * - **Revoke** and **rename** need a `pending` row. A terminal invitation
14
+ * answers `error.400.invitation_already_used` / `_revoked` / `_declined` /
15
+ * `_expired`; offering the control and letting the person discover that is
16
+ * the "button that leads to a refusal" defect.
17
+ * - **Resend** additionally accepts an `expired` row on purpose — a dead TTL
18
+ * is the commonest reason to resend — and it is NOT an idempotent poke: it
19
+ * rotates the token, so every earlier link (including the one in the
20
+ * invitee's inbox) stops working. The confirm says that, because an admin
21
+ * who does not know it will send two links and wonder which one works.
22
+ *
23
+ * Nothing here shows the invite TOKEN: it is a bearer credential that only
24
+ * ever leaves the backend inside the invitation email, and the response shape
25
+ * deliberately does not carry it.
26
+ */
27
+ import { useState } from "react";
28
+ import { Card, Flex, Input, Segmented, Typography, theme as antdTheme } from "antd";
29
+ import { actionAvailable, actionBlocked, loadStateFromQuery, mapLoad, useT, useTPlural, } from "@stapel/core";
30
+ import { EmptyState, ErrorAlert, GatedButton, LoadList, SkinConfirm, SkinDialog, SkinTheme, } from "@stapel/tokens-antd/skin";
31
+ import { spacing } from "@stapel/tokens";
32
+ import { useInvitations } from "../model/queries.js";
33
+ import { useRenameInvitation, useResendInvitation, useRevokeInvitation, } from "../model/mutations.js";
34
+ import { useWorkspaceFormat } from "../model/format.js";
35
+ import { WORKSPACES_I18N_KEYS } from "../i18n/keys.js";
36
+ import { AnchorPager, Muted, PersonLine, RowActions, StatusTag } from "./parts.js";
37
+ import { ActiveWorkspaceBoundary } from "./ActiveWorkspace.js";
38
+ import { RoleLabel } from "./RoleSelectField.js";
39
+ /** The status a row is in, as the backend derives it. */
40
+ const STATUS_KEY = {
41
+ pending: WORKSPACES_I18N_KEYS.invitationsStatusPending,
42
+ accepted: WORKSPACES_I18N_KEYS.invitationsStatusAccepted,
43
+ declined: WORKSPACES_I18N_KEYS.invitationsStatusDeclined,
44
+ revoked: WORKSPACES_I18N_KEYS.invitationsStatusRevoked,
45
+ expired: WORKSPACES_I18N_KEYS.invitationsStatusExpired,
46
+ };
47
+ const STATUS_TONE = {
48
+ pending: "info",
49
+ accepted: "success",
50
+ declined: "neutral",
51
+ revoked: "neutral",
52
+ expired: "warning",
53
+ };
54
+ const FIRST_PAGE = { anchor: undefined, direction: undefined, index: 1 };
55
+ export function InvitationsPane(props) {
56
+ return (_jsx(SkinTheme, { "data-testid": "invitations-pane", children: _jsx(ActiveWorkspaceBoundary, { workspaceId: props.workspaceId, testId: "invitations-pane-workspace", children: (workspaceId) => (_jsx(InvitationsBody, { workspaceId: workspaceId, canManage: props.canManage ?? true })) }) }));
57
+ }
58
+ function InvitationsBody(props) {
59
+ const t = useT();
60
+ const tPlural = useTPlural();
61
+ const canManage = props.canManage;
62
+ const [status, setStatus] = useState("pending");
63
+ const [search, setSearch] = useState("");
64
+ const [walk, setWalk] = useState(FIRST_PAGE);
65
+ const [revoking, setRevoking] = useState(null);
66
+ const [resending, setResending] = useState(null);
67
+ const [renaming, setRenaming] = useState(null);
68
+ const params = {
69
+ status,
70
+ ...(walk.anchor !== undefined ? { anchor: walk.anchor } : {}),
71
+ ...(walk.direction !== undefined ? { direction: walk.direction } : {}),
72
+ ...(search.trim() !== "" ? { search: search.trim() } : {}),
73
+ };
74
+ const query = useInvitations(props.workspaceId, params);
75
+ const revokeMutation = useRevokeInvitation(props.workspaceId);
76
+ const resendMutation = useResendInvitation(props.workspaceId);
77
+ const renameMutation = useRenameInvitation(props.workspaceId);
78
+ const page = query.data ?? null;
79
+ /** A new filter or a new search is a new walk — an anchor from the old one
80
+ * points into a list that no longer exists. */
81
+ function restart(apply) {
82
+ apply();
83
+ setWalk(FIRST_PAGE);
84
+ }
85
+ return (_jsxs(Card, { children: [_jsxs(Flex, { vertical: true, gap: spacing["1"], children: [_jsx(Typography.Title, { level: 4, style: { marginTop: 0, marginBottom: 0 }, children: t(WORKSPACES_I18N_KEYS.invitationsTitle) }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.invitationsSubtitle) }), page !== null && (_jsx(Muted, { testId: "invitations-count", children: tPlural(WORKSPACES_I18N_KEYS.invitationsCount, { count: page.count }) }))] }), _jsxs(Flex, { gap: spacing["3"], wrap: true, align: "center", style: { marginTop: spacing["4"] }, children: [_jsx(Segmented, { value: status, onChange: (next) => restart(() => setStatus(next)), "aria-label": t(WORKSPACES_I18N_KEYS.invitationsFilterLabel), "data-testid": "invitations-filter", options: [
86
+ { value: "pending", label: t(WORKSPACES_I18N_KEYS.invitationsFilterPending) },
87
+ {
88
+ value: "never_accepted",
89
+ label: t(WORKSPACES_I18N_KEYS.invitationsFilterNeverAccepted),
90
+ },
91
+ { value: "all", label: t(WORKSPACES_I18N_KEYS.invitationsFilterAll) },
92
+ ] }), _jsx(Input, { value: search, onChange: (event) => restart(() => setSearch(event.target.value)), placeholder: t(WORKSPACES_I18N_KEYS.invitationsSearchPlaceholder), "aria-label": t(WORKSPACES_I18N_KEYS.invitationsSearchPlaceholder), allowClear: true, style: { flex: "1 1 12rem" }, "data-testid": "invitations-search" })] }), _jsx(ErrorAlert, { thrown: revokeMutation.error ?? resendMutation.error ?? renameMutation.error, style: { marginTop: spacing["3"] }, testId: "invitations-write-error" }), !canManage && (_jsx("div", { style: { marginTop: spacing["2"] }, children: _jsx(Muted, { testId: "invitations-read-only", children: t(WORKSPACES_I18N_KEYS.membersBlockedReadOnly) }) })), _jsx("div", { style: { marginTop: spacing["4"] }, children: _jsx(LoadList, { state: mapLoad(loadStateFromQuery(query), (loaded) => loaded.items), testId: "invitations-list", onRetry: () => {
93
+ void query.refetch();
94
+ }, empty: _jsx(EmptyState, { title: t(WORKSPACES_I18N_KEYS.invitationsEmpty), testId: "invitations-list-empty" }), children: (invitations) => (_jsx("div", { role: "list", "data-testid": "invitations-rows", children: invitations.map((invitation) => (_jsx(InvitationRow, { invitation: invitation, canManage: canManage, onRename: () => setRenaming(invitation), onResend: () => setResending(invitation), onRevoke: () => setRevoking(invitation) }, invitation.id))) })) }) }), page !== null && (_jsx(AnchorPager, { hasPrev: page.has_prev, hasNext: page.has_next, prevLabel: t(WORKSPACES_I18N_KEYS.pagerPrev), nextLabel: t(WORKSPACES_I18N_KEYS.pagerNext), position: t(WORKSPACES_I18N_KEYS.pagerPosition, { page: walk.index }), testId: "invitations-pager", onPrev: () => setWalk({
95
+ anchor: page.prev_anchor ?? undefined,
96
+ direction: "prev",
97
+ index: Math.max(1, walk.index - 1),
98
+ }), onNext: () => setWalk({
99
+ anchor: page.next_anchor ?? undefined,
100
+ direction: "next",
101
+ index: walk.index + 1,
102
+ }) })), _jsx(SkinConfirm, { open: revoking !== null, danger: true, title: t(WORKSPACES_I18N_KEYS.invitationsRevokeConfirm), body: t(WORKSPACES_I18N_KEYS.invitationsRevokeConfirmBody, {
103
+ email: revoking?.email ?? "",
104
+ }), confirmLabel: t(WORKSPACES_I18N_KEYS.invitationsRevoke), cancelLabel: t(WORKSPACES_I18N_KEYS.cancel), confirming: revokeMutation.isPending, onConfirm: () => {
105
+ if (revoking !== null)
106
+ revokeMutation.mutate(revoking.id);
107
+ setRevoking(null);
108
+ }, onCancel: () => setRevoking(null), "data-testid": "invitations-revoke-confirm" }), _jsx(SkinConfirm, { open: resending !== null, title: t(WORKSPACES_I18N_KEYS.invitationsResendConfirm), body: t(WORKSPACES_I18N_KEYS.invitationsResendConfirmBody, {
109
+ email: resending?.email ?? "",
110
+ }), confirmLabel: t(WORKSPACES_I18N_KEYS.invitationsResend), cancelLabel: t(WORKSPACES_I18N_KEYS.cancel), confirming: resendMutation.isPending, onConfirm: () => {
111
+ if (resending !== null)
112
+ resendMutation.mutate(resending.id);
113
+ setResending(null);
114
+ }, onCancel: () => setResending(null), "data-testid": "invitations-resend-confirm" }), _jsx(RenameInvitationDialog, { invitation: renaming, onClose: () => setRenaming(null), isRenaming: renameMutation.isPending, onRename: (displayName) => {
115
+ if (renaming !== null) {
116
+ renameMutation.mutate({ invitationId: renaming.id, displayName });
117
+ }
118
+ setRenaming(null);
119
+ } })] }));
120
+ }
121
+ /** Only a live invitation can be withdrawn or corrected. */
122
+ function pendingOnly(invitation) {
123
+ return invitation.status === "pending"
124
+ ? actionAvailable()
125
+ : actionBlocked(WORKSPACES_I18N_KEYS.invitationsBlockedTerminal);
126
+ }
127
+ /** Resend also accepts an expired row — reviving a dead TTL is what it is
128
+ * mostly for — and refuses the three terminal states. */
129
+ function resendable(invitation) {
130
+ return invitation.status === "pending" || invitation.status === "expired"
131
+ ? actionAvailable()
132
+ : actionBlocked(WORKSPACES_I18N_KEYS.invitationsBlockedResendTerminal);
133
+ }
134
+ /**
135
+ * The row's refusal as ONE sentence, or `null` when nothing on it is refused.
136
+ *
137
+ * Both gates above answer the same question — what became of this invitation —
138
+ * and the row's status tag has already named it. So a row states the
139
+ * consequence once, in the shape a person reads it ("nothing more can be done
140
+ * with it" / "only resending is left"), instead of repeating a four-way
141
+ * disjunction under every button.
142
+ */
143
+ function rowReasonKey(invitation) {
144
+ const liveRefused = !pendingOnly(invitation).available;
145
+ const resendRefused = !resendable(invitation).available;
146
+ if (liveRefused && resendRefused) {
147
+ return WORKSPACES_I18N_KEYS.invitationsBlockedRowClosed;
148
+ }
149
+ if (liveRefused)
150
+ return WORKSPACES_I18N_KEYS.invitationsBlockedRowResendOnly;
151
+ return null;
152
+ }
153
+ function InvitationRow(props) {
154
+ const t = useT();
155
+ const format = useWorkspaceFormat();
156
+ const { token } = antdTheme.useToken();
157
+ const { invitation } = props;
158
+ const statusKey = STATUS_KEY[invitation.status];
159
+ const expires = format.relative(invitation.expires_at);
160
+ const lastSent = format.relative(invitation.last_sent_at);
161
+ const reasonKey = rowReasonKey(invitation);
162
+ return (_jsxs("div", { role: "listitem", "data-testid": `invitation-row-${invitation.id}`, style: {
163
+ display: "flex",
164
+ flexWrap: "wrap",
165
+ alignItems: "center",
166
+ justifyContent: "space-between",
167
+ gap: spacing["3"],
168
+ paddingTop: spacing["3"],
169
+ paddingBottom: spacing["3"],
170
+ borderBottom: `1px solid ${token.colorSplit}`,
171
+ }, children: [_jsx(PersonLine, { name: invitation.display_name ?? null, email: invitation.email, tags: _jsx(StatusTag, { tone: STATUS_TONE[invitation.status] ?? "neutral", testId: `invitation-status-${invitation.id}`, children: statusKey === undefined ? invitation.status : t(statusKey) }), caption: _jsxs(_Fragment, { children: [_jsx(RoleLabel, { role: invitation.role }), expires !== null && (_jsxs(_Fragment, { children: [" · ", t(WORKSPACES_I18N_KEYS.invitationsExpiresLabel), ": ", expires] })), " · ", lastSent === null
172
+ ? t(WORKSPACES_I18N_KEYS.invitationsSentNever)
173
+ : `${t(WORKSPACES_I18N_KEYS.invitationsSentLabel)}: ${lastSent}`] }) }), props.canManage && (_jsx(RowActions, { testId: `invitation-blocked-${invitation.id}`, ...(reasonKey !== null ? { reason: t(reasonKey) } : {}), actions: [
174
+ {
175
+ key: "rename",
176
+ gate: pendingOnly(invitation),
177
+ label: t(WORKSPACES_I18N_KEYS.invitationsRename),
178
+ onClick: props.onRename,
179
+ testId: `invitation-rename-${invitation.id}`,
180
+ },
181
+ {
182
+ key: "resend",
183
+ gate: resendable(invitation),
184
+ label: t(WORKSPACES_I18N_KEYS.invitationsResend),
185
+ onClick: props.onResend,
186
+ testId: `invitation-resend-${invitation.id}`,
187
+ },
188
+ {
189
+ key: "revoke",
190
+ gate: pendingOnly(invitation),
191
+ label: t(WORKSPACES_I18N_KEYS.invitationsRevoke),
192
+ onClick: props.onRevoke,
193
+ danger: true,
194
+ testId: `invitation-revoke-${invitation.id}`,
195
+ },
196
+ ] }))] }));
197
+ }
198
+ /**
199
+ * The name correction one step before the member rename: the invitee has not
200
+ * accepted, so there is no profile to write and the hint lives on the
201
+ * invitation. `accept_invitation` copies it onto the membership.
202
+ */
203
+ function RenameInvitationDialog(props) {
204
+ const t = useT();
205
+ const current = props.invitation?.display_name ?? "";
206
+ const [value, setValue] = useState(current);
207
+ const [editingId, setEditingId] = useState(null);
208
+ if (props.invitation !== null && editingId !== props.invitation.id) {
209
+ setEditingId(props.invitation.id);
210
+ setValue(props.invitation.display_name ?? "");
211
+ }
212
+ const gate = value.trim() === current.trim()
213
+ ? actionBlocked(WORKSPACES_I18N_KEYS.membersRenameBlockedUnchanged)
214
+ : actionAvailable();
215
+ return (_jsx(SkinDialog, { open: props.invitation !== null, onClose: props.onClose, title: t(WORKSPACES_I18N_KEYS.invitationsRenameDialogTitle), dismissLabel: t(WORKSPACES_I18N_KEYS.dialogClose), "data-testid": "invitations-rename-dialog", footer: _jsx(GatedButton, { gate: gate, type: "primary", loading: props.isRenaming, onClick: () => props.onRename(value.trim() === "" ? null : value.trim()), testId: "invitations-rename-submit", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(WORKSPACES_I18N_KEYS.membersRenameSubmit) }), children: _jsxs(Flex, { vertical: true, gap: spacing["2"], children: [_jsx(Typography.Text, { children: t(WORKSPACES_I18N_KEYS.membersRenameLabel) }), _jsx(Input, { value: value, onChange: (event) => setValue(event.target.value), placeholder: t(WORKSPACES_I18N_KEYS.membersRenamePlaceholder), "aria-label": t(WORKSPACES_I18N_KEYS.membersRenameLabel), "data-testid": "invitations-rename-input" })] }) }));
216
+ }
217
+ //# sourceMappingURL=InvitationsPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvitationsPane.js","sourceRoot":"","sources":["../../src/default/InvitationsPane.tsx"],"names":[],"mappings":"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"}
@@ -21,6 +21,13 @@ export interface InviteAcceptPageProps {
21
21
  }) => ReactNode;
22
22
  /** Wrong-account CTA (sign out / switch). Omitted → CTA hidden. */
23
23
  readonly onSwitchAccount?: () => void;
24
+ /**
25
+ * Leave the invitation page — the door out of a terminal state (expired,
26
+ * revoked, already used), where there is nothing left to do here. The pair
27
+ * owns no router, so omitting it draws no button and the page states the
28
+ * next step in words instead of offering one that goes nowhere.
29
+ */
30
+ readonly onExit?: () => void;
24
31
  readonly onAccepted?: (member: Member) => void;
25
32
  readonly onDeclined?: () => void;
26
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"InviteAcceptPage.d.ts","sourceRoot":"","sources":["../../src/default/InviteAcceptPage.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKrD,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGjE,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;0EACsE;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,uEAAuE;IACvE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE;QAChC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACrC,KAAK,SAAS,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,SAAS,CAAC;IACzE,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CA4B3E"}
1
+ {"version":3,"file":"InviteAcceptPage.d.ts","sourceRoot":"","sources":["../../src/default/InviteAcceptPage.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBrD,OAAO,KAAK,EAAqB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;0EACsE;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,uEAAuE;IACvE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE;QAChC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KACrC,KAAK,SAAS,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,SAAS,CAAC;IACzE,mEAAmE;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CA+B3E"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * `<InviteAcceptPage/>` — the default `/invite/{token}` route component
4
4
  * (org-program §B4): every state of the `InviteAcceptFlow` headless journey
@@ -7,10 +7,13 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
7
7
  * - `renderLoginPanel` — the sign-in surface for a registered invitee
8
8
  * without a session (drop auth-react's `<AuthPanel/>` in; call
9
9
  * `onLoggedIn(email)` — or simply let the `sessionEmail` prop update,
10
- * the flow re-routes on it automatically).
10
+ * the flow re-routes on it automatically). Unfilled, it renders a
11
+ * `SlotPlaceholder` in dev rather than a hole: an accept page with no way
12
+ * to sign in looks finished, which is the one defect nobody reports.
11
13
  * - `renderInitialSetup` — the basic-data step for a freshly created
12
14
  * account (drop profiles-react's `InitialSetupPrompt`/`InitialSetupModal`
13
- * in; call `onDone()`). Omitted → the step auto-skips.
15
+ * in; call `onDone()`). Omitted → the step auto-skips, which is a
16
+ * deliberate journey decision, not an unfilled hole.
14
17
  *
15
18
  * THE GRANT SEAM (§B4): for a NEW user the flow mints a login grant and this
16
19
  * page hands it to YOUR `onLoginGrant(grantToken)` — wire it to auth-react's
@@ -19,25 +22,35 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
19
22
  * (`grantExchanged`); a rejection shows a retry. The pairs stay decoupled:
20
23
  * this package never imports auth-react.
21
24
  *
22
- * Like the pair's other default skins (MembersManager/WorkspaceSettings),
23
- * theming comes from the host's antd ConfigProvider — this is a route BODY,
24
- * not a self-themed shell.
25
+ * ## One primary per screen
26
+ *
27
+ * The visual pass photographed five solid blue buttons on this page, with
28
+ * "Decline" — irreversible, and the one the workspace is told about —
29
+ * indistinguishable from "Accept". Every state here now has at most ONE
30
+ * primary: joining. Declining is a quiet danger link behind a confirm that
31
+ * says what it costs. Failures come from the substrate's `ErrorAlert`, so a
32
+ * 429 on the claim reads "you can request another one in 42 seconds" (the
33
+ * backend's keyed `error.429.invitation_grant_pending` with its `retry_after`)
34
+ * instead of a generic shrug.
25
35
  */
26
36
  import { useEffect, useRef, useState } from "react";
27
- import { Alert, Button, Card, Flex, Result, Spin, Typography } from "antd";
28
- import { useFormatFlowError, useT } from "@stapel/core";
37
+ import { Button, Card, Flex, Result, Skeleton, Typography } from "antd";
38
+ import { SlotPlaceholder, actionAvailable, actionBlocked, useDescribeFlowError, useT, } from "@stapel/core";
39
+ import { ErrorAlert, GatedButton, SkinConfirm, SkinTheme, } from "@stapel/tokens-antd/skin";
40
+ import { spacing } from "@stapel/tokens";
29
41
  import { InviteAcceptFlow } from "../headless/InviteAcceptFlow.js";
30
42
  import { WORKSPACES_I18N_KEYS } from "../i18n/keys.js";
43
+ import { useRoleLabel } from "./RoleSelectField.js";
31
44
  export function InviteAcceptPage(props) {
32
- return (_jsx(InviteAcceptFlow, { token: props.token, sessionEmail: props.sessionEmail ?? null, ...(props.onAccepted !== undefined ? { onAccepted: props.onAccepted } : {}), ...(props.onDeclined !== undefined ? { onDeclined: props.onDeclined } : {}), children: (bag) => (_jsx(PageBody, { bag: bag, sessionEmail: props.sessionEmail ?? null, ...(props.onLoginGrant !== undefined
33
- ? { onLoginGrant: props.onLoginGrant }
34
- : {}), ...(props.renderLoginPanel !== undefined
35
- ? { renderLoginPanel: props.renderLoginPanel }
36
- : {}), ...(props.renderInitialSetup !== undefined
37
- ? { renderInitialSetup: props.renderInitialSetup }
38
- : {}), ...(props.onSwitchAccount !== undefined
39
- ? { onSwitchAccount: props.onSwitchAccount }
40
- : {}) })) }));
45
+ return (_jsx(SkinTheme, { surface: "base", "data-testid": "invite-accept-root", children: _jsx(InviteAcceptFlow, { token: props.token, sessionEmail: props.sessionEmail ?? null, ...(props.onAccepted !== undefined ? { onAccepted: props.onAccepted } : {}), ...(props.onDeclined !== undefined ? { onDeclined: props.onDeclined } : {}), children: (bag) => (_jsx(PageBody, { bag: bag, sessionEmail: props.sessionEmail ?? null, ...(props.onLoginGrant !== undefined
46
+ ? { onLoginGrant: props.onLoginGrant }
47
+ : {}), ...(props.renderLoginPanel !== undefined
48
+ ? { renderLoginPanel: props.renderLoginPanel }
49
+ : {}), ...(props.renderInitialSetup !== undefined
50
+ ? { renderInitialSetup: props.renderInitialSetup }
51
+ : {}), ...(props.onSwitchAccount !== undefined
52
+ ? { onSwitchAccount: props.onSwitchAccount }
53
+ : {}), ...(props.onExit !== undefined ? { onExit: props.onExit } : {}) })) }) }));
41
54
  }
42
55
  const UNAVAILABLE_KEY = {
43
56
  expired: WORKSPACES_I18N_KEYS.inviteUnavailableExpired,
@@ -47,9 +60,12 @@ const UNAVAILABLE_KEY = {
47
60
  };
48
61
  function InviteHeader(props) {
49
62
  const t = useT();
50
- return (_jsxs(Flex, { vertical: true, gap: 4, children: [_jsx(Typography.Title, { level: 3, style: { margin: 0 }, children: t(WORKSPACES_I18N_KEYS.inviteAcceptTitle, {
63
+ const labelFor = useRoleLabel();
64
+ return (_jsxs(Flex, { vertical: true, gap: spacing["1"], children: [_jsx(Typography.Title, { level: 3, style: { margin: 0 }, children: t(WORKSPACES_I18N_KEYS.inviteAcceptTitle, {
51
65
  workspace: props.preview.workspace_name,
52
- }) }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteRoleLine, { role: props.preview.role }) }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteEmailLine, {
66
+ }) }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteRoleLine, {
67
+ role: labelFor(props.preview.role),
68
+ }) }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteEmailLine, {
53
69
  email: props.preview.email_masked,
54
70
  }) })] }));
55
71
  }
@@ -57,9 +73,10 @@ function InviteHeader(props) {
57
73
  * grant-exchange effect below. */
58
74
  function PageBody(props) {
59
75
  const t = useT();
60
- const formatError = useFormatFlowError();
76
+ const describeError = useDescribeFlowError();
61
77
  const { bag } = props;
62
78
  const s = bag.state;
79
+ const [confirmingDecline, setConfirmingDecline] = useState(false);
63
80
  // ── the grant seam: run the host's exchange when the grant is issued ──────
64
81
  const { onLoginGrant, renderInitialSetup } = props;
65
82
  const grantToken = s.step === "grantIssued" ? s.grantToken : null;
@@ -94,42 +111,61 @@ function PageBody(props) {
94
111
  switch (s.step) {
95
112
  case "idle":
96
113
  case "loadingPreview":
97
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, align: "center", gap: "middle", children: [_jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteLoading) }), _jsx(Spin, {})] }) }));
114
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: spacing["3"], role: "status", "aria-busy": "true", children: [_jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteLoading) }), _jsx(Skeleton, { active: true, paragraph: { rows: 2 } })] }) }));
98
115
  case "previewError":
99
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(Alert, { type: "error", showIcon: true, message: formatError(s.error) }) }));
116
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(ErrorAlert, { error: describeError(s.error), testId: "invite-preview-error" }) }));
117
+ // A dead end, and drawn as one. It used to be antd's INFO result — a
118
+ // blue 88px "!" disc, the same pictogram a tip uses — with nothing to do
119
+ // next. The link cannot be revived from here, so the screen says what
120
+ // became of it, in the warning tone that means "this did not work", and
121
+ // names the one thing that does help: asking for another one.
100
122
  case "unavailable":
101
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(Result, { status: "info", title: s.preview.workspace_name, subTitle: t(UNAVAILABLE_KEY[s.status] ??
102
- WORKSPACES_I18N_KEYS.inviteUnavailableRevoked) }) }));
123
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(Result, { status: "warning", title: s.preview.workspace_name, subTitle: t(UNAVAILABLE_KEY[s.status] ??
124
+ WORKSPACES_I18N_KEYS.inviteUnavailableRevoked), extra: _jsxs(Flex, { vertical: true, gap: spacing["3"], align: "center", children: [_jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteUnavailableNextStep, {
125
+ workspace: s.preview.workspace_name,
126
+ }) }), props.onExit !== undefined && (_jsx(Button, { type: "primary", onClick: props.onExit, "data-analytics": "none", "data-analytics-reason": "navigation \u2014 the host owns the router", "data-testid": "invite-exit", children: t(WORKSPACES_I18N_KEYS.inviteExitCta) }))] }) }) }));
103
127
  case "wrongAccount":
104
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: "middle", children: [_jsx(InviteHeader, { preview: s.preview }), _jsx(Alert, { type: "warning", showIcon: true, message: t(WORKSPACES_I18N_KEYS.inviteWrongAccount), description: t(WORKSPACES_I18N_KEYS.inviteWrongAccountHint, {
128
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: spacing["4"], children: [_jsx(InviteHeader, { preview: s.preview }), _jsx(ErrorAlert, { message: t(WORKSPACES_I18N_KEYS.inviteWrongAccount), detail: t(WORKSPACES_I18N_KEYS.inviteWrongAccountHint, {
105
129
  email: props.sessionEmail ?? "",
106
130
  invited: s.preview.email_masked,
107
- }) }), props.onSwitchAccount && (_jsx(Button, { onClick: props.onSwitchAccount, "data-analytics": "flow", children: t(WORKSPACES_I18N_KEYS.inviteSwitchAccountCta) }))] }) }));
131
+ }), testId: "invite-wrong-account", ...(props.onSwitchAccount !== undefined
132
+ ? {
133
+ action: (_jsx(Button, { onClick: props.onSwitchAccount, "data-analytics": "flow", "data-testid": "invite-switch-account", children: t(WORKSPACES_I18N_KEYS.inviteSwitchAccountCta) })),
134
+ }
135
+ : {}) })] }) }));
108
136
  case "loginRequired":
109
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: "middle", children: [_jsx(InviteHeader, { preview: s.preview }), _jsx(Typography.Text, { strong: true, children: t(WORKSPACES_I18N_KEYS.inviteLoginTitle) }), props.renderLoginPanel?.({
137
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: spacing["4"], children: [_jsx(InviteHeader, { preview: s.preview }), _jsx(Typography.Text, { strong: true, children: t(WORKSPACES_I18N_KEYS.inviteLoginTitle) }), props.renderLoginPanel !== undefined ? (props.renderLoginPanel({
110
138
  onLoggedIn: (email) => bag.sessionEstablished(email),
111
- })] }) }));
139
+ })) : (_jsx(SlotPlaceholder, { name: "renderLoginPanel", "data-testid": "invite-login-slot" }))] }) }));
112
140
  case "newUser":
113
141
  case "claiming":
114
142
  case "claimError":
115
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: "middle", children: [_jsx(InviteHeader, { preview: s.preview }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteNewUserHint, {
143
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: spacing["4"], children: [_jsx(InviteHeader, { preview: s.preview }), _jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteNewUserHint, {
116
144
  email: s.preview.email_masked,
117
- }) }), s.step === "claimError" && (_jsx(Alert, { type: "error", showIcon: true, message: formatError(s.error) })), _jsx(Button, { type: "primary", loading: s.step === "claiming", onClick: () => bag.claim(), "data-analytics": "flow", children: t(s.step === "claiming"
145
+ }) }), s.step === "claimError" && (_jsx(ErrorAlert, { error: describeError(s.error), testId: "invite-claim-error" })), _jsx(Button, { type: "primary", loading: s.step === "claiming", onClick: () => bag.claim(), "data-analytics": "flow", "data-testid": "invite-create-account", children: t(s.step === "claiming"
118
146
  ? WORKSPACES_I18N_KEYS.inviteClaiming
119
147
  : WORKSPACES_I18N_KEYS.inviteCreateAccountCta) })] }) }));
120
148
  case "grantIssued":
121
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(Flex, { vertical: true, align: "center", gap: "middle", children: exchangeFailed ? (_jsxs(_Fragment, { children: [_jsx(Alert, { type: "error", showIcon: true, message: t(WORKSPACES_I18N_KEYS.inviteExchangeFailed) }), _jsx(Button, { type: "primary", onClick: () => {
122
- // Re-arm the effect for the same grant token.
123
- exchangedRef.current = null;
124
- setExchangeFailed(false);
125
- }, "data-analytics": "flow", children: t(WORKSPACES_I18N_KEYS.inviteRetryCta) })] })) : (_jsxs(_Fragment, { children: [_jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteExchanging) }), _jsx(Spin, {})] })) }) }));
149
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(Flex, { vertical: true, gap: spacing["3"], children: exchangeFailed ? (_jsx(ErrorAlert, { message: t(WORKSPACES_I18N_KEYS.inviteExchangeFailed), retryLabel: t(WORKSPACES_I18N_KEYS.inviteRetryCta), testId: "invite-exchange-error", onRetry: () => {
150
+ // Re-arm the effect for the same grant token.
151
+ exchangedRef.current = null;
152
+ setExchangeFailed(false);
153
+ } })) : (_jsxs(Flex, { vertical: true, gap: spacing["3"], role: "status", "aria-busy": "true", children: [_jsx(Typography.Text, { type: "secondary", children: t(WORKSPACES_I18N_KEYS.inviteExchanging) }), _jsx(Skeleton, { active: true, paragraph: { rows: 1 } })] })) }) }));
126
154
  case "basicData":
127
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: "middle", children: [_jsx(Typography.Title, { level: 4, style: { margin: 0 }, children: t(WORKSPACES_I18N_KEYS.inviteBasicDataTitle) }), renderInitialSetup ? (renderInitialSetup({ onDone: () => bag.completeBasicData() })) : (_jsx(Spin, {}))] }) }));
155
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: spacing["4"], children: [_jsx(Typography.Title, { level: 4, style: { margin: 0 }, children: t(WORKSPACES_I18N_KEYS.inviteBasicDataTitle) }), renderInitialSetup !== undefined ? (renderInitialSetup({ onDone: () => bag.completeBasicData() })) : (_jsx(Skeleton, { active: true, paragraph: { rows: 1 } }))] }) }));
128
156
  case "acceptPrompt":
129
157
  case "accepting":
130
158
  case "declining":
131
- case "acceptError":
132
- return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: "middle", children: [_jsx(InviteHeader, { preview: s.preview }), s.step === "acceptError" && (_jsx(Alert, { type: "error", showIcon: true, message: formatError(s.error) })), _jsxs(Flex, { gap: "small", children: [_jsx(Button, { type: "primary", loading: s.step === "accepting", disabled: s.step === "declining", onClick: () => bag.accept(), "data-analytics": "flow", children: t(WORKSPACES_I18N_KEYS.inviteJoinCta) }), _jsx(Button, { danger: true, loading: s.step === "declining", disabled: s.step === "accepting", onClick: () => bag.decline(), "data-analytics": "flow", children: t(WORKSPACES_I18N_KEYS.inviteDeclineCta) })] })] }) }));
159
+ case "acceptError": {
160
+ const busy = s.step === "accepting" || s.step === "declining";
161
+ const busyGate = busy
162
+ ? actionBlocked(WORKSPACES_I18N_KEYS.inviteBlockedBusy)
163
+ : actionAvailable();
164
+ return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsxs(Flex, { vertical: true, gap: spacing["4"], children: [_jsx(InviteHeader, { preview: s.preview }), s.step === "acceptError" && (_jsx(ErrorAlert, { error: describeError(s.error), testId: "invite-accept-error" })), _jsxs(Flex, { vertical: true, gap: spacing["2"], align: "flex-start", children: [_jsx(Button, { type: "primary", block: true, loading: s.step === "accepting", onClick: () => bag.accept(), "data-analytics": "flow", "data-testid": "invite-join", children: t(WORKSPACES_I18N_KEYS.inviteJoinCta) }), _jsx(GatedButton, { gate: busyGate, danger: true, type: "link", loading: s.step === "declining", onClick: () => setConfirmingDecline(true), testId: "invite-decline", "data-analytics": "none", "data-analytics-reason": "opens the decline confirm", children: t(WORKSPACES_I18N_KEYS.inviteDeclineCta) })] }), _jsx(SkinConfirm, { open: confirmingDecline, danger: true, title: t(WORKSPACES_I18N_KEYS.inviteDeclineConfirm), body: t(WORKSPACES_I18N_KEYS.inviteDeclineConfirmBody), confirmLabel: t(WORKSPACES_I18N_KEYS.inviteDeclineCta), cancelLabel: t(WORKSPACES_I18N_KEYS.cancel), confirming: s.step === "declining", onConfirm: () => {
165
+ bag.decline();
166
+ setConfirmingDecline(false);
167
+ }, onCancel: () => setConfirmingDecline(false), "data-testid": "invite-decline-confirm" })] }) }));
168
+ }
133
169
  case "accepted":
134
170
  return (_jsx(Card, { "data-testid": "invite-accept-page", children: _jsx(Result, { status: "success", title: t(WORKSPACES_I18N_KEYS.inviteAccepted, {
135
171
  workspace: s.preview.workspace_name,
@@ -1 +1 @@
1
- {"version":3,"file":"InviteAcceptPage.js","sourceRoot":"","sources":["../../src/default/InviteAcceptPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InviteAcceptPage.js","sourceRoot":"","sources":["../../src/default/InviteAcceptPage.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,20 @@
1
1
  import type { ReactElement } from "react";
2
2
  export interface MembersManagerProps {
3
- workspaceId: string;
4
3
  /**
5
- * Whether the caller may invite, change roles, and remove members. The
6
- * host already knows the caller's own verdict in this workspace (e.g.
4
+ * The workspace whose roster this is. OPTIONAL: omitted (the way the nav
5
+ * contract mounts this screen — it routes, it does not hand over an ambient
6
+ * scope), the active workspace is read from the runtime selection
7
+ * (`WorkspaceSelection`), and a screen with none renders the designed
8
+ * "choose a workspace" state rather than a blank.
9
+ */
10
+ workspaceId?: string;
11
+ /**
12
+ * Whether the caller may invite, change roles, rename and remove members.
13
+ * The host already knows the caller's own verdict in this workspace (e.g.
7
14
  * `useCapabilities(workspaceId).can("members.invite")`, or the coarser
8
15
  * `my_role`); this component doesn't re-derive it — pass `false` for a
9
- * read-only roster. Default `true`.
16
+ * read-only roster, which says so rather than silently dropping controls.
17
+ * Default `true`.
10
18
  */
11
19
  canManage?: boolean;
12
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MembersManager.d.ts","sourceRoot":"","sources":["../../src/default/MembersManager.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAW1C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAiNvE"}
1
+ {"version":3,"file":"MembersManager.d.ts","sourceRoot":"","sources":["../../src/default/MembersManager.tsx"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AA8BrD,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAsCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAavE"}