@orthacms/workspaces-admin 0.0.0-reserve.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (409) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8 -0
  6. package/dist/lib/api/useAddWorkspaceContent/index.d.ts +15 -0
  7. package/dist/lib/api/useAddWorkspaceContent/index.d.ts.map +1 -0
  8. package/dist/lib/api/useAddWorkspaceMember/index.d.ts +14 -0
  9. package/dist/lib/api/useAddWorkspaceMember/index.d.ts.map +1 -0
  10. package/dist/lib/api/useContentTypes/index.d.ts +10 -0
  11. package/dist/lib/api/useContentTypes/index.d.ts.map +1 -0
  12. package/dist/lib/api/useCreateWorkspace/index.d.ts +20 -0
  13. package/dist/lib/api/useCreateWorkspace/index.d.ts.map +1 -0
  14. package/dist/lib/api/useDeleteWorkspace/index.d.ts +13 -0
  15. package/dist/lib/api/useDeleteWorkspace/index.d.ts.map +1 -0
  16. package/dist/lib/api/useRemoveWorkspaceContent/index.d.ts +15 -0
  17. package/dist/lib/api/useRemoveWorkspaceContent/index.d.ts.map +1 -0
  18. package/dist/lib/api/useRemoveWorkspaceMember/index.d.ts +13 -0
  19. package/dist/lib/api/useRemoveWorkspaceMember/index.d.ts.map +1 -0
  20. package/dist/lib/api/useSetWorkspaceStatus/index.d.ts +14 -0
  21. package/dist/lib/api/useSetWorkspaceStatus/index.d.ts.map +1 -0
  22. package/dist/lib/api/useSlugAvailability/index.d.ts +10 -0
  23. package/dist/lib/api/useSlugAvailability/index.d.ts.map +1 -0
  24. package/dist/lib/api/useUpdateWorkspace/index.d.ts +23 -0
  25. package/dist/lib/api/useUpdateWorkspace/index.d.ts.map +1 -0
  26. package/dist/lib/api/useUsersSearch/index.d.ts +17 -0
  27. package/dist/lib/api/useUsersSearch/index.d.ts.map +1 -0
  28. package/dist/lib/api/useWorkspaceContentCount/index.d.ts +8 -0
  29. package/dist/lib/api/useWorkspaceContentCount/index.d.ts.map +1 -0
  30. package/dist/lib/api/useWorkspaceEntryCount/index.d.ts +8 -0
  31. package/dist/lib/api/useWorkspaceEntryCount/index.d.ts.map +1 -0
  32. package/dist/lib/api/useWorkspaces/index.d.ts +30 -0
  33. package/dist/lib/api/useWorkspaces/index.d.ts.map +1 -0
  34. package/dist/lib/application/useAddWorkspaceContent/index.d.ts +9 -0
  35. package/dist/lib/application/useAddWorkspaceContent/index.d.ts.map +1 -0
  36. package/dist/lib/application/useAddWorkspaceContent/index.js +15 -0
  37. package/dist/lib/application/useAddWorkspaceMember/index.d.ts +8 -0
  38. package/dist/lib/application/useAddWorkspaceMember/index.d.ts.map +1 -0
  39. package/dist/lib/application/useAddWorkspaceMember/index.js +14 -0
  40. package/dist/lib/application/useContentTypes/index.d.ts +9 -0
  41. package/dist/lib/application/useContentTypes/index.d.ts.map +1 -0
  42. package/dist/lib/application/useContentTypes/index.js +16 -0
  43. package/dist/lib/application/useCreateWorkspace/index.d.ts +20 -0
  44. package/dist/lib/application/useCreateWorkspace/index.d.ts.map +1 -0
  45. package/dist/lib/application/useCreateWorkspace/index.js +44 -0
  46. package/dist/lib/application/useCreateWorkspaceFlow/index.d.ts +23 -0
  47. package/dist/lib/application/useCreateWorkspaceFlow/index.d.ts.map +1 -0
  48. package/dist/lib/application/useCreateWorkspaceFlow/index.js +81 -0
  49. package/dist/lib/application/useDeleteWorkspace/index.d.ts +13 -0
  50. package/dist/lib/application/useDeleteWorkspace/index.d.ts.map +1 -0
  51. package/dist/lib/application/useDeleteWorkspace/index.js +23 -0
  52. package/dist/lib/application/useRemoveWorkspaceContent/index.d.ts +9 -0
  53. package/dist/lib/application/useRemoveWorkspaceContent/index.d.ts.map +1 -0
  54. package/dist/lib/application/useRemoveWorkspaceContent/index.js +15 -0
  55. package/dist/lib/application/useRemoveWorkspaceMember/index.d.ts +8 -0
  56. package/dist/lib/application/useRemoveWorkspaceMember/index.d.ts.map +1 -0
  57. package/dist/lib/application/useRemoveWorkspaceMember/index.js +14 -0
  58. package/dist/lib/application/useSetWorkspaceStatus/index.d.ts +9 -0
  59. package/dist/lib/application/useSetWorkspaceStatus/index.d.ts.map +1 -0
  60. package/dist/lib/application/useSetWorkspaceStatus/index.js +15 -0
  61. package/dist/lib/application/useSlugAvailability/index.d.ts +18 -0
  62. package/dist/lib/application/useSlugAvailability/index.d.ts.map +1 -0
  63. package/dist/lib/application/useSlugAvailability/index.js +39 -0
  64. package/dist/lib/application/useUpdateWorkspace/index.d.ts +9 -0
  65. package/dist/lib/application/useUpdateWorkspace/index.d.ts.map +1 -0
  66. package/dist/lib/application/useUpdateWorkspace/index.js +15 -0
  67. package/dist/lib/application/useUsersSearch/index.d.ts +18 -0
  68. package/dist/lib/application/useUsersSearch/index.d.ts.map +1 -0
  69. package/dist/lib/application/useUsersSearch/index.js +24 -0
  70. package/dist/lib/application/useWorkspaceContentCount/index.d.ts +8 -0
  71. package/dist/lib/application/useWorkspaceContentCount/index.d.ts.map +1 -0
  72. package/dist/lib/application/useWorkspaceContentCount/index.js +17 -0
  73. package/dist/lib/application/useWorkspaceEntryCount/index.d.ts +8 -0
  74. package/dist/lib/application/useWorkspaceEntryCount/index.d.ts.map +1 -0
  75. package/dist/lib/application/useWorkspaceEntryCount/index.js +17 -0
  76. package/dist/lib/application/useWorkspaces/index.d.ts +5 -0
  77. package/dist/lib/application/useWorkspaces/index.d.ts.map +1 -0
  78. package/dist/lib/application/useWorkspaces/index.js +11 -0
  79. package/dist/lib/components/BlockingConfirmDialog/index.d.ts +41 -0
  80. package/dist/lib/components/BlockingConfirmDialog/index.d.ts.map +1 -0
  81. package/dist/lib/components/ColorSwatchRow/index.d.ts +15 -0
  82. package/dist/lib/components/ColorSwatchRow/index.d.ts.map +1 -0
  83. package/dist/lib/components/CreateWorkspaceWizard/ColorSwatchRow/index.d.ts +15 -0
  84. package/dist/lib/components/CreateWorkspaceWizard/ColorSwatchRow/index.d.ts.map +1 -0
  85. package/dist/lib/components/CreateWorkspaceWizard/ContentStep/ModeTiles/index.d.ts +11 -0
  86. package/dist/lib/components/CreateWorkspaceWizard/ContentStep/ModeTiles/index.d.ts.map +1 -0
  87. package/dist/lib/components/CreateWorkspaceWizard/ContentStep/ResourceSection/index.d.ts +48 -0
  88. package/dist/lib/components/CreateWorkspaceWizard/ContentStep/ResourceSection/index.d.ts.map +1 -0
  89. package/dist/lib/components/CreateWorkspaceWizard/ContentStep/index.d.ts +23 -0
  90. package/dist/lib/components/CreateWorkspaceWizard/ContentStep/index.d.ts.map +1 -0
  91. package/dist/lib/components/CreateWorkspaceWizard/IdentityFields/index.d.ts +17 -0
  92. package/dist/lib/components/CreateWorkspaceWizard/IdentityFields/index.d.ts.map +1 -0
  93. package/dist/lib/components/CreateWorkspaceWizard/MembersStep/MemberRow/index.d.ts +14 -0
  94. package/dist/lib/components/CreateWorkspaceWizard/MembersStep/MemberRow/index.d.ts.map +1 -0
  95. package/dist/lib/components/CreateWorkspaceWizard/MembersStep/MemberTypeahead/index.d.ts +15 -0
  96. package/dist/lib/components/CreateWorkspaceWizard/MembersStep/MemberTypeahead/index.d.ts.map +1 -0
  97. package/dist/lib/components/CreateWorkspaceWizard/MembersStep/index.d.ts +17 -0
  98. package/dist/lib/components/CreateWorkspaceWizard/MembersStep/index.d.ts.map +1 -0
  99. package/dist/lib/components/CreateWorkspaceWizard/Monogram/index.d.ts +17 -0
  100. package/dist/lib/components/CreateWorkspaceWizard/Monogram/index.d.ts.map +1 -0
  101. package/dist/lib/components/CreateWorkspaceWizard/SlugField/index.d.ts +23 -0
  102. package/dist/lib/components/CreateWorkspaceWizard/SlugField/index.d.ts.map +1 -0
  103. package/dist/lib/components/StatusChip/index.d.ts +9 -0
  104. package/dist/lib/components/StatusChip/index.d.ts.map +1 -0
  105. package/dist/lib/components/WorkspaceAvatar/index.d.ts +20 -0
  106. package/dist/lib/components/WorkspaceAvatar/index.d.ts.map +1 -0
  107. package/dist/lib/components/WorkspaceCard/MemberStack/MemberListPopover/index.d.ts +9 -0
  108. package/dist/lib/components/WorkspaceCard/MemberStack/MemberListPopover/index.d.ts.map +1 -0
  109. package/dist/lib/components/WorkspaceCard/MemberStack/index.d.ts +11 -0
  110. package/dist/lib/components/WorkspaceCard/MemberStack/index.d.ts.map +1 -0
  111. package/dist/lib/components/WorkspaceCard/StatusChip/index.d.ts +9 -0
  112. package/dist/lib/components/WorkspaceCard/StatusChip/index.d.ts.map +1 -0
  113. package/dist/lib/components/WorkspaceCard/index.d.ts +15 -0
  114. package/dist/lib/components/WorkspaceCard/index.d.ts.map +1 -0
  115. package/dist/lib/components/WorkspaceCommands/index.d.ts +8 -0
  116. package/dist/lib/components/WorkspaceCommands/index.d.ts.map +1 -0
  117. package/dist/lib/components/WorkspaceContentSettings/AddContentDialog/index.d.ts +26 -0
  118. package/dist/lib/components/WorkspaceContentSettings/AddContentDialog/index.d.ts.map +1 -0
  119. package/dist/lib/components/WorkspaceContentSettings/GrantedContentGroup/index.d.ts +21 -0
  120. package/dist/lib/components/WorkspaceContentSettings/GrantedContentGroup/index.d.ts.map +1 -0
  121. package/dist/lib/components/WorkspaceContentSettings/GrantedContentRow/index.d.ts +26 -0
  122. package/dist/lib/components/WorkspaceContentSettings/GrantedContentRow/index.d.ts.map +1 -0
  123. package/dist/lib/components/WorkspaceContentSettings/RemoveContentDialog/index.d.ts +25 -0
  124. package/dist/lib/components/WorkspaceContentSettings/RemoveContentDialog/index.d.ts.map +1 -0
  125. package/dist/lib/components/WorkspaceContentSettings/index.d.ts +25 -0
  126. package/dist/lib/components/WorkspaceContentSettings/index.d.ts.map +1 -0
  127. package/dist/lib/components/WorkspaceDangerSettings/DeleteWorkspaceDialog/index.d.ts +22 -0
  128. package/dist/lib/components/WorkspaceDangerSettings/DeleteWorkspaceDialog/index.d.ts.map +1 -0
  129. package/dist/lib/components/WorkspaceDangerSettings/index.d.ts +18 -0
  130. package/dist/lib/components/WorkspaceDangerSettings/index.d.ts.map +1 -0
  131. package/dist/lib/components/WorkspaceGeneralSettings/index.d.ts +18 -0
  132. package/dist/lib/components/WorkspaceGeneralSettings/index.d.ts.map +1 -0
  133. package/dist/lib/components/WorkspaceMembersSettings/MemberDirectorySearch/index.d.ts +18 -0
  134. package/dist/lib/components/WorkspaceMembersSettings/MemberDirectorySearch/index.d.ts.map +1 -0
  135. package/dist/lib/components/WorkspaceMembersSettings/MemberListRow/index.d.ts +17 -0
  136. package/dist/lib/components/WorkspaceMembersSettings/MemberListRow/index.d.ts.map +1 -0
  137. package/dist/lib/components/WorkspaceMembersSettings/index.d.ts +16 -0
  138. package/dist/lib/components/WorkspaceMembersSettings/index.d.ts.map +1 -0
  139. package/dist/lib/components/WorkspaceNav/WorkspaceNavButton/index.d.ts +14 -0
  140. package/dist/lib/components/WorkspaceNav/WorkspaceNavButton/index.d.ts.map +1 -0
  141. package/dist/lib/components/WorkspaceNav/WorkspaceSwitcher/index.d.ts +16 -0
  142. package/dist/lib/components/WorkspaceNav/WorkspaceSwitcher/index.d.ts.map +1 -0
  143. package/dist/lib/components/WorkspaceNav/index.d.ts +14 -0
  144. package/dist/lib/components/WorkspaceNav/index.d.ts.map +1 -0
  145. package/dist/lib/components/WorkspaceSettingsRail/index.d.ts +14 -0
  146. package/dist/lib/components/WorkspaceSettingsRail/index.d.ts.map +1 -0
  147. package/dist/lib/components/WorkspaceSettingsTabs/index.d.ts +14 -0
  148. package/dist/lib/components/WorkspaceSettingsTabs/index.d.ts.map +1 -0
  149. package/dist/lib/components/WorkspaceSettingsTopBar/index.d.ts +8 -0
  150. package/dist/lib/components/WorkspaceSettingsTopBar/index.d.ts.map +1 -0
  151. package/dist/lib/components/WorkspaceShell/NewWorkspaceButton/index.d.ts +7 -0
  152. package/dist/lib/components/WorkspaceShell/NewWorkspaceButton/index.d.ts.map +1 -0
  153. package/dist/lib/components/WorkspaceShell/RailTooltip/index.d.ts +22 -0
  154. package/dist/lib/components/WorkspaceShell/RailTooltip/index.d.ts.map +1 -0
  155. package/dist/lib/components/WorkspaceShell/WorkspaceRail/index.d.ts +17 -0
  156. package/dist/lib/components/WorkspaceShell/WorkspaceRail/index.d.ts.map +1 -0
  157. package/dist/lib/components/WorkspaceShell/WorkspaceSidebarButton/index.d.ts +17 -0
  158. package/dist/lib/components/WorkspaceShell/WorkspaceSidebarButton/index.d.ts.map +1 -0
  159. package/dist/lib/components/WorkspaceShell/WorkspaceSwitcher/WorkspaceSwitcherPopover/index.d.ts +26 -0
  160. package/dist/lib/components/WorkspaceShell/WorkspaceSwitcher/WorkspaceSwitcherPopover/index.d.ts.map +1 -0
  161. package/dist/lib/components/WorkspaceShell/WorkspaceSwitcher/index.d.ts +17 -0
  162. package/dist/lib/components/WorkspaceShell/WorkspaceSwitcher/index.d.ts.map +1 -0
  163. package/dist/lib/components/WorkspaceShell/index.d.ts +16 -0
  164. package/dist/lib/components/WorkspaceShell/index.d.ts.map +1 -0
  165. package/dist/lib/components/WorkspaceStats/index.d.ts +9 -0
  166. package/dist/lib/components/WorkspaceStats/index.d.ts.map +1 -0
  167. package/dist/lib/components/WorkspaceToolbar/index.d.ts +22 -0
  168. package/dist/lib/components/WorkspaceToolbar/index.d.ts.map +1 -0
  169. package/dist/lib/components/WorkspacesEmpty/index.d.ts +18 -0
  170. package/dist/lib/components/WorkspacesEmpty/index.d.ts.map +1 -0
  171. package/dist/lib/components/WorkspacesHomePanel/index.d.ts +7 -0
  172. package/dist/lib/components/WorkspacesHomePanel/index.d.ts.map +1 -0
  173. package/dist/lib/components/WorkspacesNavSection/index.d.ts +9 -0
  174. package/dist/lib/components/WorkspacesNavSection/index.d.ts.map +1 -0
  175. package/dist/lib/components/WorkspacesSkeleton/index.d.ts +36 -0
  176. package/dist/lib/components/WorkspacesSkeleton/index.d.ts.map +1 -0
  177. package/dist/lib/components/WorkspacesTable/index.d.ts +12 -0
  178. package/dist/lib/components/WorkspacesTable/index.d.ts.map +1 -0
  179. package/dist/lib/domain/isActiveWorkspace/index.d.ts +9 -0
  180. package/dist/lib/domain/isActiveWorkspace/index.d.ts.map +1 -0
  181. package/dist/lib/domain/isActiveWorkspace/index.js +9 -0
  182. package/dist/lib/domain/permissions/index.d.ts +7 -0
  183. package/dist/lib/domain/permissions/index.d.ts.map +1 -0
  184. package/dist/lib/domain/permissions/index.js +6 -0
  185. package/dist/lib/domain/resourceSelection/index.d.ts +18 -0
  186. package/dist/lib/domain/resourceSelection/index.d.ts.map +1 -0
  187. package/dist/lib/domain/resourceSelection/index.js +49 -0
  188. package/dist/lib/domain/slug/index.d.ts +25 -0
  189. package/dist/lib/domain/slug/index.d.ts.map +1 -0
  190. package/dist/lib/domain/slug/index.js +45 -0
  191. package/dist/lib/domain/types/wizard/index.d.ts +126 -0
  192. package/dist/lib/domain/types/wizard/index.d.ts.map +1 -0
  193. package/dist/lib/domain/types/wizard/index.js +21 -0
  194. package/dist/lib/domain/types/workspace/index.d.ts +42 -0
  195. package/dist/lib/domain/types/workspace/index.d.ts.map +1 -0
  196. package/dist/lib/domain/types/workspace/index.js +1 -0
  197. package/dist/lib/domain/workspaceLimits/index.d.ts +23 -0
  198. package/dist/lib/domain/workspaceLimits/index.d.ts.map +1 -0
  199. package/dist/lib/domain/workspaceLimits/index.js +22 -0
  200. package/dist/lib/hooks/useBasicsSchema/index.d.ts +14 -0
  201. package/dist/lib/hooks/useBasicsSchema/index.d.ts.map +1 -0
  202. package/dist/lib/hooks/useResourceSelection/index.d.ts +21 -0
  203. package/dist/lib/hooks/useResourceSelection/index.d.ts.map +1 -0
  204. package/dist/lib/hooks/useSlug/index.d.ts +28 -0
  205. package/dist/lib/hooks/useSlug/index.d.ts.map +1 -0
  206. package/dist/lib/hooks/useWizard/index.d.ts +57 -0
  207. package/dist/lib/hooks/useWizard/index.d.ts.map +1 -0
  208. package/dist/lib/hooks/useWorkspaceProfileSchema/index.d.ts +13 -0
  209. package/dist/lib/hooks/useWorkspaceProfileSchema/index.d.ts.map +1 -0
  210. package/dist/lib/infrastructure/buildCreateWorkspaceBody/index.d.ts +12 -0
  211. package/dist/lib/infrastructure/buildCreateWorkspaceBody/index.d.ts.map +1 -0
  212. package/dist/lib/infrastructure/buildCreateWorkspaceBody/index.js +27 -0
  213. package/dist/lib/infrastructure/httpWorkspaceGateway/index.d.ts +10 -0
  214. package/dist/lib/infrastructure/httpWorkspaceGateway/index.d.ts.map +1 -0
  215. package/dist/lib/infrastructure/httpWorkspaceGateway/index.js +149 -0
  216. package/dist/lib/infrastructure/isConflict/index.d.ts +8 -0
  217. package/dist/lib/infrastructure/isConflict/index.d.ts.map +1 -0
  218. package/dist/lib/infrastructure/isConflict/index.js +12 -0
  219. package/dist/lib/infrastructure/workspaceGateway/index.d.ts +90 -0
  220. package/dist/lib/infrastructure/workspaceGateway/index.d.ts.map +1 -0
  221. package/dist/lib/infrastructure/workspaceGateway/index.js +1 -0
  222. package/dist/lib/infrastructure/workspaceMapper/index.d.ts +28 -0
  223. package/dist/lib/infrastructure/workspaceMapper/index.d.ts.map +1 -0
  224. package/dist/lib/infrastructure/workspaceMapper/index.js +36 -0
  225. package/dist/lib/pages/CreateWorkspacePage/index.d.ts +7 -0
  226. package/dist/lib/pages/CreateWorkspacePage/index.d.ts.map +1 -0
  227. package/dist/lib/pages/WorkspaceSettingsPage/index.d.ts +12 -0
  228. package/dist/lib/pages/WorkspaceSettingsPage/index.d.ts.map +1 -0
  229. package/dist/lib/pages/WorkspacesPage/index.d.ts +7 -0
  230. package/dist/lib/pages/WorkspacesPage/index.d.ts.map +1 -0
  231. package/dist/lib/presentation/components/BlockingConfirmDialog/index.d.ts +41 -0
  232. package/dist/lib/presentation/components/BlockingConfirmDialog/index.d.ts.map +1 -0
  233. package/dist/lib/presentation/components/BlockingConfirmDialog/index.js +17 -0
  234. package/dist/lib/presentation/components/ColorSwatchRow/index.d.ts +22 -0
  235. package/dist/lib/presentation/components/ColorSwatchRow/index.d.ts.map +1 -0
  236. package/dist/lib/presentation/components/ColorSwatchRow/index.js +70 -0
  237. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/ModeTiles/index.d.ts +11 -0
  238. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/ModeTiles/index.d.ts.map +1 -0
  239. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/ModeTiles/index.js +47 -0
  240. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/ResourceSection/index.d.ts +48 -0
  241. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/ResourceSection/index.d.ts.map +1 -0
  242. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/ResourceSection/index.js +32 -0
  243. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/index.d.ts +23 -0
  244. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/index.d.ts.map +1 -0
  245. package/dist/lib/presentation/components/CreateWorkspaceWizard/ContentStep/index.js +128 -0
  246. package/dist/lib/presentation/components/CreateWorkspaceWizard/IdentityFields/index.d.ts +17 -0
  247. package/dist/lib/presentation/components/CreateWorkspaceWizard/IdentityFields/index.d.ts.map +1 -0
  248. package/dist/lib/presentation/components/CreateWorkspaceWizard/IdentityFields/index.js +70 -0
  249. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberRow/index.d.ts +14 -0
  250. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberRow/index.d.ts.map +1 -0
  251. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberRow/index.js +25 -0
  252. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberTypeahead/index.d.ts +15 -0
  253. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberTypeahead/index.d.ts.map +1 -0
  254. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberTypeahead/index.js +112 -0
  255. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/index.d.ts +17 -0
  256. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/index.d.ts.map +1 -0
  257. package/dist/lib/presentation/components/CreateWorkspaceWizard/MembersStep/index.js +35 -0
  258. package/dist/lib/presentation/components/CreateWorkspaceWizard/Monogram/index.d.ts +17 -0
  259. package/dist/lib/presentation/components/CreateWorkspaceWizard/Monogram/index.d.ts.map +1 -0
  260. package/dist/lib/presentation/components/CreateWorkspaceWizard/Monogram/index.js +11 -0
  261. package/dist/lib/presentation/components/CreateWorkspaceWizard/SlugField/index.d.ts +23 -0
  262. package/dist/lib/presentation/components/CreateWorkspaceWizard/SlugField/index.d.ts.map +1 -0
  263. package/dist/lib/presentation/components/CreateWorkspaceWizard/SlugField/index.js +68 -0
  264. package/dist/lib/presentation/components/StatusChip/index.d.ts +9 -0
  265. package/dist/lib/presentation/components/StatusChip/index.d.ts.map +1 -0
  266. package/dist/lib/presentation/components/StatusChip/index.js +23 -0
  267. package/dist/lib/presentation/components/WorkspaceAvatar/index.d.ts +20 -0
  268. package/dist/lib/presentation/components/WorkspaceAvatar/index.d.ts.map +1 -0
  269. package/dist/lib/presentation/components/WorkspaceAvatar/index.js +10 -0
  270. package/dist/lib/presentation/components/WorkspaceCommands/index.d.ts +8 -0
  271. package/dist/lib/presentation/components/WorkspaceCommands/index.d.ts.map +1 -0
  272. package/dist/lib/presentation/components/WorkspaceCommands/index.js +34 -0
  273. package/dist/lib/presentation/components/WorkspaceContentSettings/AddContentDialog/index.d.ts +26 -0
  274. package/dist/lib/presentation/components/WorkspaceContentSettings/AddContentDialog/index.d.ts.map +1 -0
  275. package/dist/lib/presentation/components/WorkspaceContentSettings/AddContentDialog/index.js +89 -0
  276. package/dist/lib/presentation/components/WorkspaceContentSettings/GrantedContentGroup/index.d.ts +21 -0
  277. package/dist/lib/presentation/components/WorkspaceContentSettings/GrantedContentGroup/index.d.ts.map +1 -0
  278. package/dist/lib/presentation/components/WorkspaceContentSettings/GrantedContentGroup/index.js +11 -0
  279. package/dist/lib/presentation/components/WorkspaceContentSettings/GrantedContentRow/index.d.ts +26 -0
  280. package/dist/lib/presentation/components/WorkspaceContentSettings/GrantedContentRow/index.d.ts.map +1 -0
  281. package/dist/lib/presentation/components/WorkspaceContentSettings/GrantedContentRow/index.js +31 -0
  282. package/dist/lib/presentation/components/WorkspaceContentSettings/RemoveContentDialog/index.d.ts +25 -0
  283. package/dist/lib/presentation/components/WorkspaceContentSettings/RemoveContentDialog/index.d.ts.map +1 -0
  284. package/dist/lib/presentation/components/WorkspaceContentSettings/RemoveContentDialog/index.js +48 -0
  285. package/dist/lib/presentation/components/WorkspaceContentSettings/index.d.ts +25 -0
  286. package/dist/lib/presentation/components/WorkspaceContentSettings/index.d.ts.map +1 -0
  287. package/dist/lib/presentation/components/WorkspaceContentSettings/index.js +173 -0
  288. package/dist/lib/presentation/components/WorkspaceDangerSettings/DeleteWorkspaceDialog/index.d.ts +22 -0
  289. package/dist/lib/presentation/components/WorkspaceDangerSettings/DeleteWorkspaceDialog/index.d.ts.map +1 -0
  290. package/dist/lib/presentation/components/WorkspaceDangerSettings/DeleteWorkspaceDialog/index.js +52 -0
  291. package/dist/lib/presentation/components/WorkspaceDangerSettings/index.d.ts +18 -0
  292. package/dist/lib/presentation/components/WorkspaceDangerSettings/index.d.ts.map +1 -0
  293. package/dist/lib/presentation/components/WorkspaceDangerSettings/index.js +150 -0
  294. package/dist/lib/presentation/components/WorkspaceGeneralSettings/WorkspaceIdField/index.d.ts +19 -0
  295. package/dist/lib/presentation/components/WorkspaceGeneralSettings/WorkspaceIdField/index.d.ts.map +1 -0
  296. package/dist/lib/presentation/components/WorkspaceGeneralSettings/WorkspaceIdField/index.js +72 -0
  297. package/dist/lib/presentation/components/WorkspaceGeneralSettings/index.d.ts +18 -0
  298. package/dist/lib/presentation/components/WorkspaceGeneralSettings/index.d.ts.map +1 -0
  299. package/dist/lib/presentation/components/WorkspaceGeneralSettings/index.js +131 -0
  300. package/dist/lib/presentation/components/WorkspaceMembersSettings/MemberDirectorySearch/index.d.ts +18 -0
  301. package/dist/lib/presentation/components/WorkspaceMembersSettings/MemberDirectorySearch/index.d.ts.map +1 -0
  302. package/dist/lib/presentation/components/WorkspaceMembersSettings/MemberDirectorySearch/index.js +65 -0
  303. package/dist/lib/presentation/components/WorkspaceMembersSettings/MemberListRow/index.d.ts +17 -0
  304. package/dist/lib/presentation/components/WorkspaceMembersSettings/MemberListRow/index.d.ts.map +1 -0
  305. package/dist/lib/presentation/components/WorkspaceMembersSettings/MemberListRow/index.js +22 -0
  306. package/dist/lib/presentation/components/WorkspaceMembersSettings/index.d.ts +16 -0
  307. package/dist/lib/presentation/components/WorkspaceMembersSettings/index.d.ts.map +1 -0
  308. package/dist/lib/presentation/components/WorkspaceMembersSettings/index.js +127 -0
  309. package/dist/lib/presentation/components/WorkspaceNav/WorkspaceNavButton/index.d.ts +14 -0
  310. package/dist/lib/presentation/components/WorkspaceNav/WorkspaceNavButton/index.d.ts.map +1 -0
  311. package/dist/lib/presentation/components/WorkspaceNav/WorkspaceNavButton/index.js +30 -0
  312. package/dist/lib/presentation/components/WorkspaceNav/WorkspaceSwitcher/index.d.ts +16 -0
  313. package/dist/lib/presentation/components/WorkspaceNav/WorkspaceSwitcher/index.d.ts.map +1 -0
  314. package/dist/lib/presentation/components/WorkspaceNav/WorkspaceSwitcher/index.js +81 -0
  315. package/dist/lib/presentation/components/WorkspaceNav/index.d.ts +14 -0
  316. package/dist/lib/presentation/components/WorkspaceNav/index.d.ts.map +1 -0
  317. package/dist/lib/presentation/components/WorkspaceNav/index.js +51 -0
  318. package/dist/lib/presentation/components/WorkspaceSettingsTabs/index.d.ts +14 -0
  319. package/dist/lib/presentation/components/WorkspaceSettingsTabs/index.d.ts.map +1 -0
  320. package/dist/lib/presentation/components/WorkspaceSettingsTabs/index.js +66 -0
  321. package/dist/lib/presentation/components/WorkspaceSettingsTopBar/index.d.ts +8 -0
  322. package/dist/lib/presentation/components/WorkspaceSettingsTopBar/index.d.ts.map +1 -0
  323. package/dist/lib/presentation/components/WorkspaceSettingsTopBar/index.js +57 -0
  324. package/dist/lib/presentation/components/WorkspaceShell/index.d.ts +16 -0
  325. package/dist/lib/presentation/components/WorkspaceShell/index.d.ts.map +1 -0
  326. package/dist/lib/presentation/components/WorkspaceShell/index.js +100 -0
  327. package/dist/lib/presentation/components/WorkspaceStats/index.d.ts +9 -0
  328. package/dist/lib/presentation/components/WorkspaceStats/index.d.ts.map +1 -0
  329. package/dist/lib/presentation/components/WorkspaceStats/index.js +48 -0
  330. package/dist/lib/presentation/components/WorkspaceToolbar/index.d.ts +22 -0
  331. package/dist/lib/presentation/components/WorkspaceToolbar/index.d.ts.map +1 -0
  332. package/dist/lib/presentation/components/WorkspaceToolbar/index.js +73 -0
  333. package/dist/lib/presentation/components/WorkspacesEmpty/index.d.ts +18 -0
  334. package/dist/lib/presentation/components/WorkspacesEmpty/index.d.ts.map +1 -0
  335. package/dist/lib/presentation/components/WorkspacesEmpty/index.js +42 -0
  336. package/dist/lib/presentation/components/WorkspacesHomePanel/index.d.ts +7 -0
  337. package/dist/lib/presentation/components/WorkspacesHomePanel/index.d.ts.map +1 -0
  338. package/dist/lib/presentation/components/WorkspacesHomePanel/index.js +50 -0
  339. package/dist/lib/presentation/components/WorkspacesNavSection/index.d.ts +15 -0
  340. package/dist/lib/presentation/components/WorkspacesNavSection/index.d.ts.map +1 -0
  341. package/dist/lib/presentation/components/WorkspacesNavSection/index.js +76 -0
  342. package/dist/lib/presentation/components/WorkspacesSkeleton/index.d.ts +49 -0
  343. package/dist/lib/presentation/components/WorkspacesSkeleton/index.d.ts.map +1 -0
  344. package/dist/lib/presentation/components/WorkspacesSkeleton/index.js +94 -0
  345. package/dist/lib/presentation/components/WorkspacesTable/index.d.ts +12 -0
  346. package/dist/lib/presentation/components/WorkspacesTable/index.d.ts.map +1 -0
  347. package/dist/lib/presentation/components/WorkspacesTable/index.js +58 -0
  348. package/dist/lib/presentation/currentWorkspace/index.d.ts +17 -0
  349. package/dist/lib/presentation/currentWorkspace/index.d.ts.map +1 -0
  350. package/dist/lib/presentation/currentWorkspace/index.js +44 -0
  351. package/dist/lib/presentation/hooks/useBasicsSchema/index.d.ts +17 -0
  352. package/dist/lib/presentation/hooks/useBasicsSchema/index.d.ts.map +1 -0
  353. package/dist/lib/presentation/hooks/useBasicsSchema/index.js +71 -0
  354. package/dist/lib/presentation/hooks/useComboboxList/index.d.ts +44 -0
  355. package/dist/lib/presentation/hooks/useComboboxList/index.d.ts.map +1 -0
  356. package/dist/lib/presentation/hooks/useComboboxList/index.js +62 -0
  357. package/dist/lib/presentation/hooks/useRedirectNotice/index.d.ts +24 -0
  358. package/dist/lib/presentation/hooks/useRedirectNotice/index.d.ts.map +1 -0
  359. package/dist/lib/presentation/hooks/useRedirectNotice/index.js +37 -0
  360. package/dist/lib/presentation/hooks/useResourceSelection/index.d.ts +21 -0
  361. package/dist/lib/presentation/hooks/useResourceSelection/index.d.ts.map +1 -0
  362. package/dist/lib/presentation/hooks/useResourceSelection/index.js +16 -0
  363. package/dist/lib/presentation/hooks/useSlug/index.d.ts +28 -0
  364. package/dist/lib/presentation/hooks/useSlug/index.d.ts.map +1 -0
  365. package/dist/lib/presentation/hooks/useSlug/index.js +18 -0
  366. package/dist/lib/presentation/hooks/useWizard/index.d.ts +60 -0
  367. package/dist/lib/presentation/hooks/useWizard/index.d.ts.map +1 -0
  368. package/dist/lib/presentation/hooks/useWizard/index.js +93 -0
  369. package/dist/lib/presentation/hooks/useWorkspaceProfileSchema/index.d.ts +16 -0
  370. package/dist/lib/presentation/hooks/useWorkspaceProfileSchema/index.d.ts.map +1 -0
  371. package/dist/lib/presentation/hooks/useWorkspaceProfileSchema/index.js +53 -0
  372. package/dist/lib/presentation/pages/CreateWorkspacePage/index.d.ts +7 -0
  373. package/dist/lib/presentation/pages/CreateWorkspacePage/index.d.ts.map +1 -0
  374. package/dist/lib/presentation/pages/CreateWorkspacePage/index.js +248 -0
  375. package/dist/lib/presentation/pages/WorkspaceSettingsPage/index.d.ts +12 -0
  376. package/dist/lib/presentation/pages/WorkspaceSettingsPage/index.d.ts.map +1 -0
  377. package/dist/lib/presentation/pages/WorkspaceSettingsPage/index.js +69 -0
  378. package/dist/lib/presentation/pages/WorkspacesPage/index.d.ts +7 -0
  379. package/dist/lib/presentation/pages/WorkspacesPage/index.d.ts.map +1 -0
  380. package/dist/lib/presentation/pages/WorkspacesPage/index.js +112 -0
  381. package/dist/lib/presentation/slots/workspaceSlots/index.d.ts +101 -0
  382. package/dist/lib/presentation/slots/workspaceSlots/index.d.ts.map +1 -0
  383. package/dist/lib/presentation/slots/workspaceSlots/index.js +25 -0
  384. package/dist/lib/presentation/workspacesPlugin/index.d.ts +31 -0
  385. package/dist/lib/presentation/workspacesPlugin/index.d.ts.map +1 -0
  386. package/dist/lib/presentation/workspacesPlugin/index.js +151 -0
  387. package/dist/lib/slots/workspaceSlots/index.d.ts +101 -0
  388. package/dist/lib/slots/workspaceSlots/index.d.ts.map +1 -0
  389. package/dist/lib/types/wizard/index.d.ts +119 -0
  390. package/dist/lib/types/wizard/index.d.ts.map +1 -0
  391. package/dist/lib/types/workspace/index.d.ts +42 -0
  392. package/dist/lib/types/workspace/index.d.ts.map +1 -0
  393. package/dist/lib/utils/buildCreateWorkspaceBody/index.d.ts +12 -0
  394. package/dist/lib/utils/buildCreateWorkspaceBody/index.d.ts.map +1 -0
  395. package/dist/lib/utils/currentWorkspace/index.d.ts +17 -0
  396. package/dist/lib/utils/currentWorkspace/index.d.ts.map +1 -0
  397. package/dist/lib/utils/isActiveWorkspace/index.d.ts +9 -0
  398. package/dist/lib/utils/isActiveWorkspace/index.d.ts.map +1 -0
  399. package/dist/lib/utils/isConflict/index.d.ts +8 -0
  400. package/dist/lib/utils/isConflict/index.d.ts.map +1 -0
  401. package/dist/lib/utils/permissions/index.d.ts +7 -0
  402. package/dist/lib/utils/permissions/index.d.ts.map +1 -0
  403. package/dist/lib/utils/radioGroupKeydown/index.d.ts +15 -0
  404. package/dist/lib/utils/radioGroupKeydown/index.d.ts.map +1 -0
  405. package/dist/lib/utils/resourceSelection/index.d.ts +18 -0
  406. package/dist/lib/utils/resourceSelection/index.d.ts.map +1 -0
  407. package/dist/lib/utils/workspacesPlugin/index.d.ts +31 -0
  408. package/dist/lib/utils/workspacesPlugin/index.d.ts.map +1 -0
  409. package/package.json +48 -0
