@dxos/plugin-board 0.9.0 → 0.9.1-staging.ee54ba693a

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 (47) hide show
  1. package/dist/lib/neutral/{BoardArticle-H65K4YGV.mjs → BoardArticle-S7VMVBPU.mjs} +2 -2
  2. package/dist/lib/neutral/{BoardArticle-H65K4YGV.mjs.map → BoardArticle-S7VMVBPU.mjs.map} +2 -2
  3. package/dist/lib/neutral/BoardPlugin.mjs +2 -2
  4. package/dist/lib/neutral/BoardPlugin.mjs.map +4 -4
  5. package/dist/lib/neutral/capabilities/index.mjs +1 -1
  6. package/dist/lib/neutral/{chunk-RDP4SXIW.mjs → chunk-I4YKWAK6.mjs} +5 -4
  7. package/dist/lib/neutral/chunk-I4YKWAK6.mjs.map +7 -0
  8. package/dist/lib/neutral/{chunk-HUBZKCPA.mjs → chunk-TIEIAVKG.mjs} +24 -15
  9. package/dist/lib/neutral/chunk-TIEIAVKG.mjs.map +7 -0
  10. package/dist/lib/neutral/containers/index.mjs +1 -1
  11. package/dist/lib/neutral/{create-object-BRISOU7F.mjs → create-object-VMKGCE3J.mjs} +1 -2
  12. package/dist/lib/neutral/{create-object-BRISOU7F.mjs.map → create-object-VMKGCE3J.mjs.map} +3 -3
  13. package/dist/lib/neutral/index.mjs +2 -2
  14. package/dist/lib/neutral/meta.json +1 -1
  15. package/dist/lib/neutral/meta.mjs +1 -1
  16. package/dist/lib/neutral/plugin.mjs +1 -1
  17. package/dist/lib/neutral/translations.mjs +1 -1
  18. package/dist/lib/neutral/translations.mjs.map +3 -3
  19. package/dist/lib/neutral/types/index.mjs +1 -1
  20. package/dist/types/dx.config.d.ts +28 -0
  21. package/dist/types/dx.config.d.ts.map +1 -0
  22. package/dist/types/src/capabilities/create-object.d.ts +1 -7
  23. package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
  24. package/dist/types/src/capabilities/index.d.ts +2 -7
  25. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  26. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  27. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  28. package/dist/types/src/containers/BoardArticle/BoardArticle.d.ts.map +1 -1
  29. package/dist/types/src/containers/BoardArticle/BoardArticle.stories.d.ts +2 -15
  30. package/dist/types/src/containers/BoardArticle/BoardArticle.stories.d.ts.map +1 -1
  31. package/dist/types/src/meta.d.ts +32 -2
  32. package/dist/types/src/meta.d.ts.map +1 -1
  33. package/dist/types/src/types/Board.d.ts +9 -26
  34. package/dist/types/src/types/Board.d.ts.map +1 -1
  35. package/dist/types/tsconfig.tsbuildinfo +1 -1
  36. package/dx.config.ts +29 -0
  37. package/package.json +36 -36
  38. package/src/BoardPlugin.test.ts +1 -1
  39. package/src/BoardPlugin.tsx +1 -1
  40. package/src/capabilities/create-object.ts +0 -1
  41. package/src/containers/BoardArticle/BoardArticle.stories.tsx +1 -2
  42. package/src/containers/BoardArticle/BoardArticle.tsx +5 -1
  43. package/src/meta.ts +2 -22
  44. package/src/translations.ts +1 -1
  45. package/src/types/Board.ts +11 -12
  46. package/dist/lib/neutral/chunk-HUBZKCPA.mjs.map +0 -7
  47. package/dist/lib/neutral/chunk-RDP4SXIW.mjs.map +0 -7
