@workos-inc/widgets 1.6.1 → 1.7.0-pre.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 (281) hide show
  1. package/CHANGELOG.md +3 -1
  2. package/dist/cjs/admin-portal-domain-verification.client.d.cts +11 -0
  3. package/dist/cjs/admin-portal-sso-connection.client.d.cts +11 -0
  4. package/dist/cjs/alert-dialog-BlG3_awx.d.cts +25 -0
  5. package/dist/cjs/api-keys.client.d.cts +11 -0
  6. package/dist/cjs/dialog-C15qCLN3.d.cts +23 -0
  7. package/dist/cjs/dropdown-menu-BQ5LtvdR.d.cts +48 -0
  8. package/dist/cjs/index.d.cts +8 -0
  9. package/dist/cjs/lib/add-mfa-dialog.cjs +22 -14
  10. package/dist/cjs/lib/add-mfa-dialog.cjs.map +1 -1
  11. package/dist/cjs/lib/add-mfa-dialog.d.cts +2 -2
  12. package/dist/cjs/lib/admin-portal-domain-verification.cjs +6 -8
  13. package/dist/cjs/lib/admin-portal-domain-verification.cjs.map +1 -1
  14. package/dist/cjs/lib/admin-portal-domain-verification.d.cts +11 -0
  15. package/dist/cjs/lib/admin-portal-sso-connection.cjs +7 -8
  16. package/dist/cjs/lib/admin-portal-sso-connection.cjs.map +1 -1
  17. package/dist/cjs/lib/admin-portal-sso-connection.d.cts +11 -0
  18. package/dist/cjs/lib/api-keys/api-key-details-dialog.cjs +3 -3
  19. package/dist/cjs/lib/api-keys/api-key-details-dialog.cjs.map +1 -1
  20. package/dist/cjs/lib/api-keys/api-keys-search.cjs +2 -6
  21. package/dist/cjs/lib/api-keys/api-keys-search.cjs.map +1 -1
  22. package/dist/cjs/lib/api-keys/api-keys-table.cjs +18 -19
  23. package/dist/cjs/lib/api-keys/api-keys-table.cjs.map +1 -1
  24. package/dist/cjs/lib/api-keys/api-keys.cjs +2 -2
  25. package/dist/cjs/lib/api-keys/api-keys.cjs.map +1 -1
  26. package/dist/cjs/lib/api-keys/api-keys.d.cts +12 -0
  27. package/dist/cjs/lib/api-keys/create-api-key.cjs +20 -14
  28. package/dist/cjs/lib/api-keys/create-api-key.cjs.map +1 -1
  29. package/dist/cjs/lib/api-keys/revoke-api-key-dialog.cjs +7 -7
  30. package/dist/cjs/lib/api-keys/revoke-api-key-dialog.cjs.map +1 -1
  31. package/dist/cjs/lib/api-keys/skeleton-table.cjs +3 -2
  32. package/dist/cjs/lib/api-keys/skeleton-table.cjs.map +1 -1
  33. package/dist/cjs/lib/change-password-dialog.cjs +11 -9
  34. package/dist/cjs/lib/change-password-dialog.cjs.map +1 -1
  35. package/dist/cjs/lib/change-password-dialog.d.cts +2 -2
  36. package/dist/cjs/lib/copy-button.cjs +51 -29
  37. package/dist/cjs/lib/copy-button.cjs.map +1 -1
  38. package/dist/cjs/lib/copy-button.d.cts +22 -4
  39. package/dist/cjs/lib/delete-domain-dialog.cjs +8 -7
  40. package/dist/cjs/lib/delete-domain-dialog.cjs.map +1 -1
  41. package/dist/cjs/lib/delete-user-dialog.cjs +15 -7
  42. package/dist/cjs/lib/delete-user-dialog.cjs.map +1 -1
  43. package/dist/cjs/lib/delete-user-dialog.d.cts +2 -2
  44. package/dist/cjs/lib/domain-actions.cjs +8 -8
  45. package/dist/cjs/lib/domain-actions.cjs.map +1 -1
  46. package/dist/cjs/lib/edit-user-profile-dialog.cjs +10 -9
  47. package/dist/cjs/lib/edit-user-profile-dialog.cjs.map +1 -1
  48. package/dist/cjs/lib/edit-user-profile-dialog.d.cts +2 -2
  49. package/dist/cjs/lib/edit-user-role-dialog.cjs +15 -15
  50. package/dist/cjs/lib/edit-user-role-dialog.cjs.map +1 -1
  51. package/dist/cjs/lib/edit-user-role-dialog.d.cts +2 -2
  52. package/dist/cjs/lib/elements/alert-dialog.cjs +76 -0
  53. package/dist/cjs/lib/elements/alert-dialog.cjs.map +1 -0
  54. package/dist/cjs/lib/elements/alert-dialog.d.cts +3 -0
  55. package/dist/cjs/lib/elements/dialog.cjs +74 -0
  56. package/dist/cjs/lib/elements/dialog.cjs.map +1 -0
  57. package/dist/cjs/lib/elements/dialog.d.cts +3 -0
  58. package/dist/cjs/lib/elements/dropdown-menu.cjs +162 -0
  59. package/dist/cjs/lib/elements/dropdown-menu.cjs.map +1 -0
  60. package/dist/cjs/lib/elements/dropdown-menu.d.cts +3 -0
  61. package/dist/cjs/lib/elements/select.cjs +112 -0
  62. package/dist/cjs/lib/elements/select.cjs.map +1 -0
  63. package/dist/cjs/lib/elements/select.d.cts +4 -0
  64. package/dist/cjs/lib/elements/utils.cjs +54 -0
  65. package/dist/cjs/lib/elements/utils.cjs.map +1 -0
  66. package/dist/cjs/lib/elements/utils.d.cts +15 -0
  67. package/dist/cjs/lib/elements.cjs +73 -219
  68. package/dist/cjs/lib/elements.cjs.map +1 -1
  69. package/dist/cjs/lib/elements.d.cts +16 -13
  70. package/dist/cjs/lib/elevated-access.cjs +18 -10
  71. package/dist/cjs/lib/elevated-access.cjs.map +1 -1
  72. package/dist/cjs/lib/empty-state.d.cts +12 -0
  73. package/dist/cjs/lib/invite-user-dialog.cjs +13 -12
  74. package/dist/cjs/lib/invite-user-dialog.cjs.map +1 -1
  75. package/dist/cjs/lib/logout-all-sessions-dialog.cjs +7 -6
  76. package/dist/cjs/lib/logout-all-sessions-dialog.cjs.map +1 -1
  77. package/dist/cjs/lib/logout-all-sessions-dialog.d.cts +2 -2
  78. package/dist/cjs/lib/logout-dialog.cjs +7 -6
  79. package/dist/cjs/lib/logout-dialog.cjs.map +1 -1
  80. package/dist/cjs/lib/logout-dialog.d.cts +2 -2
  81. package/dist/cjs/lib/organization-switcher.cjs +38 -20
  82. package/dist/cjs/lib/organization-switcher.cjs.map +1 -1
  83. package/dist/cjs/lib/organization-switcher.d.cts +16 -2
  84. package/dist/cjs/lib/otp-input.d.cts +8 -0
  85. package/dist/cjs/lib/pipes.cjs +31 -42
  86. package/dist/cjs/lib/pipes.cjs.map +1 -1
  87. package/dist/cjs/lib/pipes.d.cts +12 -0
  88. package/dist/cjs/lib/resend-invite-dialog.cjs +23 -13
  89. package/dist/cjs/lib/resend-invite-dialog.cjs.map +1 -1
  90. package/dist/cjs/lib/resend-invite-dialog.d.cts +2 -2
  91. package/dist/cjs/lib/reset-mfa-dialog.cjs +9 -8
  92. package/dist/cjs/lib/reset-mfa-dialog.cjs.map +1 -1
  93. package/dist/cjs/lib/reset-mfa-dialog.d.cts +2 -2
  94. package/dist/cjs/lib/revoke-invite-dialog.cjs +17 -8
  95. package/dist/cjs/lib/revoke-invite-dialog.cjs.map +1 -1
  96. package/dist/cjs/lib/revoke-invite-dialog.d.cts +2 -2
  97. package/dist/cjs/lib/save-button.cjs +3 -2
  98. package/dist/cjs/lib/save-button.cjs.map +1 -1
  99. package/dist/cjs/lib/save-button.d.cts +12 -1
  100. package/dist/cjs/lib/set-password-dialog.cjs +11 -9
  101. package/dist/cjs/lib/set-password-dialog.cjs.map +1 -1
  102. package/dist/cjs/lib/set-password-dialog.d.cts +2 -2
  103. package/dist/cjs/lib/user-actions-dropdown.cjs +9 -8
  104. package/dist/cjs/lib/user-actions-dropdown.cjs.map +1 -1
  105. package/dist/cjs/lib/user-profile.cjs +1 -1
  106. package/dist/cjs/lib/user-profile.cjs.map +1 -1
  107. package/dist/cjs/lib/user-profile.d.cts +11 -0
  108. package/dist/cjs/lib/user-security.cjs +3 -3
  109. package/dist/cjs/lib/user-security.cjs.map +1 -1
  110. package/dist/cjs/lib/user-security.d.cts +12 -0
  111. package/dist/cjs/lib/user-sessions.cjs +3 -11
  112. package/dist/cjs/lib/user-sessions.cjs.map +1 -1
  113. package/dist/cjs/lib/user-sessions.d.cts +12 -0
  114. package/dist/cjs/lib/users-filter.cjs +5 -6
  115. package/dist/cjs/lib/users-filter.cjs.map +1 -1
  116. package/dist/cjs/lib/users-filter.d.cts +2 -2
  117. package/dist/cjs/lib/users-management.cjs +22 -34
  118. package/dist/cjs/lib/users-management.cjs.map +1 -1
  119. package/dist/cjs/lib/users-management.d.cts +11 -0
  120. package/dist/cjs/lib/users-search.cjs +2 -6
  121. package/dist/cjs/lib/users-search.cjs.map +1 -1
  122. package/dist/cjs/lib/utils.cjs +25 -2
  123. package/dist/cjs/lib/utils.cjs.map +1 -1
  124. package/dist/cjs/lib/utils.d.cts +17 -3
  125. package/dist/cjs/lib/view-dns-record-dialog.cjs +9 -8
  126. package/dist/cjs/lib/view-dns-record-dialog.cjs.map +1 -1
  127. package/dist/cjs/lib/widgets-context.d.cts +8 -0
  128. package/dist/cjs/organization-switcher.client.cjs +33 -5
  129. package/dist/cjs/organization-switcher.client.cjs.map +1 -1
  130. package/dist/cjs/organization-switcher.client.d.cts +11 -0
  131. package/dist/cjs/pipes.client.d.cts +11 -0
  132. package/dist/cjs/select-KR89Qnvm.d.cts +30 -0
  133. package/dist/cjs/user-profile.client.d.cts +11 -0
  134. package/dist/cjs/user-security.client.d.cts +11 -0
  135. package/dist/cjs/user-sessions.client.d.cts +11 -0
  136. package/dist/cjs/users-management.client.d.cts +11 -0
  137. package/dist/cjs/utils.cjs +59 -0
  138. package/dist/cjs/utils.cjs.map +1 -0
  139. package/dist/cjs/utils.d.cts +3 -0
  140. package/dist/cjs/workos-widgets.client.d.cts +8 -0
  141. package/dist/css/lib/provider-icon.css +6 -0
  142. package/dist/esm/admin-portal-domain-verification.client.d.ts +11 -0
  143. package/dist/esm/admin-portal-sso-connection.client.d.ts +11 -0
  144. package/dist/esm/alert-dialog-BlG3_awx.d.ts +25 -0
  145. package/dist/esm/api-keys.client.d.ts +11 -0
  146. package/dist/esm/dialog-C15qCLN3.d.ts +23 -0
  147. package/dist/esm/dropdown-menu-BQ5LtvdR.d.ts +48 -0
  148. package/dist/esm/index.d.ts +8 -0
  149. package/dist/esm/lib/add-mfa-dialog.d.ts +2 -2
  150. package/dist/esm/lib/add-mfa-dialog.js +16 -9
  151. package/dist/esm/lib/add-mfa-dialog.js.map +1 -1
  152. package/dist/esm/lib/admin-portal-domain-verification.d.ts +11 -0
  153. package/dist/esm/lib/admin-portal-domain-verification.js +6 -8
  154. package/dist/esm/lib/admin-portal-domain-verification.js.map +1 -1
  155. package/dist/esm/lib/admin-portal-sso-connection.d.ts +11 -0
  156. package/dist/esm/lib/admin-portal-sso-connection.js +8 -9
  157. package/dist/esm/lib/admin-portal-sso-connection.js.map +1 -1
  158. package/dist/esm/lib/api-keys/api-key-details-dialog.js +3 -3
  159. package/dist/esm/lib/api-keys/api-key-details-dialog.js.map +1 -1
  160. package/dist/esm/lib/api-keys/api-keys-search.js +2 -6
  161. package/dist/esm/lib/api-keys/api-keys-search.js.map +1 -1
  162. package/dist/esm/lib/api-keys/api-keys-table.js +18 -32
  163. package/dist/esm/lib/api-keys/api-keys-table.js.map +1 -1
  164. package/dist/esm/lib/api-keys/api-keys.d.ts +12 -0
  165. package/dist/esm/lib/api-keys/api-keys.js +2 -2
  166. package/dist/esm/lib/api-keys/api-keys.js.map +1 -1
  167. package/dist/esm/lib/api-keys/create-api-key.js +17 -14
  168. package/dist/esm/lib/api-keys/create-api-key.js.map +1 -1
  169. package/dist/esm/lib/api-keys/revoke-api-key-dialog.js +4 -4
  170. package/dist/esm/lib/api-keys/revoke-api-key-dialog.js.map +1 -1
  171. package/dist/esm/lib/api-keys/skeleton-table.js +2 -1
  172. package/dist/esm/lib/api-keys/skeleton-table.js.map +1 -1
  173. package/dist/esm/lib/change-password-dialog.d.ts +2 -2
  174. package/dist/esm/lib/change-password-dialog.js +8 -12
  175. package/dist/esm/lib/change-password-dialog.js.map +1 -1
  176. package/dist/esm/lib/copy-button.d.ts +22 -4
  177. package/dist/esm/lib/copy-button.js +49 -28
  178. package/dist/esm/lib/copy-button.js.map +1 -1
  179. package/dist/esm/lib/delete-domain-dialog.js +4 -3
  180. package/dist/esm/lib/delete-domain-dialog.js.map +1 -1
  181. package/dist/esm/lib/delete-user-dialog.d.ts +2 -2
  182. package/dist/esm/lib/delete-user-dialog.js +13 -15
  183. package/dist/esm/lib/delete-user-dialog.js.map +1 -1
  184. package/dist/esm/lib/domain-actions.js +4 -4
  185. package/dist/esm/lib/domain-actions.js.map +1 -1
  186. package/dist/esm/lib/edit-user-profile-dialog.d.ts +2 -2
  187. package/dist/esm/lib/edit-user-profile-dialog.js +7 -12
  188. package/dist/esm/lib/edit-user-profile-dialog.js.map +1 -1
  189. package/dist/esm/lib/edit-user-role-dialog.d.ts +2 -2
  190. package/dist/esm/lib/edit-user-role-dialog.js +9 -19
  191. package/dist/esm/lib/edit-user-role-dialog.js.map +1 -1
  192. package/dist/esm/lib/elements/alert-dialog.d.ts +3 -0
  193. package/dist/esm/lib/elements/alert-dialog.js +45 -0
  194. package/dist/esm/lib/elements/alert-dialog.js.map +1 -0
  195. package/dist/esm/lib/elements/dialog.d.ts +3 -0
  196. package/dist/esm/lib/elements/dialog.js +43 -0
  197. package/dist/esm/lib/elements/dialog.js.map +1 -0
  198. package/dist/esm/lib/elements/dropdown-menu.d.ts +3 -0
  199. package/dist/esm/lib/elements/dropdown-menu.js +131 -0
  200. package/dist/esm/lib/elements/dropdown-menu.js.map +1 -0
  201. package/dist/esm/lib/elements/select.d.ts +4 -0
  202. package/dist/esm/lib/elements/select.js +77 -0
  203. package/dist/esm/lib/elements/select.js.map +1 -0
  204. package/dist/esm/lib/elements/utils.d.ts +15 -0
  205. package/dist/esm/lib/elements/utils.js +20 -0
  206. package/dist/esm/lib/elements/utils.js.map +1 -0
  207. package/dist/esm/lib/elements.d.ts +16 -13
  208. package/dist/esm/lib/elements.js +71 -215
  209. package/dist/esm/lib/elements.js.map +1 -1
  210. package/dist/esm/lib/elevated-access.js +14 -6
  211. package/dist/esm/lib/elevated-access.js.map +1 -1
  212. package/dist/esm/lib/empty-state.d.ts +12 -0
  213. package/dist/esm/lib/invite-user-dialog.js +10 -24
  214. package/dist/esm/lib/invite-user-dialog.js.map +1 -1
  215. package/dist/esm/lib/logout-all-sessions-dialog.d.ts +2 -2
  216. package/dist/esm/lib/logout-all-sessions-dialog.js +6 -9
  217. package/dist/esm/lib/logout-all-sessions-dialog.js.map +1 -1
  218. package/dist/esm/lib/logout-dialog.d.ts +2 -2
  219. package/dist/esm/lib/logout-dialog.js +6 -9
  220. package/dist/esm/lib/logout-dialog.js.map +1 -1
  221. package/dist/esm/lib/organization-switcher.d.ts +16 -2
  222. package/dist/esm/lib/organization-switcher.js +33 -13
  223. package/dist/esm/lib/organization-switcher.js.map +1 -1
  224. package/dist/esm/lib/otp-input.d.ts +8 -0
  225. package/dist/esm/lib/pipes.d.ts +12 -0
  226. package/dist/esm/lib/pipes.js +27 -47
  227. package/dist/esm/lib/pipes.js.map +1 -1
  228. package/dist/esm/lib/resend-invite-dialog.d.ts +2 -2
  229. package/dist/esm/lib/resend-invite-dialog.js +17 -20
  230. package/dist/esm/lib/resend-invite-dialog.js.map +1 -1
  231. package/dist/esm/lib/reset-mfa-dialog.d.ts +2 -2
  232. package/dist/esm/lib/reset-mfa-dialog.js +6 -9
  233. package/dist/esm/lib/reset-mfa-dialog.js.map +1 -1
  234. package/dist/esm/lib/revoke-invite-dialog.d.ts +2 -2
  235. package/dist/esm/lib/revoke-invite-dialog.js +14 -15
  236. package/dist/esm/lib/revoke-invite-dialog.js.map +1 -1
  237. package/dist/esm/lib/save-button.d.ts +12 -1
  238. package/dist/esm/lib/save-button.js +4 -9
  239. package/dist/esm/lib/save-button.js.map +1 -1
  240. package/dist/esm/lib/set-password-dialog.d.ts +2 -2
  241. package/dist/esm/lib/set-password-dialog.js +8 -12
  242. package/dist/esm/lib/set-password-dialog.js.map +1 -1
  243. package/dist/esm/lib/user-actions-dropdown.js +8 -11
  244. package/dist/esm/lib/user-actions-dropdown.js.map +1 -1
  245. package/dist/esm/lib/user-profile.d.ts +11 -0
  246. package/dist/esm/lib/user-profile.js +2 -2
  247. package/dist/esm/lib/user-profile.js.map +1 -1
  248. package/dist/esm/lib/user-security.d.ts +12 -0
  249. package/dist/esm/lib/user-security.js +4 -4
  250. package/dist/esm/lib/user-security.js.map +1 -1
  251. package/dist/esm/lib/user-sessions.d.ts +12 -0
  252. package/dist/esm/lib/user-sessions.js +5 -13
  253. package/dist/esm/lib/user-sessions.js.map +1 -1
  254. package/dist/esm/lib/users-filter.d.ts +2 -2
  255. package/dist/esm/lib/users-filter.js +5 -6
  256. package/dist/esm/lib/users-filter.js.map +1 -1
  257. package/dist/esm/lib/users-management.d.ts +11 -0
  258. package/dist/esm/lib/users-management.js +23 -39
  259. package/dist/esm/lib/users-management.js.map +1 -1
  260. package/dist/esm/lib/users-search.js +2 -6
  261. package/dist/esm/lib/users-search.js.map +1 -1
  262. package/dist/esm/lib/utils.d.ts +17 -3
  263. package/dist/esm/lib/utils.js +24 -2
  264. package/dist/esm/lib/utils.js.map +1 -1
  265. package/dist/esm/lib/view-dns-record-dialog.js +7 -17
  266. package/dist/esm/lib/view-dns-record-dialog.js.map +1 -1
  267. package/dist/esm/lib/widgets-context.d.ts +8 -0
  268. package/dist/esm/organization-switcher.client.d.ts +11 -0
  269. package/dist/esm/organization-switcher.client.js +33 -5
  270. package/dist/esm/organization-switcher.client.js.map +1 -1
  271. package/dist/esm/pipes.client.d.ts +11 -0
  272. package/dist/esm/select-KR89Qnvm.d.ts +30 -0
  273. package/dist/esm/user-profile.client.d.ts +11 -0
  274. package/dist/esm/user-security.client.d.ts +11 -0
  275. package/dist/esm/user-sessions.client.d.ts +11 -0
  276. package/dist/esm/users-management.client.d.ts +11 -0
  277. package/dist/esm/utils.d.ts +3 -0
  278. package/dist/esm/utils.js +25 -0
  279. package/dist/esm/utils.js.map +1 -0
  280. package/dist/esm/workos-widgets.client.d.ts +8 -0
  281. package/package.json +11 -1
