@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.
Files changed (123) hide show
  1. package/CHANGELOG.md +218 -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 +109 -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 +143 -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 +1 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +1 -1
  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/selection.d.ts +15 -0
  84. package/dist/model/selection.d.ts.map +1 -1
  85. package/dist/model/selection.js +18 -1
  86. package/dist/model/selection.js.map +1 -1
  87. package/dist/nav/manifest.d.ts +45 -0
  88. package/dist/nav/manifest.d.ts.map +1 -0
  89. package/dist/nav/manifest.js +77 -0
  90. package/dist/nav/manifest.js.map +1 -0
  91. package/llms.txt +11 -10
  92. package/manifest.json +281 -69
  93. package/package.json +18 -12
  94. package/src/analytics/generated/events.json +1 -1
  95. package/src/api/generated/schema.ts +187 -60
  96. package/src/default/ActiveWorkspace.tsx +97 -0
  97. package/src/default/AuditTrailPane.tsx +309 -0
  98. package/src/default/InvitationsPane.tsx +501 -0
  99. package/src/default/InviteAcceptPage.tsx +187 -90
  100. package/src/default/MembersManager.tsx +832 -222
  101. package/src/default/RoleSelectField.tsx +187 -0
  102. package/src/default/WorkspaceSettings.tsx +540 -125
  103. package/src/default/WorkspacesPage.tsx +394 -0
  104. package/src/default/index.ts +28 -7
  105. package/src/default/parts.tsx +315 -0
  106. package/src/headless/Members.tsx +84 -16
  107. package/src/headless/RoleSelect.tsx +12 -5
  108. package/src/i18n/es.ts +326 -14
  109. package/src/i18n/generated/errors.es.gen.ts +5 -0
  110. package/src/i18n/generated/errors.gen.ts +15 -0
  111. package/src/i18n/generated/errors.json +37 -0
  112. package/src/i18n/generated/errors.ru.gen.ts +5 -0
  113. package/src/i18n/keys.ts +462 -5
  114. package/src/i18n/ru.ts +259 -5
  115. package/src/index.ts +1 -0
  116. package/src/model/format.ts +158 -0
  117. package/src/model/selection.tsx +19 -1
  118. package/src/nav/manifest.ts +120 -0
  119. package/dist/default/ErrorAlert.d.ts +0 -8
  120. package/dist/default/ErrorAlert.d.ts.map +0 -1
  121. package/dist/default/ErrorAlert.js +0 -30
  122. package/dist/default/ErrorAlert.js.map +0 -1
  123. package/src/default/ErrorAlert.tsx +0 -47
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACxE,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,IAAI,GACL,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAgCpD,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,CACL,KAAC,SAAS,IAAC,OAAO,EAAC,MAAM,iBAAa,oBAAoB,YACxD,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,KACpC,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACxE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAE3E,CAAC,GAAG,EAAE,EAAE,CAAC,CACR,KAAC,QAAQ,IACP,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI,KACpC,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;oBACtC,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;oBACzC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE;oBAClD,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE;oBAC5C,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAChE,CACH,GACgB,GACT,CACb,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAA2B;IAC9C,OAAO,EAAE,oBAAoB,CAAC,wBAAwB;IACtD,OAAO,EAAE,oBAAoB,CAAC,wBAAwB;IACtD,QAAQ,EAAE,oBAAoB,CAAC,yBAAyB;IACxD,QAAQ,EAAE,oBAAoB,CAAC,yBAAyB;CACzD,CAAC;AAEF,SAAS,YAAY,CAAC,KAAqC;IACzD,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,OAAO,CACL,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAC9B,KAAC,UAAU,CAAC,KAAK,IAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAC7C,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EAAE;oBACzC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;iBACxC,CAAC,GACe,EAInB,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC9B,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE;oBACtC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;iBACnC,CAAC,GACc,EAClB,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC9B,CAAC,CAAC,oBAAoB,CAAC,eAAe,EAAE;oBACvC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY;iBAClC,CAAC,GACc,IACb,CACR,CAAC;AACJ,CAAC;AAED;kCACkC;AAClC,SAAS,QAAQ,CAAC,KAQjB;IACC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,aAAa,GAAG,oBAAoB,EAAE,CAAC;IAC7C,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;IACpB,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,6EAA6E;IAC7E,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;IACnD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO;QAC9D,IAAI,YAAY,CAAC,OAAO,KAAK,UAAU;YAAE,OAAO,CAAC,iBAAiB;QAClE,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC;QAClC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;gBAC/B,GAAG,CAAC,cAAc,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,mEAAmE;gBACnE,8DAA8D;gBAC9D,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC5B,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;IAEpC,6EAA6E;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC/D,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC;IAEtC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,gBAAgB;YACnB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,QAAQ,eAAW,MAAM,aAC9D,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC9B,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,GACtB,EAClB,KAAC,QAAQ,IAAC,MAAM,QAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,IACtC,GACF,CACR,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,KAAC,UAAU,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAC,sBAAsB,GAAG,GACtE,CACR,CAAC;QAEJ,qEAAqE;QACrE,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,8DAA8D;QAC9D,KAAK,aAAa;YAChB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,KAAC,MAAM,IACL,MAAM,EAAC,SAAS,EAChB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAC/B,QAAQ,EAAE,CAAC,CACT,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;wBACvB,oBAAoB,CAAC,wBAAwB,CAChD,EACD,KAAK,EACH,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAC,QAAQ,aAC9C,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC9B,CAAC,CAAC,oBAAoB,CAAC,yBAAyB,EAAE;oCACjD,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc;iCACpC,CAAC,GACc,EACjB,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAC7B,KAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,KAAK,CAAC,MAAM,oBACN,MAAM,2BACC,4CAAuC,iBACjD,aAAa,YAExB,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,GAC/B,CACV,IACI,GAET,GACG,CACR,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAC9B,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAI,EACpC,KAAC,UAAU,IACT,OAAO,EAAE,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EACnD,MAAM,EAAE,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,EAAE;gCACrD,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;gCAC/B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;6BAChC,CAAC,EACF,MAAM,EAAC,sBAAsB,KACzB,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS;gCACtC,CAAC,CAAC;oCACE,MAAM,EAAE,CACN,KAAC,MAAM,IACL,OAAO,EAAE,KAAK,CAAC,eAAe,oBACf,MAAM,iBACT,uBAAuB,YAElC,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,GACxC,CACV;iCACF;gCACH,CAAC,CAAC,EAAE,CAAC,GACP,IACG,GACF,CACR,CAAC;QAEJ,KAAK,eAAe;YAClB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAC9B,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAI,EACpC,KAAC,UAAU,CAAC,IAAI,IAAC,MAAM,kBACpB,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,GACzB,EACjB,KAAK,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,CACtC,KAAK,CAAC,gBAAgB,CAAC;4BACrB,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC;yBACrD,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,eAAe,IAAC,IAAI,EAAC,kBAAkB,iBAAa,mBAAmB,GAAG,CAC5E,IACI,GACF,CACR,CAAC;QAEJ,KAAK,SAAS,CAAC;QACf,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY;YACf,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAC9B,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAI,EACpC,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC9B,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EAAE;gCACzC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;6BAC9B,CAAC,GACc,EACjB,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAC1B,KAAC,UAAU,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAC,oBAAoB,GAAG,CAC1E,EACD,KAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,UAAU,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,oBACX,MAAM,iBACT,uBAAuB,YAElC,CAAC,CACA,CAAC,CAAC,IAAI,KAAK,UAAU;gCACnB,CAAC,CAAC,oBAAoB,CAAC,cAAc;gCACrC,CAAC,CAAC,oBAAoB,CAAC,sBAAsB,CAChD,GACM,IACJ,GACF,CACR,CAAC;QAEJ,KAAK,aAAa;YAChB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,KAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAC7B,cAAc,CAAC,CAAC,CAAC,CAChB,KAAC,UAAU,IACT,OAAO,EAAE,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,EACrD,UAAU,EAAE,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAClD,MAAM,EAAC,uBAAuB,EAC9B,OAAO,EAAE,GAAG,EAAE;4BACZ,8CAA8C;4BAC9C,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;4BAC5B,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBAC3B,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,QAAQ,eAAW,MAAM,aAC9D,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,YAC9B,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,GACzB,EAClB,KAAC,QAAQ,IAAC,MAAM,QAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,IACtC,CACR,GACI,GACF,CACR,CAAC;QAEJ,KAAK,WAAW;YACd,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAC9B,KAAC,UAAU,CAAC,KAAK,IAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YAC7C,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,GAC5B,EAClB,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,CAClC,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAC9D,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,MAAM,QAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,CAC5C,IACI,GACF,CACR,CAAC;QAEJ,KAAK,cAAc,CAAC;QACpB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI;gBACnB,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;gBACvD,CAAC,CAAC,eAAe,EAAE,CAAC;YACtB,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,aAC9B,KAAC,YAAY,IAAC,OAAO,EAAE,CAAC,CAAC,OAAO,GAAI,EACnC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAC3B,KAAC,UAAU,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAC,qBAAqB,GAAG,CAC3E,EAGD,MAAC,IAAI,IAAC,QAAQ,QAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAC,YAAY,aAClD,KAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,KAAK,QACL,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,oBACZ,MAAM,iBACT,aAAa,YAExB,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,GAC/B,EACT,KAAC,WAAW,IACV,IAAI,EAAE,QAAQ,EACd,MAAM,QACN,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,EAC/B,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EACzC,MAAM,EAAC,gBAAgB,oBACR,MAAM,2BACC,2BAA2B,YAEhD,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,GAC7B,IACT,EACP,KAAC,WAAW,IACV,IAAI,EAAE,iBAAiB,EACvB,MAAM,QACN,KAAK,EAAE,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,EACnD,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,EACtD,YAAY,EAAE,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EACtD,WAAW,EAAE,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAC3C,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,EAClC,SAAS,EAAE,GAAG,EAAE;gCACd,GAAG,CAAC,OAAO,EAAE,CAAC;gCACd,oBAAoB,CAAC,KAAK,CAAC,CAAC;4BAC9B,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,iBAC/B,wBAAwB,GACpC,IACG,GACF,CACR,CAAC;QACJ,CAAC;QAED,KAAK,UAAU;YACb,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,KAAC,MAAM,IACL,MAAM,EAAC,SAAS,EAChB,KAAK,EAAE,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE;wBAC5C,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc;qBACpC,CAAC,GACF,GACG,CACR,CAAC;QAEJ,KAAK,UAAU;YACb,OAAO,CACL,KAAC,IAAI,mBAAa,oBAAoB,YACpC,KAAC,MAAM,IACL,MAAM,EAAC,MAAM,EACb,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAC/B,QAAQ,EAAE,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,GAChD,GACG,CACR,CAAC;IACN,CAAC;AACH,CAAC"}
@@ -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"}