package/dx.config.ts ADDED
@@ -0,0 +1,29 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Config2 } from '@dxos/app-framework/config';
6
+ import { trim } from '@dxos/util';
7
+
8
+ export default Config2.make({
9
+ plugin: {
10
+ key: 'org.dxos.plugin.board',
11
+ name: 'Board',
12
+ author: 'DXOS',
13
+ description: trim`
14
+ Board is an infinite spatial canvas that lets you place any ECHO object — documents, tasks, notes, or rich media — anywhere on a two-dimensional grid.
15
+ Items are arranged by dragging, resized freely, and removed from the canvas without deleting the underlying data, so the same object can appear on multiple boards simultaneously.
16
+
17
+ Each board is itself an ECHO object, making it fully collaborative and conflict-free: all participants see live updates as peers add, move, or remove items in real time.
18
+ The canvas scales to any resolution, supports nested surfaces through the Composer slot system, and integrates naturally with other plugins via the shared ObjectPicker.
19
+
20
+ Board is designed as a lightweight composition layer: it imposes no schema on the objects it hosts and delegates rendering to each object's own Card surface, so every plugin contributes its own card representation automatically.
21
+ This makes it ideal for dashboards, mood boards, project overviews, or any context where spatial relationships between heterogeneous objects carry meaning.
22
+ `,
23
+ source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-board',
24
+ icon: { key: 'ph--squares-four--regular', hue: 'green' },
25
+ spec: 'PLUGIN.mdl',
26
+ screenshots: [],
27
+ tags: ['labs'],
28
+ },
29
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-board",
3
- "version": "0.9.0",
3
+ "version": "0.9.1-staging.ee54ba693a",
4
4
  "description": "Surface plugin for card baords",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -70,53 +70,53 @@
70
70
  "types": "dist/types/src/index.d.ts",
71
71
  "files": [
72
72
  "dist",
73
+ "dx.config.ts",
73
74
  "src",
74
75
  "PLUGIN.mdl"
75
76
  ],
76
77
  "dependencies": {
77
78
  "@effect-atom/atom": "^0.5.3",
78
79
  "@effect-atom/atom-react": "^0.5.0",
79
- "effect": "3.21.3",
80
- "@dxos/compute": "0.9.0",
81
- "@dxos/app-toolkit": "0.9.0",
82
- "@dxos/echo-react": "0.9.0",
83
- "@dxos/keys": "0.9.0",
84
- "@dxos/app-framework": "0.9.0",
85
- "@dxos/invariant": "0.9.0",
86
- "@dxos/echo": "0.9.0",
87
- "@dxos/plugin-client": "0.9.0",
88
- "@dxos/random": "0.9.0",
89
- "@dxos/plugin-markdown": "0.9.0",
90
- "@dxos/plugin-space": "0.9.0",
91
- "@dxos/react-ui": "0.9.0",
92
- "@dxos/react-ui-form": "0.9.0",
93
- "@dxos/react-ui-attention": "0.9.0",
94
- "@dxos/react-ui-board": "0.9.0",
95
- "@dxos/types": "0.9.0",
96
- "@dxos/util": "0.9.0",
97
- "@dxos/react-ui-stack": "0.9.0",
98
- "@dxos/react-client": "0.9.0"
80
+ "effect": "3.21.4",
81
+ "@dxos/compute": "0.9.1-staging.ee54ba693a",
82
+ "@dxos/app-toolkit": "0.9.1-staging.ee54ba693a",
83
+ "@dxos/invariant": "0.9.1-staging.ee54ba693a",
84
+ "@dxos/keys": "0.9.1-staging.ee54ba693a",
85
+ "@dxos/echo": "0.9.1-staging.ee54ba693a",
86
+ "@dxos/app-framework": "0.9.1-staging.ee54ba693a",
87
+ "@dxos/echo-react": "0.9.1-staging.ee54ba693a",
88
+ "@dxos/plugin-markdown": "0.9.1-staging.ee54ba693a",
89
+ "@dxos/plugin-client": "0.9.1-staging.ee54ba693a",
90
+ "@dxos/plugin-space": "0.9.1-staging.ee54ba693a",
91
+ "@dxos/react-client": "0.9.1-staging.ee54ba693a",
92
+ "@dxos/random": "0.9.1-staging.ee54ba693a",
93
+ "@dxos/react-ui": "0.9.1-staging.ee54ba693a",
94
+ "@dxos/react-ui-board": "0.9.1-staging.ee54ba693a",
95
+ "@dxos/react-ui-attention": "0.9.1-staging.ee54ba693a",
96
+ "@dxos/react-ui-form": "0.9.1-staging.ee54ba693a",
97
+ "@dxos/util": "0.9.1-staging.ee54ba693a",
98
+ "@dxos/types": "0.9.1-staging.ee54ba693a"
99
99
  },
100
100
  "devDependencies": {
101
- "@types/react": "~19.2.7",
101
+ "@types/react": "~19.2.17",
102
102
  "@types/react-dom": "~19.2.3",
103
- "react": "~19.2.3",
104
- "react-dom": "~19.2.3",
103
+ "react": "~19.2.7",
104
+ "react-dom": "~19.2.7",
105
105
  "vite": "^8.0.16",
106
- "@dxos/plugin-preview": "0.9.0",
107
- "@dxos/plugin-theme": "0.9.0",
108
- "@dxos/plugin-testing": "0.9.0",
109
- "@dxos/storybook-utils": "0.9.0",
110
- "@dxos/test-utils": "0.9.0",
111
- "@dxos/react-ui-syntax-highlighter": "0.9.0",
112
- "@dxos/ui-theme": "0.9.0"
106
+ "@dxos/plugin-testing": "0.9.1-staging.ee54ba693a",
107
+ "@dxos/plugin-preview": "0.9.1-staging.ee54ba693a",
108
+ "@dxos/plugin-theme": "0.9.1-staging.ee54ba693a",
109
+ "@dxos/react-ui-syntax-highlighter": "0.9.1-staging.ee54ba693a",
110
+ "@dxos/storybook-utils": "0.9.1-staging.ee54ba693a",
111
+ "@dxos/ui-theme": "0.9.1-staging.ee54ba693a",
112
+ "@dxos/test-utils": "0.9.1-staging.ee54ba693a"
113
113
  },
114
114
  "peerDependencies": {
115
- "effect": "3.21.3",
116
- "react": "~19.2.3",
117
- "react-dom": "~19.2.3",
118
- "@dxos/ui-theme": "0.9.0",
119
- "@dxos/react-ui": "0.9.0"
115
+ "effect": "3.21.4",
116
+ "react": "~19.2.7",
117
+ "react-dom": "~19.2.7",
118
+ "@dxos/react-ui": "0.9.1-staging.ee54ba693a",
119
+ "@dxos/ui-theme": "0.9.1-staging.ee54ba693a"
120
120
  },
121
121
  "publishConfig": {
122
122
  "access": "public"
@@ -11,7 +11,7 @@ import { BoardPlugin } from '#plugin';
11
11
 
12
12
  import { meta } from './meta';
13
13
 
14
- const moduleId = (name: string) => `${meta.id}.module.${name}`;
14
+ const moduleId = (name: string) => `${meta.profile.key}.module.${name}`;
15
15
 
16
16
  describe('BoardPlugin', () => {
17
17
  test('modules activate on the expected events', async ({ expect }) => {
@@ -20,7 +20,7 @@ export const BoardPlugin = Plugin.define(meta).pipe(
20
20
  AppPlugin.addSurfaceModule({ activate: ReactSurface }),
21
21
  AppPlugin.addTranslationsModule({ translations: [...translations, ...boardTranslations] }),
22
22
  AppPlugin.addPluginAssetModule({
23
- asset: { pluginId: meta.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
23
+ asset: { pluginId: meta.profile.key, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
24
24
  }),
25
25
  Plugin.make,
26
26
  );
@@ -22,7 +22,6 @@ export default Capability.makeModule(
22
22
  return yield* Operation.invoke(SpaceOperation.AddObject, {
23
23
  object,
24
24
  target: options.target,
25
- hidden: true,
26
25
  targetNodeId: options.targetNodeId,
27
26
  });
28
27
  }),
@@ -14,7 +14,6 @@ import { PreviewPlugin } from '@dxos/plugin-preview/testing';
14
14
  import { StorybookPlugin, corePlugins } from '@dxos/plugin-testing';
15
15
  import { random } from '@dxos/random';
16
16
  import { useQuery, useSpaces } from '@dxos/react-client/echo';
17
- import { translations as stackTranslations } from '@dxos/react-ui-stack/translations';
18
17
  import { withLayout } from '@dxos/react-ui/testing';
19
18
  import { Organization, Person } from '@dxos/types';
20
19
 
@@ -111,7 +110,7 @@ const meta = {
111
110
  ],
112
111
  parameters: {
113
112
  layout: 'fullscreen',
114
- translations: [...translations, ...stackTranslations],
113
+ translations,
115
114
  },
116
115
  };
117
116
 
@@ -169,7 +169,11 @@ export const BoardArticle = ({ role, subject: board, attendableId }: BoardArticl
169
169
  <Board.Content>
170
170
  {items?.map((item, index) => (
171
171
  <Board.Cell item={item} key={index} layout={board.layout?.cells[item.id] ?? { x: 0, y: 0 }}>
172
- <Surface.Surface type={AppSurface.Card} data={{ subject: item, editable: true }} limit={1} />
172
+ <Surface.Surface
173
+ type={AppSurface.CardContent}
174
+ data={{ subject: item, editable: true }}
175
+ limit={1}
176
+ />
173
177
  </Board.Cell>
174
178
  ))}
175
179
  </Board.Content>
package/src/meta.ts CHANGED
@@ -3,27 +3,7 @@
3
3
  //
4
4
 
5
5
  import { Plugin } from '@dxos/app-framework';
6
- import { DXN } from '@dxos/keys';
7
- import { trim } from '@dxos/util';
8
6
 
9
- export const meta = Plugin.makeMeta({
10
- key: DXN.make('org.dxos.plugin.board'),
11
- name: 'Board',
12
- author: 'DXOS',
13
- description: trim`
14
- Board is an infinite spatial canvas that lets you place any ECHO object — documents, tasks, notes, or rich media — anywhere on a two-dimensional grid.
15
- Items are arranged by dragging, resized freely, and removed from the canvas without deleting the underlying data, so the same object can appear on multiple boards simultaneously.
7
+ import config from '../dx.config';
16
8
 
17
- Each board is itself an ECHO object, making it fully collaborative and conflict-free: all participants see live updates as peers add, move, or remove items in real time.
18
- The canvas scales to any resolution, supports nested surfaces through the Composer slot system, and integrates naturally with other plugins via the shared ObjectPicker.
19
-
20
- Board is designed as a lightweight composition layer: it imposes no schema on the objects it hosts and delegates rendering to each object's own Card surface, so every plugin contributes its own card representation automatically.
21
- This makes it ideal for dashboards, mood boards, project overviews, or any context where spatial relationships between heterogeneous objects carry meaning.
22
- `,
23
- icon: 'ph--squares-four--regular',
24
- iconHue: 'green',
25
- source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-board',
26
- spec: 'PLUGIN.mdl',
27
- screenshots: [],
28
- tags: ['labs'],
29
- });
9
+ export const meta = Plugin.getMetaFromConfig(config);
@@ -22,7 +22,7 @@ export const translations = [
22
22
  'delete-object.label': 'Delete board',
23
23
  'object-deleted.label': 'Board deleted',
24
24
  },
25
- [meta.id]: {
25
+ [meta.profile.key]: {
26
26
  'plugin.name': 'Board',
27
27
  },
28
28
  },
@@ -4,24 +4,23 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { DXN, Annotation, Obj, Ref, Type } from '@dxos/echo';
7
+ import { Annotation, DXN, Obj, Ref, Type } from '@dxos/echo';
8
8
  import { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';
9
9
  import { BoardLayout, defaultLayout } from '@dxos/react-ui-board';
10
10
 
11
11
  /**
12
12
  * Board and layout.
13
13
  */
14
- export const Board = Schema.Struct({
15
- name: Schema.String.pipe(Schema.optional),
16
- items: Ref.Ref(Obj.Unknown).pipe(Schema.Array, FormInputAnnotation.set(false)),
17
- layout: BoardLayout.pipe(FormInputAnnotation.set(false)),
18
- }).pipe(
19
- LabelAnnotation.set(['name']),
20
- Annotation.IconAnnotation.set({ icon: 'ph--squares-four--regular', hue: 'green' }),
21
- Type.makeObject(DXN.make('org.dxos.type.board', '0.1.0')),
22
- );
23
-
24
- export type Board = Type.InstanceType<typeof Board>;
14
+ export class Board extends Type.makeObject<Board>(DXN.make('org.dxos.type.board', '0.1.0'))(
15
+ Schema.Struct({
16
+ name: Schema.String.pipe(Schema.optional),
17
+ items: Ref.Ref(Obj.Unknown).pipe(Schema.Array, FormInputAnnotation.set(false)),
18
+ layout: BoardLayout.pipe(FormInputAnnotation.set(false)),
19
+ }).pipe(
20
+ LabelAnnotation.set(['name']),
21
+ Annotation.IconAnnotation.set({ icon: 'ph--squares-four--regular', hue: 'green' }),
22
+ ),
23
+ ) {}
25
24
 
26
25
  export const makeBoard = (props: Partial<Obj.MakeProps<typeof Board>> = {}) =>
27
26
  Obj.make(Board, {
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\nimport { trim } from '@dxos/util';\n\nexport const meta = Plugin.makeMeta({\n key: DXN.make('org.dxos.plugin.board'),\n name: 'Board',\n author: 'DXOS',\n description: trim`\n Board is an infinite spatial canvas that lets you place any ECHO object — documents, tasks, notes, or rich media — anywhere on a two-dimensional grid.\n Items are arranged by dragging, resized freely, and removed from the canvas without deleting the underlying data, so the same object can appear on multiple boards simultaneously.\n\n Each board is itself an ECHO object, making it fully collaborative and conflict-free: all participants see live updates as peers add, move, or remove items in real time.\n The canvas scales to any resolution, supports nested surfaces through the Composer slot system, and integrates naturally with other plugins via the shared ObjectPicker.\n\n Board is designed as a lightweight composition layer: it imposes no schema on the objects it hosts and delegates rendering to each object's own Card surface, so every plugin contributes its own card representation automatically.\n This makes it ideal for dashboards, mood boards, project overviews, or any context where spatial relationships between heterogeneous objects carry meaning.\n `,\n icon: 'ph--squares-four--regular',\n iconHue: 'green',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-board',\n spec: 'PLUGIN.mdl',\n screenshots: [],\n tags: ['labs'],\n});\n"],
5
- "mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,YAAY;AAEd,IAAMC,OAAOH,OAAOI,SAAS;EAClCC,KAAKJ,IAAIK,KAAK,uBAAA;EACdC,MAAM;EACNC,QAAQ;EACRC,aAAaP;;;;;;;;;;EAUbQ,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;EACNC,aAAa,CAAA;EACbC,MAAM;IAAC;;AACT,CAAA;",
6
- "names": ["Plugin", "DXN", "trim", "meta", "makeMeta", "key", "make", "name", "author", "description", "icon", "iconHue", "source", "spec", "screenshots", "tags"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/Board.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { DXN, Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';\nimport { BoardLayout, defaultLayout } from '@dxos/react-ui-board';\n\n/**\n * Board and layout.\n */\nexport const Board = Schema.Struct({\n name: Schema.String.pipe(Schema.optional),\n items: Ref.Ref(Obj.Unknown).pipe(Schema.Array, FormInputAnnotation.set(false)),\n layout: BoardLayout.pipe(FormInputAnnotation.set(false)),\n}).pipe(\n LabelAnnotation.set(['name']),\n Annotation.IconAnnotation.set({ icon: 'ph--squares-four--regular', hue: 'green' }),\n Type.makeObject(DXN.make('org.dxos.type.board', '0.1.0')),\n);\n\nexport type Board = Type.InstanceType<typeof Board>;\n\nexport const makeBoard = (props: Partial<Obj.MakeProps<typeof Board>> = {}) =>\n Obj.make(Board, {\n items: [],\n layout: defaultLayout,\n ...props,\n });\n"],
5
- "mappings": ";;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,KAAKC,YAAYC,KAAKC,KAAKC,YAAY;AAChD,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,aAAaC,qBAAqB;AAKpC,IAAMC,QAAeC,cAAO;EACjCC,MAAaC,cAAOC,KAAYC,eAAQ;EACxCC,OAAOZ,IAAIA,IAAID,IAAIc,OAAO,EAAEH,KAAYI,cAAOZ,oBAAoBa,IAAI,KAAA,CAAA;EACvEC,QAAQZ,YAAYM,KAAKR,oBAAoBa,IAAI,KAAA,CAAA;AACnD,CAAA,EAAGL,KACDP,gBAAgBY,IAAI;EAAC;CAAO,GAC5BjB,WAAWmB,eAAeF,IAAI;EAAEG,MAAM;EAA6BC,KAAK;AAAQ,CAAA,GAChFlB,KAAKmB,WAAWvB,IAAIwB,KAAK,uBAAuB,OAAA,CAAA,CAAA;AAK3C,IAAMC,YAAY,CAACC,QAA8C,CAAC,MACvExB,IAAIsB,KAAKf,OAAO;EACdM,OAAO,CAAA;EACPI,QAAQX;EACR,GAAGkB;AACL,CAAA;",
6
- "names": ["Schema", "DXN", "Annotation", "Obj", "Ref", "Type", "FormInputAnnotation", "LabelAnnotation", "BoardLayout", "defaultLayout", "Board", "Struct", "name", "String", "pipe", "optional", "items", "Unknown", "Array", "set", "layout", "IconAnnotation", "icon", "hue", "makeObject", "make", "makeBoard", "props"]
7
- }