@dxos/plugin-space 0.8.4-main.21d9917 → 0.8.4-main.2244d791bb

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 (231) hide show
  1. package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs +128 -0
  2. package/dist/lib/browser/CollectionArticle-LKTAABXP.mjs.map +7 -0
  3. package/dist/lib/browser/{ObjectCardStack-TWHN6C2Y.mjs → ObjectCardStack-CXNBCSMR.mjs} +2 -2
  4. package/dist/lib/browser/ObjectCardStack-CXNBCSMR.mjs.map +7 -0
  5. package/dist/lib/browser/{ObjectDetails-GEDIISKK.mjs → ObjectDetails-HXV4IQEM.mjs} +6 -5
  6. package/dist/lib/browser/ObjectDetails-HXV4IQEM.mjs.map +7 -0
  7. package/dist/lib/browser/{RecordArticle-W57QE7QV.mjs → RecordArticle-36LDKFWF.mjs} +11 -10
  8. package/dist/lib/browser/RecordArticle-36LDKFWF.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-SJHTZXZF.mjs → app-graph-builder-GLV46QSI.mjs} +26 -19
  10. package/dist/lib/browser/app-graph-builder-GLV46QSI.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-7AT7QMSK.mjs → app-graph-serializer-VOLRDNVE.mjs} +9 -8
  12. package/dist/lib/browser/app-graph-serializer-VOLRDNVE.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-ZT2VPYRM.mjs → chunk-7D63MVRS.mjs} +3 -3
  14. package/dist/lib/browser/chunk-7D63MVRS.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-4WZUGLQQ.mjs → chunk-A7ZCVQGZ.mjs} +10 -9
  16. package/dist/lib/browser/chunk-A7ZCVQGZ.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-CCRSHECL.mjs → chunk-KGLWYGIF.mjs} +4 -3
  18. package/dist/lib/browser/chunk-KGLWYGIF.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AWVAX26X.mjs → chunk-NF3ZFAB4.mjs} +2 -2
  20. package/dist/lib/browser/{chunk-SUI34XSA.mjs → chunk-WAOJLA2S.mjs} +12 -12
  21. package/dist/lib/browser/chunk-WAOJLA2S.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-3X2EA2OA.mjs → chunk-XRTOZE23.mjs} +128 -137
  23. package/dist/lib/browser/chunk-XRTOZE23.mjs.map +7 -0
  24. package/dist/lib/browser/cli/index.mjs +31 -29
  25. package/dist/lib/browser/cli/index.mjs.map +3 -3
  26. package/dist/lib/browser/index.mjs +58 -53
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/meta.json +1 -1
  29. package/dist/lib/browser/{operation-resolver-SIRQT36Z.mjs → operation-resolver-PJJ3PCM7.mjs} +45 -42
  30. package/dist/lib/browser/operation-resolver-PJJ3PCM7.mjs.map +7 -0
  31. package/dist/lib/browser/{react-root-PI7VTZUZ.mjs → react-root-MRIDHLHH.mjs} +8 -8
  32. package/dist/lib/browser/react-root-MRIDHLHH.mjs.map +7 -0
  33. package/dist/lib/browser/{react-surface-BPE7VWI7.mjs → react-surface-ARZZ343H.mjs} +38 -37
  34. package/dist/lib/browser/react-surface-ARZZ343H.mjs.map +7 -0
  35. package/dist/lib/browser/{repair-CJG26D52.mjs → repair-DKU4TUD2.mjs} +2 -2
  36. package/dist/lib/browser/{settings-ZS2AQ73E.mjs → settings-M2DMD2ZA.mjs} +5 -4
  37. package/dist/lib/browser/settings-M2DMD2ZA.mjs.map +7 -0
  38. package/dist/lib/browser/{spaces-ready-OQDGWUOS.mjs → spaces-ready-XWJUJ43N.mjs} +13 -12
  39. package/dist/lib/browser/spaces-ready-XWJUJ43N.mjs.map +7 -0
  40. package/dist/lib/browser/{state-7YZQB2KY.mjs → state-V637BLIM.mjs} +5 -5
  41. package/dist/lib/browser/state-V637BLIM.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +1 -1
  43. package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs +129 -0
  44. package/dist/lib/node-esm/CollectionArticle-ONQMZ7BQ.mjs.map +7 -0
  45. package/dist/lib/node-esm/{ObjectCardStack-C5ZXRKP7.mjs → ObjectCardStack-EHXPNRQW.mjs} +2 -2
  46. package/dist/lib/node-esm/ObjectCardStack-EHXPNRQW.mjs.map +7 -0
  47. package/dist/lib/node-esm/{ObjectDetails-6ZLDRKCO.mjs → ObjectDetails-N73UI4ZL.mjs} +6 -5
  48. package/dist/lib/node-esm/ObjectDetails-N73UI4ZL.mjs.map +7 -0
  49. package/dist/lib/node-esm/{RecordArticle-SSV74Z46.mjs → RecordArticle-CMEXNNOZ.mjs} +11 -10
  50. package/dist/lib/node-esm/RecordArticle-CMEXNNOZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/{app-graph-builder-HZ3XXDFZ.mjs → app-graph-builder-KCEHEKVS.mjs} +26 -19
  52. package/dist/lib/node-esm/app-graph-builder-KCEHEKVS.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-serializer-WJ2TIQG6.mjs → app-graph-serializer-7C4MV5NB.mjs} +9 -8
  54. package/dist/lib/node-esm/app-graph-serializer-7C4MV5NB.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-2SW6S2BB.mjs → chunk-5N3YIAXD.mjs} +3 -3
  56. package/dist/lib/node-esm/chunk-5N3YIAXD.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-JOBIWCBC.mjs → chunk-A5A7M37T.mjs} +10 -9
  58. package/dist/lib/node-esm/chunk-A5A7M37T.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-7KMYUWSR.mjs → chunk-FB5YNROS.mjs} +12 -12
  60. package/dist/lib/node-esm/chunk-FB5YNROS.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-MPL6NHQX.mjs → chunk-NYSDQPNM.mjs} +4 -3
  62. package/dist/lib/node-esm/chunk-NYSDQPNM.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-HREWB23G.mjs → chunk-PG7DNOEX.mjs} +2 -2
  64. package/dist/lib/node-esm/{chunk-EYS3L2NO.mjs → chunk-QDIOQTXY.mjs} +128 -137
  65. package/dist/lib/node-esm/chunk-QDIOQTXY.mjs.map +7 -0
  66. package/dist/lib/node-esm/cli/index.mjs +31 -29
  67. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  68. package/dist/lib/node-esm/index.mjs +58 -53
  69. package/dist/lib/node-esm/index.mjs.map +3 -3
  70. package/dist/lib/node-esm/meta.json +1 -1
  71. package/dist/lib/node-esm/{operation-resolver-ZE3XJL5J.mjs → operation-resolver-2K7N4KYC.mjs} +45 -42
  72. package/dist/lib/node-esm/operation-resolver-2K7N4KYC.mjs.map +7 -0
  73. package/dist/lib/node-esm/{react-root-KUXM33JI.mjs → react-root-LKSSWFGF.mjs} +8 -8
  74. package/dist/lib/node-esm/react-root-LKSSWFGF.mjs.map +7 -0
  75. package/dist/lib/node-esm/{react-surface-STCQKUZ4.mjs → react-surface-QG5RNBPD.mjs} +38 -37
  76. package/dist/lib/node-esm/react-surface-QG5RNBPD.mjs.map +7 -0
  77. package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs → repair-C2H6JQCL.mjs} +2 -2
  78. package/dist/lib/node-esm/{settings-PVI2VG56.mjs → settings-VCPCNBOY.mjs} +5 -4
  79. package/dist/lib/node-esm/settings-VCPCNBOY.mjs.map +7 -0
  80. package/dist/lib/node-esm/{spaces-ready-R744OHQG.mjs → spaces-ready-5JOGEWON.mjs} +13 -12
  81. package/dist/lib/node-esm/spaces-ready-5JOGEWON.mjs.map +7 -0
  82. package/dist/lib/node-esm/{state-XE5YGPHM.mjs → state-5MCEPWN3.mjs} +5 -5
  83. package/dist/lib/node-esm/state-5MCEPWN3.mjs.map +7 -0
  84. package/dist/lib/node-esm/types/index.mjs +1 -1
  85. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +2 -1
  87. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
  89. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +2 -2
  91. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +1 -1
  93. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/operation-resolver/index.d.ts +1 -1
  95. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +2 -2
  97. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/react-surface/index.d.ts +1 -1
  100. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +2 -2
  102. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/settings/index.d.ts +1 -1
  104. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/settings/settings.d.ts +3 -2
  106. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/spaces-ready/spaces-ready.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  109. package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
  110. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  111. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  112. package/dist/types/src/components/CollectionArticle.d.ts +2 -2
  113. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -1
  114. package/dist/types/src/components/CollectionSection.d.ts +1 -1
  115. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  116. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1 -1
  118. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +4 -1
  119. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  120. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -1
  121. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -1
  122. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1 -1
  123. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +1 -1
  124. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -1
  125. package/dist/types/src/components/RecordArticle.d.ts +1 -1
  126. package/dist/types/src/components/RecordArticle.d.ts.map +1 -1
  127. package/dist/types/src/components/RecordArticle.stories.d.ts +1 -1
  128. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  130. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  131. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -1
  132. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +4 -1
  133. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +4 -1
  135. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/index.d.ts +3 -3
  137. package/dist/types/src/components/index.d.ts.map +1 -1
  138. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  139. package/dist/types/src/types/events.d.ts.map +1 -1
  140. package/dist/types/src/types/types.d.ts +18 -12
  141. package/dist/types/src/types/types.d.ts.map +1 -1
  142. package/dist/types/src/util.d.ts +2 -1
  143. package/dist/types/src/util.d.ts.map +1 -1
  144. package/dist/types/tsconfig.tsbuildinfo +1 -1
  145. package/package.json +66 -65
  146. package/src/SpacePlugin.ts +59 -40
  147. package/src/capabilities/app-graph-builder/app-graph-builder.ts +17 -13
  148. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +5 -4
  149. package/src/capabilities/operation-resolver/operation-resolver.ts +31 -29
  150. package/src/capabilities/react-root/react-root.tsx +3 -3
  151. package/src/capabilities/react-surface/react-surface.tsx +34 -32
  152. package/src/capabilities/settings/settings.ts +3 -2
  153. package/src/capabilities/spaces-ready/spaces-ready.ts +8 -7
  154. package/src/capabilities/state/state.ts +3 -3
  155. package/src/cli/commands/database/add.ts +7 -8
  156. package/src/cli/commands/database/query/query.ts +1 -1
  157. package/src/cli/commands/database/remove.ts +2 -2
  158. package/src/cli/commands/database/stats.ts +1 -1
  159. package/src/cli/plugin.ts +33 -26
  160. package/src/components/AwaitingObject.tsx +4 -3
  161. package/src/components/CollectionArticle.tsx +71 -72
  162. package/src/components/CollectionSection.tsx +1 -1
  163. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -1
  164. package/src/components/CreateDialog/CreateObjectDialog.tsx +20 -17
  165. package/src/components/CreateDialog/CreateObjectPanel.tsx +38 -39
  166. package/src/components/CreateDialog/CreateSpaceDialog.tsx +21 -21
  167. package/src/components/JoinDialog/JoinDialog.tsx +8 -7
  168. package/src/components/MembersContainer/MembersContainer.stories.tsx +1 -1
  169. package/src/components/MembersContainer/MembersContainer.tsx +45 -48
  170. package/src/components/ObjectCardStack/ObjectCardStack.tsx +1 -1
  171. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
  172. package/src/components/ObjectDetails/ObjectDetails.tsx +6 -5
  173. package/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx +3 -3
  174. package/src/components/RecordArticle.stories.tsx +6 -5
  175. package/src/components/RecordArticle.tsx +23 -21
  176. package/src/components/SchemaContainer.tsx +20 -17
  177. package/src/components/SpacePluginSettings.tsx +34 -31
  178. package/src/components/SpacePresence/SpacePresence.stories.tsx +1 -1
  179. package/src/components/SpacePresence/SpacePresence.tsx +2 -1
  180. package/src/components/SpaceRenamePopover/SpaceRenamePopover.tsx +3 -3
  181. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +1 -1
  182. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +161 -179
  183. package/src/components/SyncStatus/InlineSyncStatus.tsx +1 -1
  184. package/src/components/SyncStatus/SyncStatus.stories.tsx +1 -1
  185. package/src/components/ViewEditor.tsx +1 -1
  186. package/src/hooks/useActiveSpace.ts +5 -4
  187. package/src/hooks/useInputSurfaceLookup.tsx +3 -3
  188. package/src/translations.ts +2 -2
  189. package/src/types/events.ts +3 -2
  190. package/src/types/types.ts +10 -3
  191. package/src/util.tsx +9 -6
  192. package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs +0 -129
  193. package/dist/lib/browser/CollectionArticle-XPNA6EHZ.mjs.map +0 -7
  194. package/dist/lib/browser/ObjectCardStack-TWHN6C2Y.mjs.map +0 -7
  195. package/dist/lib/browser/ObjectDetails-GEDIISKK.mjs.map +0 -7
  196. package/dist/lib/browser/RecordArticle-W57QE7QV.mjs.map +0 -7
  197. package/dist/lib/browser/app-graph-builder-SJHTZXZF.mjs.map +0 -7
  198. package/dist/lib/browser/app-graph-serializer-7AT7QMSK.mjs.map +0 -7
  199. package/dist/lib/browser/chunk-3X2EA2OA.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-4WZUGLQQ.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-CCRSHECL.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-SUI34XSA.mjs.map +0 -7
  203. package/dist/lib/browser/chunk-ZT2VPYRM.mjs.map +0 -7
  204. package/dist/lib/browser/operation-resolver-SIRQT36Z.mjs.map +0 -7
  205. package/dist/lib/browser/react-root-PI7VTZUZ.mjs.map +0 -7
  206. package/dist/lib/browser/react-surface-BPE7VWI7.mjs.map +0 -7
  207. package/dist/lib/browser/settings-ZS2AQ73E.mjs.map +0 -7
  208. package/dist/lib/browser/spaces-ready-OQDGWUOS.mjs.map +0 -7
  209. package/dist/lib/browser/state-7YZQB2KY.mjs.map +0 -7
  210. package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs +0 -130
  211. package/dist/lib/node-esm/CollectionArticle-WGHNZNO2.mjs.map +0 -7
  212. package/dist/lib/node-esm/ObjectCardStack-C5ZXRKP7.mjs.map +0 -7
  213. package/dist/lib/node-esm/ObjectDetails-6ZLDRKCO.mjs.map +0 -7
  214. package/dist/lib/node-esm/RecordArticle-SSV74Z46.mjs.map +0 -7
  215. package/dist/lib/node-esm/app-graph-builder-HZ3XXDFZ.mjs.map +0 -7
  216. package/dist/lib/node-esm/app-graph-serializer-WJ2TIQG6.mjs.map +0 -7
  217. package/dist/lib/node-esm/chunk-2SW6S2BB.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-7KMYUWSR.mjs.map +0 -7
  219. package/dist/lib/node-esm/chunk-EYS3L2NO.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-JOBIWCBC.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-MPL6NHQX.mjs.map +0 -7
  222. package/dist/lib/node-esm/operation-resolver-ZE3XJL5J.mjs.map +0 -7
  223. package/dist/lib/node-esm/react-root-KUXM33JI.mjs.map +0 -7
  224. package/dist/lib/node-esm/react-surface-STCQKUZ4.mjs.map +0 -7
  225. package/dist/lib/node-esm/settings-PVI2VG56.mjs.map +0 -7
  226. package/dist/lib/node-esm/spaces-ready-R744OHQG.mjs.map +0 -7
  227. package/dist/lib/node-esm/state-XE5YGPHM.mjs.map +0 -7
  228. /package/dist/lib/browser/{chunk-AWVAX26X.mjs.map → chunk-NF3ZFAB4.mjs.map} +0 -0
  229. /package/dist/lib/browser/{repair-CJG26D52.mjs.map → repair-DKU4TUD2.mjs.map} +0 -0
  230. /package/dist/lib/node-esm/{chunk-HREWB23G.mjs.map → chunk-PG7DNOEX.mjs.map} +0 -0
  231. /package/dist/lib/node-esm/{repair-G3ZW3VG3.mjs.map → repair-C2H6JQCL.mjs.map} +0 -0