@@ -44,10 +44,10 @@ function DeleteUserDialog({
44
44
  }
45
45
  );
46
46
  };
47
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.AlertDialog.Root, { ...props, children: [
48
- children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.AlertDialog.Trigger, { children }),
47
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Root, { ...props, children: [
48
+ children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Trigger, { children }),
49
49
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
50
- import_elements.AlertDialogContent,
50
+ import_elements.AlertDialog.Content,
51
51
  {
52
52
  maxWidth: "480px",
53
53
  onOpenAutoFocus: () => {
@@ -56,8 +56,8 @@ function DeleteUserDialog({
56
56
  });
57
57
  },
58
58
  children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.AlertDialog.Title, { children: "Remove user" }),
60
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { direction: "column", gap: "3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.AlertDialog.Description, { children: [
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Title, { children: "Remove user" }),
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Flex, { direction: "column", gap: "3", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.AlertDialog.Description, { children: [
61
61
  "Are you sure you want to remove",
62
62
  " ",
63
63
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: user.email }),
@@ -72,8 +72,16 @@ function DeleteUserDialog({
72
72
  onSubmitForm();
73
73
  },
74
74
  children: [
75
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.AlertDialog.Cancel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.SecondaryButton, { disabled: deleteUser.isPending, children: "Cancel" }) }),
76
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.DestructiveButton, { type: "submit", loading: deleteUser.isPending, children: "Remove" })
75
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.AlertDialog.Cancel, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", disabled: deleteUser.isPending, children: "Cancel" }) }),
76
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
77
+ import_elements.Button,
78
+ {
79
+ variant: "destructive",
80
+ type: "submit",
81
+ loading: deleteUser.isPending,
82
+ children: "Remove"
83
+ }
84
+ )
77
85
  ]
78
86
  }
