@ixo/editor 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/README.md +160 -136
  2. package/dist/chunk-57TP5N42.mjs +1784 -0
  3. package/dist/chunk-57TP5N42.mjs.map +1 -0
  4. package/dist/chunk-MXVDN3FO.mjs +169 -0
  5. package/dist/chunk-MXVDN3FO.mjs.map +1 -0
  6. package/dist/graphql-client-BmODcqPE.d.mts +135 -0
  7. package/dist/index.d.mts +1328 -0
  8. package/dist/index.mjs +27 -0
  9. package/dist/index.mjs.map +1 -0
  10. package/dist/mantine/index.d.mts +1253 -0
  11. package/dist/mantine/index.mjs +413 -0
  12. package/dist/mantine/index.mjs.map +1 -0
  13. package/dist/shadcn/index.d.mts +6 -0
  14. package/dist/shadcn/index.mjs +27 -0
  15. package/dist/shadcn/index.mjs.map +1 -0
  16. package/fonts/inter-v12-latin/inter-v12-latin-100.woff +0 -0
  17. package/fonts/inter-v12-latin/inter-v12-latin-100.woff2 +0 -0
  18. package/fonts/inter-v12-latin/inter-v12-latin-200.woff +0 -0
  19. package/fonts/inter-v12-latin/inter-v12-latin-200.woff2 +0 -0
  20. package/fonts/inter-v12-latin/inter-v12-latin-300.woff +0 -0
  21. package/fonts/inter-v12-latin/inter-v12-latin-300.woff2 +0 -0
  22. package/fonts/inter-v12-latin/inter-v12-latin-500.woff +0 -0
  23. package/fonts/inter-v12-latin/inter-v12-latin-500.woff2 +0 -0
  24. package/fonts/inter-v12-latin/inter-v12-latin-600.woff +0 -0
  25. package/fonts/inter-v12-latin/inter-v12-latin-600.woff2 +0 -0
  26. package/fonts/inter-v12-latin/inter-v12-latin-700.woff +0 -0
  27. package/fonts/inter-v12-latin/inter-v12-latin-700.woff2 +0 -0
  28. package/fonts/inter-v12-latin/inter-v12-latin-800.woff +0 -0
  29. package/fonts/inter-v12-latin/inter-v12-latin-800.woff2 +0 -0
  30. package/fonts/inter-v12-latin/inter-v12-latin-900.woff +0 -0
  31. package/fonts/inter-v12-latin/inter-v12-latin-900.woff2 +0 -0
  32. package/fonts/inter-v12-latin/inter-v12-latin-regular.woff +0 -0
  33. package/fonts/inter-v12-latin/inter-v12-latin-regular.woff2 +0 -0
  34. package/package.json +32 -10
  35. package/style-core.css +243 -0
  36. package/style-mantine.css +340 -0
  37. package/style-shadcn.css +340 -0
  38. package/style.css +94 -0
  39. package/dist/blocks/index.d.ts +0 -85
  40. package/dist/blocks/index.d.ts.map +0 -1
  41. package/dist/blocks/index.js +0 -50
  42. package/dist/blocks/list/ListBlock.d.ts +0 -59
  43. package/dist/blocks/list/ListBlock.d.ts.map +0 -1
  44. package/dist/blocks/list/ListBlock.js +0 -51
  45. package/dist/blocks/list/ListBlockToolbar.d.ts +0 -9
  46. package/dist/blocks/list/ListBlockToolbar.d.ts.map +0 -1
  47. package/dist/blocks/list/ListBlockToolbar.js +0 -26
  48. package/dist/blocks/list/ListContainer.d.ts +0 -5
  49. package/dist/blocks/list/ListContainer.d.ts.map +0 -1
  50. package/dist/blocks/list/ListContainer.js +0 -10
  51. package/dist/blocks/list/ListGeneralTab.d.ts +0 -11
  52. package/dist/blocks/list/ListGeneralTab.d.ts.map +0 -1
  53. package/dist/blocks/list/ListGeneralTab.js +0 -134
  54. package/dist/blocks/list/ListItem.d.ts +0 -8
  55. package/dist/blocks/list/ListItem.d.ts.map +0 -1
  56. package/dist/blocks/list/ListItem.js +0 -24
  57. package/dist/blocks/list/ListPreviewTab.d.ts +0 -9
  58. package/dist/blocks/list/ListPreviewTab.d.ts.map +0 -1
  59. package/dist/blocks/list/ListPreviewTab.js +0 -51
  60. package/dist/blocks/list/ListSettings.d.ts +0 -3
  61. package/dist/blocks/list/ListSettings.d.ts.map +0 -1
  62. package/dist/blocks/list/ListSettings.js +0 -115
  63. package/dist/blocks/list/ListSettingsTab.d.ts +0 -10
  64. package/dist/blocks/list/ListSettingsTab.d.ts.map +0 -1
  65. package/dist/blocks/list/ListSettingsTab.js +0 -64
  66. package/dist/blocks/list/index.d.ts +0 -3
  67. package/dist/blocks/list/index.d.ts.map +0 -1
  68. package/dist/blocks/list/index.js +0 -5
  69. package/dist/blocks/list/useList.d.ts +0 -5
  70. package/dist/blocks/list/useList.d.ts.map +0 -1
  71. package/dist/blocks/list/useList.js +0 -11
  72. package/dist/blocks/overview/OverviewBlock.d.ts +0 -33
  73. package/dist/blocks/overview/OverviewBlock.d.ts.map +0 -1
  74. package/dist/blocks/overview/OverviewBlock.js +0 -34
  75. package/dist/blocks/overview/OverviewBlockToolbar.d.ts +0 -8
  76. package/dist/blocks/overview/OverviewBlockToolbar.d.ts.map +0 -1
  77. package/dist/blocks/overview/OverviewBlockToolbar.js +0 -16
  78. package/dist/blocks/overview/OverviewGeneralTab.d.ts +0 -11
  79. package/dist/blocks/overview/OverviewGeneralTab.d.ts.map +0 -1
  80. package/dist/blocks/overview/OverviewGeneralTab.js +0 -134
  81. package/dist/blocks/overview/OverviewPreviewTab.d.ts +0 -10
  82. package/dist/blocks/overview/OverviewPreviewTab.d.ts.map +0 -1
  83. package/dist/blocks/overview/OverviewPreviewTab.js +0 -30
  84. package/dist/blocks/overview/OverviewSettings.d.ts +0 -3
  85. package/dist/blocks/overview/OverviewSettings.d.ts.map +0 -1
  86. package/dist/blocks/overview/OverviewSettings.js +0 -114
  87. package/dist/blocks/overview/index.d.ts +0 -3
  88. package/dist/blocks/overview/index.d.ts.map +0 -1
  89. package/dist/blocks/overview/index.js +0 -5
  90. package/dist/blocks/overview/useOverview.d.ts +0 -11
  91. package/dist/blocks/overview/useOverview.d.ts.map +0 -1
  92. package/dist/blocks/overview/useOverview.js +0 -61
  93. package/dist/components/GlobeIcon.d.ts +0 -9
  94. package/dist/components/GlobeIcon.d.ts.map +0 -1
  95. package/dist/components/GlobeIcon.js +0 -20
  96. package/dist/components/IxoEditor.d.ts +0 -14
  97. package/dist/components/IxoEditor.d.ts.map +0 -1
  98. package/dist/components/IxoEditor.js +0 -41
  99. package/dist/components/PenIcon.d.ts +0 -9
  100. package/dist/components/PenIcon.d.ts.map +0 -1
  101. package/dist/components/PenIcon.js +0 -20
  102. package/dist/components/SettingsIcon.d.ts +0 -9
  103. package/dist/components/SettingsIcon.d.ts.map +0 -1
  104. package/dist/components/SettingsIcon.js +0 -21
  105. package/dist/components/SettingsModal/AdvancedTab.d.ts +0 -8
  106. package/dist/components/SettingsModal/AdvancedTab.d.ts.map +0 -1
  107. package/dist/components/SettingsModal/AdvancedTab.js +0 -14
  108. package/dist/components/SettingsModal/DomainPreview.d.ts +0 -7
  109. package/dist/components/SettingsModal/DomainPreview.d.ts.map +0 -1
  110. package/dist/components/SettingsModal/DomainPreview.js +0 -22
  111. package/dist/components/SettingsModal/FeatureASettings.d.ts +0 -3
  112. package/dist/components/SettingsModal/FeatureASettings.d.ts.map +0 -1
  113. package/dist/components/SettingsModal/FeatureASettings.js +0 -74
  114. package/dist/components/SettingsModal/GeneralTab.d.ts +0 -10
  115. package/dist/components/SettingsModal/GeneralTab.d.ts.map +0 -1
  116. package/dist/components/SettingsModal/GeneralTab.js +0 -111
  117. package/dist/components/SettingsModal/PreviewTab.d.ts +0 -8
  118. package/dist/components/SettingsModal/PreviewTab.d.ts.map +0 -1
  119. package/dist/components/SettingsModal/PreviewTab.js +0 -14
  120. package/dist/components/SettingsModal/SettingsModal.d.ts +0 -16
  121. package/dist/components/SettingsModal/SettingsModal.d.ts.map +0 -1
  122. package/dist/components/SettingsModal/SettingsModal.js +0 -61
  123. package/dist/components/SettingsModal/SettingsNavigation.d.ts +0 -15
  124. package/dist/components/SettingsModal/SettingsNavigation.d.ts.map +0 -1
  125. package/dist/components/SettingsModal/SettingsNavigation.js +0 -21
  126. package/dist/components/SettingsModal/index.d.ts +0 -8
  127. package/dist/components/SettingsModal/index.d.ts.map +0 -1
  128. package/dist/components/SettingsModal/index.js +0 -17
  129. package/dist/components/SwitchOption.d.ts +0 -9
  130. package/dist/components/SwitchOption.d.ts.map +0 -1
  131. package/dist/components/SwitchOption.js +0 -45
  132. package/dist/components/icons/ArchiveIcon.d.ts +0 -9
  133. package/dist/components/icons/ArchiveIcon.d.ts.map +0 -1
  134. package/dist/components/icons/ArchiveIcon.js +0 -18
  135. package/dist/components/icons/AudioIcon.d.ts +0 -9
  136. package/dist/components/icons/AudioIcon.d.ts.map +0 -1
  137. package/dist/components/icons/AudioIcon.js +0 -17
  138. package/dist/components/icons/DefaultIcon.d.ts +0 -9
  139. package/dist/components/icons/DefaultIcon.d.ts.map +0 -1
  140. package/dist/components/icons/DefaultIcon.js +0 -17
  141. package/dist/components/icons/DocumentIcon.d.ts +0 -9
  142. package/dist/components/icons/DocumentIcon.d.ts.map +0 -1
  143. package/dist/components/icons/DocumentIcon.js +0 -20
  144. package/dist/components/icons/ImageIcon.d.ts +0 -9
  145. package/dist/components/icons/ImageIcon.d.ts.map +0 -1
  146. package/dist/components/icons/ImageIcon.js +0 -18
  147. package/dist/components/icons/JsonIcon.d.ts +0 -9
  148. package/dist/components/icons/JsonIcon.d.ts.map +0 -1
  149. package/dist/components/icons/JsonIcon.js +0 -19
  150. package/dist/components/icons/PdfIcon.d.ts +0 -9
  151. package/dist/components/icons/PdfIcon.d.ts.map +0 -1
  152. package/dist/components/icons/PdfIcon.js +0 -20
  153. package/dist/components/icons/VideoIcon.d.ts +0 -9
  154. package/dist/components/icons/VideoIcon.d.ts.map +0 -1
  155. package/dist/components/icons/VideoIcon.js +0 -17
  156. package/dist/components/icons/XmlIcon.d.ts +0 -9
  157. package/dist/components/icons/XmlIcon.d.ts.map +0 -1
  158. package/dist/components/icons/XmlIcon.js +0 -19
  159. package/dist/components/icons/index.d.ts +0 -10
  160. package/dist/components/icons/index.d.ts.map +0 -1
  161. package/dist/components/icons/index.js +0 -24
  162. package/dist/components/ui/button.d.ts +0 -11
  163. package/dist/components/ui/button.d.ts.map +0 -1
  164. package/dist/components/ui/button.js +0 -68
  165. package/dist/components/ui/card.d.ts +0 -9
  166. package/dist/components/ui/card.d.ts.map +0 -1
  167. package/dist/components/ui/card.js +0 -56
  168. package/dist/components/ui/dialog.d.ts +0 -16
  169. package/dist/components/ui/dialog.d.ts.map +0 -1
  170. package/dist/components/ui/dialog.js +0 -85
  171. package/dist/components/ui/dropdown-menu.d.ts +0 -26
  172. package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
  173. package/dist/components/ui/dropdown-menu.js +0 -110
  174. package/dist/components/ui/input.d.ts +0 -4
  175. package/dist/components/ui/input.d.ts.map +0 -1
  176. package/dist/components/ui/input.js +0 -41
  177. package/dist/components/ui/label.d.ts +0 -5
  178. package/dist/components/ui/label.d.ts.map +0 -1
  179. package/dist/components/ui/label.js +0 -42
  180. package/dist/components/ui/switch.d.ts +0 -5
  181. package/dist/components/ui/switch.d.ts.map +0 -1
  182. package/dist/components/ui/switch.js +0 -44
  183. package/dist/components/ui/tabs.d.ts +0 -8
  184. package/dist/components/ui/tabs.d.ts.map +0 -1
  185. package/dist/components/ui/tabs.js +0 -54
  186. package/dist/components/ui/toggle-group.d.ts +0 -8
  187. package/dist/components/ui/toggle-group.d.ts.map +0 -1
  188. package/dist/components/ui/toggle-group.js +0 -57
  189. package/dist/components/ui/toggle.d.ts +0 -10
  190. package/dist/components/ui/toggle.d.ts.map +0 -1
  191. package/dist/components/ui/toggle.js +0 -62
  192. package/dist/hooks/useCollaborativeIxoEditor.d.ts +0 -571
  193. package/dist/hooks/useCollaborativeIxoEditor.d.ts.map +0 -1
  194. package/dist/hooks/useCollaborativeIxoEditor.js +0 -127
  195. package/dist/hooks/useCreateIxoEditor.d.ts +0 -568
  196. package/dist/hooks/useCreateIxoEditor.d.ts.map +0 -1
  197. package/dist/hooks/useCreateIxoEditor.js +0 -62
  198. package/dist/hooks/useMatrixProvider.d.ts +0 -13
  199. package/dist/hooks/useMatrixProvider.d.ts.map +0 -1
  200. package/dist/hooks/useMatrixProvider.js +0 -147
  201. package/dist/index.d.ts +0 -12
  202. package/dist/index.d.ts.map +0 -1
  203. package/dist/index.js +0 -24
  204. package/dist/lib/graphql-client.d.ts +0 -27
  205. package/dist/lib/graphql-client.d.ts.map +0 -1
  206. package/dist/lib/graphql-client.js +0 -36
  207. package/dist/lib/graphql-queries.d.ts +0 -31
  208. package/dist/lib/graphql-queries.d.ts.map +0 -1
  209. package/dist/lib/graphql-queries.js +0 -40
  210. package/dist/lib/utils/getMediaTypeIcon.d.ts +0 -20
  211. package/dist/lib/utils/getMediaTypeIcon.d.ts.map +0 -1
  212. package/dist/lib/utils/getMediaTypeIcon.js +0 -96
  213. package/dist/lib/utils/index.d.ts +0 -4
  214. package/dist/lib/utils/index.d.ts.map +0 -1
  215. package/dist/lib/utils/index.js +0 -12
  216. package/dist/lib/utils.d.ts +0 -3
  217. package/dist/lib/utils.d.ts.map +0 -1
  218. package/dist/lib/utils.js +0 -8
  219. package/dist/types/Domain.d.ts +0 -18
  220. package/dist/types/Domain.d.ts.map +0 -1
  221. package/dist/types/Domain.js +0 -2
  222. package/dist/types/index.d.ts +0 -77
  223. package/dist/types/index.d.ts.map +0 -1
  224. package/dist/types/index.js +0 -2
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # IXO Editor
2
2
 
