@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,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Field, FieldDescription, FieldError, FieldGroup, FieldLabel, Input, Textarea } from '@orthacms/design-system';
4
+ import { useBasicsSchema } from '../../../hooks/useBasicsSchema';
5
+ import { DESCRIPTION_MAX, NAME_MAX } from '../../../../domain/workspaceLimits';
6
+ import { ColorSwatchRow } from '../../ColorSwatchRow';
7
+ import { Monogram } from '../Monogram';
8
+ import { SlugField } from '../SlugField';
9
+ const messages = defineMessages({
10
+ nameLabel: {
11
+ id: 'workspaces.create.basics.nameLabel',
12
+ defaultMessage: 'Workspace name'
13
+ },
14
+ namePlaceholder: {
15
+ id: 'workspaces.create.basics.namePlaceholder',
16
+ defaultMessage: 'e.g. Marketing site'
17
+ },
18
+ nameHelp: {
19
+ id: 'workspaces.create.basics.nameHelp',
20
+ defaultMessage: 'Shown to team members in lists and navigation. You can change it later.'
21
+ },
22
+ descriptionLabel: {
23
+ id: 'workspaces.create.basics.descriptionLabel',
24
+ defaultMessage: 'Description'
25
+ },
26
+ descriptionOptional: {
27
+ id: 'workspaces.create.basics.descriptionOptional',
28
+ defaultMessage: 'Optional'
29
+ },
30
+ descriptionPlaceholder: {
31
+ id: 'workspaces.create.basics.descriptionPlaceholder',
32
+ defaultMessage: 'What is this workspace for?'
33
+ },
34
+ descriptionHelp: {
35
+ id: 'workspaces.create.basics.descriptionHelp',
36
+ defaultMessage: 'A short note to help members recognise the workspace. Shown on the workspace card.'
37
+ },
38
+ counter: {
39
+ id: 'workspaces.create.basics.counter',
40
+ defaultMessage: '{count}/{max}'
41
+ }
42
+ });
43
+ /**
44
+ * The basics step body: a live workspace monogram beside the name, the accent
45
+ * color picker, the slug field with availability, and an optional description.
46
+ */
47
+ export function IdentityFields({ data, update, slug }) {
48
+ const intl = useIntl();
49
+ const schema = useBasicsSchema();
50
+ const parsed = schema.safeParse({
51
+ name: data.name,
52
+ slug: data.slug,
53
+ description: data.description
54
+ });
55
+ const issueFor = (field) => parsed.success
56
+ ? undefined
57
+ : parsed.error.issues.find((i) => i.path[0] === field)?.message;
58
+ // Only surface errors once a field has content, so the form doesn't shout
59
+ // before the user has typed anything.
60
+ const nameError = data.name.length > 0 ? issueFor('name') : undefined;
61
+ const slugError = data.slug.length > 0 ? issueFor('slug') : undefined;
62
+ const descriptionError = issueFor('description');
63
+ return (_jsxs(FieldGroup, { children: [_jsxs(Field, { "data-invalid": !!nameError, children: [_jsx(FieldLabel, { htmlFor: "workspace-name", children: intl.formatMessage(messages.nameLabel) }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Monogram, { name: data.name, color: data.color }), _jsx(Input, { id: "workspace-name", value: data.name, onChange: (event) => slug.onNameChange(event.target.value), placeholder: intl.formatMessage(messages.namePlaceholder), autoComplete: "off", "aria-invalid": !!nameError })] }), _jsxs("div", { className: "flex items-start justify-between gap-3", children: [nameError ? (_jsx(FieldError, { errors: [{ message: nameError }] })) : (_jsx(FieldDescription, { children: intl.formatMessage(messages.nameHelp) })), _jsx("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: intl.formatMessage(messages.counter, {
64
+ count: data.name.length,
65
+ max: NAME_MAX
66
+ }) })] })] }), _jsx(ColorSwatchRow, { value: data.color, onChange: (color) => update({ color }) }), _jsx(SlugField, { value: data.slug, slugEdited: data.slugEdited, status: slug.status, onChange: slug.onSlugChange, onRegenerate: slug.regenerate, error: slugError }), _jsxs(Field, { "data-invalid": !!descriptionError, children: [_jsxs(FieldLabel, { htmlFor: "workspace-description", children: [intl.formatMessage(messages.descriptionLabel), _jsxs("span", { className: "ml-1 text-xs font-normal text-muted-foreground", children: ["(", intl.formatMessage(messages.descriptionOptional), ")"] })] }), _jsx(Textarea, { id: "workspace-description", className: "shadow-none", value: data.description, onChange: (event) => update({ description: event.target.value }), placeholder: intl.formatMessage(messages.descriptionPlaceholder), "aria-invalid": !!descriptionError }), _jsxs("div", { className: "flex items-start justify-between gap-3", children: [descriptionError ? (_jsx(FieldError, { errors: [{ message: descriptionError }] })) : (_jsx(FieldDescription, { children: intl.formatMessage(messages.descriptionHelp) })), _jsx("span", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: intl.formatMessage(messages.counter, {
67
+ count: data.description.length,
68
+ max: DESCRIPTION_MAX
69
+ }) })] })] })] }));
70
+ }
@@ -0,0 +1,14 @@
1
+ import type { MemberDraft } from '../../../../../domain/types/wizard';
2
+ /** Props for {@link MemberRow}. */
3
+ export type MemberRowProps = {
4
+ /** The added member. */
5
+ member: MemberDraft;
6
+ /** Remove the member from the list. */
7
+ onRemove: () => void;
8
+ };
9
+ /**
10
+ * One added member: avatar, name/email, an "Invited" badge for invite-by-email
11
+ * rows, and a remove button.
12
+ */
13
+ export declare function MemberRow({ member, onRemove }: MemberRowProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberRow/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAatE,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG;IACzB,wBAAwB;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,cAAc,+BA+C7D"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Mail, X } from 'lucide-react';
4
+ import { Avatar, AvatarFallback, Badge, Button } from '@orthacms/design-system';
5
+ import { initialsOf } from '@orthacms/utils-admin';
6
+ const messages = defineMessages({
7
+ invited: {
8
+ id: 'workspaces.create.members.invitedBadge',
9
+ defaultMessage: 'Invited'
10
+ },
11
+ remove: {
12
+ id: 'workspaces.create.members.remove',
13
+ defaultMessage: 'Remove {name}'
14
+ }
15
+ });
16
+ /**
17
+ * One added member: avatar, name/email, an "Invited" badge for invite-by-email
18
+ * rows, and a remove button.
19
+ */
20
+ export function MemberRow({ member, onRemove }) {
21
+ const intl = useIntl();
22
+ return (_jsxs("div", { className: "flex items-center gap-3 py-2", children: [_jsx(Avatar, { className: "size-9", children: _jsx(AvatarFallback, { children: member.invited ? (_jsx(Mail, { className: "size-4 text-muted-foreground" })) : (_jsx("span", { className: "text-xs font-medium", children: initialsOf(member.name) || '—' })) }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "truncate text-sm font-medium", children: member.invited ? member.email : member.name }), !member.invited ? (_jsx("span", { className: "truncate text-xs text-muted-foreground", children: member.email })) : null] }), member.invited ? (_jsx(Badge, { variant: "secondary", children: intl.formatMessage(messages.invited) })) : null, _jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: onRemove, "aria-label": intl.formatMessage(messages.remove, {
23
+ name: member.invited ? member.email : member.name
24
+ }), children: _jsx(X, {}) })] }));
25
+ }
@@ -0,0 +1,15 @@
1
+ import type { MemberDraft } from '../../../../../domain/types/wizard';
2
+ /** Props for {@link MemberTypeahead}. */
3
+ export type MemberTypeaheadProps = {
4
+ /** Ids already present (owner + added members) — excluded from results. */
5
+ excludeIds: Set<string>;
6
+ /** Add a member (existing user or invited email). */
7
+ onAdd: (member: MemberDraft) => void;
8
+ };
9
+ /**
10
+ * Searchable input that adds people to the workspace. Existing directory users
11
+ * are selected from the results; a typed-in email that isn't in the directory
12
+ * can be invited instead.
13
+ */
14
+ export declare function MemberTypeahead({ excludeIds, onAdd }: MemberTypeaheadProps): import("react").JSX.Element;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/presentation/components/CreateWorkspaceWizard/MembersStep/MemberTypeahead/index.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AA0CtE,yCAAyC;AACzC,MAAM,MAAM,oBAAoB,GAAG;IAC/B,2EAA2E;IAC3E,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,qDAAqD;IACrD,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,oBAAoB,+BAiL1E"}
@@ -0,0 +1,112 @@
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 { Mail, Plus, 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
+ /** Matches a plausible email address. */
9
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
10
+ const messages = defineMessages({
11
+ popoverLabel: {
12
+ id: 'workspaces.create.members.popoverLabel',
13
+ defaultMessage: 'People search results'
14
+ },
15
+ placeholder: {
16
+ id: 'workspaces.create.members.searchPlaceholder',
17
+ defaultMessage: 'Add people by name or email'
18
+ },
19
+ searching: {
20
+ id: 'workspaces.create.members.searching',
21
+ defaultMessage: 'Searching…'
22
+ },
23
+ noResults: {
24
+ id: 'workspaces.create.members.noResults',
25
+ defaultMessage: 'No people match your search.'
26
+ },
27
+ invite: {
28
+ id: 'workspaces.create.members.invite',
29
+ defaultMessage: 'Invite {email}'
30
+ },
31
+ label: {
32
+ id: 'workspaces.create.members.searchLabel',
33
+ defaultMessage: 'Add people by name or email'
34
+ },
35
+ results: {
36
+ id: 'workspaces.create.members.resultsAnnouncement',
37
+ defaultMessage: '{count, plural, =0 {No people match your search.} one {# person available.} other {# people available.}}'
38
+ },
39
+ inviteAvailable: {
40
+ id: 'workspaces.create.members.inviteAnnouncement',
41
+ defaultMessage: 'No matches. You can invite {email} instead.'
42
+ }
43
+ });
44
+ /**
45
+ * Searchable input that adds people to the workspace. Existing directory users
46
+ * are selected from the results; a typed-in email that isn't in the directory
47
+ * can be invited instead.
48
+ */
49
+ export function MemberTypeahead({ excludeIds, onAdd }) {
50
+ const intl = useIntl();
51
+ const [query, setQuery] = useState('');
52
+ const { users, loading } = useUsersSearch(query);
53
+ const trimmed = query.trim();
54
+ const results = users.filter((u) => !excludeIds.has(u.id));
55
+ const isEmail = EMAIL_RE.test(trimmed);
56
+ const emailInDirectory = users.some((u) => u.email.toLowerCase() === trimmed.toLowerCase());
57
+ const canInvite = isEmail && !emailInDirectory && !excludeIds.has(trimmed.toLowerCase());
58
+ const open = trimmed.length > 0;
59
+ const addUser = (user) => {
60
+ onAdd({
61
+ id: user.id,
62
+ name: user.name,
63
+ email: user.email
64
+ });
65
+ setQuery('');
66
+ };
67
+ const invite = () => {
68
+ const email = trimmed.toLowerCase();
69
+ onAdd({
70
+ id: email,
71
+ name: email,
72
+ email,
73
+ invited: true
74
+ });
75
+ setQuery('');
76
+ };
77
+ // The invite row is the last option when it's offered, so one flat index
78
+ // space covers both kinds and Enter can act on whichever is active.
79
+ const optionCount = results.length + (canInvite ? 1 : 0);
80
+ const selectAt = (index) => {
81
+ const user = results[index];
82
+ if (user) {
83
+ addUser(user);
84
+ return;
85
+ }
86
+ if (canInvite)
87
+ invite();
88
+ };
89
+ const combobox = useComboboxList({
90
+ count: optionCount,
91
+ open,
92
+ onSelect: selectAt,
93
+ onDismiss: () => setQuery('')
94
+ });
95
+ const optionClass = (active) => cn('flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm', active && 'bg-accent');
96
+ return (_jsxs(Popover, { open: open, onOpenChange: (next) => {
97
+ if (!next)
98
+ setQuery('');
99
+ }, 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.label), role: "combobox", "aria-expanded": open, "aria-controls": combobox.listboxId, "aria-activedescendant": combobox.activeId, "aria-autocomplete": "list", autoComplete: "off" })] }) }), _jsx(PopoverContent, { align: "start",
100
+ // Keep focus in the input so typing isn't interrupted.
101
+ onOpenAutoFocus: (event) => event.preventDefault(), "aria-label": intl.formatMessage(messages.popoverLabel), 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)] })) : results.length === 0 && !canInvite ? (_jsx("p", { className: "px-2 py-2 text-sm text-muted-foreground", children: intl.formatMessage(messages.noResults) })) : (_jsxs("ul", { id: combobox.listboxId, role: "listbox", "aria-label": intl.formatMessage(messages.label), className: "flex flex-col", children: [results.map((user, i) => (_jsxs("li", { id: combobox.optionId(i), role: "option", "aria-selected": combobox.activeIndex === i, onClick: () => addUser(user), onMouseEnter: () => combobox.setActiveIndex(i), className: optionClass(combobox.activeIndex === i), children: [_jsx("span", { className: "truncate font-medium", children: user.name }), _jsx("span", { className: "truncate text-xs text-muted-foreground", children: user.email })] }, user.id))), canInvite ? (_jsxs("li", { id: combobox.optionId(results.length), role: "option", "aria-selected": combobox.activeIndex === results.length, onClick: invite, onMouseEnter: () => combobox.setActiveIndex(results.length), className: optionClass(combobox.activeIndex === results.length), children: [_jsx(Mail, { className: "size-4 text-muted-foreground" }), intl.formatMessage(messages.invite, {
102
+ email: trimmed.toLowerCase()
103
+ }), _jsx(Plus, { className: "ml-auto size-4 text-muted-foreground" })] })) : null] })) }), _jsx("span", { role: "status", "aria-live": "polite", className: "sr-only", children: !open || loading
104
+ ? ''
105
+ : results.length === 0 && canInvite
106
+ ? intl.formatMessage(messages.inviteAvailable, {
107
+ email: trimmed.toLowerCase()
108
+ })
109
+ : intl.formatMessage(messages.results, {
110
+ count: optionCount
111
+ }) })] }));
112
+ }
@@ -0,0 +1,17 @@
1
+ import type { MemberDraft } from '../../../../domain/types/wizard';
2
+ /** Props for {@link MembersStep}. */
3
+ export type MembersStepProps = {
4
+ /** Added members (excludes the owner). */
5
+ members: MemberDraft[];
6
+ /** Add a member. */
7
+ addMember: (member: MemberDraft) => void;
8
+ /** Remove a member by id. */
9
+ removeMember: (id: string) => void;
10
+ };
11
+ /**
12
+ * The members step body: the directory typeahead plus the "People with access"
13
+ * list — the current user pinned and locked as owner, followed by each added
14
+ * member with a role control and a remove button.
15
+ */
16
+ export declare function MembersStep({ members, addMember, removeMember }: MembersStepProps): 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/CreateWorkspaceWizard/MembersStep/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAoBnE,qCAAqC;AACrC,MAAM,MAAM,gBAAgB,GAAG;IAC3B,0CAA0C;IAC1C,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,oBAAoB;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,6BAA6B;IAC7B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EACxB,OAAO,EACP,SAAS,EACT,YAAY,EACf,EAAE,gBAAgB,+BAmElB"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { useAuth } from '@orthacms/identity-admin';
4
+ import { Avatar, AvatarFallback, Separator } from '@orthacms/design-system';
5
+ import { initialsOf } from '@orthacms/utils-admin';
6
+ import { MemberRow } from './MemberRow';
7
+ import { MemberTypeahead } from './MemberTypeahead';
8
+ const messages = defineMessages({
9
+ listLabel: {
10
+ id: 'workspaces.create.members.listLabel',
11
+ defaultMessage: 'People with access'
12
+ },
13
+ you: {
14
+ id: 'workspaces.create.members.you',
15
+ defaultMessage: 'You'
16
+ },
17
+ empty: {
18
+ id: 'workspaces.create.members.empty',
19
+ defaultMessage: "It's just you for now. Add teammates above, or skip and invite them later."
20
+ }
21
+ });
22
+ /**
23
+ * The members step body: the directory typeahead plus the "People with access"
24
+ * list — the current user pinned and locked as owner, followed by each added
25
+ * member with a role control and a remove button.
26
+ */
27
+ export function MembersStep({ members, addMember, removeMember }) {
28
+ const intl = useIntl();
29
+ const auth = useAuth();
30
+ const user = 'user' in auth ? auth.user : undefined;
31
+ const ownerName = user?.name ?? user?.email ?? intl.formatMessage(messages.you);
32
+ const ownerId = user?.id ?? 'me';
33
+ const excludeIds = new Set([ownerId, ...members.map((m) => m.id)]);
34
+ return (_jsxs("div", { className: "flex flex-col gap-5", children: [_jsx(MemberTypeahead, { excludeIds: excludeIds, onAdd: addMember }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-sm font-medium", children: intl.formatMessage(messages.listLabel) }), _jsxs("div", { className: "rounded-xl border", children: [_jsxs("div", { className: "flex items-center gap-3 px-3 py-2", children: [_jsx(Avatar, { className: "size-9", children: _jsx(AvatarFallback, { children: _jsx("span", { className: "text-xs font-medium", children: initialsOf(ownerName) || '—' }) }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsxs("span", { className: "truncate text-sm font-medium", children: [ownerName, _jsxs("span", { className: "ml-1 text-xs font-normal text-muted-foreground", children: ["(", intl.formatMessage(messages.you), ")"] })] }), user?.email ? (_jsx("span", { className: "truncate text-xs text-muted-foreground", children: user.email })) : null] })] }), members.length > 0 ? (_jsx("div", { className: "flex flex-col px-3 pb-1", children: members.map((member) => (_jsxs("div", { children: [_jsx(Separator, {}), _jsx(MemberRow, { member: member, onRemove: () => removeMember(member.id) })] }, member.id))) })) : (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx("p", { className: "px-3 py-3 text-sm text-muted-foreground", children: intl.formatMessage(messages.empty) })] }))] })] })] }));
35
+ }
@@ -0,0 +1,17 @@
1
+ import { type AvatarColor } from '@orthacms/design-system';
2
+ /** Props for {@link Monogram}. */
3
+ export type MonogramProps = {
4
+ /** Name the initials are derived from. */
5
+ name: string;
6
+ /** Accent color tinting the tile. */
7
+ color: AvatarColor;
8
+ /** Extra classes — set the size here (defaults to a 44px tile). */
9
+ className?: string;
10
+ };
11
+ /**
12
+ * A rounded-square initials tile in the workspace accent color, white text.
13
+ * Distinct from the round member `Avatar` — this represents the workspace
14
+ * identity in the basics step and updates live as the name/color change.
15
+ */
16
+ export declare function Monogram({ name, color, className }: MonogramProps): 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/CreateWorkspaceWizard/Monogram/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG/E,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG;IACxB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,KAAK,EAAE,WAAW,CAAC;IACnB,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,aAAa,+BAajE"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { avatarColorVar, cn } from '@orthacms/design-system';
3
+ import { initialsOf } from '@orthacms/utils-admin';
4
+ /**
5
+ * A rounded-square initials tile in the workspace accent color, white text.
6
+ * Distinct from the round member `Avatar` — this represents the workspace
7
+ * identity in the basics step and updates live as the name/color change.
8
+ */
9
+ export function Monogram({ name, color, className }) {
10
+ return (_jsx("div", { "aria-hidden": true, className: cn('flex size-11 shrink-0 items-center justify-center rounded-xl text-base font-semibold text-white', className), style: { backgroundColor: avatarColorVar(color) }, children: initialsOf(name) || '—' }));
11
+ }
@@ -0,0 +1,23 @@
1
+ import { SlugStatus } from '../../../../domain/types/wizard';
2
+ /** Props for {@link SlugField}. */
3
+ export type SlugFieldProps = {
4
+ /** Current slug value. */
5
+ value: string;
6
+ /** Whether the user has manually edited the slug. */
7
+ slugEdited: boolean;
8
+ /** Live availability status. */
9
+ status: SlugStatus;
10
+ /** Called when the slug input changes. */
11
+ onChange: (value: string) => void;
12
+ /** Called when the regenerate button is pressed. */
13
+ onRegenerate: () => void;
14
+ /** Localized shape error (e.g. pattern violation). */
15
+ error?: string;
16
+ };
17
+ /**
18
+ * Slug input with a regenerate button (shown once the slug has been manually
19
+ * edited) and a live availability line. Shape errors take over the helper slot;
20
+ * otherwise the helper text and availability status show.
21
+ */
22
+ export declare function SlugField({ value, slugEdited, status, onChange, onRegenerate, error }: SlugFieldProps): import("react").JSX.Element;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/CreateWorkspaceWizard/SlugField/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAoF7D,mCAAmC;AACnC,MAAM,MAAM,cAAc,GAAG;IACzB,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,UAAU,EAAE,OAAO,CAAC;IACpB,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,oDAAoD;IACpD,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACR,EAAE,cAAc,+BA2ChB"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { AlertCircle, Check, RotateCcw, X } from 'lucide-react';
4
+ import { Button, Field, FieldDescription, FieldError, FieldLabel, Input, Spinner } from '@orthacms/design-system';
5
+ import { SlugStatus } from '../../../../domain/types/wizard';
6
+ const messages = defineMessages({
7
+ label: {
8
+ id: 'workspaces.create.basics.slugLabel',
9
+ defaultMessage: 'Slug'
10
+ },
11
+ placeholder: {
12
+ id: 'workspaces.create.basics.slugPlaceholder',
13
+ defaultMessage: 'marketing-site'
14
+ },
15
+ help: {
16
+ id: 'workspaces.create.basics.slugHelp',
17
+ defaultMessage: 'A unique identifier for the workspace. Cannot be changed after creation.'
18
+ },
19
+ regenerate: {
20
+ id: 'workspaces.create.basics.slugRegenerate',
21
+ defaultMessage: 'Regenerate from name'
22
+ },
23
+ checking: {
24
+ id: 'workspaces.create.basics.slugChecking',
25
+ defaultMessage: 'Checking availability…'
26
+ },
27
+ available: {
28
+ id: 'workspaces.create.basics.slugAvailable',
29
+ defaultMessage: 'Available'
30
+ },
31
+ taken: {
32
+ id: 'workspaces.create.basics.slugTaken',
33
+ defaultMessage: 'That slug is already taken.'
34
+ },
35
+ unknown: {
36
+ id: 'workspaces.create.basics.slugUnknown',
37
+ defaultMessage: 'Couldn’t check whether this slug is free, so you can’t continue yet. Please try again.'
38
+ }
39
+ });
40
+ /** The live availability line shown beneath the slug input. */
41
+ function SlugStatusLine({ status }) {
42
+ const intl = useIntl();
43
+ if (status === SlugStatus.Checking) {
44
+ return (_jsxs("span", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [_jsx(Spinner, { className: "size-3.5" }), intl.formatMessage(messages.checking)] }));
45
+ }
46
+ if (status === SlugStatus.Available) {
47
+ return (_jsxs("span", { className: "flex items-center gap-1.5 text-sm text-success", children: [_jsx(Check, { className: "size-3.5" }), intl.formatMessage(messages.available)] }));
48
+ }
49
+ if (status === SlugStatus.Taken) {
50
+ return (_jsxs("span", { className: "flex items-center gap-1.5 text-sm text-destructive", children: [_jsx(X, { className: "size-3.5" }), intl.formatMessage(messages.taken)] }));
51
+ }
52
+ if (status === SlugStatus.Unknown) {
53
+ // `role="alert"` because this one appears only on a failure the user
54
+ // didn't cause and must act on — the other states are passive progress
55
+ // reporting and would be noise if announced.
56
+ return (_jsxs("span", { role: "alert", className: "flex items-center gap-1.5 text-sm text-destructive", children: [_jsx(AlertCircle, { className: "size-3.5" }), intl.formatMessage(messages.unknown)] }));
57
+ }
58
+ return null;
59
+ }
60
+ /**
61
+ * Slug input with a regenerate button (shown once the slug has been manually
62
+ * edited) and a live availability line. Shape errors take over the helper slot;
63
+ * otherwise the helper text and availability status show.
64
+ */
65
+ export function SlugField({ value, slugEdited, status, onChange, onRegenerate, error }) {
66
+ const intl = useIntl();
67
+ return (_jsxs(Field, { "data-invalid": !!error, children: [_jsx(FieldLabel, { htmlFor: "workspace-slug", children: intl.formatMessage(messages.label) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Input, { id: "workspace-slug", value: value, onChange: (event) => onChange(event.target.value), placeholder: intl.formatMessage(messages.placeholder), autoComplete: "off", spellCheck: false, "aria-invalid": !!error }), slugEdited ? (_jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: onRegenerate, title: intl.formatMessage(messages.regenerate), "aria-label": intl.formatMessage(messages.regenerate), children: _jsx(RotateCcw, {}) })) : null] }), error ? (_jsx(FieldError, { errors: [{ message: error }] })) : (_jsxs(_Fragment, { children: [_jsx(FieldDescription, { children: intl.formatMessage(messages.help) }), _jsx(SlugStatusLine, { status: status })] }))] }));
68
+ }
@@ -0,0 +1,9 @@
1
+ import type { WorkspaceStatus } from '../../../domain/types/workspace';
2
+ /**
3
+ * A small status pill with a leading dot: green for an active workspace, muted
4
+ * for an archived one. Shown in the workspaces table's status column.
5
+ */
6
+ export declare function StatusChip({ status }: {
7
+ status: WorkspaceStatus;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/StatusChip/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAcvE;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,+BAuBjE"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { defineMessages, useIntl } from 'react-intl';
3
+ import { Badge, cn } from '@orthacms/design-system';
4
+ /** Intl descriptors for {@link StatusChip}, co-located with the component. */
5
+ const messages = defineMessages({
6
+ active: {
7
+ id: 'workspaces.status.active',
8
+ defaultMessage: 'Active'
9
+ },
10
+ archived: {
11
+ id: 'workspaces.status.archived',
12
+ defaultMessage: 'Archived'
13
+ }
14
+ });
15
+ /**
16
+ * A small status pill with a leading dot: green for an active workspace, muted
17
+ * for an archived one. Shown in the workspaces table's status column.
18
+ */
19
+ export function StatusChip({ status }) {
20
+ const intl = useIntl();
21
+ const isActive = status === 'Active';
22
+ return (_jsxs(Badge, { variant: isActive ? 'success' : 'secondary', className: cn('gap-1.5 rounded-xl', !isActive && 'border-border'), children: [_jsx("span", { "aria-hidden": true, className: cn('size-1.5 rounded-full', isActive ? 'bg-status-active' : 'bg-muted-foreground') }), _jsx("span", { className: cn(!isActive && 'text-muted-foreground'), children: intl.formatMessage(isActive ? messages.active : messages.archived) })] }));
23
+ }
@@ -0,0 +1,20 @@
1
+ import type { CSSProperties } from 'react';
2
+ import { type AvatarColor } from '@orthacms/design-system';
3
+ type WorkspaceAvatarProps = {
4
+ /** Initials rendered as the avatar content. */
5
+ initials: string;
6
+ /** Accent color tinting the avatar background. */
7
+ color: AvatarColor;
8
+ /** Extra classes (size, radius, border). */
9
+ className?: string;
10
+ /** Extra inline styles (e.g. overlap margin in a stack). */
11
+ style?: CSSProperties;
12
+ };
13
+ /**
14
+ * An initials avatar tinted with one of the shared accent colors, sized via
15
+ * `className`. Shape comes from the design-system `Avatar` default (rounded
16
+ * square), shared by workspaces and members.
17
+ */
18
+ export declare function WorkspaceAvatar({ initials, color, className, style }: WorkspaceAvatarProps): import("react").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/WorkspaceAvatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAKH,KAAK,WAAW,EACnB,MAAM,yBAAyB,CAAC;AAEjC,KAAK,oBAAoB,GAAG;IACxB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC5B,QAAQ,EACR,KAAK,EACL,SAAS,EACT,KAAK,EACR,EAAE,oBAAoB,+BAWtB"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Avatar, AvatarFallback, avatarColorVar, cn } from '@orthacms/design-system';
3
+ /**
4
+ * An initials avatar tinted with one of the shared accent colors, sized via
5
+ * `className`. Shape comes from the design-system `Avatar` default (rounded
6
+ * square), shared by workspaces and members.
7
+ */
8
+ export function WorkspaceAvatar({ initials, color, className, style }) {
9
+ return (_jsx(Avatar, { className: cn(className), style: { backgroundColor: avatarColorVar(color), ...style }, children: _jsx(AvatarFallback, { className: "rounded-[inherit] bg-transparent font-semibold text-white", children: initials }) }));
10
+ }
@@ -0,0 +1,8 @@
1
+ import type { CommandSectionProps } from '@orthacms/shell-admin';
2
+ /**
3
+ * The command palette's Workspaces group: every active workspace as a result
4
+ * that jumps into it. Contributed to the shell's `COMMAND_SLOT` by
5
+ * `workspaces-admin`, so a member can open a workspace from anywhere via ⌘K.
6
+ */
7
+ export declare function WorkspaceCommands({ close }: CommandSectionProps): import("react").JSX.Element | null;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/presentation/components/WorkspaceCommands/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAcjE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,mBAAmB,sCAmC/D"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useNavigate } from 'react-router-dom';
3
+ import { defineMessages, useIntl } from 'react-intl';
4
+ import { CommandGroup, CommandItem } from '@orthacms/design-system';
5
+ import { initialsOf } from '@orthacms/utils-admin';
6
+ import { useWorkspaces } from '../../../application/useWorkspaces';
7
+ import { isActiveWorkspace } from '../../../domain/isActiveWorkspace';
8
+ import { WorkspaceAvatar } from '../WorkspaceAvatar';
9
+ /** Intl descriptors for {@link WorkspaceCommands}, co-located here. */
10
+ const messages = defineMessages({
11
+ heading: {
12
+ id: 'workspaces.command.heading',
13
+ defaultMessage: 'Workspaces'
14
+ }
15
+ });
16
+ /**
17
+ * The command palette's Workspaces group: every active workspace as a result
18
+ * that jumps into it. Contributed to the shell's `COMMAND_SLOT` by
19
+ * `workspaces-admin`, so a member can open a workspace from anywhere via ⌘K.
20
+ */
21
+ export function WorkspaceCommands({ close }) {
22
+ const intl = useIntl();
23
+ const navigate = useNavigate();
24
+ const { data: workspaces } = useWorkspaces();
25
+ const active = (workspaces ?? []).filter(isActiveWorkspace);
26
+ if (active.length === 0) {
27
+ return null;
28
+ }
29
+ const go = (id) => {
30
+ close();
31
+ navigate(`/workspaces/${id}`);
32
+ };
33
+ return (_jsx(CommandGroup, { heading: intl.formatMessage(messages.heading), children: active.map((workspace) => (_jsxs(CommandItem, { value: `${workspace.name} workspace`, onSelect: () => go(workspace.id), children: [_jsx("span", { "aria-hidden": true, children: _jsx(WorkspaceAvatar, { initials: initialsOf(workspace.name), color: workspace.color, className: "size-5 rounded-[5px] text-[10px]" }) }), _jsx("span", { children: workspace.name })] }, workspace.id))) }));
34
+ }
@@ -0,0 +1,26 @@
1
+ import type { ContentType } from '../../../../domain/types/wizard';
2
+ /** Props for {@link AddContentDialog}. */
3
+ export type AddContentDialogProps = {
4
+ /** Whether the dialog is open. */
5
+ open: boolean;
6
+ /** Open/close callback; ignored while saving. */
7
+ onOpenChange: (open: boolean) => void;
8
+ /** Localized dialog heading (e.g. "Add collections"). */
9
+ title: string;
10
+ /** Localized supporting copy. */
11
+ description: string;
12
+ /** Content types not yet granted — the selectable list (already one kind). */
13
+ available: ContentType[];
14
+ /** Grants the chosen slugs; resolves when done so the dialog can close. */
15
+ onConfirm: (slugs: string[]) => Promise<void>;
16
+ /** Whether a grant is in flight. */
17
+ busy?: boolean;
18
+ };
19
+ /**
20
+ * A search + multi-select dialog for granting content types of a **single kind**
21
+ * (collections or pages — the caller pre-filters `available` and labels it via
22
+ * `title`): type to filter, tick any number, then Add them in one go. Selection
23
+ * + query reset each time the dialog opens.
24
+ */
25
+ export declare function AddContentDialog({ open, onOpenChange, title, description, available, onConfirm, busy }: AddContentDialogProps): import("react").JSX.Element;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/presentation/components/WorkspaceContentSettings/AddContentDialog/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAmCnE,0CAA0C;AAC1C,MAAM,MAAM,qBAAqB,GAAG;IAChC,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,iDAAiD;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,2EAA2E;IAC3E,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,oCAAoC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,IAAY,EACf,EAAE,qBAAqB,+BAsIvB"}