@dxos/plugin-kanban 0.8.4-main.bc674ce → 0.8.4-main.bcb3aa67d6

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 (232) hide show
  1. package/dist/lib/browser/blueprints/index.mjs +23 -4
  2. package/dist/lib/browser/blueprints/index.mjs.map +4 -4
  3. package/dist/lib/browser/chunk-A3PBV3S5.mjs +105 -0
  4. package/dist/lib/browser/chunk-A3PBV3S5.mjs.map +7 -0
  5. package/dist/lib/browser/delete-card-VPNVIWOA.mjs +32 -0
  6. package/dist/lib/browser/delete-card-VPNVIWOA.mjs.map +7 -0
  7. package/dist/lib/browser/delete-card-field-4HHF2GYX.mjs +50 -0
  8. package/dist/lib/browser/delete-card-field-4HHF2GYX.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +84 -61
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/operations/index.mjs +13 -0
  13. package/dist/lib/browser/operations/index.mjs.map +7 -0
  14. package/dist/lib/browser/restore-card-4GG2RYKR.mjs +29 -0
  15. package/dist/lib/browser/restore-card-4GG2RYKR.mjs.map +7 -0
  16. package/dist/lib/browser/restore-card-field-3T26ACYX.mjs +48 -0
  17. package/dist/lib/browser/restore-card-field-3T26ACYX.mjs.map +7 -0
  18. package/dist/lib/browser/types/index.mjs +94 -8
  19. package/dist/lib/browser/types/index.mjs.map +4 -4
  20. package/dist/lib/node-esm/blueprints/index.mjs +23 -4
  21. package/dist/lib/node-esm/blueprints/index.mjs.map +4 -4
  22. package/dist/lib/node-esm/chunk-6LELYA2G.mjs +106 -0
  23. package/dist/lib/node-esm/chunk-6LELYA2G.mjs.map +7 -0
  24. package/dist/lib/node-esm/delete-card-5PW5OMFN.mjs +33 -0
  25. package/dist/lib/node-esm/delete-card-5PW5OMFN.mjs.map +7 -0
  26. package/dist/lib/node-esm/delete-card-field-KPJU2AQ3.mjs +51 -0
  27. package/dist/lib/node-esm/delete-card-field-KPJU2AQ3.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +84 -61
  29. package/dist/lib/node-esm/index.mjs.map +4 -4
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/operations/index.mjs +14 -0
  32. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  33. package/dist/lib/node-esm/restore-card-X2TKMU5A.mjs +30 -0
  34. package/dist/lib/node-esm/restore-card-X2TKMU5A.mjs.map +7 -0
  35. package/dist/lib/node-esm/restore-card-field-IUTL4RTR.mjs +49 -0
  36. package/dist/lib/node-esm/restore-card-field-IUTL4RTR.mjs.map +7 -0
  37. package/dist/lib/node-esm/types/index.mjs +94 -8
  38. package/dist/lib/node-esm/types/index.mjs.map +4 -4
  39. package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
  40. package/dist/types/src/blueprints/index.d.ts +1 -1
  41. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  42. package/dist/types/src/blueprints/kanban-blueprint.d.ts +3 -21
  43. package/dist/types/src/blueprints/kanban-blueprint.d.ts.map +1 -1
  44. package/dist/types/src/capabilities/{artifact-definition/artifact-definition.d.ts → artifact-definition.d.ts} +1 -1
  45. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  47. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  48. package/dist/types/src/capabilities/index.d.ts +6 -3
  49. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  50. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  51. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  52. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  53. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  54. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  55. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  56. package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts +65 -0
  57. package/dist/types/src/components/KanbanBoard/KanbanBoard.d.ts.map +1 -0
  58. package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts +72 -0
  59. package/dist/types/src/components/KanbanBoard/KanbanBoard.stories.d.ts.map +1 -0
  60. package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts +10 -0
  61. package/dist/types/src/components/KanbanBoard/KanbanCard.d.ts.map +1 -0
  62. package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts +9 -0
  63. package/dist/types/src/components/KanbanBoard/KanbanColumn.d.ts.map +1 -0
  64. package/dist/types/src/components/KanbanBoard/index.d.ts +2 -0
  65. package/dist/types/src/components/KanbanBoard/index.d.ts.map +1 -0
  66. package/dist/types/src/components/index.d.ts +1 -2
  67. package/dist/types/src/components/index.d.ts.map +1 -1
  68. package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts +6 -0
  69. package/dist/types/src/containers/KanbanContainer/KanbanContainer.d.ts.map +1 -0
  70. package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts +79 -0
  71. package/dist/types/src/containers/KanbanContainer/KanbanContainer.stories.d.ts.map +1 -0
  72. package/dist/types/src/containers/KanbanContainer/index.d.ts +3 -0
  73. package/dist/types/src/containers/KanbanContainer/index.d.ts.map +1 -0
  74. package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts +6 -0
  75. package/dist/types/src/containers/KanbanViewEditor/KanbanViewEditor.d.ts.map +1 -0
  76. package/dist/types/src/containers/KanbanViewEditor/index.d.ts +3 -0
  77. package/dist/types/src/containers/KanbanViewEditor/index.d.ts.map +1 -0
  78. package/dist/types/src/containers/index.d.ts +4 -0
  79. package/dist/types/src/containers/index.d.ts.map +1 -0
  80. package/dist/types/src/hooks/index.d.ts +6 -0
  81. package/dist/types/src/hooks/index.d.ts.map +1 -0
  82. package/dist/types/src/hooks/useEchoChangeCallback.d.ts +13 -0
  83. package/dist/types/src/hooks/useEchoChangeCallback.d.ts.map +1 -0
  84. package/dist/types/src/hooks/useKanbanBoardModel.d.ts +16 -0
  85. package/dist/types/src/hooks/useKanbanBoardModel.d.ts.map +1 -0
  86. package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts +2 -0
  87. package/dist/types/src/hooks/useKanbanBoardModel.test.d.ts.map +1 -0
  88. package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts +22 -0
  89. package/dist/types/src/hooks/useKanbanColumnEventHandler.d.ts.map +1 -0
  90. package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts +19 -0
  91. package/dist/types/src/hooks/useKanbanItemEventHandler.d.ts.map +1 -0
  92. package/dist/types/src/hooks/useProjectionModel.d.ts +15 -0
  93. package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -0
  94. package/dist/types/src/operations/definitions.d.ts +52 -0
  95. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  96. package/dist/types/src/operations/delete-card-field.d.ts +5 -0
  97. package/dist/types/src/operations/delete-card-field.d.ts.map +1 -0
  98. package/dist/types/src/operations/delete-card.d.ts +5 -0
  99. package/dist/types/src/operations/delete-card.d.ts.map +1 -0
  100. package/dist/types/src/operations/index.d.ts +4 -0
  101. package/dist/types/src/operations/index.d.ts.map +1 -0
  102. package/dist/types/src/operations/restore-card-field.d.ts +5 -0
  103. package/dist/types/src/operations/restore-card-field.d.ts.map +1 -0
  104. package/dist/types/src/operations/restore-card.d.ts +5 -0
  105. package/dist/types/src/operations/restore-card.d.ts.map +1 -0
  106. package/dist/types/src/playwright/board-manager.d.ts +5 -0
  107. package/dist/types/src/playwright/board-manager.d.ts.map +1 -0
  108. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  109. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  110. package/dist/types/src/playwright/smoke.spec.d.ts +2 -0
  111. package/dist/types/src/playwright/smoke.spec.d.ts.map +1 -0
  112. package/dist/types/src/testing/KanbanCardTileSimple.d.ts +7 -0
  113. package/dist/types/src/testing/KanbanCardTileSimple.d.ts.map +1 -0
  114. package/dist/types/src/testing/index.d.ts +2 -0
  115. package/dist/types/src/testing/index.d.ts.map +1 -0
  116. package/dist/types/src/translations.d.ts +48 -32
  117. package/dist/types/src/translations.d.ts.map +1 -1
  118. package/dist/types/src/types/Kanban.d.ts +37 -0
  119. package/dist/types/src/types/Kanban.d.ts.map +1 -0
  120. package/dist/types/src/types/constants.d.ts +6 -0
  121. package/dist/types/src/types/constants.d.ts.map +1 -0
  122. package/dist/types/src/types/index.d.ts +2 -0
  123. package/dist/types/src/types/index.d.ts.map +1 -1
  124. package/dist/types/src/types/schema.d.ts +0 -103
  125. package/dist/types/src/types/schema.d.ts.map +1 -1
  126. package/dist/types/src/types/types.d.ts +28 -0
  127. package/dist/types/src/types/types.d.ts.map +1 -1
  128. package/dist/types/src/util/arrangement.d.ts +68 -0
  129. package/dist/types/src/util/arrangement.d.ts.map +1 -0
  130. package/dist/types/src/util/arrangement.test.d.ts +2 -0
  131. package/dist/types/src/util/arrangement.test.d.ts.map +1 -0
  132. package/dist/types/src/util/index.d.ts +2 -0
  133. package/dist/types/src/util/index.d.ts.map +1 -0
  134. package/dist/types/tsconfig.tsbuildinfo +1 -1
  135. package/package.json +64 -42
  136. package/src/KanbanPlugin.tsx +35 -23
  137. package/src/blueprints/index.ts +1 -1
  138. package/src/blueprints/kanban-blueprint.ts +12 -8
  139. package/src/capabilities/{artifact-definition/artifact-definition.ts → artifact-definition.ts} +10 -9
  140. package/src/capabilities/blueprint-definition.ts +17 -0
  141. package/src/capabilities/index.ts +10 -3
  142. package/src/capabilities/operation-handler.ts +14 -0
  143. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +15 -15
  144. package/src/capabilities/undo-mappings.ts +34 -0
  145. package/src/components/KanbanBoard/KanbanBoard.stories.tsx +142 -0
  146. package/src/components/KanbanBoard/KanbanBoard.tsx +193 -0
  147. package/src/components/KanbanBoard/KanbanCard.tsx +86 -0
  148. package/src/components/KanbanBoard/KanbanColumn.tsx +69 -0
  149. package/src/components/KanbanBoard/index.ts +5 -0
  150. package/src/components/index.ts +1 -2
  151. package/src/{components → containers/KanbanContainer}/KanbanContainer.stories.tsx +70 -87
  152. package/src/containers/KanbanContainer/KanbanContainer.tsx +96 -0
  153. package/src/containers/KanbanContainer/index.ts +7 -0
  154. package/src/{components → containers/KanbanViewEditor}/KanbanViewEditor.tsx +23 -19
  155. package/src/containers/KanbanViewEditor/index.ts +7 -0
  156. package/src/containers/index.ts +8 -0
  157. package/src/hooks/index.ts +9 -0
  158. package/src/hooks/useEchoChangeCallback.ts +30 -0
  159. package/src/hooks/useKanbanBoardModel.test.ts +235 -0
  160. package/src/hooks/useKanbanBoardModel.ts +143 -0
  161. package/src/hooks/useKanbanColumnEventHandler.ts +106 -0
  162. package/src/hooks/useKanbanItemEventHandler.ts +133 -0
  163. package/src/hooks/useProjectionModel.ts +58 -0
  164. package/src/meta.ts +1 -1
  165. package/src/operations/definitions.ts +63 -0
  166. package/src/operations/delete-card-field.ts +47 -0
  167. package/src/operations/delete-card.ts +23 -0
  168. package/src/operations/index.ts +12 -0
  169. package/src/operations/restore-card-field.ts +41 -0
  170. package/src/operations/restore-card.ts +21 -0
  171. package/src/playwright/board-manager.ts +13 -0
  172. package/src/playwright/playwright.config.ts +19 -0
  173. package/src/playwright/smoke.spec.ts +107 -0
  174. package/src/testing/KanbanCardTileSimple.tsx +82 -0
  175. package/src/testing/index.ts +5 -0
  176. package/src/translations.ts +26 -18
  177. package/src/types/Kanban.ts +71 -0
  178. package/src/types/constants.ts +9 -0
  179. package/src/types/index.ts +2 -0
  180. package/src/types/schema.ts +0 -76
  181. package/src/types/types.ts +35 -0
  182. package/src/util/arrangement.test.ts +208 -0
  183. package/src/util/arrangement.ts +167 -0
  184. package/src/util/index.ts +5 -0
  185. package/dist/lib/browser/blueprint-definition-T2544VMJ.mjs +0 -17
  186. package/dist/lib/browser/blueprint-definition-T2544VMJ.mjs.map +0 -7
  187. package/dist/lib/browser/chunk-L6N4ZDZ7.mjs +0 -35
  188. package/dist/lib/browser/chunk-L6N4ZDZ7.mjs.map +0 -7
  189. package/dist/lib/browser/chunk-XYQO4VL7.mjs +0 -150
  190. package/dist/lib/browser/chunk-XYQO4VL7.mjs.map +0 -7
  191. package/dist/lib/browser/operation-resolver-UEJHX42A.mjs +0 -162
  192. package/dist/lib/browser/operation-resolver-UEJHX42A.mjs.map +0 -7
  193. package/dist/lib/browser/react-surface-LFUJAPRL.mjs +0 -236
  194. package/dist/lib/browser/react-surface-LFUJAPRL.mjs.map +0 -7
  195. package/dist/lib/node-esm/blueprint-definition-APJQFSHJ.mjs +0 -18
  196. package/dist/lib/node-esm/blueprint-definition-APJQFSHJ.mjs.map +0 -7
  197. package/dist/lib/node-esm/chunk-NN6JMKIT.mjs +0 -152
  198. package/dist/lib/node-esm/chunk-NN6JMKIT.mjs.map +0 -7
  199. package/dist/lib/node-esm/chunk-ZHRMUKTF.mjs +0 -36
  200. package/dist/lib/node-esm/chunk-ZHRMUKTF.mjs.map +0 -7
  201. package/dist/lib/node-esm/operation-resolver-5RPWHZCF.mjs +0 -163
  202. package/dist/lib/node-esm/operation-resolver-5RPWHZCF.mjs.map +0 -7
  203. package/dist/lib/node-esm/react-surface-7TSGBRJL.mjs +0 -237
  204. package/dist/lib/node-esm/react-surface-7TSGBRJL.mjs.map +0 -7
  205. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +0 -1
  206. package/dist/types/src/capabilities/artifact-definition/index.d.ts +0 -3
  207. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +0 -1
  208. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -9
  209. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  210. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  211. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  212. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  213. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  214. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  215. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  216. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  217. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  218. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  219. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  220. package/dist/types/src/components/KanbanContainer.d.ts +0 -6
  221. package/dist/types/src/components/KanbanContainer.d.ts.map +0 -1
  222. package/dist/types/src/components/KanbanContainer.stories.d.ts +0 -75
  223. package/dist/types/src/components/KanbanContainer.stories.d.ts.map +0 -1
  224. package/dist/types/src/components/KanbanViewEditor.d.ts +0 -8
  225. package/dist/types/src/components/KanbanViewEditor.d.ts.map +0 -1
  226. package/src/capabilities/artifact-definition/index.ts +0 -7
  227. package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -23
  228. package/src/capabilities/blueprint-definition/index.ts +0 -7
  229. package/src/capabilities/operation-resolver/index.ts +0 -7
  230. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -133
  231. package/src/capabilities/react-surface/index.ts +0 -7
  232. package/src/components/KanbanContainer.tsx +0 -86