3
- A custom BlockNote editor wrapper built specifically for the IXO team's needs. This package provides a highly customized rich text editing experience built on top of [BlockNote](https://www.blocknotejs.org/).
3
+ A custom BlockNote editor wrapper built specifically for the IXO team's needs. This package provides a highly customized rich text editing experience built on top of [BlockNote](https://www.blocknotejs.org/) with support for both **Shadcn UI** and **Mantine UI**.
4
4
 
5
5
  > **Note**: This package is designed for internal IXO team use and is not intended for public consumption, though it is hosted publicly.
6
6
 
7
7
  ## Features
8
8
 
9
- - 🎨 **Custom Theming**: Light and dark theme support with IXO-specific styling
9
+ - 🎨 **Multi-UI Support**: Choose between Shadcn UI or Mantine UI components
10
10
  - 🔧 **Simplified API**: Wrapped BlockNote functionality with sensible defaults
11
11
  - 📝 **Rich Text Editing**: Full support for headings, lists, code blocks, tables, and more
12
12
  - 🔗 **Custom Blocks**: Built-in custom blocks including dynamic List block for DID data
@@ -14,6 +14,7 @@ A custom BlockNote editor wrapper built specifically for the IXO team's needs. T
14
14
  - 🎯 **TypeScript**: Full TypeScript support with exported types