@@ -0,0 +1,150 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { useNavigate } from 'react-router-dom';
4
+ import { defineMessages, useIntl } from 'react-intl';
5
+ import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, ConfirmDialog, Separator, toast } from '@orthacms/design-system';
6
+ import { useSetWorkspaceStatus } from '../../../application/useSetWorkspaceStatus';
7
+ import { useDeleteWorkspace } from '../../../application/useDeleteWorkspace';
8
+ import { isConflict } from '../../../infrastructure/isConflict';
9
+ import { DeleteWorkspaceDialog } from './DeleteWorkspaceDialog';
10
+ const messages = defineMessages({
11
+ title: {
12
+ id: 'workspaces.settings.danger.title',
13
+ defaultMessage: 'Danger zone'
14
+ },
15
+ description: {
16
+ id: 'workspaces.settings.danger.description',
17
+ defaultMessage: 'Archiving hides a workspace from everyday use; deleting is permanent. Proceed carefully.'
18
+ },
19
+ archiveHeading: {
20
+ id: 'workspaces.settings.danger.archiveHeading',
21
+ defaultMessage: 'Archive workspace'
22
+ },
23
+ archiveBody: {
24
+ id: 'workspaces.settings.danger.archiveBody',
25
+ defaultMessage: 'Mark this workspace archived. Its content and members are kept; you can unarchive it any time.'
26
+ },
27
+ unarchiveHeading: {
28
+ id: 'workspaces.settings.danger.unarchiveHeading',
29
+ defaultMessage: 'Unarchive workspace'
30
+ },
31
+ unarchiveBody: {
32
+ id: 'workspaces.settings.danger.unarchiveBody',
33
+ defaultMessage: 'This workspace is archived. Restore it to active use.'
34
+ },
35
+ archiveAction: {
36
+ id: 'workspaces.settings.danger.archiveAction',
37
+ defaultMessage: 'Archive'
38
+ },
39
+ unarchiveAction: {
40
+ id: 'workspaces.settings.danger.unarchiveAction',
41
+ defaultMessage: 'Unarchive'
42
+ },
43
+ deleteHeading: {
44
+ id: 'workspaces.settings.danger.deleteHeading',
45
+ defaultMessage: 'Delete workspace'
46
+ },
47
+ deleteBody: {
48
+ id: 'workspaces.settings.danger.deleteBody',
49
+ defaultMessage: 'Permanently delete this workspace, its memberships, and its content grants. This cannot be undone.'
50
+ },
51
+ deleteAction: {
52
+ id: 'workspaces.settings.danger.deleteAction',
53
+ defaultMessage: 'Delete workspace'
54
+ },
55
+ archiveConfirmTitle: {
56
+ id: 'workspaces.settings.danger.archiveConfirmTitle',
57
+ defaultMessage: 'Archive “{name}”?'
58
+ },
59
+ archiveConfirmBody: {
60
+ id: 'workspaces.settings.danger.archiveConfirmBody',
61
+ defaultMessage: 'The workspace will be hidden from the default view. Members keep their access and you can unarchive it later.'
62
+ },
63
+ archived: {
64
+ id: 'workspaces.settings.danger.archived',
65
+ defaultMessage: 'Workspace archived.'
66
+ },
67
+ unarchived: {
68
+ id: 'workspaces.settings.danger.unarchived',
69
+ defaultMessage: 'Workspace restored.'
70
+ },
71
+ statusError: {
72
+ id: 'workspaces.settings.danger.statusError',
73
+ defaultMessage: 'Couldn’t change the workspace status. Please try again.'
74
+ },
75
+ deleted: {
76
+ id: 'workspaces.settings.danger.deleted',
77
+ defaultMessage: 'Workspace deleted.'
78
+ },
79
+ deleteError: {
80
+ id: 'workspaces.settings.danger.deleteError',
81
+ defaultMessage: 'Couldn’t delete the workspace. Please try again.'
82
+ },
83
+ deleteNotEmpty: {
84
+ id: 'workspaces.settings.danger.deleteNotEmpty',
85
+ defaultMessage: 'This workspace still has content. Delete all records first, then delete the workspace.'
86
+ }
87
+ });
88
+ /**
89
+ * The Danger-zone settings tab: archive/unarchive (`workspaces:update`) and
90
+ * permanently delete (`workspaces:delete`), each behind a typed confirmation.
91
+ * On delete the user is sent back to the workspaces grid (the shell route is
92
+ * gone).
93
+ */
94
+ export function WorkspaceDangerSettings({ workspace, canUpdate, canDelete }) {
95
+ const intl = useIntl();
96
+ const navigate = useNavigate();
97
+ const setStatus = useSetWorkspaceStatus();
98
+ const remove = useDeleteWorkspace();
99
+ const [confirmingArchive, setConfirmingArchive] = useState(false);
100
+ const [confirmingDelete, setConfirmingDelete] = useState(false);
101
+ const isArchived = workspace.status === 'Archived';
102
+ const toggleArchive = async () => {
103
+ try {
104
+ await setStatus.mutateAsync({
105
+ id: workspace.id,
106
+ status: isArchived ? 'Active' : 'Archived'
107
+ });
108
+ toast.success(intl.formatMessage(isArchived ? messages.unarchived : messages.archived));
109
+ }
110
+ catch {
111
+ toast.error(intl.formatMessage(messages.statusError));
112
+ }
113
+ finally {
114
+ setConfirmingArchive(false);
115
+ }
116
+ };
117
+ const confirmDelete = async () => {
118
+ try {
119
+ await remove.mutateAsync(workspace.id);
120
+ toast.success(intl.formatMessage(messages.deleted));
121
+ navigate('/workspaces');
122
+ }
123
+ catch (error) {
124
+ // The dialog blocks a non-empty delete up front; this 409 is only a
125
+ // safety net for content created between the check and the confirm.
126
+ (isConflict(error) ? toast.warning : toast.error)(intl.formatMessage(isConflict(error)
127
+ ? messages.deleteNotEmpty
128
+ : messages.deleteError));
129
+ setConfirmingDelete(false);
130
+ }
131
+ };
132
+ return (_jsxs(Card, { className: "border-destructive/40", children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { asChild: true, className: "text-destructive", children: _jsx("h2", { children: intl.formatMessage(messages.title) }) }), _jsx(CardDescription, { children: intl.formatMessage(messages.description) })] }), _jsxs(CardContent, { className: "flex flex-col gap-4", children: [canUpdate ? (_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-sm font-medium", children: intl.formatMessage(isArchived
133
+ ? messages.unarchiveHeading
134
+ : messages.archiveHeading) }), _jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(isArchived
135
+ ? messages.unarchiveBody
136
+ : messages.archiveBody) })] }), _jsx(Button, { type: "button", variant: "outline", className: "shrink-0", disabled: setStatus.isPending, onClick: () => {
137
+ // Unarchiving is low-risk, so it applies
138
+ // directly; archiving asks first.
139
+ if (isArchived) {
140
+ toggleArchive();
141
+ }
142
+ else {
143
+ setConfirmingArchive(true);
144
+ }
145
+ }, children: intl.formatMessage(isArchived
146
+ ? messages.unarchiveAction
147
+ : messages.archiveAction) })] })) : null, canUpdate && canDelete ? _jsx(Separator, {}) : null, canDelete ? (_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "flex flex-col", children: [_jsx("span", { className: "text-sm font-medium", children: intl.formatMessage(messages.deleteHeading) }), _jsx("span", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.deleteBody) })] }), _jsx(Button, { type: "button", variant: "destructive", className: "shrink-0", disabled: remove.isPending, onClick: () => setConfirmingDelete(true), children: intl.formatMessage(messages.deleteAction) })] })) : null] }), _jsx(ConfirmDialog, { open: confirmingArchive, onOpenChange: setConfirmingArchive, title: intl.formatMessage(messages.archiveConfirmTitle, {
148
+ name: workspace.name
149
+ }), description: intl.formatMessage(messages.archiveConfirmBody), confirmLabel: intl.formatMessage(messages.archiveAction), busy: setStatus.isPending, onConfirm: toggleArchive }), _jsx(DeleteWorkspaceDialog, { workspace: confirmingDelete ? workspace : null, onClose: () => setConfirmingDelete(false), onConfirm: confirmDelete, busy: remove.isPending })] }));
150
+ }
@@ -0,0 +1,19 @@
1
+ /** Props for {@link WorkspaceIdField}. */
2
+ export type WorkspaceIdFieldProps = {
3
+ /** The workspace's stable id. */
4
+ workspaceId: string;
5
+ };
6
+ /**
7
+ * The workspace's id, shown read-only with a copy button — the value an
8
+ * integrator needs for the public content API's `X-Workspace-Id` header, which
9
+ * was otherwise only obtainable from the browser's address bar.
10
+ *
11
+ * Unlike the slug field beside it, the input is `readOnly` but **not**
12
+ * `disabled`: a disabled input can't be focused or selected, so it could
13
+ * neither be copied by keyboard nor read by a screen reader's forms mode —
14
+ * which would defeat the point of the field. Focusing it selects the whole id,
15
+ * so manual copying works even where the Clipboard API is unavailable (an
16
+ * insecure origin, or denied permission — the failure path this handles).
17
+ */
18
+ export declare function WorkspaceIdField({ workspaceId }: WorkspaceIdFieldProps): import("react").JSX.Element;
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/WorkspaceGeneralSettings/WorkspaceIdField/index.tsx"],"names":[],"mappings":"AA0CA,0CAA0C;AAC1C,MAAM,MAAM,qBAAqB,GAAG;IAChC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAAE,qBAAqB,+BAiEtE"}
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { defineMessages, useIntl } from 'react-intl';
4
+ import { Check, Copy } from 'lucide-react';
5
+ import { Field, FieldDescription, FieldLabel, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, toast } from '@orthacms/design-system';
6
+ /** How long the button shows its "copied" check before reverting. */
7
+ const COPIED_RESET_MS = 2000;
8
+ const messages = defineMessages({
9
+ label: {
10
+ id: 'workspaces.settings.general.workspaceIdLabel',
11
+ defaultMessage: 'Workspace ID'
12
+ },
13
+ hint: {
14
+ id: 'workspaces.settings.general.workspaceIdHint',
15
+ defaultMessage: 'Identifies this workspace to the API. Send it as the X-Workspace-Id header when a token covers more than one workspace.'
16
+ },
17
+ copy: {
18
+ id: 'workspaces.settings.general.workspaceIdCopy',
19
+ defaultMessage: 'Copy workspace ID'
20
+ },
21
+ copied: {
22
+ id: 'workspaces.settings.general.workspaceIdCopied',
23
+ defaultMessage: 'Workspace ID copied to clipboard'
24
+ },
25
+ copyFailed: {
26
+ id: 'workspaces.settings.general.workspaceIdCopyFailed',
27
+ defaultMessage: 'Couldn’t reach the clipboard. Select the ID and copy it manually.'
28
+ }
29
+ });
30
+ /**
31
+ * The workspace's id, shown read-only with a copy button — the value an
32
+ * integrator needs for the public content API's `X-Workspace-Id` header, which
33
+ * was otherwise only obtainable from the browser's address bar.
34
+ *
35
+ * Unlike the slug field beside it, the input is `readOnly` but **not**
36
+ * `disabled`: a disabled input can't be focused or selected, so it could
37
+ * neither be copied by keyboard nor read by a screen reader's forms mode —
38
+ * which would defeat the point of the field. Focusing it selects the whole id,
39
+ * so manual copying works even where the Clipboard API is unavailable (an
40
+ * insecure origin, or denied permission — the failure path this handles).
41
+ */
42
+ export function WorkspaceIdField({ workspaceId }) {
43
+ const intl = useIntl();
44
+ const [copied, setCopied] = useState(false);
45
+ const resetTimer = useRef(null);
46
+ // Clear a pending reset on unmount so the timeout can't fire into an
47
+ // unmounted component (this section remounts whenever the workspace list
48
+ // refetches, since the page keys it by workspace id).
49
+ useEffect(() => () => {
50
+ if (resetTimer.current) {
51
+ clearTimeout(resetTimer.current);
52
+ }
53
+ }, []);
54
+ const copy = async () => {
55
+ try {
56
+ await navigator.clipboard.writeText(workspaceId);
57
+ setCopied(true);
58
+ toast.success(intl.formatMessage(messages.copied));
59
+ if (resetTimer.current) {
60
+ clearTimeout(resetTimer.current);
61
+ }
62
+ resetTimer.current = setTimeout(() => setCopied(false), COPIED_RESET_MS);
63
+ }
64
+ catch {
65
+ // Clipboard access can be denied (insecure origin, permissions).
66
+ // The id is selectable in the field, so say so rather than
67
+ // failing silently.
68
+ toast.error(intl.formatMessage(messages.copyFailed));
69
+ }
70
+ };
71
+ return (_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "settings-workspace-id", children: intl.formatMessage(messages.label) }), _jsxs(InputGroup, { children: [_jsx(InputGroupInput, { id: "settings-workspace-id", value: workspaceId, readOnly: true, className: "font-mono", onFocus: (event) => event.currentTarget.select() }), _jsx(InputGroupAddon, { align: "inline-end", children: _jsx(InputGroupButton, { size: "icon-xs", onClick: copy, "aria-label": intl.formatMessage(messages.copy), children: copied ? _jsx(Check, { "aria-hidden": true }) : _jsx(Copy, { "aria-hidden": true }) }) })] }), _jsx(FieldDescription, { children: intl.formatMessage(messages.hint) })] }));
72
+ }
@@ -0,0 +1,18 @@
1
+ import type { Workspace } from '../../../domain/types/workspace';
2
+ /** Props for {@link WorkspaceGeneralSettings}. */
3
+ export type WorkspaceGeneralSettingsProps = {
4
+ /** The workspace being edited. */
5
+ workspace: Workspace;
6
+ /** Whether the current user may edit (holds `workspaces:update`). */
7
+ canUpdate: boolean;
8
+ };
9
+ /**
10
+ * The General settings tab: edit the workspace name, description, and avatar
11
+ * color. Name/description use TanStack Form + the localized
12
+ * {@link useWorkspaceProfileSchema}; the color is a small piece of local state
13
+ * (a radio row, not a text field). The slug is shown read-only (it's immutable).
14
+ * When the user lacks `workspaces:update` the fields are disabled and the save
15
+ * action is hidden.
16
+ */
17
+ export declare function WorkspaceGeneralSettings({ workspace, canUpdate }: WorkspaceGeneralSettingsProps): import("react").JSX.Element;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/WorkspaceGeneralSettings/index.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAkEjE,kDAAkD;AAClD,MAAM,MAAM,6BAA6B,GAAG;IACxC,kCAAkC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,EACrC,SAAS,EACT,SAAS,EACZ,EAAE,6BAA6B,+BAyO/B"}
@@ -0,0 +1,131 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { useForm } from '@tanstack/react-form';
4
+ import { defineMessages, useIntl } from 'react-intl';
5
+ import { Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, Input, Spinner, Textarea, toast } from '@orthacms/design-system';
6
+ import { initialsOf } from '@orthacms/utils-admin';
7
+ import { useWorkspaceProfileSchema } from '../../hooks/useWorkspaceProfileSchema';
8
+ import { useUpdateWorkspace } from '../../../application/useUpdateWorkspace';
9
+ import { DESCRIPTION_MAX, NAME_MAX } from '../../../domain/workspaceLimits';
10
+ import { ColorSwatchRow } from '../ColorSwatchRow';
11
+ import { WorkspaceAvatar } from '../WorkspaceAvatar';
12
+ import { WorkspaceIdField } from './WorkspaceIdField';
13
+ const messages = defineMessages({
14
+ title: {
15
+ id: 'workspaces.settings.general.title',
16
+ defaultMessage: 'General'
17
+ },
18
+ description: {
19
+ id: 'workspaces.settings.general.description',
20
+ defaultMessage: 'Your workspace name, description, and avatar color. These are visible to everyone with access.'
21
+ },
22
+ nameLabel: {
23
+ id: 'workspaces.settings.general.nameLabel',
24
+ defaultMessage: 'Name'
25
+ },
26
+ nameHint: {
27
+ id: 'workspaces.settings.general.nameHint',
28
+ defaultMessage: 'A short, recognizable name for this workspace.'
29
+ },
30
+ descriptionLabel: {
31
+ id: 'workspaces.settings.general.descriptionLabel',
32
+ defaultMessage: 'Description'
33
+ },
34
+ descriptionHint: {
35
+ id: 'workspaces.settings.general.descriptionHint',
36
+ defaultMessage: 'Optional. What this workspace is for.'
37
+ },
38
+ slugLabel: {
39
+ id: 'workspaces.settings.general.slugLabel',
40
+ defaultMessage: 'URL slug'
41
+ },
42
+ slugHint: {
43
+ id: 'workspaces.settings.general.slugHint',
44
+ defaultMessage: 'The workspace’s stable identifier. It can’t be changed after creation.'
45
+ },
46
+ readOnly: {
47
+ id: 'workspaces.settings.general.readOnly',
48
+ defaultMessage: 'You have read-only access. Ask an administrator to change these details.'
49
+ },
50
+ save: {
51
+ id: 'workspaces.settings.general.save',
52
+ defaultMessage: 'Save changes'
53
+ },
54
+ saving: {
55
+ id: 'workspaces.settings.general.saving',
56
+ defaultMessage: 'Saving…'
57
+ },
58
+ saved: {
59
+ id: 'workspaces.settings.general.saved',
60
+ defaultMessage: 'Workspace details saved.'
61
+ },
62
+ error: {
63
+ id: 'workspaces.settings.general.error',
64
+ defaultMessage: 'Couldn’t save your changes. Please try again.'
65
+ }
66
+ });
67
+ /**
68
+ * The General settings tab: edit the workspace name, description, and avatar
69
+ * color. Name/description use TanStack Form + the localized
70
+ * {@link useWorkspaceProfileSchema}; the color is a small piece of local state
71
+ * (a radio row, not a text field). The slug is shown read-only (it's immutable).
72
+ * When the user lacks `workspaces:update` the fields are disabled and the save
73
+ * action is hidden.
74
+ */
75
+ export function WorkspaceGeneralSettings({ workspace, canUpdate }) {
76
+ const intl = useIntl();
77
+ const schema = useWorkspaceProfileSchema();
78
+ const update = useUpdateWorkspace();
79
+ const [color, setColor] = useState(workspace.color);
80
+ // The last saved color — the color dirty baseline. It re-baselines on save
81
+ // success (before the list refetches and remounts this keyed component) so
82
+ // a color-only save clears the dirty state and can't be PATCHed twice.
83
+ const [savedColor, setSavedColor] = useState(workspace.color);
84
+ const colorDirty = color !== savedColor;
85
+ const form = useForm({
86
+ defaultValues: {
87
+ name: workspace.name,
88
+ description: workspace.description
89
+ },
90
+ validators: { onChange: schema },
91
+ onSubmit: async ({ value }) => {
92
+ try {
93
+ await update.mutateAsync({
94
+ id: workspace.id,
95
+ name: value.name.trim(),
96
+ description: value.description.trim(),
97
+ color
98
+ });
99
+ // Re-baseline both the form and the color to the saved values so
100
+ // the section reads clean immediately — before the invalidated
101
+ // list refetches and remounts this component — preventing a
102
+ // duplicate PATCH if Save is clicked again.
103
+ form.reset(value);
104
+ setSavedColor(color);
105
+ toast.success(intl.formatMessage(messages.saved));
106
+ }
107
+ catch {
108
+ toast.error(intl.formatMessage(messages.error));
109
+ }
110
+ }
111
+ });
112
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { asChild: true, children: _jsx("h2", { children: intl.formatMessage(messages.title) }) }), _jsx(CardDescription, { children: intl.formatMessage(messages.description) })] }), _jsxs("form", { noValidate: true, onSubmit: (event) => {
113
+ event.preventDefault();
114
+ event.stopPropagation();
115
+ form.handleSubmit();
116
+ }, children: [_jsx(CardContent, { children: _jsxs("div", { className: "flex flex-col gap-6 sm:flex-row sm:items-start", children: [_jsx(form.Subscribe, { selector: (state) => state.values.name, children: (name) => (_jsx("div", { className: "flex shrink-0 justify-center sm:pt-1", children: _jsx(WorkspaceAvatar, { className: "size-16 text-lg", initials: initialsOf(name) || '—', color: color }) })) }), _jsxs(FieldGroup, { className: "flex-1", children: [_jsx(form.Field, { name: "name", children: (field) => {
117
+ const invalid = field.state.meta.isTouched &&
118
+ field.state.meta.errors.length > 0;
119
+ return (_jsxs(Field, { "data-invalid": invalid, children: [_jsx(FieldLabel, { htmlFor: "settings-name", children: intl.formatMessage(messages.nameLabel) }), _jsx(Input, { id: "settings-name", value: field.state.value, onChange: (event) => field.handleChange(event.target.value), onBlur: field.handleBlur, maxLength: NAME_MAX, disabled: !canUpdate, "aria-invalid": invalid }), invalid ? (_jsx(FieldError, { errors: field.state.meta.errors })) : (_jsx(FieldDescription, { children: intl.formatMessage(messages.nameHint) }))] }));
120
+ } }), _jsx(form.Field, { name: "description", children: (field) => {
121
+ const invalid = field.state.meta.isTouched &&
122
+ field.state.meta.errors.length > 0;
123
+ return (_jsxs(Field, { "data-invalid": invalid, children: [_jsx(FieldLabel, { htmlFor: "settings-description", children: intl.formatMessage(messages.descriptionLabel) }), _jsx(Textarea, { id: "settings-description", value: field.state.value, onChange: (event) => field.handleChange(event.target.value), onBlur: field.handleBlur, maxLength: DESCRIPTION_MAX, rows: 3, disabled: !canUpdate, "aria-invalid": invalid }), invalid ? (_jsx(FieldError, { errors: field.state.meta.errors })) : (_jsx(FieldDescription, { children: intl.formatMessage(messages.descriptionHint) }))] }));
124
+ } }), _jsx(ColorSwatchRow, { value: color, onChange: (next) => canUpdate && setColor(next) }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "settings-slug", children: intl.formatMessage(messages.slugLabel) }), _jsx(Input, { id: "settings-slug", value: workspace.slug, readOnly: true, className: "bg-muted text-muted-foreground" }), _jsx(FieldDescription, { children: intl.formatMessage(messages.slugHint) })] }), _jsx(WorkspaceIdField, { workspaceId: workspace.id })] })] }) }), canUpdate ? (_jsx(CardFooter, { className: "justify-end border-t pt-6", children: _jsx(form.Subscribe, { selector: (state) => ({
125
+ canSubmit: state.canSubmit,
126
+ isDirty: state.isDirty,
127
+ isSubmitting: state.isSubmitting
128
+ }), children: ({ canSubmit, isDirty, isSubmitting }) => (_jsx(Button, { type: "submit", disabled: !canSubmit ||
129
+ (!isDirty && !colorDirty) ||
130
+ isSubmitting, children: isSubmitting ? (_jsxs(_Fragment, { children: [_jsx(Spinner, {}), intl.formatMessage(messages.saving)] })) : (intl.formatMessage(messages.save)) })) }) })) : (_jsx(CardFooter, { className: "border-t pt-6", children: _jsx("p", { className: "text-sm text-muted-foreground", children: intl.formatMessage(messages.readOnly) }) }))] })] }));
131
+ }
@@ -0,0 +1,18 @@
1
+ import type { DirectoryUser } from '../../../../domain/types/wizard';
2
+ /** Props for {@link MemberDirectorySearch}. */
3
+ export type MemberDirectorySearchProps = {
4
+ /** Ids already members — excluded from results so they can't be re-added. */
5
+ excludeIds: Set<string>;
6
+ /** Called when a directory user is chosen. */
7
+ onSelect: (user: DirectoryUser) => void;
8
+ /** Disables the input while an add is in flight. */
9
+ busy?: boolean;
10
+ };
11
+ /**
12
+ * Searchable input that assigns **existing** directory users to the workspace.
13
+ * Unlike the create wizard's typeahead there is no invite-by-email path — the
14
+ * add-member endpoint links a real account by id — so a typed email that isn't
15
+ * in the directory simply yields no result.
16
+ */
17
+ export declare function MemberDirectorySearch({ excludeIds, onSelect, busy }: MemberDirectorySearchProps): import("react").JSX.Element;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/WorkspaceMembersSettings/MemberDirectorySearch/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AA2BrE,+CAA+C;AAC/C,MAAM,MAAM,0BAA0B,GAAG;IACrC,6EAA6E;IAC7E,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,oDAAoD;IACpD,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EAClC,UAAU,EACV,QAAQ,EACR,IAAY,EACf,EAAE,0BAA0B,+BAmH5B"}
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { defineMessages, useIntl } from 'react-intl';
4
+ import { Search } from 'lucide-react';
5
+ import { cn, InputGroup, InputGroupAddon, InputGroupInput, Popover, PopoverAnchor, PopoverContent, Spinner } from '@orthacms/design-system';
6
+ import { useUsersSearch } from '../../../../application/useUsersSearch';
7
+ import { useComboboxList } from '../../../hooks/useComboboxList';
8
+ const messages = defineMessages({
9
+ placeholder: {
10
+ id: 'workspaces.settings.members.searchPlaceholder',
11
+ defaultMessage: 'Add people by name or email'
12
+ },
13
+ searching: {
14
+ id: 'workspaces.settings.members.searching',
15
+ defaultMessage: 'Searching…'
16
+ },
17
+ results: {
18
+ id: 'workspaces.settings.members.resultsAnnouncement',
19
+ defaultMessage: '{count, plural, =0 {No people match your search.} one {# person available.} other {# people available.}}'
20
+ },
21
+ noResults: {
22
+ id: 'workspaces.settings.members.noResults',
23
+ defaultMessage: 'No people match your search.'
24
+ },
25
+ loadError: {
26
+ id: 'workspaces.settings.members.loadError',
27
+ defaultMessage: 'Couldn’t load people. Please try again.'
28
+ }
29
+ });
30
+ /**
31
+ * Searchable input that assigns **existing** directory users to the workspace.
32
+ * Unlike the create wizard's typeahead there is no invite-by-email path — the
33
+ * add-member endpoint links a real account by id — so a typed email that isn't
34
+ * in the directory simply yields no result.
35
+ */
36
+ export function MemberDirectorySearch({ excludeIds, onSelect, busy = false }) {
37
+ const intl = useIntl();
38
+ const [query, setQuery] = useState('');
39
+ const { users, loading, isError } = useUsersSearch(query);
40
+ const trimmed = query.trim();
41
+ const results = users.filter((user) => !excludeIds.has(user.id));
42
+ const open = trimmed.length > 0;
43
+ const select = (user) => {
44
+ onSelect(user);
45
+ setQuery('');
46
+ };
47
+ const combobox = useComboboxList({
48
+ count: results.length,
49
+ open,
50
+ onSelect: (index) => {
51
+ const user = results[index];
52
+ if (user)
53
+ select(user);
54
+ },
55
+ onDismiss: () => setQuery('')
56
+ });
57
+ return (_jsxs(Popover, { open: open, onOpenChange: (next) => {
58
+ if (!next)
59
+ setQuery('');
60
+ }, children: [_jsx(PopoverAnchor, { asChild: true, children: _jsxs(InputGroup, { className: "shadow-none", children: [_jsx(InputGroupAddon, { children: _jsx(Search, {}) }), _jsx(InputGroupInput, { value: query, onChange: (event) => setQuery(event.target.value), onKeyDown: combobox.onKeyDown, placeholder: intl.formatMessage(messages.placeholder), "aria-label": intl.formatMessage(messages.placeholder), role: "combobox", "aria-expanded": open, "aria-controls": combobox.listboxId, "aria-activedescendant": combobox.activeId, "aria-autocomplete": "list", autoComplete: "off", disabled: busy })] }) }), _jsx(PopoverContent, { align: "start", onOpenAutoFocus: (event) => event.preventDefault(), className: "w-[var(--radix-popover-trigger-width)] p-1", children: loading ? (_jsxs("p", { className: "flex items-center gap-2 px-2 py-2 text-sm text-muted-foreground", children: [_jsx(Spinner, { className: "size-3.5" }), intl.formatMessage(messages.searching)] })) : isError ? (_jsx("p", { role: "alert", className: "px-2 py-2 text-sm text-destructive", children: intl.formatMessage(messages.loadError) })) : results.length === 0 ? (_jsx("p", { className: "px-2 py-2 text-sm text-muted-foreground", children: intl.formatMessage(messages.noResults) })) : (_jsx("ul", { id: combobox.listboxId, role: "listbox", "aria-label": intl.formatMessage(messages.placeholder), className: "flex flex-col", children: results.map((user, i) => (_jsxs("li", { id: combobox.optionId(i), role: "option", "aria-selected": combobox.activeIndex === i, onClick: () => select(user), onMouseEnter: () => combobox.setActiveIndex(i), className: cn('flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm', combobox.activeIndex === i && 'bg-accent'), children: [_jsx("span", { className: "truncate font-medium", children: user.name }), _jsx("span", { className: "truncate text-xs text-muted-foreground", children: user.email })] }, user.id))) })) }), _jsx("span", { role: "status", "aria-live": "polite", className: "sr-only", children: !open || loading || isError
61
+ ? ''
62
+ : intl.formatMessage(messages.results, {
63
+ count: results.length
64
+ }) })] }));
65
+ }
@@ -0,0 +1,17 @@
1
+ import type { WorkspaceMember } from '../../../../domain/types/workspace';
2
+ /** Props for {@link MemberListRow}. */
3
+ export type MemberListRowProps = {
4
+ /** The member to render. */
5
+ member: WorkspaceMember;
6
+ /** Whether a remove control should be offered. */
7
+ canRemove: boolean;
8
+ /** Called when the remove control is pressed. */
9
+ onRemove: () => void;
10
+ };
11
+ /**
12
+ * One row in the members roster: avatar, name, email, and — when the current
13
+ * user may manage members — a remove button. Access is permission-based, so no
14
+ * member is special.
15
+ */
16
+ export declare function MemberListRow({ member, canRemove, onRemove }: MemberListRowProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/WorkspaceMembersSettings/MemberListRow/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAU1E,uCAAuC;AACvC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,4BAA4B;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,kDAAkD;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC1B,MAAM,EACN,SAAS,EACT,QAAQ,EACX,EAAE,kBAAkB,+BAqCpB"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { X } from 'lucide-react';
4
+ import { Button } from '@orthacms/design-system';
5
+ import { WorkspaceAvatar } from '../../WorkspaceAvatar';
6
+ const messages = defineMessages({
7
+ remove: {
8
+ id: 'workspaces.settings.members.remove',
9
+ defaultMessage: 'Remove {name}'
10
+ }
11
+ });
12
+ /**
13
+ * One row in the members roster: avatar, name, email, and — when the current
14
+ * user may manage members — a remove button. Access is permission-based, so no
15
+ * member is special.
16
+ */
17
+ export function MemberListRow({ member, canRemove, onRemove }) {
18
+ const intl = useIntl();
19
+ return (_jsxs("div", { className: "flex items-center gap-3 px-3 py-2", children: [_jsx(WorkspaceAvatar, { className: "size-9 text-xs", initials: member.initials || '—', color: member.color }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "truncate text-sm font-medium", children: member.name }), _jsx("span", { className: "truncate text-xs text-muted-foreground", children: member.email })] }), canRemove ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon", "data-remove-member": "", onClick: onRemove, "aria-label": intl.formatMessage(messages.remove, {
20
+ name: member.name
21
+ }), children: _jsx(X, { className: "size-4" }) })) : null] }));
22
+ }
@@ -0,0 +1,16 @@
1
+ import type { Workspace } from '../../../domain/types/workspace';
2
+ /** Props for {@link WorkspaceMembersSettings}. */
3
+ export type WorkspaceMembersSettingsProps = {
4
+ /** The workspace whose members are managed. */
5
+ workspace: Workspace;
6
+ /** Whether the current user may manage members (holds `workspaces:update`). */
7
+ canUpdate: boolean;
8
+ };
9
+ /**
10
+ * The Members settings tab: assign existing directory users and remove members
11
+ * with a confirmation. Access is purely permission-based — every control is
12
+ * gated on `workspaces:update`, and no member is special; without the permission
13
+ * the roster is read-only.
14
+ */
15
+ export declare function WorkspaceMembersSettings({ workspace, canUpdate }: WorkspaceMembersSettingsProps): import("react").JSX.Element;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/WorkspaceMembersSettings/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACR,SAAS,EAEZ,MAAM,iCAAiC,CAAC;AAwDzC,kDAAkD;AAClD,MAAM,MAAM,6BAA6B,GAAG;IACxC,+CAA+C;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,+EAA+E;IAC/E,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACrC,SAAS,EACT,SAAS,EACZ,EAAE,6BAA6B,+BAqI/B"}