79
87
  ) }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/delete-user-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n AlertDialog,\n Callout,\n Flex,\n Text,\n VisuallyHidden,\n} from \"@radix-ui/themes\";\nimport { type ReactNode, useRef } from \"react\";\nimport { useDeleteUser } from \"./api/user.js\";\nimport {\n AlertDialogContent,\n DestructiveButton,\n SecondaryButton,\n} from \"./elements.js\";\nimport { Member } from \"../api/endpoint.js\";\n\ninterface DeleteUserDialogProps extends AlertDialog.RootProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n user: Member;\n children?: ReactNode;\n}\n\nexport function DeleteUserDialog({\n children,\n user,\n ...props\n}: DeleteUserDialogProps) {\n const deleteUser = useDeleteUser();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const onSubmitForm = () => {\n deleteUser.mutate(\n { userId: user.id },\n {\n onSuccess: () => {\n props.onOpenChange(false);\n },\n },\n );\n };\n\n return (\n <AlertDialog.Root {...props}>\n {children && <AlertDialog.Trigger>{children}</AlertDialog.Trigger>}\n\n <AlertDialogContent\n maxWidth=\"480px\"\n onOpenAutoFocus={() => {\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n }}\n >\n <AlertDialog.Title>Remove user</AlertDialog.Title>\n <Flex direction=\"column\" gap=\"3\">\n <AlertDialog.Description>\n Are you sure you want to remove{\" \"}\n <Text weight=\"bold\">{user.email}</Text>? This action is immediate\n and cannot be undone.\n </AlertDialog.Description>\n </Flex>\n\n {deleteUser.error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>\n {getMutationErrorMessage(deleteUser.error)}\n </Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex gap=\"3\" justify=\"end\" mt=\"5\" asChild>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmitForm();\n }}\n >\n <AlertDialog.Cancel>\n <SecondaryButton disabled={deleteUser.isPending}>\n Cancel\n </SecondaryButton>\n </AlertDialog.Cancel>\n\n <DestructiveButton type=\"submit\" loading={deleteUser.isPending}>\n Remove\n </DestructiveButton>\n </form>\n </Flex>\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(deleteUser.error)}\n </section>\n </VisuallyHidden>\n </AlertDialogContent>\n </AlertDialog.Root>\n );\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (!error) {\n return null;\n }\n // TODO Handle server errors\n return \"There was an error removing the user. Please try again.\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA+CmB;AA5CnB,oBAMO;AACP,mBAAuC;AACvC,kBAA8B;AAC9B,sBAIO;AAUA,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA0B;AACxB,QAAM,iBAAa,2BAAc;AACjC,QAAM,eAAW,qBAAyB,IAAI;AAE9C,QAAM,eAAe,MAAM;AACzB,eAAW;AAAA,MACT,EAAE,QAAQ,KAAK,GAAG;AAAA,MAClB;AAAA,QACE,WAAW,MAAM;AACf,gBAAM,aAAa,KAAK;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE,6CAAC,0BAAY,MAAZ,EAAkB,GAAG,OACnB;AAAA,gBAAY,4CAAC,0BAAY,SAAZ,EAAqB,UAAS;AAAA,IAE5C;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,iBAAiB,MAAM;AACrB,gCAAsB,MAAM;AAC1B,qBAAS,SAAS,MAAM;AAAA,UAC1B,CAAC;AAAA,QACH;AAAA,QAEA;AAAA,sDAAC,0BAAY,OAAZ,EAAkB,yBAAW;AAAA,UAC9B,4CAAC,sBAAK,WAAU,UAAS,KAAI,KAC3B,uDAAC,0BAAY,aAAZ,EAAwB;AAAA;AAAA,YACS;AAAA,YAChC,4CAAC,sBAAK,QAAO,QAAQ,eAAK,OAAM;AAAA,YAAO;AAAA,aAEzC,GACF;AAAA,UAEC,WAAW,QACV,4CAAC,sBAAQ,MAAR,EAAa,OAAM,OAAM,IAAG,KAAI,IAAG,MAClC,sDAAC,sBAAQ,MAAR,EACE,kCAAwB,WAAW,KAAK,GAC3C,GACF,IACE;AAAA,UAEJ,4CAAC,sBAAK,KAAI,KAAI,SAAQ,OAAM,IAAG,KAAI,SAAO,MACxC;AAAA,YAAC;AAAA;AAAA,cACC,UAAU,CAAC,UAAU;AACnB,sBAAM,eAAe;AACrB,6BAAa;AAAA,cACf;AAAA,cAEA;AAAA,4DAAC,0BAAY,QAAZ,EACC,sDAAC,mCAAgB,UAAU,WAAW,WAAW,oBAEjD,GACF;AAAA,gBAEA,4CAAC,qCAAkB,MAAK,UAAS,SAAS,WAAW,WAAW,oBAEhE;AAAA;AAAA;AAAA,UACF,GACF;AAAA,UAEA,4CAAC,gCAAe,SAAO,MACrB,sDAAC,aAAQ,aAAU,UAChB,kCAAwB,WAAW,KAAK,GAC3C,GACF;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,wBAAwB,OAAgB;AAC/C,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/delete-user-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Callout, Flex, Text, VisuallyHidden } from \"@radix-ui/themes\";\nimport { type ReactNode, useRef } from \"react\";\nimport { useDeleteUser } from \"./api/user.js\";\nimport { AlertDialog, Button } from \"./elements.js\";\nimport { Member } from \"../api/endpoint.js\";\n\ninterface DeleteUserDialogProps extends AlertDialog.RootProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n user: Member;\n children?: ReactNode;\n}\n\nexport function DeleteUserDialog({\n children,\n user,\n ...props\n}: DeleteUserDialogProps) {\n const deleteUser = useDeleteUser();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const onSubmitForm = () => {\n deleteUser.mutate(\n { userId: user.id },\n {\n onSuccess: () => {\n props.onOpenChange(false);\n },\n },\n );\n };\n\n return (\n <AlertDialog.Root {...props}>\n {children && <AlertDialog.Trigger>{children}</AlertDialog.Trigger>}\n\n <AlertDialog.Content\n maxWidth=\"480px\"\n onOpenAutoFocus={() => {\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n }}\n >\n <AlertDialog.Title>Remove user</AlertDialog.Title>\n <Flex direction=\"column\" gap=\"3\">\n <AlertDialog.Description>\n Are you sure you want to remove{\" \"}\n <Text weight=\"bold\">{user.email}</Text>? This action is immediate\n and cannot be undone.\n </AlertDialog.Description>\n </Flex>\n\n {deleteUser.error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>\n {getMutationErrorMessage(deleteUser.error)}\n </Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex gap=\"3\" justify=\"end\" mt=\"5\" asChild>\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmitForm();\n }}\n >\n <AlertDialog.Cancel>\n <Button variant=\"secondary\" disabled={deleteUser.isPending}>\n Cancel\n </Button>\n </AlertDialog.Cancel>\n\n <Button\n variant=\"destructive\"\n type=\"submit\"\n loading={deleteUser.isPending}\n >\n Remove\n </Button>\n </form>\n </Flex>\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(deleteUser.error)}\n </section>\n </VisuallyHidden>\n </AlertDialog.Content>\n </AlertDialog.Root>\n );\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (!error) {\n return null;\n }\n // TODO Handle server errors\n return \"There was an error removing the user. Please try again.\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqCmB;AAlCnB,oBAAoD;AACpD,mBAAuC;AACvC,kBAA8B;AAC9B,sBAAoC;AAU7B,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA0B;AACxB,QAAM,iBAAa,2BAAc;AACjC,QAAM,eAAW,qBAAyB,IAAI;AAE9C,QAAM,eAAe,MAAM;AACzB,eAAW;AAAA,MACT,EAAE,QAAQ,KAAK,GAAG;AAAA,MAClB;AAAA,QACE,WAAW,MAAM;AACf,gBAAM,aAAa,KAAK;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE,6CAAC,4BAAY,MAAZ,EAAkB,GAAG,OACnB;AAAA,gBAAY,4CAAC,4BAAY,SAAZ,EAAqB,UAAS;AAAA,IAE5C;AAAA,MAAC,4BAAY;AAAA,MAAZ;AAAA,QACC,UAAS;AAAA,QACT,iBAAiB,MAAM;AACrB,gCAAsB,MAAM;AAC1B,qBAAS,SAAS,MAAM;AAAA,UAC1B,CAAC;AAAA,QACH;AAAA,QAEA;AAAA,sDAAC,4BAAY,OAAZ,EAAkB,yBAAW;AAAA,UAC9B,4CAAC,sBAAK,WAAU,UAAS,KAAI,KAC3B,uDAAC,4BAAY,aAAZ,EAAwB;AAAA;AAAA,YACS;AAAA,YAChC,4CAAC,sBAAK,QAAO,QAAQ,eAAK,OAAM;AAAA,YAAO;AAAA,aAEzC,GACF;AAAA,UAEC,WAAW,QACV,4CAAC,sBAAQ,MAAR,EAAa,OAAM,OAAM,IAAG,KAAI,IAAG,MAClC,sDAAC,sBAAQ,MAAR,EACE,kCAAwB,WAAW,KAAK,GAC3C,GACF,IACE;AAAA,UAEJ,4CAAC,sBAAK,KAAI,KAAI,SAAQ,OAAM,IAAG,KAAI,SAAO,MACxC;AAAA,YAAC;AAAA;AAAA,cACC,UAAU,CAAC,UAAU;AACnB,sBAAM,eAAe;AACrB,6BAAa;AAAA,cACf;AAAA,cAEA;AAAA,4DAAC,4BAAY,QAAZ,EACC,sDAAC,0BAAO,SAAQ,aAAY,UAAU,WAAW,WAAW,oBAE5D,GACF;AAAA,gBAEA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,SAAS,WAAW;AAAA,oBACrB;AAAA;AAAA,gBAED;AAAA;AAAA;AAAA,UACF,GACF;AAAA,UAEA,4CAAC,gCAAe,SAAO,MACrB,sDAAC,aAAQ,aAAU,UAChB,kCAAwB,WAAW,KAAK,GAC3C,GACF;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,wBAAwB,OAAgB;AAC/C,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}
@@ -1,11 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { AlertDialog } from '@radix-ui/themes';
3
2
  import { ReactNode } from 'react';
3
+ import { RootProps } from '@radix-ui/themes/components/alert-dialog';
4
4
  import { Member } from '../api/endpoint.cjs';
5
5
  import '@tanstack/react-query';
6
6
  import '../api/widgets-api-client.cjs';
7
7
 
8
- interface DeleteUserDialogProps extends AlertDialog.RootProps {
8
+ interface DeleteUserDialogProps extends RootProps {
9
9
  open: boolean;
10
10
  onOpenChange: (open: boolean) => void;
11
11
  user: Member;
@@ -24,10 +24,10 @@ __export(domain_actions_exports, {
24
24
  module.exports = __toCommonJS(domain_actions_exports);
25
25
  var import_jsx_runtime = require("react/jsx-runtime");
26
26
  var import_react = require("react");
27
- var import_themes = require("@radix-ui/themes");
28
27
  var import_react_icons = require("@radix-ui/react-icons");
29
28
  var import_view_dns_record_dialog = require("./view-dns-record-dialog.js");
30
29
  var import_delete_domain_dialog = require("./delete-domain-dialog.js");
30
+ var import_elements = require("./elements.js");
31
31
  const DomainActions = ({
32
32
  domain,
33
33
  onDeleteDomain,
@@ -43,19 +43,19 @@ const DomainActions = ({
43
43
  onDeleteDomain,
44
44
  open: deleteDialogOpen,
45
45
  onOpenChange: setDeleteDialogOpen,
46
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.IconButton, { variant: "ghost", size: "2", color: "gray", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.TrashIcon, {}) })
46
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.IconButton, { "aria-label": "Remove domain", title: "Remove domain", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.TrashIcon, {}) })
47
47
  }
48
48
  ) });
49
49
  }