15
15
  - 🤝 **Collaboration Ready**: Built-in Matrix-based collaborative editing with real-time synchronization
16
16
  - 📱 **Responsive**: Mobile-friendly editor experience
17
+ - 💎 **Complete CSS Bundles**: Self-contained CSS with all dependencies included
17
18
 
18
19
  ## Installation
19
20
 
@@ -25,27 +26,14 @@ yarn add @ixo/editor
25
26
  pnpm add @ixo/editor
26
27
  ```
27
28
 
28
- ### Important: Import Required Styles
29
-
30
- The IXO Editor requires two CSS imports:
31
-
32
- ```tsx
33
- // Import BlockNote's shadcn styles
34
- import '@blocknote/shadcn/style.css';
35
-
36
- // Import IXO Editor custom styles
37
- import '@ixo/editor/style.css';
38
- ```
39
-
40
- **Note for Next.js users**: Make sure to import these styles in your `_app.tsx` or at the component level where you use the editor.
41
-
42
29
  ## Quick Start
43
30
 
31
+ ### Shadcn UI Version (Default)
32
+
44
33
  ```tsx
45
34
  import React from 'react';
46
- import { useCreateIxoEditor, IxoEditor } from '@ixo/editor';
47
- import '@blocknote/shadcn/style.css'; // Import BlockNote shadcn styles
48
- import '@ixo/editor/style.css'; // Import IXO custom styles
35
+ import { useCreateIxoEditor, IxoEditor } from '@ixo/editor/shadcn';
36
+ import '@ixo/editor/style-shadcn.css'; // Complete CSS bundle - no other imports needed!
49
37
 