@@ -5,15 +5,14 @@
5
5
  import React, { type Dispatch, type SetStateAction, useCallback, useMemo, useState } from 'react';
6
6
  import { QR } from 'react-qr-rounded';
7
7
 
8
- import { useOperationInvoker } from '@dxos/app-framework/react';
8
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
9
9
  import { Obj } from '@dxos/echo';
10
10
  import { log } from '@dxos/log';
11
11
  import { useConfig } from '@dxos/react-client';
12
12
  import { type Space, useSpaceInvitations } from '@dxos/react-client/echo';
13
13
  import { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
14
14
  import { Button, Clipboard, Icon, Input, useId, useTranslation } from '@dxos/react-ui';
15
- import { ControlFrame, ControlFrameItem, ControlItemInput, ControlPage, ControlSection } from '@dxos/react-ui-form';
16
- import { Layout } from '@dxos/react-ui-mosaic';
15
+ import { Settings } from '@dxos/react-ui-form';
17
16
  import { Collection } from '@dxos/schema';
18
17
  import {
19
18
  type ActionMenuItem,
@@ -130,51 +129,49 @@ export const MembersContainer = ({ space, createInvitationUrl }: MembersContaine
130
129
 
131
130
  return (
132
131
  <Clipboard.Provider>
133
- <Layout.Container scrollable>
134
- <ControlPage>
135
- <ControlSection title={t('members verbose label')} description={t('members description')}>
136
- <ControlFrame>
137
- <ControlFrameItem title={t('members label')}>
138
- <SpaceMemberList spaceKey={space.key} includeSelf />
139
- </ControlFrameItem>
140
- {locked && (
141
- <ControlFrameItem title={t('invitations label')}>
142
- <p className='text-description mbe-2'>{t('locked space description')}</p>
143
- </ControlFrameItem>
144
- )}
145
- {!locked && (
146
- <ControlFrameItem title={t('invitations label')}>
147
- {selectedInvitation && <InvitationSection {...selectedInvitation} onBack={handleBack} />}
148
- {!selectedInvitation && (
149
- <>
150
- <p className='text-description mbe-2'>{t('space invitation description')}</p>
151
- <InvitationList
152
- className='mb-2'
153
- send={handleSend}
154
- invitations={visibleInvitations ?? []}
155
- onClickRemove={(invitation) => invitation.cancel()}
156
- createInvitationUrl={createInvitationUrl}
157
- />
158
- <BifurcatedAction
159
- actions={inviteActions}
160
- activeAction={activeAction}
161
- onChangeActiveAction={setActiveAction as Dispatch<SetStateAction<string>>}
162
- data-testid='membersContainer.createInvitation'
163
- />
164
- </>
165
- )}
166
- </ControlFrameItem>
167
- )}
168
- </ControlFrame>
169
- {/* TODO(wittjosiah): Make ControlItemInput & ControlFrame compatible. */}
170
- <div className='justify-center p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>
171
- <ControlItemInput title={t('space locked label')} description={t('space locked description')}>
172
- <Input.Switch checked={locked} onCheckedChange={handleChangeLocked} classNames='justify-self-end' />
173
- </ControlItemInput>
174
- </div>
175
- </ControlSection>
176
- </ControlPage>
177
- </Layout.Container>
132
+ <Settings.Root>
133
+ <Settings.Section title={t('members verbose label')} description={t('members description')}>
134
+ <Settings.Frame>
135
+ <Settings.FrameItem title={t('members label')}>
136
+ <SpaceMemberList spaceKey={space.key} includeSelf />
137
+ </Settings.FrameItem>
138
+ {locked && (
139
+ <Settings.FrameItem title={t('invitations label')}>
140
+ <p className='text-description mbe-2'>{t('locked space description')}</p>
141
+ </Settings.FrameItem>
142
+ )}
143
+ {!locked && (
144
+ <Settings.FrameItem title={t('invitations label')}>
145
+ {selectedInvitation && <InvitationSection {...selectedInvitation} onBack={handleBack} />}
146
+ {!selectedInvitation && (
147
+ <>
148
+ <p className='text-description mbe-2'>{t('space invitation description')}</p>
149
+ <InvitationList
150
+ className='mb-2'
151
+ send={handleSend}
152
+ invitations={visibleInvitations ?? []}
153
+ onClickRemove={(invitation) => invitation.cancel()}
154
+ createInvitationUrl={createInvitationUrl}
155
+ />
156
+ <BifurcatedAction
157
+ actions={inviteActions}
158
+ activeAction={activeAction}
159
+ onChangeActiveAction={setActiveAction as Dispatch<SetStateAction<string>>}
160
+ data-testid='membersContainer.createInvitation'
161
+ />
162
+ </>
163
+ )}
164
+ </Settings.FrameItem>
165
+ )}
166
+ </Settings.Frame>
167
+ {/* TODO(wittjosiah): Make Settings.ItemInput & Settings.Frame compatible. */}
168
+ <div className='justify-center p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>
169
+ <Settings.ItemInput title={t('space locked label')} description={t('space locked description')}>
170
+ <Input.Switch checked={locked} onCheckedChange={handleChangeLocked} classNames='justify-self-end' />
171
+ </Settings.ItemInput>
172
+ </div>
173
+ </Settings.Section>
174
+ </Settings.Root>
178
175
  </Clipboard.Provider>
179
176
  );
180
177
  };
@@ -7,9 +7,9 @@ import React, { forwardRef } from 'react';
7
7
  import { Obj } from '@dxos/echo';
8
8
  import { Filter, useQuery, useSchema } from '@dxos/react-client/echo';
9
9
  import { Callout, Toolbar, useTranslation } from '@dxos/react-ui';
10
+ import { Layout } from '@dxos/react-ui';
10
11
  import { useSelected } from '@dxos/react-ui-attention';
11
12
  import { Card } from '@dxos/react-ui-mosaic';
12
- import { Layout } from '@dxos/react-ui-mosaic';
13
13
  import { CardStack, StackItem } from '@dxos/react-ui-stack';
14
14
  import { type View, getTypenameFromQuery } from '@dxos/schema';
15
15
  import { isNonNullable } from '@dxos/util';
@@ -9,7 +9,7 @@ import { type Obj, Tag } from '@dxos/echo';
9
9
  import { useClientStory, withClientProvider } from '@dxos/react-client/testing';
10
10
  import { withTheme } from '@dxos/react-ui/testing';
11
11
  import { render } from '@dxos/storybook-utils';
12
- import { Project } from '@dxos/types';
12
+ import { Pipeline } from '@dxos/types';
13
13
 
14
14
  import { translations } from '../../translations';
15
15
 
@@ -21,7 +21,7 @@ const DefaultStory = () => {
21
21
 
22
22
  useEffect(() => {
23
23
  if (space && !object) {
24
- const object = space.db.add(Project.make());
24
+ const object = space.db.add(Pipeline.make());
25
25
  setObject(object);
26
26
  }
27
27
  }, [space, object]);
@@ -38,11 +38,11 @@ const meta = {
38
38
  component: BaseObjectSettings as any,
39
39
  render: render(DefaultStory),
40
40
  decorators: [
41
- withTheme,
41
+ withTheme(),
42
42
  withClientProvider({
43
43
  createIdentity: true,
44
44
  createSpace: true,
45
- types: [Project.Project, Tag.Tag],
45
+ types: [Pipeline.Pipeline, Tag.Tag],
46
46
  onCreateSpace: async ({ space }) => {
47
47
  space.db.add(Tag.make({ label: 'Tag 1' }));
48
48
  space.db.add(Tag.make({ label: 'Tag 2' }));
@@ -4,10 +4,11 @@
4
4
 
5
5
  import React, { forwardRef, useMemo } from 'react';
6
6
 
7
- import { Surface, type SurfaceComponentProps } from '@dxos/app-framework/react';
7
+ import { Surface } from '@dxos/app-framework/ui';
8
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
8
9
  import { type Obj } from '@dxos/echo';
9
10
  import { Toolbar } from '@dxos/react-ui';
10
- import { Layout } from '@dxos/react-ui-mosaic';
11
+ import { Layout } from '@dxos/react-ui';
11
12
 
12
13
  import { BaseObjectSettings } from './BaseObjectSettings';
13
14
 
@@ -18,11 +19,11 @@ export const ObjectDetails = forwardRef<HTMLDivElement, ObjectDetailsProps>(
18
19
  const data = useMemo(() => ({ subject: object }), [object]);
19
20
 
20
21
  return (
21
- <Layout.Main role={role} ref={forwardedRef}>
22
+ <Layout.Main toolbar role={role} ref={forwardedRef}>
22
23
  <Toolbar.Root />
23
24
  <BaseObjectSettings object={object}>
24
- <Surface role='base-object-settings' data={data} />
25
- <Surface role='object-settings' data={data} />
25
+ <Surface.Surface role='base-object-settings' data={data} />
26
+ <Surface.Surface role='object-settings' data={data} />
26
27
  {/* TODO(wittjosiah): Remove (or add as surface)? */}
27
28
  {/* <AdvancedObjectSettings object={object} /> */}
28
29
  </BaseObjectSettings>
@@ -4,8 +4,8 @@
4
4
 
5
5
  import React, { useCallback, useRef, useState } from 'react';
6
6
 
7
- import { Common } from '@dxos/app-framework';
8
- import { useOperationInvoker } from '@dxos/app-framework/react';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { LayoutOperation } from '@dxos/app-toolkit';
9
9
  import { Obj } from '@dxos/echo';
10
10
  import { log } from '@dxos/log';
11
11
  import { Button, Input, useTranslation } from '@dxos/react-ui';
@@ -27,7 +27,7 @@ export const ObjectRenamePopover = ({ object }: { object: Obj.Unknown }) => {
27
27
  } catch (err) {
28
28
  log.error('Failed to rename object', { err });
29
29
  }
30
- void invokePromise(Common.LayoutOperation.UpdatePopover, { anchorId: '', state: false });
30
+ void invokePromise(LayoutOperation.UpdatePopover, { anchorId: '', state: false });
31
31
  }, [object, name, invokePromise]);
32
32
 
33
33
  return (
@@ -5,8 +5,9 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import React from 'react';
7
7
 
8
- import { Capability, Common } from '@dxos/app-framework';
8
+ import { Capabilities, Capability } from '@dxos/app-framework';
9
9
  import { withPluginManager } from '@dxos/app-framework/testing';
10
+ import { Surface } from '@dxos/app-framework/ui';
10
11
  import { Filter, Obj, Ref, Relation, type Type } from '@dxos/echo';
11
12
  import { faker } from '@dxos/random';
12
13
  import { useQuery } from '@dxos/react-client/echo';
@@ -41,12 +42,12 @@ const meta = {
41
42
  component: RecordArticle as any,
42
43
  render: render(DefaultStory),
43
44
  decorators: [
44
- withTheme,
45
+ withTheme(),
45
46
  // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
46
47
  withPluginManager({
47
48
  capabilities: [
48
- Capability.contributes(Common.Capability.ReactSurface, [
49
- Common.createSurface({
49
+ Capability.contributes(Capabilities.ReactSurface, [
50
+ Surface.create({
50
51
  id: 'section',
51
52
  role: 'section',
52
53
  component: ({ data }) => (
@@ -55,7 +56,7 @@ const meta = {
55
56
  </Card.Root>
56
57
  ),
57
58
  }),
58
- Common.createSurface({
59
+ Surface.create({
59
60
  id: 'card',
60
61
  role: 'card',
61
62
  component: ({ data }) => (
@@ -4,13 +4,13 @@
4
4
 
5
5
  import React, { useMemo } from 'react';
6
6
 
7
- import { Surface } from '@dxos/app-framework/react';
8
- import { type SurfaceComponentProps } from '@dxos/app-framework/react';
7
+ import { Surface } from '@dxos/app-framework/ui';
8
+ import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
9
9
  import { type Database, Entity, Filter, Obj, Ref, Relation } from '@dxos/echo';
10
10
  import { useQuery } from '@dxos/react-client/echo';
11
- import { useTranslation } from '@dxos/react-ui';
11
+ import { Layout, ScrollArea, useTranslation } from '@dxos/react-ui';
12
12
  import { Masonry } from '@dxos/react-ui-masonry';
13
- import { Layout, Card as MosaicCard } from '@dxos/react-ui-mosaic';
13
+ import { Card as MosaicCard } from '@dxos/react-ui-mosaic';
14
14
  import { mx } from '@dxos/ui-theme';
15
15
  import { isNonNullable } from '@dxos/util';
16
16
 
@@ -28,23 +28,25 @@ export const RecordArticle = ({ role, subject }: SurfaceComponentProps) => {
28
28
 
29
29
  return (
30
30
  <Layout.Main role={role}>
31
- <div role='none' className={mx('flex flex-col gap-4 p-4 is-full overflow-y-auto')}>
32
- <div role='none' className={mx('flex is-full card-max-width')}>
33
- <Surface role='section' data={data} limit={1} />
34
- </div>
35
-
36
- {related.length > 0 && (
37
- <div role='none' className={mx('flex flex-col gap-1', singleColumn ? 'card-max-width' : 'is-full')}>
38
- <label className='mbs-2 text-sm text-description'>{t('related objects label')}</label>
39
- <Masonry.Root<Entity.Unknown>
40
- items={related}
41
- render={Card}
42
- columnCount={singleColumn ? 1 : undefined}
43
- intrinsicHeight
44
- />
31
+ <ScrollArea.Root orientation='vertical'>
32
+ <ScrollArea.Viewport classNames={mx('p-4 gap-4')}>
33
+ <div role='none' className={mx('flex is-full card-max-width')}>
34
+ <Surface.Surface role='section' data={data} limit={1} />
45
35
  </div>
46
- )}
47
- </div>
36
+
37
+ {related.length > 0 && (
38
+ <div role='none' className={mx('flex flex-col gap-1', singleColumn ? 'card-max-width' : 'is-full')}>
39
+ <label className='mbs-2 text-sm text-description'>{t('related objects label')}</label>
40
+ <Masonry.Root<Entity.Unknown>
41
+ items={related}
42
+ render={Card}
43
+ columnCount={singleColumn ? 1 : undefined}
44
+ intrinsicHeight
45
+ />
46
+ </div>
47
+ )}
48
+ </ScrollArea.Viewport>
49
+ </ScrollArea.Root>
48
50
  </Layout.Main>
49
51
  );
50
52
  };
@@ -57,7 +59,7 @@ const Card = ({ data: subject }: { data: Entity.Unknown }) => {
57
59
  <span />
58
60
  <MosaicCard.Title>{Entity.getLabel(subject)}</MosaicCard.Title>
59
61
  </MosaicCard.Toolbar>
60
- <Surface role='card--content' data={data} limit={1} />
62
+ <Surface.Surface role='card--content' data={data} limit={1} />
61
63
  </MosaicCard.Root>
62
64
  );
63
65
  };
@@ -7,33 +7,36 @@ import React, { useEffect, useState } from 'react';
7
7
  import { type Type } from '@dxos/echo';
8
8
  import { type Space } from '@dxos/react-client/echo';
9
9
  import { useTranslation } from '@dxos/react-ui';
10
- import { ControlPage, ControlSection, controlItemClasses } from '@dxos/react-ui-form';
11
- import { Layout } from '@dxos/react-ui-mosaic';
10
+ import { Settings } from '@dxos/react-ui-form';
11
+ import { mx } from '@dxos/ui-theme';
12
12
 
13
13
  import { meta } from '../meta';
14
14
 
15
15
  type SchemaPanelProps = { space: Space };
16
16
 
17
+ const itemClasses = mx([
18
+ 'container-max-width grid md:col-span-2 grid-cols-subgrid gap-trimSm items-center',
19
+ '*:first:!mbs-0 *:last:!mbe-0 pli-trimMd plb-trimMd',
20
+ 'border border-separator rounded-md',
21
+ ]);
22
+
17
23
  export const SchemaContainer = ({ space }: SchemaPanelProps) => {
18
24
  const { t } = useTranslation(meta.id);
19
25
  const schemas = useQuerySpaceSchemas(space);
20
26
 
21
- // TODO(ZaymonFC): Support deleting Schema (DangerZone section).
22
27
  return (
23
- <Layout.Container scrollable>
24
- <ControlPage>
25
- <ControlSection title={t('schema verbose label')} description={t('schema description')}>
26
- <div role='none' className={controlItemClasses}>
27
- {schemas.length === 0 && <div className='text-center plb-4'>{t('no schemas found message')}</div>}
28
- {schemas.map((schema) => (
29
- <div role='none' key={schema.id}>
30
- {schema.typename}
31
- </div>
32
- ))}
33
- </div>
34
- </ControlSection>
35
- </ControlPage>
36
- </Layout.Container>
28
+ <Settings.Root>
29
+ <Settings.Section title={t('schema verbose label')} description={t('schema description')}>
30
+ <div role='none' className={itemClasses}>
31
+ {schemas.length === 0 && <div className='text-center plb-4'>{t('no schemas found message')}</div>}
32
+ {schemas.map((schema) => (
33
+ <div role='none' key={schema.id}>
34
+ {schema.typename}
35
+ </div>
36
+ ))}
37
+ </div>
38
+ </Settings.Section>
39
+ </Settings.Root>
37
40
  );
38
41
  };
39
42
 
@@ -4,11 +4,11 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { useOperationInvoker } from '@dxos/app-framework/react';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
8
  import { useClient } from '@dxos/react-client';
9
9
  import { useSpaces } from '@dxos/react-client/echo';
10
10
  import { IconButton, Input, List, ListItem, toLocalizedString, useTranslation } from '@dxos/react-ui';
11
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection, controlItemClasses } from '@dxos/react-ui-form';
11
+ import { Settings } from '@dxos/react-ui-form';
12
12
 
13
13
  import { meta } from '../meta';
14
14
  import { SpaceOperation, type SpaceSettingsProps } from '../types';
@@ -26,37 +26,40 @@ export const SpacePluginSettings = ({ settings, onSettingsChange }: SpacePluginS
26
26
  const { invokePromise } = useOperationInvoker();
27
27
 
28
28
  return (
29
- <ControlPage>
30
- <ControlSection title={t('space settings label')} description={t('space settings description')}>
31
- <ControlGroup>
32
- <ControlItemInput title={t('show hidden spaces label')}>
29
+ <Settings.Root>
30
+ <Settings.Section title={t('space settings label')} description={t('space settings description')}>
31
+ <Settings.Group>
32
+ <Settings.ItemInput title={t('show hidden spaces label')}>
33
33
  <Input.Switch
34
34
  checked={settings.showHidden}
35
- onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, showHidden: !!checked }))}
35
+ onCheckedChange={(checked) => onSettingsChange((state) => ({ ...state, showHidden: !!checked }))}
36
36
  />
37
- </ControlItemInput>
38
- </ControlGroup>
39
- <List classNames={[controlItemClasses, 'flex flex-col gap-trimSm']}>
40
- {spaces.map((space) => (
41
- <ListItem.Root key={space.id} classNames='is-full items-center'>
42
- {/* TODO(burdon): Should auto center and truncate; NOTE truncate doesn't work with flex grow. */}
43
- <ListItem.Heading classNames='grow truncate !min-bs-0'>
44
- {toLocalizedString(
45
- getSpaceDisplayName(space, {
46
- personal: space === client.spaces.default,
47
- }),
48
- t,
49
- )}
50
- </ListItem.Heading>
51
- <IconButton
52
- icon='ph--faders--regular'
53
- onClick={() => invokePromise(SpaceOperation.OpenSettings, { space })}
54
- label={t('open space settings label')}
55
- />
56
- </ListItem.Root>
57
- ))}
58
- </List>
59
- </ControlSection>
60
- </ControlPage>
37
+ </Settings.ItemInput>
38
+ </Settings.Group>
39
+
40
+ <Settings.Container>
41
+ <List classNames='flex flex-col gap-trimSm'>
42
+ {spaces.map((space) => (
43
+ <ListItem.Root key={space.id} classNames='is-full items-center'>
44
+ {/* TODO(burdon): Should auto center and truncate; NOTE truncate doesn't work with flex grow. */}
45
+ <ListItem.Heading classNames='grow truncate !min-bs-0'>
46
+ {toLocalizedString(
47
+ getSpaceDisplayName(space, {
48
+ personal: space === client.spaces.default,
49
+ }),
50
+ t,
51
+ )}
52
+ </ListItem.Heading>
53
+ <IconButton
54
+ icon='ph--faders--regular'
55
+ onClick={() => invokePromise(SpaceOperation.OpenSettings, { space })}
56
+ label={t('open space settings label')}
57
+ />
58
+ </ListItem.Root>
59
+ ))}
60
+ </List>
61
+ </Settings.Container>
62
+ </Settings.Section>
63
+ </Settings.Root>
61
64
  );
62
65
  };
@@ -24,7 +24,7 @@ const viewers = (n: number, currentlyAttended = true): Member[] =>
24
24
 
25
25
  const meta = {
26
26
  title: 'plugins/plugin-space/SpacePresence',
27
- decorators: [withTheme],
27
+ decorators: [withTheme()],
28
28
  parameters: {
29
29
  translations,
30
30
  },
@@ -5,7 +5,8 @@
5
5
  import * as Option from 'effect/Option';
6
6
  import React, { forwardRef, useCallback, useEffect, useState } from 'react';
7
7
 
8
- import { useAppGraph, useAtomCapability } from '@dxos/app-framework/react';
8
+ import { useAtomCapability } from '@dxos/app-framework/ui';
9
+ import { useAppGraph } from '@dxos/app-toolkit/ui';
9
10
  import { generateName } from '@dxos/display-name';
10
11
  import { type Key, Obj } from '@dxos/echo';
11
12
  import { PublicKey } from '@dxos/react-client';
@@ -4,8 +4,8 @@
4
4
 
5
5
  import React, { useCallback, useRef, useState } from 'react';
6
6
 
7
- import { Common } from '@dxos/app-framework';
8
- import { useOperationInvoker } from '@dxos/app-framework/react';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { LayoutOperation } from '@dxos/app-toolkit';
9
9
  import { type Space } from '@dxos/client/echo';
10
10
  import { Obj } from '@dxos/echo';
11
11
  import { Button, Input, Popover, useTranslation } from '@dxos/react-ui';
@@ -25,7 +25,7 @@ export const SpaceRenamePopover = ({ space }: { space: Space }) => {
25
25
  Obj.change(space.properties, (p) => {
26
26
  p.name = name;
27
27
  });
28
- void invokePromise(Common.LayoutOperation.UpdatePopover, { anchorId: '', state: false });
28
+ void invokePromise(LayoutOperation.UpdatePopover, { anchorId: '', state: false });
29
29
  }, [space, name, invokePromise]);
30
30
 
31
31
  // TODO(thure): Why does the input value need to be uncontrolled to work?
@@ -28,7 +28,7 @@ const meta = {
28
28
  component: SpaceSettingsContainer,
29
29
  render: Story,
30
30
  decorators: [
31
- withTheme,
31
+ withTheme(),
32
32
  withClientProvider({ createIdentity: true, createSpace: true }),
33
33
  // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
34
34
  withPluginManager({ plugins: [OperationPlugin()] }),