50
50
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
51
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.DropdownMenu.Root, { children: [
52
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.DropdownMenu.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.IconButton, { variant: "ghost", size: "2", color: "gray", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.DotsHorizontalIcon, {}) }) }),
53
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.DropdownMenu.Content, { side: "bottom", align: "end", children: [
54
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.DropdownMenu.Item, { onClick: () => setViewDnsDialogOpen(true), children: domain.state === "Failed" ? "Restart verification" : "View DNS record" }),
51
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.DropdownMenu.Root, { children: [
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.DropdownMenu.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.IconButton, { "aria-label": "Domain actions", title: "Domain actions", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_icons.DotsHorizontalIcon, {}) }) }),
53
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.DropdownMenu.Content, { side: "bottom", align: "end", children: [
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.DropdownMenu.Item, { onClick: () => setViewDnsDialogOpen(true), children: domain.state === "Failed" ? "Restart verification" : "View DNS record" }),
55
55
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
56
- import_themes.DropdownMenu.Item,
56
+ import_elements.DropdownMenu.Item,
57
57
  {
58
- color: "red",
58
+ variant: "destructive",
59
59
  onClick: () => setDeleteDialogOpen(true),
60
60
  children: "Remove domain"
61
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/domain-actions.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { DropdownMenu, IconButton } from \"@radix-ui/themes\";\nimport { DotsHorizontalIcon, TrashIcon } from \"@radix-ui/react-icons\";\nimport { OrganizationDomain } from \"../api/endpoint.js\";\nimport { ViewDnsRecordDialog } from \"./view-dns-record-dialog.js\";\nimport { DeleteDomainDialog } from \"./delete-domain-dialog.js\";\n\ninterface DomainActionsProps {\n domain: OrganizationDomain;\n onDeleteDomain: (domainId: string) => void;\n onReverifyDomain: (domainId: string) => void;\n}\n\nexport const DomainActions = ({\n domain,\n onDeleteDomain,\n onReverifyDomain,\n}: DomainActionsProps) => {\n const [viewDnsDialogOpen, setViewDnsDialogOpen] = useState(false);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n\n if (domain.state === \"Verified\") {\n return (\n <>\n <DeleteDomainDialog\n domain={domain}\n onDeleteDomain={onDeleteDomain}\n open={deleteDialogOpen}\n onOpenChange={setDeleteDialogOpen}\n >\n <IconButton variant=\"ghost\" size=\"2\" color=\"gray\">\n <TrashIcon />\n </IconButton>\n </DeleteDomainDialog>\n </>\n );\n }\n\n return (\n <>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <IconButton variant=\"ghost\" size=\"2\" color=\"gray\">\n <DotsHorizontalIcon />\n </IconButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content side=\"bottom\" align=\"end\">\n <DropdownMenu.Item onClick={() => setViewDnsDialogOpen(true)}>\n {domain.state === \"Failed\"\n ? \"Restart verification\"\n : \"View DNS record\"}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n color=\"red\"\n onClick={() => setDeleteDialogOpen(true)}\n >\n Remove domain\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n\n <ViewDnsRecordDialog\n domain={domain}\n onReverifyDomain={onReverifyDomain}\n open={viewDnsDialogOpen}\n onOpenChange={setViewDnsDialogOpen}\n />\n\n <DeleteDomainDialog\n domain={domain}\n onDeleteDomain={onDeleteDomain}\n open={deleteDialogOpen}\n onOpenChange={setDeleteDialogOpen}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BM;AAvBN,mBAAyB;AACzB,oBAAyC;AACzC,yBAA8C;AAE9C,oCAAoC;AACpC,kCAAmC;AAQ5B,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,CAAC,mBAAmB,oBAAoB,QAAI,uBAAS,KAAK;AAChE,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAS,KAAK;AAE9D,MAAI,OAAO,UAAU,YAAY;AAC/B,WACE,2EACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,cAAc;AAAA,QAEd,sDAAC,4BAAW,SAAQ,SAAQ,MAAK,KAAI,OAAM,QACzC,sDAAC,gCAAU,GACb;AAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAEA,SACE,4EACE;AAAA,iDAAC,2BAAa,MAAb,EACC;AAAA,kDAAC,2BAAa,SAAb,EACC,sDAAC,4BAAW,SAAQ,SAAQ,MAAK,KAAI,OAAM,QACzC,sDAAC,yCAAmB,GACtB,GACF;AAAA,MACA,6CAAC,2BAAa,SAAb,EAAqB,MAAK,UAAS,OAAM,OACxC;AAAA,oDAAC,2BAAa,MAAb,EAAkB,SAAS,MAAM,qBAAqB,IAAI,GACxD,iBAAO,UAAU,WACd,yBACA,mBACN;AAAA,QACA;AAAA,UAAC,2BAAa;AAAA,UAAb;AAAA,YACC,OAAM;AAAA,YACN,SAAS,MAAM,oBAAoB,IAAI;AAAA,YACxC;AAAA;AAAA,QAED;AAAA,SACF;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,cAAc;AAAA;AAAA,IAChB;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,cAAc;AAAA;AAAA,IAChB;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/domain-actions.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { useState } from \"react\";\nimport { DotsHorizontalIcon, TrashIcon } from \"@radix-ui/react-icons\";\nimport { OrganizationDomain } from \"../api/endpoint.js\";\nimport { ViewDnsRecordDialog } from \"./view-dns-record-dialog.js\";\nimport { DeleteDomainDialog } from \"./delete-domain-dialog.js\";\nimport { DropdownMenu, IconButton } from \"./elements.js\";\n\ninterface DomainActionsProps {\n domain: OrganizationDomain;\n onDeleteDomain: (domainId: string) => void;\n onReverifyDomain: (domainId: string) => void;\n}\n\nexport const DomainActions = ({\n domain,\n onDeleteDomain,\n onReverifyDomain,\n}: DomainActionsProps) => {\n const [viewDnsDialogOpen, setViewDnsDialogOpen] = useState(false);\n const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n\n if (domain.state === \"Verified\") {\n return (\n <>\n <DeleteDomainDialog\n domain={domain}\n onDeleteDomain={onDeleteDomain}\n open={deleteDialogOpen}\n onOpenChange={setDeleteDialogOpen}\n >\n <IconButton aria-label=\"Remove domain\" title=\"Remove domain\">\n <TrashIcon />\n </IconButton>\n </DeleteDomainDialog>\n </>\n );\n }\n\n return (\n <>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger>\n <IconButton aria-label=\"Domain actions\" title=\"Domain actions\">\n <DotsHorizontalIcon />\n </IconButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content side=\"bottom\" align=\"end\">\n <DropdownMenu.Item onClick={() => setViewDnsDialogOpen(true)}>\n {domain.state === \"Failed\"\n ? \"Restart verification\"\n : \"View DNS record\"}\n </DropdownMenu.Item>\n <DropdownMenu.Item\n variant=\"destructive\"\n onClick={() => setDeleteDialogOpen(true)}\n >\n Remove domain\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n\n <ViewDnsRecordDialog\n domain={domain}\n onReverifyDomain={onReverifyDomain}\n open={viewDnsDialogOpen}\n onOpenChange={setViewDnsDialogOpen}\n />\n\n <DeleteDomainDialog\n domain={domain}\n onDeleteDomain={onDeleteDomain}\n open={deleteDialogOpen}\n onOpenChange={setDeleteDialogOpen}\n />\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BM;AAvBN,mBAAyB;AACzB,yBAA8C;AAE9C,oCAAoC;AACpC,kCAAmC;AACnC,sBAAyC;AAQlC,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,CAAC,mBAAmB,oBAAoB,QAAI,uBAAS,KAAK;AAChE,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAAS,KAAK;AAE9D,MAAI,OAAO,UAAU,YAAY;AAC/B,WACE,2EACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,cAAc;AAAA,QAEd,sDAAC,8BAAW,cAAW,iBAAgB,OAAM,iBAC3C,sDAAC,gCAAU,GACb;AAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAEA,SACE,4EACE;AAAA,iDAAC,6BAAa,MAAb,EACC;AAAA,kDAAC,6BAAa,SAAb,EACC,sDAAC,8BAAW,cAAW,kBAAiB,OAAM,kBAC5C,sDAAC,yCAAmB,GACtB,GACF;AAAA,MACA,6CAAC,6BAAa,SAAb,EAAqB,MAAK,UAAS,OAAM,OACxC;AAAA,oDAAC,6BAAa,MAAb,EAAkB,SAAS,MAAM,qBAAqB,IAAI,GACxD,iBAAO,UAAU,WACd,yBACA,mBACN;AAAA,QACA;AAAA,UAAC,6BAAa;AAAA,UAAb;AAAA,YACC,SAAQ;AAAA,YACR,SAAS,MAAM,oBAAoB,IAAI;AAAA,YACxC;AAAA;AAAA,QAED;AAAA,SACF;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,cAAc;AAAA;AAAA,IAChB;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,cAAc;AAAA;AAAA,IAChB;AAAA,KACF;AAEJ;","names":[]}
@@ -50,14 +50,14 @@ function EditUserProfileDialog({
50
50
  setOpen(false);
51
51
  }, []);
52
52
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
53
- import_themes.Dialog.Root,
53
+ import_elements.Dialog.Root,
54
54
  {
55
55
  ...props,
56
56
  open: props.open ?? open,
57
57
  onOpenChange: props.onOpenChange ?? setOpen,
58
58
  children: [
59
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Trigger, { children }),
60
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.DialogContent, { maxWidth: "480px", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Content, { user, onClose: handleClose }) })
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Trigger, { children }),
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Content, { maxWidth: "480px", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Content, { user, onClose: handleClose }) })
61
61
  ]
62
62
  }
63
63
  );
@@ -79,8 +79,8 @@ function Content({ user, onClose }) {
79
79
  }
80
80
  });
81
81
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
82
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Title, { mb: "5", children: "Edit name" }),
83
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Dialog.Description, { children: [
82
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Title, { mb: "5", children: "Edit name" }),
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Description, { children: [
84
84
  "Edit the details of ",
85
85
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: user.email })
86
86
  ] }) }),
@@ -130,9 +130,10 @@ function Content({ user, onClose }) {
130
130
  ] }) })
131
131
  ] }),