50
38
  function MyEditor() {
51
39
  const editor = useCreateIxoEditor({
@@ -59,14 +47,6 @@ function MyEditor() {
59
47
  {
60
48
  type: 'paragraph',
61
49
  content: 'Start typing to create amazing content!'
62
- },
63
- {
64
- type: 'list',
65
- props: {
66
- title: 'Dynamic List',
67
- did: 'did:example:123',
68
- fragmentIdentifier: 'sample-data'
69
- }
70
50
  }
71
51
  ]
72
52
  });
@@ -75,11 +55,67 @@ function MyEditor() {
75
55
  }
76
56
  ```
77
57
 
58
+ ### Mantine UI Version
59
+
60
+ ```tsx
61
+ import React from 'react';
62
+ import { MantineProvider } from '@mantine/core';
63
+ import { useCreateIxoEditor, IxoEditor } from '@ixo/editor/mantine';
64
+ import '@ixo/editor/style-mantine.css'; // Complete CSS bundle - no other imports needed!
65
+
66
+ function MyEditor() {
67
+ const editor = useCreateIxoEditor({
68
+ theme: 'light',
69
+ initialContent: [
70
+ {
71
+ type: 'heading',
72
+ content: 'Welcome to IXO Editor',
73
+ props: { level: 1 }
74
+ }
75
+ ]
76
+ });
77
+
78
+ return (
79
+ <MantineProvider>
80
+ <IxoEditor editor={editor} onChange={() => console.log('Content changed')} />
81
+ </MantineProvider>
82
+ );
83
+ }
84
+ ```
85
+
86
+ ## Import Options
87
+
88
+ The package provides flexible import patterns to suit your needs:
89
+
90
+ ### Option 1: UI-Specific Imports (Recommended)
91
+ ```tsx
92
+ // Shadcn version with complete CSS bundle
93
+ import { IxoEditor, useCreateIxoEditor } from '@ixo/editor/shadcn';
94
+ import '@ixo/editor/style-shadcn.css';
95
+
96
+ // Mantine version with complete CSS bundle
97
+ import { IxoEditor, useCreateIxoEditor } from '@ixo/editor/mantine';
98
+ import '@ixo/editor/style-mantine.css';
99
+ ```
100
+
101
+ ### Option 2: Default Import (Shadcn)
102
+ ```tsx
103
+ // Uses Shadcn version by default for backward compatibility
104
+ import { IxoEditor, useCreateIxoEditor } from '@ixo/editor';
105
+ import '@ixo/editor/style.css';
106
+ ```
107
+
108
+ ### CSS Bundle Options
109
+ - `@ixo/editor/style-shadcn.css` - Complete bundle: Inter fonts + Shadcn + IXO styles
110
+ - `@ixo/editor/style-mantine.css` - Complete bundle: Inter fonts + Mantine + IXO styles
111
+ - `@ixo/editor/style.css` - Default bundle (same as shadcn)
112
+ - `@ixo/editor/style-core.css` - Only IXO custom styles (for advanced users)
113
+
78
114
  ## API Reference
79
115
 
80
116
  ### `useCreateIxoEditor`
81
117
 
82
- The main hook for creating an IXO editor instance.
118
+ The main hook for creating an IXO editor instance. Available in both UI versions.
83
119
 
84
120
  ```tsx
85
121
  const editor = useCreateIxoEditor(options?: IxoEditorOptions);
@@ -102,7 +138,7 @@ const editor = useCreateIxoEditor(options?: IxoEditorOptions);
102
138
 
103
139
  ### `IxoEditor` Component
104
140
 
105
- The main editor component.
141
+ The main editor component. Available in both UI versions with identical APIs.
106
142
 
107
143
  ```tsx
108
144
  <IxoEditor
@@ -149,7 +185,7 @@ const editor = useCreateIxoEditor({
149
185
  For real-time collaborative editing, use the `useCreateCollaborativeIxoEditor` hook with Matrix protocol:
150
186
 
151
187
  ```tsx
152
- import { useCreateCollaborativeIxoEditor, IxoEditor } from '@ixo/editor';
188
+ import { useCreateCollaborativeIxoEditor, IxoEditor } from '@ixo/editor/shadcn';
153
189
 
154
190
  function CollaborativeEditor() {
155
191
  const { editor, connectionStatus } = useCreateCollaborativeIxoEditor({
@@ -161,10 +197,8 @@ function CollaborativeEditor() {
161
197
  accessToken: 'your-matrix-access-token',
162
198
  address: 'your-user-address'
163
199
  },
164
- matrix: {
165
- roomId: '!roomId:matrix.org',
166
- baseUrl: 'https://matrix.org'
167
- }
200
+ matrixClient: matrixClient,
201
+ roomId: '!roomId:matrix.org'
168
202
  });
169
203
 
170
204
  return (
@@ -176,29 +210,6 @@ function CollaborativeEditor() {
176
210
  }
177
211
  ```
178
212
 
179
- ### Accessing Editor Content
180
-
181
- ```tsx
182
- function MyEditor() {
183
- const editor = useCreateIxoEditor();
184
-
185
- const handleSave = () => {
186
- if (editor) {
187
- const content = editor.document;
188
- console.log('Editor content:', content);
189
- // Save content to your backend
190
- }
191
- };
192
-
193
- return (
194
- <>
195
- <IxoEditor editor={editor} />
196
- <button onClick={handleSave}>Save</button>
197
- </>
198
- );
199
- }
200
- ```
201
-
202
213
  ### Dark Theme
203
214
 
204
215
  ```tsx
@@ -220,7 +231,7 @@ const editor = useCreateIxoEditor({
220
231
 
221
232
  ## Custom Blocks
222
233
 
223
- The IXO Editor includes two custom blocks for working with IXO ecosystem data:
234
+ The IXO Editor includes custom blocks for working with IXO ecosystem data, available in both UI versions:
224
235
 
225
236
  ### List Block
226
237
 
@@ -230,17 +241,9 @@ The List block displays dynamic data from DID and fragment identifiers, perfect
230
241
 
231
242
  The Overview block provides a comprehensive view of entity data from DID identifiers.
232
243
 
233
- #### Features
234
-
235
- - **Editable Title**: Click the title to edit it inline
236
- - **Settings Panel**: Click the gear icon to configure DID and fragment identifier
237
- - **Dynamic Data**: Ready for integration with your GraphQL API
238
- - **Responsive Design**: Works on all device sizes
239
- - **Theme Support**: Automatically adapts to light/dark themes
240
-
241
244
  #### Usage
242
245
 
243
- The List block can be inserted using the slash menu:
246
+ Both blocks can be inserted using the slash menu:
244
247
 
245
248
  **List Block:**
246
249
  1. Type `/list` in the editor
@@ -274,86 +277,76 @@ editor.insertBlocks([{
274
277
  }], editor.getTextCursorPosition().block, 'after');
275
278
  ```
276
279
 
277
- #### Integration with GraphQL
280
+ ## UI Library Comparison
278
281
 
279
- Replace the mock data in `ListBlock.tsx` with your actual GraphQL call:
282
+ | Feature | Shadcn UI | Mantine UI |
283
+ |---------|-----------|------------|
284
+ | **Bundle Size** | ~46KB CSS | ~173KB CSS |
285
+ | **Custom Blocks** | Full-featured | Minimal (expandable) |
286
+ | **Theming** | Tailwind-based | CSS-in-JS |
287
+ | **Dependencies** | Radix UI primitives | Mantine ecosystem |
288
+ | **Customization** | High (CSS variables) | High (theme provider) |
280
289
 
281
- ```tsx
282
- // Example integration (replace mockListItems in ListBlock.tsx)
283
- const { data, loading, error } = useQuery(GET_DATA_BY_DID, {
284
- variables: {
285
- did: settings.did,
286
- fragmentIdentifier: settings.fragmentIdentifier
287
- },
288
- skip: !settings.did || !settings.fragmentIdentifier
289
- });
290
+ ### When to Choose Shadcn UI
291
+ - You're already using Tailwind CSS
292
+ - You prefer smaller bundle sizes
293
+ - You want the full-featured custom blocks
294
+ - You like CSS variable-based theming
290
295
 
291
- const listItems = data?.items || [];
292
- ```
296
+ ### When to Choose Mantine UI
297
+ - ✅ You're already using Mantine in your app
298
+ - ✅ You prefer component-based theming
299
+ - ✅ You want consistent Mantine design language
300
+ - ✅ You plan to enhance the minimal blocks with Mantine components
293
301
 
294
- ## Styling
302
+ ## Development
295
303
 
296
- The editor comes with default styles, but you can override them using CSS custom properties:
304
+ ### Project Structure
297
305
 
298
- ```css
299
- .ixo-editor {
300
- --bn-colors-editor-background: #f5f5f5;
301
- --bn-colors-editor-text: #333333;
302
- --bn-colors-highlight-colors-blue: #0066cc;
303
- /* ...more custom properties */
304
- }
305
306
  ```
306
-
307
- ## Development
307
+ ixo-editor/
308
+ ├── src/
309
+ │ ├── core/ # Shared infrastructure
310
+ │ │ ├── types.ts # Shared types
311
+ │ │ ├── hooks/ # Matrix provider
312
+ │ │ └── lib/ # GraphQL client & utilities
313
+ │ ├── shadcn/ # Shadcn UI implementation
314
+ │ │ ├── IxoEditor.tsx
315
+ │ │ ├── blocks/ # Full-featured custom blocks
316
+ │ │ ├── components/ # Shadcn UI components
317
+ │ │ ├── hooks/ # Editor hooks
318
+ │ │ └── index.ts # Shadcn exports
319
+ │ ├── mantine/ # Mantine UI implementation
320
+ │ │ ├── IxoEditor.tsx
321
+ │ │ ├── blocks/ # Minimal custom blocks
322
+ │ │ ├── hooks/ # Editor hooks
323
+ │ │ └── index.ts # Mantine exports
324
+ │ ├── styles/ # Source CSS
325
+ │ │ └── ixo-editor.css
326
+ │ └── index.ts # Main entry (defaults to shadcn)
327
+ ├── fonts/ # Inter font files
328
+ ├── dist/ # Built JavaScript
329
+ │ ├── index.js # Main bundle
330
+ │ ├── shadcn/ # Shadcn bundle
331
+ │ └── mantine/ # Mantine bundle
332
+ ├── style*.css # CSS bundles
333
+ └── package.json
334
+ ```
308
335
 
309
336
  ### Building the Package
310
337
 
311
338
  ```bash
312
339
  # Install dependencies
313
- npm install
340
+ pnpm install
314
341
 
315
- # Build the package
316
- npm run build
342
+ # Build the package (creates all bundles)
343
+ pnpm build
317
344
 
318
345
  # Watch for changes during development
319
- npm run dev
346
+ pnpm run dev
320
347
 
321
348
  # Type checking
322
- npm run type-check
323
- ```
324
-
325
- ### Project Structure
326
-
327
- ```
328
- ixo-editor/
329
- ├── src/
330
- │ ├── components/ # React components
331
- │ │ ├── IxoEditor.tsx
332
- │ │ ├── SettingsModal/
333
- │ │ ├── ui/ # Shadcn/UI components
334
- │ │ └── icons/ # Custom icon components
335
- │ ├── hooks/ # Custom hooks
336
- │ │ ├── useCreateIxoEditor.ts
337
- │ │ ├── useCollaborativeIxoEditor.ts
338
- │ │ └── useMatrixProvider.ts
339
- │ ├── blocks/ # Custom block implementations
340
- │ │ ├── list/ # List block
341
- │ │ ├── overview/ # Overview block
342
- │ │ └── index.ts
343
- │ ├── lib/ # Utilities and GraphQL
344
- │ │ ├── graphql-client.ts
345
- │ │ ├── graphql-queries.ts
346
- │ │ └── utils/
347
- │ ├── styles/ # CSS styles
348
- │ │ └── ixo-editor.css
349
- │ ├── types/ # TypeScript types
350
- │ │ ├── index.ts
351
- │ │ └── Domain.ts
352
- │ └── index.ts # Main entry point
353
- ├── dist/ # Built output (generated)
354
- ├── package.json
355
- ├── tsconfig.json
356
- └── README.md
349
+ pnpm run type-check
357
350
  ```
358
351
 
359
352
  ## Requirements
@@ -363,6 +356,41 @@ ixo-editor/
363
356
  - Modern browser with ES2020 support
364
357
  - For collaborative editing: Matrix server access
365
358
 
359
+ ### Additional Requirements by UI Library
360
+
361
+ **For Mantine version:**
362
+ - `@mantine/core` ^8.0.0 (peer dependency)
363
+ - `@mantine/hooks` ^8.0.0 (peer dependency)
364
+
365
+ **For Shadcn version:**
366
+ - Works with existing Tailwind CSS setup
367
+ - No additional peer dependencies
368
+
369
+ ## Migration Guide
370
+
371
+ ### From v1.x to v2.x (Multi-UI)
372
+
373
+ **Before (v1.x):**
374
+ ```tsx
375
+ import { IxoEditor } from '@ixo/editor';
376
+ import '@blocknote/shadcn/style.css';
377
+ import '@ixo/editor/style.css';
378
+ ```
379
+
380
+ **After (v2.x) - Recommended:**
381
+ ```tsx
382
+ // Explicit shadcn version with complete CSS bundle
383
+ import { IxoEditor } from '@ixo/editor/shadcn';
384
+ import '@ixo/editor/style-shadcn.css'; // Single import!
385
+ ```
386
+
387
+ **After (v2.x) - Backward compatible:**
388
+ ```tsx
389
+ // Still works! (defaults to shadcn)
390
+ import { IxoEditor } from '@ixo/editor';
391
+ import '@ixo/editor/style.css'; // Now includes all dependencies
392
+ ```
393
+
366
394
  ## License
367
395
 
368
396
  MIT © IXO Team
@@ -373,17 +401,13 @@ MIT © IXO Team
373
401
 
374
402
  This package is maintained by the IXO development team. For questions or issues, please contact the team directly through internal channels.
375
403
 
376
- ### Deployment
377
-
378
- The package is deployed to npm under the `@ixo/editor` scope. Only team members with appropriate npm permissions can publish new versions.
379
-
380
404
  ### Version Management
381
405
 
382
406
  Follow semantic versioning:
383
407
  - Patch releases (0.0.x): Bug fixes and minor updates
384
408
  - Minor releases (0.x.0): New features that are backward compatible
385
- - Major releases (x.0.0): Breaking changes
409
+ - Major releases (x.0.0): Breaking changes (like the multi-UI restructure)
386
410
 
387
411
  ### Contributing
388
412
 
389
- This is an internal package. All contributions should go through the standard IXO development workflow and review process.
413
+ This is an internal package. All contributions should go through the standard IXO development workflow and review process.