@@ -1,15 +1,101 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
- CreateKanbanSchema,
4
- KanbanOperation,
5
- PivotColumnAnnotationId,
6
- SettingsSchema
7
- } from "../chunk-NN6JMKIT.mjs";
8
- import "../chunk-HSLMI22Q.mjs";
3
+ __export
4
+ } from "../chunk-HSLMI22Q.mjs";
5
+
6
+ // src/types/constants.ts
7
+ var UNCATEGORIZED_VALUE = "__uncategorized__";
8
+ var UNCATEGORIZED_ATTRIBUTES = {
9
+ title: "Uncategorized",
10
+ color: "neutral"
11
+ };
12
+
13
+ // src/types/Kanban.ts
14
+ var Kanban_exports = {};
15
+ __export(Kanban_exports, {
16
+ Arrangement: () => Arrangement,
17
+ Kanban: () => Kanban,
18
+ make: () => make
19
+ });
20
+ import * as Schema from "effect/Schema";
21
+ import { Annotation, Obj, Ref, Type } from "@dxos/echo";
22
+ import { View } from "@dxos/echo";
23
+ import { FormInputAnnotation, LabelAnnotation } from "@dxos/echo/internal";
24
+ import { ViewAnnotation } from "@dxos/schema";
25
+ var ArrangementColumnEntry = Schema.Struct({
26
+ ids: Schema.Array(Obj.ID),
27
+ hidden: Schema.optional(Schema.Boolean)
28
+ });
29
+ var ArrangementColumns = Schema.Record({
30
+ key: Schema.String,
31
+ value: ArrangementColumnEntry
32
+ }).pipe(FormInputAnnotation.set(false));
33
+ var Arrangement = Schema.Struct({
34
+ order: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),
35
+ columns: ArrangementColumns
36
+ }).pipe(FormInputAnnotation.set(false));
37
+ var Kanban = Schema.Struct({
38
+ name: Schema.optional(Schema.String),
39
+ view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),
40
+ /** Column display order and per-column card ids. */
41
+ arrangement: Arrangement
42
+ }).pipe(Type.object({
43
+ typename: "org.dxos.type.kanban",
44
+ version: "0.1.0"
45
+ }), LabelAnnotation.set([
46
+ "name"
47
+ ]), ViewAnnotation.set(true), Annotation.IconAnnotation.set({
48
+ icon: "ph--kanban--regular",
49
+ hue: "green"
50
+ }));
51
+ var make = (props) => {
52
+ const { name, view, arrangement } = props;
53
+ const order = arrangement?.order ?? [];
54
+ const columns = arrangement?.columns ?? {};
55
+ return Obj.make(Kanban, {
56
+ name,
57
+ view: Ref.make(view),
58
+ arrangement: {
59
+ order,
60
+ columns
61
+ }
62
+ });
63
+ };
64
+
65
+ // src/types/schema.ts
66
+ import * as Schema2 from "effect/Schema";
67
+ import { TypeInputOptionsAnnotation } from "@dxos/plugin-space/types";
68
+ var PivotColumnAnnotationId = /* @__PURE__ */ Symbol.for("@dxos/plugin-kanban/annotation/PivotColumn");
69
+ var SettingsSchema = Schema2.Struct({
70
+ columnFieldId: Schema2.String.annotations({
71
+ title: "Column field"
72
+ })
73
+ });
74
+ var CreateKanbanSchema = Schema2.Struct({
75
+ name: Schema2.optional(Schema2.String),
76
+ // TODO(wittjosiah): This should be a query input instead.
77
+ typename: Schema2.String.pipe(Schema2.annotations({
78
+ title: "Select card type"
79
+ }), TypeInputOptionsAnnotation.set({
80
+ location: [
81
+ "database",
82
+ "runtime"
83
+ ],
84
+ kind: [
85
+ "user"
86
+ ]
87
+ }), Schema2.optional),
88
+ initialPivotColumn: Schema2.optional(Schema2.String.annotations({
89
+ [PivotColumnAnnotationId]: true,
90
+ title: "Pivot column"
91
+ }))
92
+ });
9
93
  export {
10
94
  CreateKanbanSchema,
11
- KanbanOperation,
95
+ Kanban_exports as Kanban,
12
96
  PivotColumnAnnotationId,
13
- SettingsSchema
97
+ SettingsSchema,
98
+ UNCATEGORIZED_ATTRIBUTES,
99
+ UNCATEGORIZED_VALUE
14
100
  };