132
132
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { mt: "5", gap: "3", justify: "end", children: [
133
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
134
- import_elements.SecondaryButton,
133
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
134
+ import_elements.Button,
135
135
  {
136
+ variant: "secondary",
136
137
  disabled: updateMe.isPending || updateMe.isSuccess,
137
138
  children: "Cancel"
138
139
  }
@@ -140,11 +141,11 @@ function Content({ user, onClose }) {
140
141
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
141
142
  import_save_button.SaveButton,
142
143
  {
143
- asChild: true,
144
+ type: "submit",
144
145
  loading: updateMe.isPending,
145
146
  done: updateMe.isSuccess,
146
147
  onDone: onClose,
147
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.PrimaryButton, { children: "Save" })
148
+ children: "Save"
148
149
  }
149
150
  )
150
151
  ] }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/edit-user-profile-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { Callout, Dialog, Flex, Text, VisuallyHidden } from \"@radix-ui/themes\";\nimport { getMeQueryKey, Me, useUpdateMe } from \"../api/endpoint.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport * as React from \"react\";\nimport { type ReactNode } from \"react\";\nimport * as Form from \"@radix-ui/react-form\";\nimport {\n DialogContent,\n Label,\n PrimaryButton,\n SecondaryButton,\n TextField,\n} from \"./elements.js\";\nimport { SaveButton } from \"./save-button.js\";\n\ninterface EditUserProfileDialogProps extends Dialog.RootProps {\n user: Me;\n children?: ReactNode;\n}\n\nexport function EditUserProfileDialog({\n children,\n user,\n ...props\n}: EditUserProfileDialogProps) {\n const [open, setOpen] = React.useState(false);\n\n const handleClose = React.useCallback(() => {\n setOpen(false);\n }, []);\n\n return (\n <Dialog.Root\n {...props}\n open={props.open ?? open}\n onOpenChange={props.onOpenChange ?? setOpen}\n >\n <Dialog.Trigger>{children}</Dialog.Trigger>\n\n <DialogContent maxWidth=\"480px\">\n <Content user={user} onClose={handleClose} />\n </DialogContent>\n </Dialog.Root>\n );\n}\n\ninterface ContentProps extends Pick<EditUserProfileDialogProps, \"user\"> {\n onClose: () => void;\n}\n\nfunction Content({ user, onClose }: ContentProps) {\n const client = useQueryClient();\n const updateMe = useUpdateMe({\n mutation: {\n onSettled: () => {\n client.invalidateQueries({ queryKey: getMeQueryKey() });\n },\n onSuccess: (newProfile) => {\n client.setQueryData(getMeQueryKey(), {\n ...user,\n firstName: newProfile.firstName || user.firstName,\n lastName: newProfile.lastName || user.lastName,\n });\n },\n },\n });\n\n return (\n <>\n <Dialog.Title mb=\"5\">Edit name</Dialog.Title>\n <VisuallyHidden>\n <Dialog.Description>\n Edit the details of <Text weight=\"bold\">{user.email}</Text>\n </Dialog.Description>\n </VisuallyHidden>\n\n {updateMe.error ? (\n <Callout.Root color=\"red\" my=\"-2\">\n <Callout.Text>{getMutationErrorMessage(updateMe.error)}</Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Form.Root\n onSubmit={async (event) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget);\n const firstName = formData.get(\"firstName\")?.toString();\n const lastName = formData.get(\"lastName\")?.toString();\n updateMe.mutate({\n data: {\n firstName: firstName ?? undefined,\n lastName: lastName ?? undefined,\n },\n });\n }}\n >\n <Flex my=\"5\" direction=\"column\" gap=\"4\">\n <Form.Field name=\"firstName\" asChild>\n <Flex direction=\"column\" gap=\"1\">\n <Form.Label asChild>\n <Label>First name</Label>\n </Form.Label>\n <Form.Control asChild>\n <TextField\n data-1p-ignore\n autoComplete=\"given-name\"\n defaultValue={user.firstName ?? \"\"}\n placeholder=\"Your first name\"\n disabled={updateMe.isPending || updateMe.isSuccess}\n />\n </Form.Control>\n </Flex>\n </Form.Field>\n\n <Form.Field name=\"lastName\" asChild>\n <Flex direction=\"column\" gap=\"1\">\n <Form.Label asChild>\n <Label>Last name</Label>\n </Form.Label>\n <Form.Control asChild>\n <TextField\n data-1p-ignore\n autoComplete=\"family-name\"\n defaultValue={user.lastName ?? \"\"}\n placeholder=\"Your last name\"\n disabled={updateMe.isPending || updateMe.isSuccess}\n />\n </Form.Control>\n </Flex>\n </Form.Field>\n </Flex>\n\n <Flex mt=\"5\" gap=\"3\" justify=\"end\">\n <Dialog.Close>\n <SecondaryButton\n disabled={updateMe.isPending || updateMe.isSuccess}\n >\n Cancel\n </SecondaryButton>\n </Dialog.Close>\n\n <SaveButton\n asChild\n loading={updateMe.isPending}\n done={updateMe.isSuccess}\n onDone={onClose}\n >\n <PrimaryButton>Save</PrimaryButton>\n </SaveButton>\n </Flex>\n\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(updateMe.error)}\n </section>\n </VisuallyHidden>\n </Form.Root>\n </>\n );\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (error instanceof Error) {\n return error.message;\n }\n\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return error.message;\n }\n\n // TODO Handle server errors\n return \"Something went wrong. Please try again.\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAkCI;AAhCJ,oBAA4D;AAC5D,sBAA+C;AAC/C,yBAA+B;AAC/B,YAAuB;AAEvB,WAAsB;AACtB,sBAMO;AACP,yBAA2B;AAOpB,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA+B;AAC7B,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,KAAK;AAE5C,QAAM,cAAc,MAAM,YAAY,MAAM;AAC1C,YAAQ,KAAK;AAAA,EACf,GAAG,CAAC,CAAC;AAEL,SACE;AAAA,IAAC,qBAAO;AAAA,IAAP;AAAA,MACE,GAAG;AAAA,MACJ,MAAM,MAAM,QAAQ;AAAA,MACpB,cAAc,MAAM,gBAAgB;AAAA,MAEpC;AAAA,oDAAC,qBAAO,SAAP,EAAgB,UAAS;AAAA,QAE1B,4CAAC,iCAAc,UAAS,SACtB,sDAAC,WAAQ,MAAY,SAAS,aAAa,GAC7C;AAAA;AAAA;AAAA,EACF;AAEJ;AAMA,SAAS,QAAQ,EAAE,MAAM,QAAQ,GAAiB;AAChD,QAAM,aAAS,mCAAe;AAC9B,QAAM,eAAW,6BAAY;AAAA,IAC3B,UAAU;AAAA,MACR,WAAW,MAAM;AACf,eAAO,kBAAkB,EAAE,cAAU,+BAAc,EAAE,CAAC;AAAA,MACxD;AAAA,MACA,WAAW,CAAC,eAAe;AACzB,eAAO,iBAAa,+BAAc,GAAG;AAAA,UACnC,GAAG;AAAA,UACH,WAAW,WAAW,aAAa,KAAK;AAAA,UACxC,UAAU,WAAW,YAAY,KAAK;AAAA,QACxC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,SACE,4EACE;AAAA,gDAAC,qBAAO,OAAP,EAAa,IAAG,KAAI,uBAAS;AAAA,IAC9B,4CAAC,gCACC,uDAAC,qBAAO,aAAP,EAAmB;AAAA;AAAA,MACE,4CAAC,sBAAK,QAAO,QAAQ,eAAK,OAAM;AAAA,OACtD,GACF;AAAA,IAEC,SAAS,QACR,4CAAC,sBAAQ,MAAR,EAAa,OAAM,OAAM,IAAG,MAC3B,sDAAC,sBAAQ,MAAR,EAAc,kCAAwB,SAAS,KAAK,GAAE,GACzD,IACE;AAAA,IAEJ;AAAA,MAAC,KAAK;AAAA,MAAL;AAAA,QACC,UAAU,OAAO,UAAU;AACzB,gBAAM,eAAe;AACrB,gBAAM,WAAW,IAAI,SAAS,MAAM,aAAa;AACjD,gBAAM,YAAY,SAAS,IAAI,WAAW,GAAG,SAAS;AACtD,gBAAM,WAAW,SAAS,IAAI,UAAU,GAAG,SAAS;AACpD,mBAAS,OAAO;AAAA,YACd,MAAM;AAAA,cACJ,WAAW,aAAa;AAAA,cACxB,UAAU,YAAY;AAAA,YACxB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QAEA;AAAA,uDAAC,sBAAK,IAAG,KAAI,WAAU,UAAS,KAAI,KAClC;AAAA,wDAAC,KAAK,OAAL,EAAW,MAAK,aAAY,SAAO,MAClC,uDAAC,sBAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,0DAAC,KAAK,OAAL,EAAW,SAAO,MACjB,sDAAC,yBAAM,wBAAU,GACnB;AAAA,cACA,4CAAC,KAAK,SAAL,EAAa,SAAO,MACnB;AAAA,gBAAC;AAAA;AAAA,kBACC,kBAAc;AAAA,kBACd,cAAa;AAAA,kBACb,cAAc,KAAK,aAAa;AAAA,kBAChC,aAAY;AAAA,kBACZ,UAAU,SAAS,aAAa,SAAS;AAAA;AAAA,cAC3C,GACF;AAAA,eACF,GACF;AAAA,YAEA,4CAAC,KAAK,OAAL,EAAW,MAAK,YAAW,SAAO,MACjC,uDAAC,sBAAK,WAAU,UAAS,KAAI,KAC3B;AAAA,0DAAC,KAAK,OAAL,EAAW,SAAO,MACjB,sDAAC,yBAAM,uBAAS,GAClB;AAAA,cACA,4CAAC,KAAK,SAAL,EAAa,SAAO,MACnB;AAAA,gBAAC;AAAA;AAAA,kBACC,kBAAc;AAAA,kBACd,cAAa;AAAA,kBACb,cAAc,KAAK,YAAY;AAAA,kBAC/B,aAAY;AAAA,kBACZ,UAAU,SAAS,aAAa,SAAS;AAAA;AAAA,cAC3C,GACF;AAAA,eACF,GACF;AAAA,aACF;AAAA,UAEA,6CAAC,sBAAK,IAAG,KAAI,KAAI,KAAI,SAAQ,OAC3B;AAAA,wDAAC,qBAAO,OAAP,EACC;AAAA,cAAC;AAAA;AAAA,gBACC,UAAU,SAAS,aAAa,SAAS;AAAA,gBAC1C;AAAA;AAAA,YAED,GACF;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAO;AAAA,gBACP,SAAS,SAAS;AAAA,gBAClB,MAAM,SAAS;AAAA,gBACf,QAAQ;AAAA,gBAER,sDAAC,iCAAc,kBAAI;AAAA;AAAA,YACrB;AAAA,aACF;AAAA,UAGA,4CAAC,gCAAe,SAAO,MACrB,sDAAC,aAAQ,aAAU,UAChB,kCAAwB,SAAS,KAAK,GACzC,GACF;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,wBAAwB,OAAgB;AAC/C,MAAI,iBAAiB,OAAO;AAC1B,WAAO,MAAM;AAAA,EACf;AAEA,MACE,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAO,MAAM,YAAY,UACzB;AACA,WAAO,MAAM;AAAA,EACf;AAGA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/edit-user-profile-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { Callout, Flex, Text, VisuallyHidden } from \"@radix-ui/themes\";\nimport { getMeQueryKey, Me, useUpdateMe } from \"../api/endpoint.js\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport * as React from \"react\";\nimport { type ReactNode } from \"react\";\nimport * as Form from \"@radix-ui/react-form\";\nimport { Dialog, Label, Button, TextField } from \"./elements.js\";\nimport { SaveButton } from \"./save-button.js\";\n\ninterface EditUserProfileDialogProps extends Dialog.RootProps {\n user: Me;\n children?: ReactNode;\n}\n\nexport function EditUserProfileDialog({\n children,\n user,\n ...props\n}: EditUserProfileDialogProps) {\n const [open, setOpen] = React.useState(false);\n\n const handleClose = React.useCallback(() => {\n setOpen(false);\n }, []);\n\n return (\n <Dialog.Root\n {...props}\n open={props.open ?? open}\n onOpenChange={props.onOpenChange ?? setOpen}\n >\n <Dialog.Trigger>{children}</Dialog.Trigger>\n\n <Dialog.Content maxWidth=\"480px\">\n <Content user={user} onClose={handleClose} />\n </Dialog.Content>\n </Dialog.Root>\n );\n}\n\ninterface ContentProps extends Pick<EditUserProfileDialogProps, \"user\"> {\n onClose: () => void;\n}\n\nfunction Content({ user, onClose }: ContentProps) {\n const client = useQueryClient();\n const updateMe = useUpdateMe({\n mutation: {\n onSettled: () => {\n client.invalidateQueries({ queryKey: getMeQueryKey() });\n },\n onSuccess: (newProfile) => {\n client.setQueryData(getMeQueryKey(), {\n ...user,\n firstName: newProfile.firstName || user.firstName,\n lastName: newProfile.lastName || user.lastName,\n });\n },\n },\n });\n\n return (\n <>\n <Dialog.Title mb=\"5\">Edit name</Dialog.Title>\n <VisuallyHidden>\n <Dialog.Description>\n Edit the details of <Text weight=\"bold\">{user.email}</Text>\n </Dialog.Description>\n </VisuallyHidden>\n\n {updateMe.error ? (\n <Callout.Root color=\"red\" my=\"-2\">\n <Callout.Text>{getMutationErrorMessage(updateMe.error)}</Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Form.Root\n onSubmit={async (event) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget);\n const firstName = formData.get(\"firstName\")?.toString();\n const lastName = formData.get(\"lastName\")?.toString();\n updateMe.mutate({\n data: {\n firstName: firstName ?? undefined,\n lastName: lastName ?? undefined,\n },\n });\n }}\n >\n <Flex my=\"5\" direction=\"column\" gap=\"4\">\n <Form.Field name=\"firstName\" asChild>\n <Flex direction=\"column\" gap=\"1\">\n <Form.Label asChild>\n <Label>First name</Label>\n </Form.Label>\n <Form.Control asChild>\n <TextField\n data-1p-ignore\n autoComplete=\"given-name\"\n defaultValue={user.firstName ?? \"\"}\n placeholder=\"Your first name\"\n disabled={updateMe.isPending || updateMe.isSuccess}\n />\n </Form.Control>\n </Flex>\n </Form.Field>\n\n <Form.Field name=\"lastName\" asChild>\n <Flex direction=\"column\" gap=\"1\">\n <Form.Label asChild>\n <Label>Last name</Label>\n </Form.Label>\n <Form.Control asChild>\n <TextField\n data-1p-ignore\n autoComplete=\"family-name\"\n defaultValue={user.lastName ?? \"\"}\n placeholder=\"Your last name\"\n disabled={updateMe.isPending || updateMe.isSuccess}\n />\n </Form.Control>\n </Flex>\n </Form.Field>\n </Flex>\n\n <Flex mt=\"5\" gap=\"3\" justify=\"end\">\n <Dialog.Close>\n <Button\n variant=\"secondary\"\n disabled={updateMe.isPending || updateMe.isSuccess}\n >\n Cancel\n </Button>\n </Dialog.Close>\n <SaveButton\n type=\"submit\"\n loading={updateMe.isPending}\n done={updateMe.isSuccess}\n onDone={onClose}\n >\n Save\n </SaveButton>\n </Flex>\n\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(updateMe.error)}\n </section>\n </VisuallyHidden>\n </Form.Root>\n </>\n );\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (error instanceof Error) {\n return error.message;\n }\n\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return error.message;\n }\n\n // TODO Handle server errors\n return \"Something went wrong. Please try again.\";\n}\n"],"mappings":"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","names":[]}
@@ -1,11 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Dialog } from '@radix-ui/themes';
3
2
  import { Me } from '../api/endpoint.cjs';
4
3
  import { ReactNode } from 'react';
4
+ import { RootProps } from '@radix-ui/themes/components/dialog';
5
5
  import '@tanstack/react-query';
6
6
  import '../api/widgets-api-client.cjs';
7
7
 