15
101
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
3
+ "sources": ["../../../../src/types/constants.ts", "../../../../src/types/Kanban.ts", "../../../../src/types/schema.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nexport const UNCATEGORIZED_VALUE = '__uncategorized__' as const;\nexport const UNCATEGORIZED_ATTRIBUTES = {\n title: 'Uncategorized',\n color: 'neutral',\n} as const;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { View } from '@dxos/echo';\nimport { FormInputAnnotation, LabelAnnotation } from '@dxos/echo/internal';\nimport { ViewAnnotation } from '@dxos/schema';\n\n/** Per-column entry (ids order, optional hidden). */\nconst ArrangementColumnEntry = Schema.Struct({\n ids: Schema.Array(Obj.ID),\n hidden: Schema.optional(Schema.Boolean),\n});\n\n/** Keyed by columnValue. */\nconst ArrangementColumns = Schema.Record({\n key: Schema.String,\n value: ArrangementColumnEntry,\n}).pipe(FormInputAnnotation.set(false));\n\n/** Column order and per-column card ids. */\nexport const Arrangement = Schema.Struct({\n order: Schema.Array(Schema.String).pipe(FormInputAnnotation.set(false)),\n columns: ArrangementColumns,\n}).pipe(FormInputAnnotation.set(false));\n\nexport type Arrangement = Schema.Schema.Type<typeof Arrangement>;\n\nexport const Kanban = Schema.Struct({\n name: Schema.optional(Schema.String),\n\n view: Ref.Ref(View.View).pipe(FormInputAnnotation.set(false)),\n\n /** Column display order and per-column card ids. */\n arrangement: Arrangement,\n}).pipe(\n Type.object({\n typename: 'org.dxos.type.kanban',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(true),\n Annotation.IconAnnotation.set({\n icon: 'ph--kanban--regular',\n hue: 'green',\n }),\n);\n\n/** Instance type; use Kanban.Kanban in type position so namespace has .Kanban as type and .KanbanSchema as schema. */\nexport interface Kanban extends Schema.Schema.Type<typeof Kanban> {}\n\ntype MakeProps = Omit<Partial<Obj.MakeProps<typeof Kanban>>, 'view'> & {\n view: View.View;\n};\n\n/**\n * Make a kanban as a view of a data set.\n */\nexport const make = (props: MakeProps): Kanban => {\n const { name, view, arrangement } = props;\n const order = arrangement?.order ?? [];\n const columns = arrangement?.columns ?? {};\n return Obj.make(Kanban, {\n name,\n view: Ref.make(view),\n arrangement: { order, columns },\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { TypeInputOptionsAnnotation } from '@dxos/plugin-space/types';\n\n/**\n * Kanban data model.\n * A Kanban board is a collection of columns, each of which contains a collection of items.\n * The layout of columns and items is controlled by models.\n * The underlying data model may be represented by direct object relationships\n * (e.g., a column object containing an array of ordered items) or projections constructed\n * by the model (e.g., a query of items based on metadata within a column object).\n */\n\n// TODO(wittjosiah): Factor out?\nexport const PivotColumnAnnotationId = Symbol.for('@dxos/plugin-kanban/annotation/PivotColumn');\n\nexport const SettingsSchema = Schema.Struct({\n columnFieldId: Schema.String.annotations({\n title: 'Column field',\n }),\n});\n\nexport const CreateKanbanSchema = Schema.Struct({\n name: Schema.optional(Schema.String),\n // TODO(wittjosiah): This should be a query input instead.\n typename: Schema.String.pipe(\n Schema.annotations({ title: 'Select card type' }),\n TypeInputOptionsAnnotation.set({\n location: ['database', 'runtime'],\n kind: ['user'],\n }),\n Schema.optional,\n ),\n initialPivotColumn: Schema.optional(\n Schema.String.annotations({\n [PivotColumnAnnotationId]: true,\n title: 'Pivot column',\n }),\n ),\n});\n"],
5
+ "mappings": ";;;;;;AAIO,IAAMA,sBAAsB;AAC5B,IAAMC,2BAA2B;EACtCC,OAAO;EACPC,OAAO;AACT;;;ACRA;;;;;;AAIA,YAAYC,YAAY;AAExB,SAASC,YAAYC,KAAKC,KAAKC,YAAY;AAC3C,SAASC,YAAY;AACrB,SAASC,qBAAqBC,uBAAuB;AACrD,SAASC,sBAAsB;AAG/B,IAAMC,yBAAgCC,cAAO;EAC3CC,KAAYC,aAAMC,IAAIC,EAAE;EACxBC,QAAeC,gBAAgBC,cAAO;AACxC,CAAA;AAGA,IAAMC,qBAA4BC,cAAO;EACvCC,KAAYC;EACZC,OAAOb;AACT,CAAA,EAAGc,KAAKC,oBAAoBC,IAAI,KAAA,CAAA;AAGzB,IAAMC,cAAqBhB,cAAO;EACvCiB,OAAcf,aAAaS,aAAM,EAAEE,KAAKC,oBAAoBC,IAAI,KAAA,CAAA;EAChEG,SAASV;AACX,CAAA,EAAGK,KAAKC,oBAAoBC,IAAI,KAAA,CAAA;AAIzB,IAAMI,SAAgBnB,cAAO;EAClCoB,MAAad,gBAAgBK,aAAM;EAEnCU,MAAMC,IAAIA,IAAIC,KAAKA,IAAI,EAAEV,KAAKC,oBAAoBC,IAAI,KAAA,CAAA;;EAGtDS,aAAaR;AACf,CAAA,EAAGH,KACDY,KAAKC,OAAO;EACVC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBd,IAAI;EAAC;CAAO,GAC5Be,eAAef,IAAI,IAAA,GACnBgB,WAAWC,eAAejB,IAAI;EAC5BkB,MAAM;EACNC,KAAK;AACP,CAAA,CAAA;AAaK,IAAMC,OAAO,CAACC,UAAAA;AACnB,QAAM,EAAEhB,MAAMC,MAAMG,YAAW,IAAKY;AACpC,QAAMnB,QAAQO,aAAaP,SAAS,CAAA;AACpC,QAAMC,UAAUM,aAAaN,WAAW,CAAC;AACzC,SAAOf,IAAIgC,KAAKhB,QAAQ;IACtBC;IACAC,MAAMC,IAAIa,KAAKd,IAAAA;IACfG,aAAa;MAAEP;MAAOC;IAAQ;EAChC,CAAA;AACF;;;AClEA,YAAYmB,aAAY;AAExB,SAASC,kCAAkC;AAYpC,IAAMC,0BAA0BC,uBAAOC,IAAI,4CAAA;AAE3C,IAAMC,iBAAwBC,eAAO;EAC1CC,eAAsBC,eAAOC,YAAY;IACvCC,OAAO;EACT,CAAA;AACF,CAAA;AAEO,IAAMC,qBAA4BL,eAAO;EAC9CM,MAAaC,iBAAgBL,cAAM;;EAEnCM,UAAiBN,eAAOO,KACfN,oBAAY;IAAEC,OAAO;EAAmB,CAAA,GAC/CM,2BAA2BC,IAAI;IAC7BC,UAAU;MAAC;MAAY;;IACvBC,MAAM;MAAC;;EACT,CAAA,GACON,gBAAQ;EAEjBO,oBAA2BP,iBAClBL,eAAOC,YAAY;IACxB,CAACP,uBAAAA,GAA0B;IAC3BQ,OAAO;EACT,CAAA,CAAA;AAEJ,CAAA;",
6
+ "names": ["UNCATEGORIZED_VALUE", "UNCATEGORIZED_ATTRIBUTES", "title", "color", "Schema", "Annotation", "Obj", "Ref", "Type", "View", "FormInputAnnotation", "LabelAnnotation", "ViewAnnotation", "ArrangementColumnEntry", "Struct", "ids", "Array", "Obj", "ID", "hidden", "optional", "Boolean", "ArrangementColumns", "Record", "key", "String", "value", "pipe", "FormInputAnnotation", "set", "Arrangement", "order", "columns", "Kanban", "name", "view", "Ref", "View", "arrangement", "Type", "object", "typename", "version", "LabelAnnotation", "ViewAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "make", "props", "Schema", "TypeInputOptionsAnnotation", "PivotColumnAnnotationId", "Symbol", "for", "SettingsSchema", "Struct", "columnFieldId", "String", "annotations", "title", "CreateKanbanSchema", "name", "optional", "typename", "pipe", "TypeInputOptionsAnnotation", "set", "location", "kind", "initialPivotColumn"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KanbanPlugin.d.ts","sourceRoot":"","sources":["../../../src/KanbanPlugin.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAU,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAYrD,eAAO,MAAM,YAAY,4BA0BxB,CAAC"}
1
+ {"version":3,"file":"KanbanPlugin.d.ts","sourceRoot":"","sources":["../../../src/KanbanPlugin.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAc7C,eAAO,MAAM,YAAY,4BAmCxB,CAAC"}
@@ -1,2 +1,2 @@
1
- export * as KanbanBlueprint from './kanban-blueprint';
1
+ export { default as KanbanBlueprint } from './kanban-blueprint';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,22 +1,4 @@
1
- import { type FunctionDefinition } from '@dxos/functions';
2
- export declare const functions: FunctionDefinition[];
3
- export declare const tools: string[];
4
- export declare const Key = "dxos.org/blueprint/kanban";
5
- export declare const make: () => import("@dxos/echo/Obj").Obj<import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
6
- readonly description?: string | undefined;
7
- readonly name: string;
8
- readonly key: string;
9
- readonly instructions: {
10
- readonly source: import("@dxos/echo/internal").Ref<import("@dxos/echo/Entity").OfKind<import("@dxos/echo/internal").EntityKind.Object> & {
11
- readonly content: string;
12
- }>;
13
- readonly inputs?: readonly {
14
- readonly function?: string | undefined;
15
- readonly name: string;
16
- readonly kind?: "function" | "value" | "pass-through" | "retriever" | "query" | "resolver" | "context" | "schema" | undefined;
17
- readonly default?: any;
18
- }[] | undefined;
19
- };
20
- readonly tools: readonly (string & import("effect/Brand").Brand<"ToolId">)[];
21
- }>;
1
+ import { type AppCapabilities } from '@dxos/app-toolkit';
2
+ declare const blueprint: AppCapabilities.BlueprintDefinition;
3
+ export default blueprint;
22
4
  //# sourceMappingURL=kanban-blueprint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kanban-blueprint.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/kanban-blueprint.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,eAAO,MAAM,SAAS,EAAE,kBAAkB,EAAO,CAAC;AAClD,eAAO,MAAM,KAAK,EAAE,MAAM,EAAO,CAAC;AAElC,eAAO,MAAM,GAAG,8BAA8B,CAAC;AAE/C,eAAO,MAAM,IAAI;;;;;;;;uBAWsxC,CAAC;6BAA0C,CAAC;;yBAAkF,CAAC;4BAA6I,CAAC;;;;EADhjD,CAAC"}
1
+ {"version":3,"file":"kanban-blueprint.d.ts","sourceRoot":"","sources":["../../../../src/blueprints/kanban-blueprint.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAkBzD,QAAA,MAAM,SAAS,EAAE,eAAe,CAAC,mBAGhC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -7,6 +7,6 @@ declare global {
7
7
  dispatch?: PromiseIntentDispatcher;
8
8
  }
9
9
  }
10
- declare const _default: (props?: void | undefined) => Effect.Effect<Capability.Capability<any>, never, never>;
10
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<any>, never, never>;
11
11
  export default _default;
12
12
  //# sourceMappingURL=artifact-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-definition.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/artifact-definition.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAgB,UAAU,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAO7F,OAAO,EAAU,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAW7D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,QAAQ,CAAC,EAAE,uBAAuB,CAAC;KACpC;CACF;;AAED,wBAkHE"}
@@ -0,0 +1,6 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import { AppCapabilities } from '@dxos/app-toolkit';
4
+ declare const blueprintDefinition: (props: []) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<AppCapabilities.BlueprintDefinition>>[], Error, Capability.Service>;
5
+ export default blueprintDefinition;
6
+ //# sourceMappingURL=blueprint-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint-definition.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/blueprint-definition.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,QAAA,MAAM,mBAAmB,gJAG8E,CAAC;AAExG,eAAe,mBAAmB,CAAC"}
@@ -1,4 +1,7 @@
1
- export * from './blueprint-definition';
2
- export * from './operation-resolver';
3
- export * from './react-surface';
1
+ import { Capability } from '@dxos/app-framework';
2
+ import { OperationHandlerSet } from '@dxos/operation';
3
+ export declare const BlueprintDefinition: Capability.LazyCapability<[], Capability.Capability<Capability.InterfaceDef<import("@dxos/app-toolkit").AppCapabilities.BlueprintDefinition>>[], Error>;
4
+ export declare const OperationHandler: Capability.LazyCapability<OperationHandlerSet.OperationHandlerSet, Capability.ModuleReturn, Error>;
5
+ export declare const ReactSurface: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").ReactSurface>>, Error>;
6
+ export declare const UndoMappings: Capability.LazyCapability<void, Capability.Capability<Capability.InterfaceDef<import("@dxos/app-framework/Capabilities").UndoMapping[]>>, Error>;
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,yJAAiF,CAAC;AAClH,eAAO,MAAM,gBAAgB,oGAG5B,CAAC;AACF,eAAO,MAAM,YAAY,iJAAmE,CAAC;AAC7F,eAAO,MAAM,YAAY,kJAAmE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capability } from '@dxos/app-framework';
3
+ import type { OperationHandlerSet } from '@dxos/operation';
4
+ declare const _default: (props: OperationHandlerSet.OperationHandlerSet) => Effect.Effect<Capability.ModuleReturn, Error, Capability.Service>;
5
+ export default _default;
6
+ //# sourceMappingURL=operation-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-handler.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/operation-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;;AAI3D,wBAIE"}
@@ -0,0 +1,5 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capabilities, Capability } from '@dxos/app-framework';
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<Capabilities.ReactSurface>>, never, never>;
4
+ export default _default;
5
+ //# sourceMappingURL=react-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-surface.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-surface.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;AAW/D,wBAkEE"}
@@ -0,0 +1,5 @@
1
+ import * as Effect from 'effect/Effect';
2
+ import { Capabilities, Capability } from '@dxos/app-framework';
3
+ declare const _default: (props: void) => Effect.Effect<Capability.Capability<Capability.InterfaceDef<Capabilities.UndoMapping[]>>, never, never>;
4
+ export default _default;
5
+ //# sourceMappingURL=undo-mappings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undo-mappings.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/undo-mappings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAe,MAAM,qBAAqB,CAAC;;AAK5E,wBAwBE"}
@@ -0,0 +1,65 @@
1
+ import { type Atom } from '@effect-atom/atom-react';
2
+ import React, { type ComponentPropsWithoutRef, type ComponentType, type PropsWithChildren } from 'react';
3
+ import { Obj } from '@dxos/echo';
4
+ import type { ProjectionModel } from '@dxos/schema';
5
+ import { type Kanban, type KanbanChangeCallback } from '#types';
6
+ import { type KanbanCardProps } from './KanbanCard';
7
+ import { type KanbanColumnProps } from './KanbanColumn';
8
+ /**
9
+ * Context value for the Kanban board.
10
+ * Items are Echo objects (Obj.Unknown).
11
+ */
12
+ type KanbanBoardContextValue = {
13
+ kanbanId: string;
14
+ projection: ProjectionModel | undefined;
15
+ columnFieldPath: string | undefined;
16
+ change: KanbanChangeCallback<Obj.Unknown>;
17
+ pivotFieldId: string | undefined;
18
+ getPivotAttributes: (columnValue: string) => {
19
+ title: string;
20
+ color: string;
21
+ };
22
+ itemTile?: ComponentType<KanbanCardProps>;
23
+ onCardAdd?: (columnValue: string | undefined) => string | undefined;
24
+ onCardRemove?: (card: Obj.Unknown) => void;
25
+ };
26
+ declare const useKanbanBoard: (consumerName: string) => KanbanBoardContextValue;
27
+ type KanbanBoardRootProps = PropsWithChildren<{
28
+ kanban: Kanban.Kanban;
29
+ /** Required when providing context; Root derives columnFieldPath, pivotFieldId, getPivotAttributes from kanban + projection. */
30
+ projection: ProjectionModel;
31
+ /** Atom of items (e.g. from AtomQuery for DB, or Atom.make([]) for in-memory). */
32
+ items: Atom.Atom<Obj.Unknown[]>;
33
+ onCardAdd?: (columnValue: string | undefined) => string | undefined;
34
+ onCardRemove?: (card: Obj.Unknown) => void;
35
+ } & Pick<KanbanBoardContextValue, 'change' | 'itemTile'> & ComponentPropsWithoutRef<'div'>>;
36
+ export declare const KanbanBoardRoot: {
37
+ ({ children, kanban, projection, items, change, itemTile, onCardAdd, onCardRemove, }: KanbanBoardRootProps): React.JSX.Element;
38
+ displayName: string;
39
+ };
40
+ type KanbanBoardContentProps = {};
41
+ export declare const KanbanBoardContent: React.ForwardRefExoticComponent<Omit<KanbanBoardContentProps, "className"> & {
42
+ classNames?: import("@dxos/ui-types").ClassNameValue;
43
+ } & {
44
+ className?: string;
45
+ children?: React.ReactNode;
46
+ role?: string;
47
+ } & React.RefAttributes<HTMLDivElement>>;
48
+ export declare const KanbanBoard: {
49
+ Root: {
50
+ ({ children, kanban, projection, items, change, itemTile, onCardAdd, onCardRemove, }: KanbanBoardRootProps): React.JSX.Element;
51
+ displayName: string;
52
+ };
53
+ Content: React.ForwardRefExoticComponent<Omit<KanbanBoardContentProps, "className"> & {
54
+ classNames?: import("@dxos/ui-types").ClassNameValue;
55
+ } & {
56
+ className?: string;
57
+ children?: React.ReactNode;
58
+ role?: string;
59
+ } & React.RefAttributes<HTMLDivElement>>;
60
+ Column: React.ForwardRefExoticComponent<KanbanColumnProps & React.RefAttributes<HTMLDivElement>>;
61
+ Card: React.ForwardRefExoticComponent<KanbanCardProps & React.RefAttributes<HTMLDivElement>>;
62
+ };
63
+ export { useKanbanBoard };
64
+ export type { KanbanBoardRootProps as KanbanBoardProps, KanbanCardProps, KanbanColumnProps };
65
+ //# sourceMappingURL=KanbanBoard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanBoard.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanBoard.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,IAAI,EAAmB,MAAM,yBAAyB,CAAC;AAErE,OAAO,KAAK,EAAE,EACZ,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAKpD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,oBAAoB,EAAiD,MAAM,QAAQ,CAAC;AAE/G,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUtE;;;GAGG;AACH,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,QAAA,MAA2B,cAAc,mDASvC,CAAC;AAQH,KAAK,oBAAoB,GAAG,iBAAiB,CAC3C;IACE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,gIAAgI;IAChI,UAAU,EAAE,eAAe,CAAC;IAC5B,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;CAC5C,GAAG,IAAI,CAAC,uBAAuB,EAAE,QAAQ,GAAG,UAAU,CAAC,GACtD,wBAAwB,CAAC,KAAK,CAAC,CAClC,CAAC;AAEF,eAAO,MAAM,eAAe;0FASzB,oBAAoB;;CAmDtB,CAAC;AAUF,KAAK,uBAAuB,GAAG,EAAE,CAAC;AAElC,eAAO,MAAM,kBAAkB;;;;;;wCAqB7B,CAAC;AAQH,eAAO,MAAM,WAAW;;8FA5FrB,oBAAoB;;;;;;;;;;;;CAiGtB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,YAAY,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { type StoryObj } from '@storybook/react-vite';
2
+ import React from 'react';
3
+ declare const meta: {
4
+ title: string;
5
+ component: () => React.JSX.Element;
6
+ decorators: import("@storybook/react").Decorator[];
7
+ parameters: {
8
+ layout: string;
9
+ translations: [{
10
+ readonly 'en-US': {
11
+ readonly [x: string]: {
12
+ readonly 'typename.label': "Kanban";
13
+ readonly 'typename.label_zero': "Kanbans";
14
+ readonly 'typename.label_one': "Kanban";
15
+ readonly 'typename.label_other': "Kanbans";
16
+ readonly 'object-name.placeholder': "New kanban";
17
+ readonly 'add-object.label': "Add kanban";
18
+ readonly 'rename-object.label': "Rename kanban";
19
+ readonly 'delete-object.label': "Delete kanban";
20
+ readonly 'object-deleted.label': "Kanban deleted";
21
+ readonly 'action-menu.label'?: undefined;
22
+ readonly 'plugin.name'?: undefined;
23
+ readonly 'kanban-title.label'?: undefined;
24
+ readonly 'column-title.label'?: undefined;
25
+ readonly 'column-title.placeholder'?: undefined;
26
+ readonly 'add-column.label'?: undefined;
27
+ readonly 'add-card.label'?: undefined;
28
+ readonly 'new-column-name.label'?: undefined;
29
+ readonly 'remove-card.label'?: undefined;
30
+ readonly 'remove-empty-column.label'?: undefined;
31
+ readonly 'column-drag-handle.label'?: undefined;
32
+ readonly 'delete-column.label'?: undefined;
33
+ readonly 'card-field-deleted.label'?: undefined;
34
+ readonly 'card-deleted.label'?: undefined;
35
+ readonly 'select-pivot.placeholder'?: undefined;
36
+ } | {
37
+ readonly 'action-menu.label': "Actions";
38
+ readonly 'plugin.name': "Kanban";
39
+ readonly 'kanban-title.label': "Title";
40
+ readonly 'column-title.label': "Column title";
41
+ readonly 'column-title.placeholder': "New column";
42
+ readonly 'add-column.label': "Add column";
43
+ readonly 'add-card.label': "Add card";
44
+ readonly 'new-column-name.label': "New column name";
45
+ readonly 'remove-card.label': "Remove card";
46
+ readonly 'remove-empty-column.label': "Remove empty column";
47
+ readonly 'column-drag-handle.label': "Drag to rearrange";
48
+ readonly 'delete-column.label': "Delete column";
49
+ readonly 'card-field-deleted.label': "Card field deleted";
50
+ readonly 'card-deleted.label': "Card deleted";
51
+ readonly 'select-pivot.placeholder': "Select a pivot column in board settings to display columns.";
52
+ readonly 'typename.label'?: undefined;
53
+ readonly 'typename.label_zero'?: undefined;
54
+ readonly 'typename.label_one'?: undefined;
55
+ readonly 'typename.label_other'?: undefined;
56
+ readonly 'object-name.placeholder'?: undefined;
57
+ readonly 'add-object.label'?: undefined;
58
+ readonly 'rename-object.label'?: undefined;
59
+ readonly 'delete-object.label'?: undefined;
60
+ readonly 'object-deleted.label'?: undefined;
61
+ };
62
+ };
63
+ }];
64
+ };
65
+ };
66
+ export default meta;
67
+ type Story = StoryObj<typeof meta>;
68
+ /**
69
+ * In-memory board with Echo-shaped objects. No plugin manager, client, or Space.
70
+ */
71
+ export declare const Default: Story;
72
+ //# sourceMappingURL=KanbanBoard.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanBoard.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanBoard.stories.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAgE,MAAM,OAAO,CAAC;AAsHrF,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ2B,CAAC;AAEtC,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { Obj } from '@dxos/echo';
3
+ import { type MosaicTileProps } from '@dxos/react-ui-mosaic';
4
+ export type KanbanCardProps = Pick<MosaicTileProps<Obj.Unknown>, 'location' | 'data' | 'debug'>;
5
+ /**
6
+ * Mosaic Tile for Kanban card.
7
+ * Uses Surface for content; requires plugin manager context.
8
+ */
9
+ export declare const KanbanCard: React.ForwardRefExoticComponent<KanbanCardProps & React.RefAttributes<HTMLDivElement>>;
10
+ //# sourceMappingURL=KanbanCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAI1E,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAiB,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AAQtF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,UAAU,wFA0DrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { type MosaicTileProps } from '@dxos/react-ui-mosaic';
3
+ import { type ColumnStructure } from '#types';
4
+ export type KanbanColumnProps = Pick<MosaicTileProps<ColumnStructure>, 'location' | 'data' | 'debug'>;
5
+ /**
6
+ * Mosaic Tile for Kanban column.
7
+ */
8
+ export declare const KanbanColumn: React.ForwardRefExoticComponent<KanbanColumnProps & React.RefAttributes<HTMLDivElement>>;
9
+ //# sourceMappingURL=KanbanColumn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/KanbanColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAGjE,OAAO,EAAS,KAAK,eAAe,EAAY,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EAAE,KAAK,eAAe,EAAuB,MAAM,QAAQ,CAAC;AAMnE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAEtG;;GAEG;AACH,eAAO,MAAM,YAAY,0FA6CxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './KanbanBoard';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/KanbanBoard/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC"}
@@ -1,3 +1,2 @@
1
- export * from './KanbanContainer';
2
- export * from './KanbanViewEditor';
1
+ export * from './KanbanBoard';
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { type ObjectSurfaceProps } from '@dxos/app-toolkit/ui';
3
+ import { type Kanban } from '#types';
4
+ export type KanbanContainerProps = ObjectSurfaceProps<Kanban.Kanban>;
5
+ export declare const KanbanContainer: ({ role, subject: object }: KanbanContainerProps) => React.JSX.Element | null;
6
+ //# sourceMappingURL=KanbanContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanContainer.d.ts","sourceRoot":"","sources":["../../../../../src/containers/KanbanContainer/KanbanContainer.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAIhE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAS/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,eAAe,GAAI,2BAA2B,oBAAoB,6BAwE9E,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { type Decorator, type StoryObj } from '@storybook/react-vite';
2
+ import React from 'react';
3
+ declare const meta: {
4
+ title: string;
5
+ component: () => React.JSX.Element | null;
6
+ render: () => React.JSX.Element;
7
+ decorators: Decorator[];
8
+ parameters: {
9
+ layout: string;
10
+ translations: [{
11
+ readonly 'en-US': {
12
+ readonly [x: string]: {
13
+ readonly 'typename.label': "Kanban";
14
+ readonly 'typename.label_zero': "Kanbans";
15
+ readonly 'typename.label_one': "Kanban";
16
+ readonly 'typename.label_other': "Kanbans";
17
+ readonly 'object-name.placeholder': "New kanban";
18
+ readonly 'add-object.label': "Add kanban";
19
+ readonly 'rename-object.label': "Rename kanban";
20
+ readonly 'delete-object.label': "Delete kanban";
21
+ readonly 'object-deleted.label': "Kanban deleted";
22
+ readonly 'action-menu.label'?: undefined;
23
+ readonly 'plugin.name'?: undefined;
24
+ readonly 'kanban-title.label'?: undefined;
25
+ readonly 'column-title.label'?: undefined;
26
+ readonly 'column-title.placeholder'?: undefined;
27
+ readonly 'add-column.label'?: undefined;
28
+ readonly 'add-card.label'?: undefined;
29
+ readonly 'new-column-name.label'?: undefined;
30
+ readonly 'remove-card.label'?: undefined;
31
+ readonly 'remove-empty-column.label'?: undefined;
32
+ readonly 'column-drag-handle.label'?: undefined;
33
+ readonly 'delete-column.label'?: undefined;
34
+ readonly 'card-field-deleted.label'?: undefined;
35
+ readonly 'card-deleted.label'?: undefined;
36
+ readonly 'select-pivot.placeholder'?: undefined;
37
+ } | {
38
+ readonly 'action-menu.label': "Actions";
39
+ readonly 'plugin.name': "Kanban";
40
+ readonly 'kanban-title.label': "Title";
41
+ readonly 'column-title.label': "Column title";
42
+ readonly 'column-title.placeholder': "New column";
43
+ readonly 'add-column.label': "Add column";
44
+ readonly 'add-card.label': "Add card";
45
+ readonly 'new-column-name.label': "New column name";
46
+ readonly 'remove-card.label': "Remove card";
47
+ readonly 'remove-empty-column.label': "Remove empty column";
48
+ readonly 'column-drag-handle.label': "Drag to rearrange";
49
+ readonly 'delete-column.label': "Delete column";
50
+ readonly 'card-field-deleted.label': "Card field deleted";
51
+ readonly 'card-deleted.label': "Card deleted";
52
+ readonly 'select-pivot.placeholder': "Select a pivot column in board settings to display columns.";
53
+ readonly 'typename.label'?: undefined;
54
+ readonly 'typename.label_zero'?: undefined;
55
+ readonly 'typename.label_one'?: undefined;
56
+ readonly 'typename.label_other'?: undefined;
57
+ readonly 'object-name.placeholder'?: undefined;
58
+ readonly 'add-object.label'?: undefined;
59
+ readonly 'rename-object.label'?: undefined;
60
+ readonly 'delete-object.label'?: undefined;
61
+ readonly 'object-deleted.label'?: undefined;
62
+ };
63
+ };
64
+ }];
65
+ };
66
+ };
67
+ export default meta;
68
+ type Story = StoryObj<typeof meta>;
69
+ /**
70
+ * Default story using static runtime schema (immutable).
71
+ * Schema mutations are not allowed.
72
+ */
73
+ export declare const Default: Story;
74
+ /**
75
+ * Story variant that uses a mutable database schema (EchoSchema).
76
+ * This allows testing schema mutations like adding/removing fields.
77
+ */
78
+ export declare const MutableSchema: Story;
79
+ //# sourceMappingURL=KanbanContainer.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanContainer.stories.d.ts","sourceRoot":"","sources":["../../../../../src/containers/KanbanContainer/KanbanContainer.stories.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAa,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,KAA2C,MAAM,OAAO,CAAC;AA4IhE,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS+B,CAAC;AAE1C,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,OAAO,EAAE,KAiErB,CAAC;AAEF;;;GAGG;AAKH,eAAO,MAAM,aAAa,EAAE,KA2B3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { KanbanContainer } from './KanbanContainer';
2
+ export default KanbanContainer;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/containers/KanbanContainer/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAe,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { type ObjectSurfaceProps } from '@dxos/app-toolkit/ui';
3
+ import { type Kanban } from '#types';
4
+ export type KanbanViewEditorProps = ObjectSurfaceProps<Kanban.Kanban>;
5
+ export declare const KanbanViewEditor: ({ subject: object }: KanbanViewEditorProps) => React.JSX.Element;
6
+ //# sourceMappingURL=KanbanViewEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanViewEditor.d.ts","sourceRoot":"","sources":["../../../../../src/containers/KanbanViewEditor/KanbanViewEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ/D,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAEtE,eAAO,MAAM,gBAAgB,GAAI,qBAAqB,qBAAqB,sBA2C1E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { KanbanViewEditor } from './KanbanViewEditor';
2
+ export default KanbanViewEditor;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/containers/KanbanViewEditor/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type ComponentType } from 'react';
2
+ export declare const KanbanContainer: ComponentType<any>;
3
+ export declare const KanbanViewEditor: ComponentType<any>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/containers/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAQ,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,GAAG,CAA2C,CAAC;AAC3F,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,GAAG,CAA4C,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './useEchoChangeCallback';
2
+ export * from './useKanbanBoardModel';
3
+ export * from './useKanbanColumnEventHandler';
4
+ export * from './useKanbanItemEventHandler';
5
+ export * from './useProjectionModel';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}