8
- interface EditUserProfileDialogProps extends Dialog.RootProps {
8
+ interface EditUserProfileDialogProps extends RootProps {
9
9
  user: Me;
10
10
  children?: ReactNode;
11
11
  }
@@ -57,8 +57,8 @@ function EditUserRoleDialog({
57
57
  isLoading: restQueryState.isLoading,
58
58
  isSuccess: restQueryState.isSuccess
59
59
  };
60
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Dialog.Root, { ...props, children: [
61
- children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Trigger, { children }),
60
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Root, { ...props, children: [
61
+ children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Trigger, { children }),
62
62
  data.multipleRolesEnabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
63
63
  EditMultipleUserRolesDialogContent,
64
64
  {
@@ -107,9 +107,9 @@ function EditSingleUserRoleDialogContent({
107
107
  const errorId = `${selectId}-error`;
108
108
  const showErrorMessage = !!queryState.error;
109
109
  const showSingleRoleInfo = queryState.isSuccess && roles.length === 1;
110
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.DialogContent, { maxWidth: "480px", children: [
111
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Title, { children: "Edit role" }),
112
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Dialog.Description, { children: [
110
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Content, { maxWidth: "480px", children: [
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Title, { children: "Edit role" }),
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Description, { children: [
113
113
  "Select the role to assign to ",
114
114
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: displayName })
115
115
  ] }),
@@ -123,7 +123,7 @@ function EditSingleUserRoleDialogContent({
123
123
  },
124
124
  children: [
125
125
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
126
- import_themes.Select.Root,
126
+ import_elements.Select.Root,
127
127
  {
128
128
  name: "roles",
129
129
  value: selectedRole ?? "Unknown",
@@ -131,7 +131,7 @@ function EditSingleUserRoleDialogContent({
131
131
  disabled: queryState.isLoading || showSingleRoleInfo,
132
132
  children: [
133
133
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Skeleton, { loading: queryState.isLoading, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
134
- import_elements.SelectTrigger,
134
+ import_elements.Select.Trigger,
135
135
  {
136
136
  id: selectId,
137
137
  placeholder: "Assign a role",
@@ -140,7 +140,7 @@ function EditSingleUserRoleDialogContent({
140
140
  "aria-describedby": [showErrorMessage && errorId, showSingleRoleInfo && infoId].filter(Boolean).join(" ") || void 0
141
141
  }
142
142
  ) }),
143
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.SelectContent, { children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.SelectItem, { value: role.slug, children: role.name }, role.slug)) })
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Select.Content, { children: roles.map((role) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Select.Item, { value: role.slug, children: role.name }, role.slug)) })
144
144
  ]
145
145
  }
146
146
  ),
@@ -151,9 +151,9 @@ function EditSingleUserRoleDialogContent({
151
151
  ) }),
152
152
  updateUser.error ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Callout.Root, { color: "red", mt: "4", mb: "-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Callout.Text, { children: getMutationErrorMessage(updateUser.error) }) }) : null,
153
153
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { mt: "5", gap: "3", justify: "end", children: [
154
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.SecondaryButton, { disabled: updateUser.isPending, children: "Cancel" }) }),
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", disabled: updateUser.isPending, children: "Cancel" }) }),
155
155
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
156
- import_elements.PrimaryButton,
156
+ import_elements.Button,
157
157
  {
158
158
  form: formId,
159
159
  loading: updateUser.isPending,
@@ -203,7 +203,7 @@ function EditMultipleUserRolesDialogContent({
203
203
  const checkboxGroupId = `role-checkbox-group-${rootId}`;
204
204
  const infoId = `${checkboxGroupId}-info`;
205
205
  const showSingleRoleInfo = queryState.isSuccess && roles.length === 1;
206
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.DialogContent, { maxWidth: "480px", children: [
206
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Content, { maxWidth: "480px", children: [
207
207
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
208
208
  import_themes.Flex,
209
209
  {
@@ -212,8 +212,8 @@ function EditMultipleUserRolesDialogContent({
212
212
  maxHeight: "calc(100vh - var(--dialog-content-padding) * 2 - var(--space-6) - max(var(--space-6), 6vh)",
213
213
  minHeight: "200px",
214
214
  children: [
215
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Title, { children: "Edit roles" }),
216
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Dialog.Description, { children: [
215
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Title, { children: "Edit roles" }),
216
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_elements.Dialog.Description, { children: [
217
217
  "Select the roles to assign to ",
218
218
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { weight: "bold", children: displayName })
219
219
  ] }),
@@ -284,9 +284,9 @@ function EditMultipleUserRolesDialogContent({
284
284
  showSingleRoleInfo ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Text, { color: "gray", size: "2", id: infoId, mt: "1", children: "You cannot update the role for this user as there is only one role available." }) : null,
285
285
  error ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Callout.Root, { color: "red", mt: "4", mb: "-2", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Callout.Text, { children: error }) }) : null,
286
286
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_themes.Flex, { mt: "5", gap: "3", justify: "end", children: [
287
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.SecondaryButton, { disabled: updateUser.isPending, children: "Cancel" }) }),
287
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Dialog.Close, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_elements.Button, { variant: "secondary", disabled: updateUser.isPending, children: "Cancel" }) }),
288
288
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
289
- import_elements.PrimaryButton,
289
+ import_elements.Button,
290
290
  {
291
291
  form: formId,
292
292
  loading: updateUser.isPending,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/edit-user-role-dialog.tsx"],"sourcesContent":["// @ts-nocheck\n// Unclear why, but there is a versioning conflict somewhere causing the build\n// to fail based on types with the Checkbox component. Will fix asap.\n\"use client\";\n\nimport * as React from \"react\";\nimport {\n Box,\n Card,\n Callout,\n CheckboxGroup,\n Dialog,\n Flex,\n Select,\n ScrollArea,\n Text,\n VisuallyHidden,\n Separator,\n} from \"@radix-ui/themes\";\nimport { type ReactNode, useState } from \"react\";\nimport { useUpdateUserRole } from \"./api/user.js\";\nimport {\n DialogContent,\n PrimaryButton,\n SecondaryButton,\n SelectContent,\n SelectItem,\n SelectTrigger,\n Skeleton,\n} from \"./elements.js\";\nimport { getBestName } from \"./utils.js\";\nimport {\n Member,\n MemberRole,\n RolesAndConfig403,\n RolesAndConfig404,\n useRolesAndConfig,\n} from \"../api/endpoint.js\";\n\ninterface EditUserRoleDialogProps extends Dialog.RootProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n user: Member;\n children?: ReactNode;\n}\n\nexport function EditUserRoleDialog({\n children,\n user,\n ...props\n}: EditUserRoleDialogProps) {\n const rolesAndConfigQuery = useRolesAndConfig({\n query: {\n initialData: { roles: [], multipleRolesEnabled: false },\n },\n });\n const { data, ...restQueryState } = rolesAndConfigQuery;\n const queryState = {\n error: restQueryState.error,\n isLoading: restQueryState.isLoading,\n isSuccess: restQueryState.isSuccess,\n };\n\n return (\n <Dialog.Root {...props}>\n {children && <Dialog.Trigger>{children}</Dialog.Trigger>}\n {data.multipleRolesEnabled ? (\n <EditMultipleUserRolesDialogContent\n user={user}\n roles={data.roles}\n queryState={queryState}\n onFormSubmitSuccess={() => props.onOpenChange(false)}\n />\n ) : (\n <EditSingleUserRoleDialogContent\n user={user}\n roles={data.roles}\n queryState={queryState}\n onFormSubmitSuccess={() => props.onOpenChange(false)}\n />\n )}\n </Dialog.Root>\n );\n}\n\ninterface EditSingleUserRoleDialogContentProps {\n user: Member;\n roles: MemberRole[];\n queryState: {\n error: RolesAndConfig403 | RolesAndConfig404 | null;\n isLoading: boolean;\n isSuccess: boolean;\n };\n onFormSubmitSuccess: () => void;\n}\n\nexport function EditSingleUserRoleDialogContent({\n user,\n roles,\n queryState,\n onFormSubmitSuccess,\n}: EditSingleUserRoleDialogContentProps) {\n const displayName = getBestName(user) || user.email;\n const updateUser = useUpdateUserRole();\n const [selectedRole, setSelectedRole] = useState(\n user.roles?.at(0)?.slug || \"Unknown\",\n );\n\n const onSubmitForm = ({ id, roles }: { id: string; roles: string[] }) => {\n updateUser.mutate(\n { userId: id, data: { roles } },\n {\n onSuccess: () => {\n onFormSubmitSuccess();\n },\n },\n );\n };\n\n const rootId = React.useId();\n const formId = `edit-user-form-${rootId}`;\n const selectId = `role-select-${rootId}`;\n const selectLabelId = `${selectId}-label`;\n const infoId = `${selectId}-info`;\n const errorId = `${selectId}-error`;\n const showErrorMessage = !!queryState.error;\n const showSingleRoleInfo = queryState.isSuccess && roles.length === 1;\n\n return (\n <DialogContent maxWidth=\"480px\">\n <Dialog.Title>Edit role</Dialog.Title>\n <Dialog.Description>\n Select the role to assign to <Text weight=\"bold\">{displayName}</Text>\n </Dialog.Description>\n <Flex mt=\"2\" direction=\"column\" gap=\"1\" asChild>\n <form\n id={formId}\n onSubmit={async (event) => {\n event.preventDefault();\n onSubmitForm({ id: user.id, roles: [selectedRole] });\n }}\n >\n <Select.Root\n name=\"roles\"\n value={selectedRole ?? \"Unknown\"}\n onValueChange={setSelectedRole}\n disabled={queryState.isLoading || showSingleRoleInfo}\n >\n <Skeleton loading={queryState.isLoading}>\n <SelectTrigger\n id={selectId}\n placeholder=\"Assign a role\"\n aria-labelledby={selectLabelId}\n aria-invalid={showErrorMessage || undefined}\n aria-describedby={\n [showErrorMessage && errorId, showSingleRoleInfo && infoId]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n />\n </Skeleton>\n\n <SelectContent>\n {roles.map((role) => (\n <SelectItem key={role.slug} value={role.slug}>\n {role.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select.Root>\n\n {showErrorMessage ? (\n <Text color=\"red\" size=\"2\" id={errorId}>\n {getRoleSelectErrorMessage(queryState.error)}\n </Text>\n ) : null}\n\n {showSingleRoleInfo ? (\n <Text color=\"gray\" size=\"2\" id={infoId} mt=\"1\">\n You cannot update the role for this user as there is only one role\n available.\n </Text>\n ) : null}\n </form>\n </Flex>\n\n {updateUser.error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>\n {getMutationErrorMessage(updateUser.error)}\n </Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex mt=\"5\" gap=\"3\" justify=\"end\">\n <Dialog.Close>\n <SecondaryButton disabled={updateUser.isPending}>\n Cancel\n </SecondaryButton>\n </Dialog.Close>\n\n <PrimaryButton\n form={formId}\n loading={updateUser.isPending}\n disabled={queryState.isLoading || showSingleRoleInfo || undefined}\n >\n Save\n </PrimaryButton>\n </Flex>\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(updateUser.error)}\n </section>\n </VisuallyHidden>\n </DialogContent>\n );\n}\n\ntype EditMultipleUserRolesDialogContentProps =\n EditSingleUserRoleDialogContentProps;\n\nfunction EditMultipleUserRolesDialogContent({\n user,\n roles,\n queryState,\n onFormSubmitSuccess,\n}: EditMultipleUserRolesDialogContentProps) {\n const displayName = getBestName(user) || user.email;\n const updateUser = useUpdateUserRole();\n const [error, setError] = useState<string | null>(null);\n\n React.useEffect(() => {\n if (queryState.error && !error) {\n setError(\"There was an error fetching roles. Please try again.\");\n }\n }, [queryState.error, error]);\n\n const onSubmitForm = ({ id, roles }: { id: string; roles: string[] }) => {\n if (roles.length === 0) {\n setError(\"Please select at least one role\");\n return;\n }\n updateUser.mutate(\n { userId: id, data: { roles } },\n {\n onSuccess: () => {\n onFormSubmitSuccess();\n },\n onError: () => {\n setError(\n \"There was an error updating the user role. Please try again.\",\n );\n },\n },\n );\n };\n\n const rootId = React.useId();\n const formId = `edit-user-form-${rootId}`;\n const checkboxGroupId = `role-checkbox-group-${rootId}`;\n const infoId = `${checkboxGroupId}-info`;\n const showSingleRoleInfo = queryState.isSuccess && roles.length === 1;\n return (\n <DialogContent maxWidth=\"480px\">\n <Flex\n direction=\"column\"\n gap=\"1\"\n maxHeight=\"calc(100vh - var(--dialog-content-padding) * 2 - var(--space-6) - max(var(--space-6), 6vh)\"\n minHeight=\"200px\"\n >\n <Dialog.Title>Edit roles</Dialog.Title>\n <Dialog.Description>\n Select the roles to assign to <Text weight=\"bold\">{displayName}</Text>\n </Dialog.Description>\n <Flex mt=\"4\" direction=\"column\" gap=\"1\" asChild minHeight=\"0\">\n <Card\n asChild\n style={{ display: \"flex\", padding: \"2px 0\", flexGrow: 0 }}\n >\n <form\n id={formId}\n onSubmit={async (event) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget);\n const selectedRoles = formData\n .getAll(\"roles\")\n .map((role) => role.toString());\n onSubmitForm({ id: user.id, roles: selectedRoles });\n }}\n >\n <ScrollArea>\n <CheckboxGroup.Root\n defaultValue={user.roles?.map((role) => role.slug) || []}\n name=\"roles\"\n style={{ gap: \"0\" }}\n id={checkboxGroupId}\n onValueChange={(values) => {\n if (error && values.length > 0) {\n setError(\"\");\n }\n }}\n >\n {roles.map((role, i) => (\n <Box key={role.slug}>\n <Flex px=\"4\" justify=\"center\" py=\"3\">\n <CheckboxGroup.Item\n value={role.slug}\n style={{\n width: \"100%\",\n gap: \"var(--space-3)\",\n alignItems: \"center\",\n }}\n disabled={showSingleRoleInfo}\n >\n <Flex direction=\"column\" width=\"100%\">\n <Text weight=\"bold\" size=\"2\">\n {role.name}\n </Text>\n <Text\n color=\"gray\"\n size=\"2\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {role.description}\n </Text>\n </Flex>\n </CheckboxGroup.Item>\n </Flex>\n {i !== roles.length - 1 && (\n <Separator orientation=\"horizontal\" size=\"4\" />\n )}\n </Box>\n ))}\n </CheckboxGroup.Root>\n </ScrollArea>\n </form>\n </Card>\n </Flex>\n\n {showSingleRoleInfo ? (\n <Text color=\"gray\" size=\"2\" id={infoId} mt=\"1\">\n You cannot update the role for this user as there is only one role\n available.\n </Text>\n ) : null}\n\n {error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>{error}</Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex mt=\"5\" gap=\"3\" justify=\"end\">\n <Dialog.Close>\n <SecondaryButton disabled={updateUser.isPending}>\n Cancel\n </SecondaryButton>\n </Dialog.Close>\n\n <PrimaryButton\n form={formId}\n loading={updateUser.isPending}\n disabled={queryState.isLoading || showSingleRoleInfo || undefined}\n >\n Save\n </PrimaryButton>\n </Flex>\n </Flex>\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(updateUser.error)}\n </section>\n </VisuallyHidden>\n </DialogContent>\n );\n}\n\nfunction getRoleSelectErrorMessage(error: unknown) {\n if (!error) {\n return null;\n }\n // TODO Handle server errors\n return \"There was an error fetching roles. Please try again.\";\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (!error) {\n return null;\n }\n // TODO Handle server errors\n return \"There was an error updating the user role. Please try again.\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgEI;AA3DJ,YAAuB;AACvB,oBAYO;AACP,mBAAyC;AACzC,kBAAkC;AAClC,sBAQO;AACP,mBAA4B;AAC5B,sBAMO;AASA,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4B;AAC1B,QAAM,0BAAsB,mCAAkB;AAAA,IAC5C,OAAO;AAAA,MACL,aAAa,EAAE,OAAO,CAAC,GAAG,sBAAsB,MAAM;AAAA,IACxD;AAAA,EACF,CAAC;AACD,QAAM,EAAE,MAAM,GAAG,eAAe,IAAI;AACpC,QAAM,aAAa;AAAA,IACjB,OAAO,eAAe;AAAA,IACtB,WAAW,eAAe;AAAA,IAC1B,WAAW,eAAe;AAAA,EAC5B;AAEA,SACE,6CAAC,qBAAO,MAAP,EAAa,GAAG,OACd;AAAA,gBAAY,4CAAC,qBAAO,SAAP,EAAgB,UAAS;AAAA,IACtC,KAAK,uBACJ;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,qBAAqB,MAAM,MAAM,aAAa,KAAK;AAAA;AAAA,IACrD,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,OAAO,KAAK;AAAA,QACZ;AAAA,QACA,qBAAqB,MAAM,MAAM,aAAa,KAAK;AAAA;AAAA,IACrD;AAAA,KAEJ;AAEJ;AAaO,SAAS,gCAAgC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyC;AACvC,QAAM,kBAAc,0BAAY,IAAI,KAAK,KAAK;AAC9C,QAAM,iBAAa,+BAAkB;AACrC,QAAM,CAAC,cAAc,eAAe,QAAI;AAAA,IACtC,KAAK,OAAO,GAAG,CAAC,GAAG,QAAQ;AAAA,EAC7B;AAEA,QAAM,eAAe,CAAC,EAAE,IAAI,OAAAA,OAAM,MAAuC;AACvE,eAAW;AAAA,MACT,EAAE,QAAQ,IAAI,MAAM,EAAE,OAAAA,OAAM,EAAE;AAAA,MAC9B;AAAA,QACE,WAAW,MAAM;AACf,8BAAoB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,MAAM;AAC3B,QAAM,SAAS,kBAAkB,MAAM;AACvC,QAAM,WAAW,eAAe,MAAM;AACtC,QAAM,gBAAgB,GAAG,QAAQ;AACjC,QAAM,SAAS,GAAG,QAAQ;AAC1B,QAAM,UAAU,GAAG,QAAQ;AAC3B,QAAM,mBAAmB,CAAC,CAAC,WAAW;AACtC,QAAM,qBAAqB,WAAW,aAAa,MAAM,WAAW;AAEpE,SACE,6CAAC,iCAAc,UAAS,SACtB;AAAA,gDAAC,qBAAO,OAAP,EAAa,uBAAS;AAAA,IACvB,6CAAC,qBAAO,aAAP,EAAmB;AAAA;AAAA,MACW,4CAAC,sBAAK,QAAO,QAAQ,uBAAY;AAAA,OAChE;AAAA,IACA,4CAAC,sBAAK,IAAG,KAAI,WAAU,UAAS,KAAI,KAAI,SAAO,MAC7C;AAAA,MAAC;AAAA;AAAA,QACC,IAAI;AAAA,QACJ,UAAU,OAAO,UAAU;AACzB,gBAAM,eAAe;AACrB,uBAAa,EAAE,IAAI,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;AAAA,QACrD;AAAA,QAEA;AAAA;AAAA,YAAC,qBAAO;AAAA,YAAP;AAAA,cACC,MAAK;AAAA,cACL,OAAO,gBAAgB;AAAA,cACvB,eAAe;AAAA,cACf,UAAU,WAAW,aAAa;AAAA,cAElC;AAAA,4DAAC,4BAAS,SAAS,WAAW,WAC5B;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAI;AAAA,oBACJ,aAAY;AAAA,oBACZ,mBAAiB;AAAA,oBACjB,gBAAc,oBAAoB;AAAA,oBAClC,oBACE,CAAC,oBAAoB,SAAS,sBAAsB,MAAM,EACvD,OAAO,OAAO,EACd,KAAK,GAAG,KAAK;AAAA;AAAA,gBAEpB,GACF;AAAA,gBAEA,4CAAC,iCACE,gBAAM,IAAI,CAAC,SACV,4CAAC,8BAA2B,OAAO,KAAK,MACrC,eAAK,QADS,KAAK,IAEtB,CACD,GACH;AAAA;AAAA;AAAA,UACF;AAAA,UAEC,mBACC,4CAAC,sBAAK,OAAM,OAAM,MAAK,KAAI,IAAI,SAC5B,oCAA0B,WAAW,KAAK,GAC7C,IACE;AAAA,UAEH,qBACC,4CAAC,sBAAK,OAAM,QAAO,MAAK,KAAI,IAAI,QAAQ,IAAG,KAAI,2FAG/C,IACE;AAAA;AAAA;AAAA,IACN,GACF;AAAA,IAEC,WAAW,QACV,4CAAC,sBAAQ,MAAR,EAAa,OAAM,OAAM,IAAG,KAAI,IAAG,MAClC,sDAAC,sBAAQ,MAAR,EACE,kCAAwB,WAAW,KAAK,GAC3C,GACF,IACE;AAAA,IAEJ,6CAAC,sBAAK,IAAG,KAAI,KAAI,KAAI,SAAQ,OAC3B;AAAA,kDAAC,qBAAO,OAAP,EACC,sDAAC,mCAAgB,UAAU,WAAW,WAAW,oBAEjD,GACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,SAAS,WAAW;AAAA,UACpB,UAAU,WAAW,aAAa,sBAAsB;AAAA,UACzD;AAAA;AAAA,MAED;AAAA,OACF;AAAA,IAEA,4CAAC,gCAAe,SAAO,MACrB,sDAAC,aAAQ,aAAU,UAChB,kCAAwB,WAAW,KAAK,GAC3C,GACF;AAAA,KACF;AAEJ;AAKA,SAAS,mCAAmC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4C;AAC1C,QAAM,kBAAc,0BAAY,IAAI,KAAK,KAAK;AAC9C,QAAM,iBAAa,+BAAkB;AACrC,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAwB,IAAI;AAEtD,QAAM,UAAU,MAAM;AACpB,QAAI,WAAW,SAAS,CAAC,OAAO;AAC9B,eAAS,sDAAsD;AAAA,IACjE;AAAA,EACF,GAAG,CAAC,WAAW,OAAO,KAAK,CAAC;AAE5B,QAAM,eAAe,CAAC,EAAE,IAAI,OAAAA,OAAM,MAAuC;AACvE,QAAIA,OAAM,WAAW,GAAG;AACtB,eAAS,iCAAiC;AAC1C;AAAA,IACF;AACA,eAAW;AAAA,MACT,EAAE,QAAQ,IAAI,MAAM,EAAE,OAAAA,OAAM,EAAE;AAAA,MAC9B;AAAA,QACE,WAAW,MAAM;AACf,8BAAoB;AAAA,QACtB;AAAA,QACA,SAAS,MAAM;AACb;AAAA,YACE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,MAAM;AAC3B,QAAM,SAAS,kBAAkB,MAAM;AACvC,QAAM,kBAAkB,uBAAuB,MAAM;AACrD,QAAM,SAAS,GAAG,eAAe;AACjC,QAAM,qBAAqB,WAAW,aAAa,MAAM,WAAW;AACpE,SACE,6CAAC,iCAAc,UAAS,SACtB;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QACV,KAAI;AAAA,QACJ,WAAU;AAAA,QACV,WAAU;AAAA,QAEV;AAAA,sDAAC,qBAAO,OAAP,EAAa,wBAAU;AAAA,UACxB,6CAAC,qBAAO,aAAP,EAAmB;AAAA;AAAA,YACY,4CAAC,sBAAK,QAAO,QAAQ,uBAAY;AAAA,aACjE;AAAA,UACA,4CAAC,sBAAK,IAAG,KAAI,WAAU,UAAS,KAAI,KAAI,SAAO,MAAC,WAAU,KACxD;AAAA,YAAC;AAAA;AAAA,cACC,SAAO;AAAA,cACP,OAAO,EAAE,SAAS,QAAQ,SAAS,SAAS,UAAU,EAAE;AAAA,cAExD;AAAA,gBAAC;AAAA;AAAA,kBACC,IAAI;AAAA,kBACJ,UAAU,OAAO,UAAU;AACzB,0BAAM,eAAe;AACrB,0BAAM,WAAW,IAAI,SAAS,MAAM,aAAa;AACjD,0BAAM,gBAAgB,SACnB,OAAO,OAAO,EACd,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;AAChC,iCAAa,EAAE,IAAI,KAAK,IAAI,OAAO,cAAc,CAAC;AAAA,kBACpD;AAAA,kBAEA,sDAAC,4BACC;AAAA,oBAAC,4BAAc;AAAA,oBAAd;AAAA,sBACC,cAAc,KAAK,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,KAAK,CAAC;AAAA,sBACvD,MAAK;AAAA,sBACL,OAAO,EAAE,KAAK,IAAI;AAAA,sBAClB,IAAI;AAAA,sBACJ,eAAe,CAAC,WAAW;AACzB,4BAAI,SAAS,OAAO,SAAS,GAAG;AAC9B,mCAAS,EAAE;AAAA,wBACb;AAAA,sBACF;AAAA,sBAEC,gBAAM,IAAI,CAAC,MAAM,MAChB,6CAAC,qBACC;AAAA,oEAAC,sBAAK,IAAG,KAAI,SAAQ,UAAS,IAAG,KAC/B;AAAA,0BAAC,4BAAc;AAAA,0BAAd;AAAA,4BACC,OAAO,KAAK;AAAA,4BACZ,OAAO;AAAA,8BACL,OAAO;AAAA,8BACP,KAAK;AAAA,8BACL,YAAY;AAAA,4BACd;AAAA,4BACA,UAAU;AAAA,4BAEV,uDAAC,sBAAK,WAAU,UAAS,OAAM,QAC7B;AAAA,0EAAC,sBAAK,QAAO,QAAO,MAAK,KACtB,eAAK,MACR;AAAA,8BACA;AAAA,gCAAC;AAAA;AAAA,kCACC,OAAM;AAAA,kCACN,MAAK;AAAA,kCACL,OAAO;AAAA,oCACL,UAAU;AAAA,oCACV,cAAc;AAAA,oCACd,YAAY;AAAA,kCACd;AAAA,kCAEC,eAAK;AAAA;AAAA,8BACR;AAAA,+BACF;AAAA;AAAA,wBACF,GACF;AAAA,wBACC,MAAM,MAAM,SAAS,KACpB,4CAAC,2BAAU,aAAY,cAAa,MAAK,KAAI;AAAA,2BA9BvC,KAAK,IAgCf,CACD;AAAA;AAAA,kBACH,GACF;AAAA;AAAA,cACF;AAAA;AAAA,UACF,GACF;AAAA,UAEC,qBACC,4CAAC,sBAAK,OAAM,QAAO,MAAK,KAAI,IAAI,QAAQ,IAAG,KAAI,2FAG/C,IACE;AAAA,UAEH,QACC,4CAAC,sBAAQ,MAAR,EAAa,OAAM,OAAM,IAAG,KAAI,IAAG,MAClC,sDAAC,sBAAQ,MAAR,EAAc,iBAAM,GACvB,IACE;AAAA,UAEJ,6CAAC,sBAAK,IAAG,KAAI,KAAI,KAAI,SAAQ,OAC3B;AAAA,wDAAC,qBAAO,OAAP,EACC,sDAAC,mCAAgB,UAAU,WAAW,WAAW,oBAEjD,GACF;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS,WAAW;AAAA,gBACpB,UAAU,WAAW,aAAa,sBAAsB;AAAA,gBACzD;AAAA;AAAA,YAED;AAAA,aACF;AAAA;AAAA;AAAA,IACF;AAAA,IAEA,4CAAC,gCAAe,SAAO,MACrB,sDAAC,aAAQ,aAAU,UAChB,kCAAwB,WAAW,KAAK,GAC3C,GACF;AAAA,KACF;AAEJ;AAEA,SAAS,0BAA0B,OAAgB;AACjD,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,wBAAwB,OAAgB;AAC/C,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":["roles"]}
1
+ {"version":3,"sources":["../../../src/lib/edit-user-role-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n Box,\n Card,\n Callout,\n CheckboxGroup,\n Flex,\n ScrollArea,\n Text,\n VisuallyHidden,\n Separator,\n} from \"@radix-ui/themes\";\nimport { type ReactNode, useState } from \"react\";\nimport { useUpdateUserRole } from \"./api/user.js\";\nimport { Dialog, Button, Select, Skeleton } from \"./elements.js\";\nimport { getBestName } from \"./utils.js\";\nimport {\n Member,\n MemberRole,\n RolesAndConfig403,\n RolesAndConfig404,\n useRolesAndConfig,\n} from \"../api/endpoint.js\";\n\ninterface EditUserRoleDialogProps extends Dialog.RootProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n user: Member;\n children?: ReactNode;\n}\n\nexport function EditUserRoleDialog({\n children,\n user,\n ...props\n}: EditUserRoleDialogProps) {\n const rolesAndConfigQuery = useRolesAndConfig({\n query: {\n initialData: { roles: [], multipleRolesEnabled: false },\n },\n });\n const { data, ...restQueryState } = rolesAndConfigQuery;\n const queryState = {\n error: restQueryState.error,\n isLoading: restQueryState.isLoading,\n isSuccess: restQueryState.isSuccess,\n };\n\n return (\n <Dialog.Root {...props}>\n {children && <Dialog.Trigger>{children}</Dialog.Trigger>}\n {data.multipleRolesEnabled ? (\n <EditMultipleUserRolesDialogContent\n user={user}\n roles={data.roles}\n queryState={queryState}\n onFormSubmitSuccess={() => props.onOpenChange(false)}\n />\n ) : (\n <EditSingleUserRoleDialogContent\n user={user}\n roles={data.roles}\n queryState={queryState}\n onFormSubmitSuccess={() => props.onOpenChange(false)}\n />\n )}\n </Dialog.Root>\n );\n}\n\ninterface EditSingleUserRoleDialogContentProps {\n user: Member;\n roles: MemberRole[];\n queryState: {\n error: RolesAndConfig403 | RolesAndConfig404 | null;\n isLoading: boolean;\n isSuccess: boolean;\n };\n onFormSubmitSuccess: () => void;\n}\n\nexport function EditSingleUserRoleDialogContent({\n user,\n roles,\n queryState,\n onFormSubmitSuccess,\n}: EditSingleUserRoleDialogContentProps) {\n const displayName = getBestName(user) || user.email;\n const updateUser = useUpdateUserRole();\n const [selectedRole, setSelectedRole] = useState(\n user.roles?.at(0)?.slug || \"Unknown\",\n );\n\n const onSubmitForm = ({ id, roles }: { id: string; roles: string[] }) => {\n updateUser.mutate(\n { userId: id, data: { roles } },\n {\n onSuccess: () => {\n onFormSubmitSuccess();\n },\n },\n );\n };\n\n const rootId = React.useId();\n const formId = `edit-user-form-${rootId}`;\n const selectId = `role-select-${rootId}`;\n const selectLabelId = `${selectId}-label`;\n const infoId = `${selectId}-info`;\n const errorId = `${selectId}-error`;\n const showErrorMessage = !!queryState.error;\n const showSingleRoleInfo = queryState.isSuccess && roles.length === 1;\n\n return (\n <Dialog.Content maxWidth=\"480px\">\n <Dialog.Title>Edit role</Dialog.Title>\n <Dialog.Description>\n Select the role to assign to <Text weight=\"bold\">{displayName}</Text>\n </Dialog.Description>\n <Flex mt=\"2\" direction=\"column\" gap=\"1\" asChild>\n <form\n id={formId}\n onSubmit={async (event) => {\n event.preventDefault();\n onSubmitForm({ id: user.id, roles: [selectedRole] });\n }}\n >\n <Select.Root\n name=\"roles\"\n value={selectedRole ?? \"Unknown\"}\n onValueChange={setSelectedRole}\n disabled={queryState.isLoading || showSingleRoleInfo}\n >\n <Skeleton loading={queryState.isLoading}>\n <Select.Trigger\n id={selectId}\n placeholder=\"Assign a role\"\n aria-labelledby={selectLabelId}\n aria-invalid={showErrorMessage || undefined}\n aria-describedby={\n [showErrorMessage && errorId, showSingleRoleInfo && infoId]\n .filter(Boolean)\n .join(\" \") || undefined\n }\n />\n </Skeleton>\n\n <Select.Content>\n {roles.map((role) => (\n <Select.Item key={role.slug} value={role.slug}>\n {role.name}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n\n {showErrorMessage ? (\n <Text color=\"red\" size=\"2\" id={errorId}>\n {getRoleSelectErrorMessage(queryState.error)}\n </Text>\n ) : null}\n\n {showSingleRoleInfo ? (\n <Text color=\"gray\" size=\"2\" id={infoId} mt=\"1\">\n You cannot update the role for this user as there is only one role\n available.\n </Text>\n ) : null}\n </form>\n </Flex>\n\n {updateUser.error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>\n {getMutationErrorMessage(updateUser.error)}\n </Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex mt=\"5\" gap=\"3\" justify=\"end\">\n <Dialog.Close>\n <Button variant=\"secondary\" disabled={updateUser.isPending}>\n Cancel\n </Button>\n </Dialog.Close>\n\n <Button\n form={formId}\n loading={updateUser.isPending}\n disabled={queryState.isLoading || showSingleRoleInfo || undefined}\n >\n Save\n </Button>\n </Flex>\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(updateUser.error)}\n </section>\n </VisuallyHidden>\n </Dialog.Content>\n );\n}\n\ntype EditMultipleUserRolesDialogContentProps =\n EditSingleUserRoleDialogContentProps;\n\nfunction EditMultipleUserRolesDialogContent({\n user,\n roles,\n queryState,\n onFormSubmitSuccess,\n}: EditMultipleUserRolesDialogContentProps) {\n const displayName = getBestName(user) || user.email;\n const updateUser = useUpdateUserRole();\n const [error, setError] = useState<string | null>(null);\n\n React.useEffect(() => {\n if (queryState.error && !error) {\n setError(\"There was an error fetching roles. Please try again.\");\n }\n }, [queryState.error, error]);\n\n const onSubmitForm = ({ id, roles }: { id: string; roles: string[] }) => {\n if (roles.length === 0) {\n setError(\"Please select at least one role\");\n return;\n }\n updateUser.mutate(\n { userId: id, data: { roles } },\n {\n onSuccess: () => {\n onFormSubmitSuccess();\n },\n onError: () => {\n setError(\n \"There was an error updating the user role. Please try again.\",\n );\n },\n },\n );\n };\n\n const rootId = React.useId();\n const formId = `edit-user-form-${rootId}`;\n const checkboxGroupId = `role-checkbox-group-${rootId}`;\n const infoId = `${checkboxGroupId}-info`;\n const showSingleRoleInfo = queryState.isSuccess && roles.length === 1;\n return (\n <Dialog.Content maxWidth=\"480px\">\n <Flex\n direction=\"column\"\n gap=\"1\"\n maxHeight=\"calc(100vh - var(--dialog-content-padding) * 2 - var(--space-6) - max(var(--space-6), 6vh)\"\n minHeight=\"200px\"\n >\n <Dialog.Title>Edit roles</Dialog.Title>\n <Dialog.Description>\n Select the roles to assign to <Text weight=\"bold\">{displayName}</Text>\n </Dialog.Description>\n <Flex mt=\"4\" direction=\"column\" gap=\"1\" asChild minHeight=\"0\">\n <Card\n asChild\n style={{ display: \"flex\", padding: \"2px 0\", flexGrow: 0 }}\n >\n <form\n id={formId}\n onSubmit={async (event) => {\n event.preventDefault();\n const formData = new FormData(event.currentTarget);\n const selectedRoles = formData\n .getAll(\"roles\")\n .map((role) => role.toString());\n onSubmitForm({ id: user.id, roles: selectedRoles });\n }}\n >\n <ScrollArea>\n <CheckboxGroup.Root\n defaultValue={user.roles?.map((role) => role.slug) || []}\n name=\"roles\"\n style={{ gap: \"0\" }}\n id={checkboxGroupId}\n onValueChange={(values) => {\n if (error && values.length > 0) {\n setError(\"\");\n }\n }}\n >\n {roles.map((role, i) => (\n <Box key={role.slug}>\n <Flex px=\"4\" justify=\"center\" py=\"3\">\n <CheckboxGroup.Item\n value={role.slug}\n style={{\n width: \"100%\",\n gap: \"var(--space-3)\",\n alignItems: \"center\",\n }}\n disabled={showSingleRoleInfo}\n >\n <Flex direction=\"column\" width=\"100%\">\n <Text weight=\"bold\" size=\"2\">\n {role.name}\n </Text>\n <Text\n color=\"gray\"\n size=\"2\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {role.description}\n </Text>\n </Flex>\n </CheckboxGroup.Item>\n </Flex>\n {i !== roles.length - 1 && (\n <Separator orientation=\"horizontal\" size=\"4\" />\n )}\n </Box>\n ))}\n </CheckboxGroup.Root>\n </ScrollArea>\n </form>\n </Card>\n </Flex>\n\n {showSingleRoleInfo ? (\n <Text color=\"gray\" size=\"2\" id={infoId} mt=\"1\">\n You cannot update the role for this user as there is only one role\n available.\n </Text>\n ) : null}\n\n {error ? (\n <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n <Callout.Text>{error}</Callout.Text>\n </Callout.Root>\n ) : null}\n\n <Flex mt=\"5\" gap=\"3\" justify=\"end\">\n <Dialog.Close>\n <Button variant=\"secondary\" disabled={updateUser.isPending}>\n Cancel\n </Button>\n </Dialog.Close>\n\n <Button\n form={formId}\n loading={updateUser.isPending}\n disabled={queryState.isLoading || showSingleRoleInfo || undefined}\n >\n Save\n </Button>\n </Flex>\n </Flex>\n {/* mirror errors in a live region */}\n <VisuallyHidden asChild>\n <section aria-live=\"polite\">\n {getMutationErrorMessage(updateUser.error)}\n </section>\n </VisuallyHidden>\n </Dialog.Content>\n );\n}\n\nfunction getRoleSelectErrorMessage(error: unknown) {\n if (!error) {\n return null;\n }\n // TODO Handle server errors\n return \"There was an error fetching roles. Please try again.\";\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n if (!error) {\n return null;\n }\n // TODO Handle server errors\n return \"There was an error updating the user role. Please try again.\";\n}\n"],"mappings":"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","names":["roles"]}
@@ -1,11 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Dialog } from '@radix-ui/themes';
3
2
  import { ReactNode } from 'react';
3
+ import { RootProps } from '@radix-ui/themes/components/dialog';
4
4
  import { Member, MemberRole, RolesAndConfig403, RolesAndConfig404 } from '../api/endpoint.cjs';
5
5
  import '@tanstack/react-query';
6
6
  import '../api/widgets-api-client.cjs';
7
7
 
8
- interface EditUserRoleDialogProps extends Dialog.RootProps {
8
+ interface EditUserRoleDialogProps extends RootProps {
9
9
  open: boolean;
10
10
  onOpenChange: (open: boolean) => void;
11
11
  user: Member;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var alert_dialog_exports = {};
31
+ __export(alert_dialog_exports, {
32
+ Action: () => import_alert_dialog2.Action,
33
+ Cancel: () => import_alert_dialog2.Cancel,
34
+ Content: () => AlertDialogContent,
35
+ Description: () => import_alert_dialog2.Description,
36
+ Root: () => import_alert_dialog2.Root,
37
+ Title: () => import_alert_dialog2.Title,
38
+ Trigger: () => import_alert_dialog2.Trigger
39
+ });
40
+ module.exports = __toCommonJS(alert_dialog_exports);
41
+ var import_jsx_runtime = require("react/jsx-runtime");
42
+ var React = __toESM(require("react"), 1);
43
+ var import_alert_dialog = require("@radix-ui/themes/components/alert-dialog");
44
+ var import_widgets_context = require("../widgets-context.js");
45
+ var import_utils = require("../utils.js");
46
+ var import_utils2 = require("./utils.js");
47
+ var import_alert_dialog2 = require("@radix-ui/themes/components/alert-dialog");
48
+ const AlertDialogContent = React.forwardRef(
49
+ function AlertDialogContent2({ className, ...props }, forwardedRef) {
50
+ const element = (0, import_widgets_context.useElement)("dialog");
51
+ const { ref } = (0, import_utils2.useDialogOverlayHack)(forwardedRef, {
52
+ className: (0, import_utils.namespaceClassNames)("dialog-overlay"),
53
+ selector: ".rt-DialogOverlay"
54
+ });
55
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
56
+ import_alert_dialog.Content,
57
+ {
58
+ ref,
59
+ ...(0, import_utils.getDomProps)({ elementId: "dialog", className }),
60
+ ...props,
61
+ ...element
62
+ }
63
+ );
64
+ }
65
+ );
66
+ // Annotate the CommonJS export names for ESM import in node:
67
+ 0 && (module.exports = {
68
+ Action,
69
+ Cancel,
70
+ Content,
71
+ Description,
72
+ Root,
73
+ Title,
74
+ Trigger
75
+ });
76
+ //# sourceMappingURL=alert-dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/elements/alert-dialog.tsx"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport {\n Content as RadixAlertDialogContent,\n type ContentProps as RadixAlertDialogContentProps,\n} from \"@radix-ui/themes/components/alert-dialog\";\nimport { useElement } from \"../widgets-context.js\";\nimport { getDomProps, namespaceClassNames } from \"../utils.js\";\nimport { useDialogOverlayHack } from \"./utils.js\";\n\ninterface ContentProps extends RadixAlertDialogContentProps {}\n\nconst AlertDialogContent = React.forwardRef<HTMLDivElement, ContentProps>(\n function AlertDialogContent({ className, ...props }, forwardedRef) {\n const element = useElement(\"dialog\");\n const { ref } = useDialogOverlayHack(forwardedRef, {\n className: namespaceClassNames(\"dialog-overlay\"),\n selector: \".rt-DialogOverlay\",\n });\n return (\n <RadixAlertDialogContent\n ref={ref}\n {...getDomProps({ elementId: \"dialog\", className })}\n {...props}\n {...element}\n />\n );\n },\n);\n\nexport { AlertDialogContent as Content };\nexport type { ContentProps };\n\nexport {\n Action,\n Cancel,\n Description,\n Root,\n Title,\n Trigger,\n} from \"@radix-ui/themes/components/alert-dialog\";\nexport type {\n ActionProps,\n CancelProps,\n DescriptionProps,\n RootProps,\n TitleProps,\n TriggerProps,\n} from \"@radix-ui/themes/components/alert-dialog\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBM;AAnBN,YAAuB;AACvB,0BAGO;AACP,6BAA2B;AAC3B,mBAAiD;AACjD,IAAAA,gBAAqC;AAyBrC,IAAAC,uBAOO;AA5BP,MAAM,qBAAqB,MAAM;AAAA,EAC/B,SAASC,oBAAmB,EAAE,WAAW,GAAG,MAAM,GAAG,cAAc;AACjE,UAAM,cAAU,mCAAW,QAAQ;AACnC,UAAM,EAAE,IAAI,QAAI,oCAAqB,cAAc;AAAA,MACjD,eAAW,kCAAoB,gBAAgB;AAAA,MAC/C,UAAU;AAAA,IACZ,CAAC;AACD,WACE;AAAA,MAAC,oBAAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACC,OAAG,0BAAY,EAAE,WAAW,UAAU,UAAU,CAAC;AAAA,QACjD,GAAG;AAAA,QACH,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;","names":["import_utils","import_alert_dialog","AlertDialogContent","RadixAlertDialogContent"]}
@@ -0,0 +1,3 @@
1
+ import 'react';
2
+ export { Action, ActionProps, Cancel, CancelProps, Description, DescriptionProps, Root, RootProps, Title, TitleProps, Trigger, TriggerProps } from '@radix-ui/themes/components/alert-dialog';
3
+ export { A as Content, C as ContentProps } from '../../alert-dialog-BlG3_awx.cjs';