@ixo/editor 1.0.0 → 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.
- package/README.md +160 -136
- package/dist/chunk-57TP5N42.mjs +1784 -0
- package/dist/chunk-57TP5N42.mjs.map +1 -0
- package/dist/chunk-MXVDN3FO.mjs +169 -0
- package/dist/chunk-MXVDN3FO.mjs.map +1 -0
- package/dist/graphql-client-BmODcqPE.d.mts +135 -0
- package/dist/index.d.mts +1328 -0
- package/dist/index.mjs +27 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mantine/index.d.mts +1253 -0
- package/dist/mantine/index.mjs +413 -0
- package/dist/mantine/index.mjs.map +1 -0
- package/dist/shadcn/index.d.mts +6 -0
- package/dist/shadcn/index.mjs +27 -0
- package/dist/shadcn/index.mjs.map +1 -0
- package/fonts/inter-v12-latin/inter-v12-latin-100.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-100.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-200.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-200.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-300.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-300.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-500.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-500.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-600.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-600.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-700.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-700.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-800.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-800.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-900.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-900.woff2 +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-regular.woff +0 -0
- package/fonts/inter-v12-latin/inter-v12-latin-regular.woff2 +0 -0
- package/package.json +32 -9
- package/style-core.css +243 -0
- package/style-mantine.css +340 -0
- package/style-shadcn.css +340 -0
- package/style.css +94 -0
- package/dist/blocks/index.d.ts +0 -85
- package/dist/blocks/index.d.ts.map +0 -1
- package/dist/blocks/index.js +0 -50
- package/dist/blocks/list/ListBlock.d.ts +0 -59
- package/dist/blocks/list/ListBlock.d.ts.map +0 -1
- package/dist/blocks/list/ListBlock.js +0 -51
- package/dist/blocks/list/ListBlockToolbar.d.ts +0 -9
- package/dist/blocks/list/ListBlockToolbar.d.ts.map +0 -1
- package/dist/blocks/list/ListBlockToolbar.js +0 -26
- package/dist/blocks/list/ListContainer.d.ts +0 -5
- package/dist/blocks/list/ListContainer.d.ts.map +0 -1
- package/dist/blocks/list/ListContainer.js +0 -10
- package/dist/blocks/list/ListGeneralTab.d.ts +0 -11
- package/dist/blocks/list/ListGeneralTab.d.ts.map +0 -1
- package/dist/blocks/list/ListGeneralTab.js +0 -134
- package/dist/blocks/list/ListItem.d.ts +0 -8
- package/dist/blocks/list/ListItem.d.ts.map +0 -1
- package/dist/blocks/list/ListItem.js +0 -24
- package/dist/blocks/list/ListPreviewTab.d.ts +0 -9
- package/dist/blocks/list/ListPreviewTab.d.ts.map +0 -1
- package/dist/blocks/list/ListPreviewTab.js +0 -51
- package/dist/blocks/list/ListSettings.d.ts +0 -3
- package/dist/blocks/list/ListSettings.d.ts.map +0 -1
- package/dist/blocks/list/ListSettings.js +0 -115
- package/dist/blocks/list/ListSettingsTab.d.ts +0 -10
- package/dist/blocks/list/ListSettingsTab.d.ts.map +0 -1
- package/dist/blocks/list/ListSettingsTab.js +0 -64
- package/dist/blocks/list/index.d.ts +0 -3
- package/dist/blocks/list/index.d.ts.map +0 -1
- package/dist/blocks/list/index.js +0 -5
- package/dist/blocks/list/useList.d.ts +0 -5
- package/dist/blocks/list/useList.d.ts.map +0 -1
- package/dist/blocks/list/useList.js +0 -11
- package/dist/blocks/overview/OverviewBlock.d.ts +0 -33
- package/dist/blocks/overview/OverviewBlock.d.ts.map +0 -1
- package/dist/blocks/overview/OverviewBlock.js +0 -34
- package/dist/blocks/overview/OverviewBlockToolbar.d.ts +0 -8
- package/dist/blocks/overview/OverviewBlockToolbar.d.ts.map +0 -1
- package/dist/blocks/overview/OverviewBlockToolbar.js +0 -16
- package/dist/blocks/overview/OverviewGeneralTab.d.ts +0 -11
- package/dist/blocks/overview/OverviewGeneralTab.d.ts.map +0 -1
- package/dist/blocks/overview/OverviewGeneralTab.js +0 -134
- package/dist/blocks/overview/OverviewPreviewTab.d.ts +0 -10
- package/dist/blocks/overview/OverviewPreviewTab.d.ts.map +0 -1
- package/dist/blocks/overview/OverviewPreviewTab.js +0 -30
- package/dist/blocks/overview/OverviewSettings.d.ts +0 -3
- package/dist/blocks/overview/OverviewSettings.d.ts.map +0 -1
- package/dist/blocks/overview/OverviewSettings.js +0 -114
- package/dist/blocks/overview/index.d.ts +0 -3
- package/dist/blocks/overview/index.d.ts.map +0 -1
- package/dist/blocks/overview/index.js +0 -5
- package/dist/blocks/overview/useOverview.d.ts +0 -11
- package/dist/blocks/overview/useOverview.d.ts.map +0 -1
- package/dist/blocks/overview/useOverview.js +0 -61
- package/dist/components/GlobeIcon.d.ts +0 -9
- package/dist/components/GlobeIcon.d.ts.map +0 -1
- package/dist/components/GlobeIcon.js +0 -20
- package/dist/components/IxoEditor.d.ts +0 -14
- package/dist/components/IxoEditor.d.ts.map +0 -1
- package/dist/components/IxoEditor.js +0 -41
- package/dist/components/PenIcon.d.ts +0 -9
- package/dist/components/PenIcon.d.ts.map +0 -1
- package/dist/components/PenIcon.js +0 -20
- package/dist/components/SettingsIcon.d.ts +0 -9
- package/dist/components/SettingsIcon.d.ts.map +0 -1
- package/dist/components/SettingsIcon.js +0 -21
- package/dist/components/SettingsModal/AdvancedTab.d.ts +0 -8
- package/dist/components/SettingsModal/AdvancedTab.d.ts.map +0 -1
- package/dist/components/SettingsModal/AdvancedTab.js +0 -14
- package/dist/components/SettingsModal/DomainPreview.d.ts +0 -7
- package/dist/components/SettingsModal/DomainPreview.d.ts.map +0 -1
- package/dist/components/SettingsModal/DomainPreview.js +0 -22
- package/dist/components/SettingsModal/FeatureASettings.d.ts +0 -3
- package/dist/components/SettingsModal/FeatureASettings.d.ts.map +0 -1
- package/dist/components/SettingsModal/FeatureASettings.js +0 -74
- package/dist/components/SettingsModal/GeneralTab.d.ts +0 -10
- package/dist/components/SettingsModal/GeneralTab.d.ts.map +0 -1
- package/dist/components/SettingsModal/GeneralTab.js +0 -111
- package/dist/components/SettingsModal/PreviewTab.d.ts +0 -8
- package/dist/components/SettingsModal/PreviewTab.d.ts.map +0 -1
- package/dist/components/SettingsModal/PreviewTab.js +0 -14
- package/dist/components/SettingsModal/SettingsModal.d.ts +0 -16
- package/dist/components/SettingsModal/SettingsModal.d.ts.map +0 -1
- package/dist/components/SettingsModal/SettingsModal.js +0 -61
- package/dist/components/SettingsModal/SettingsNavigation.d.ts +0 -15
- package/dist/components/SettingsModal/SettingsNavigation.d.ts.map +0 -1
- package/dist/components/SettingsModal/SettingsNavigation.js +0 -21
- package/dist/components/SettingsModal/index.d.ts +0 -8
- package/dist/components/SettingsModal/index.d.ts.map +0 -1
- package/dist/components/SettingsModal/index.js +0 -17
- package/dist/components/SwitchOption.d.ts +0 -9
- package/dist/components/SwitchOption.d.ts.map +0 -1
- package/dist/components/SwitchOption.js +0 -45
- package/dist/components/icons/ArchiveIcon.d.ts +0 -9
- package/dist/components/icons/ArchiveIcon.d.ts.map +0 -1
- package/dist/components/icons/ArchiveIcon.js +0 -18
- package/dist/components/icons/AudioIcon.d.ts +0 -9
- package/dist/components/icons/AudioIcon.d.ts.map +0 -1
- package/dist/components/icons/AudioIcon.js +0 -17
- package/dist/components/icons/DefaultIcon.d.ts +0 -9
- package/dist/components/icons/DefaultIcon.d.ts.map +0 -1
- package/dist/components/icons/DefaultIcon.js +0 -17
- package/dist/components/icons/DocumentIcon.d.ts +0 -9
- package/dist/components/icons/DocumentIcon.d.ts.map +0 -1
- package/dist/components/icons/DocumentIcon.js +0 -20
- package/dist/components/icons/ImageIcon.d.ts +0 -9
- package/dist/components/icons/ImageIcon.d.ts.map +0 -1
- package/dist/components/icons/ImageIcon.js +0 -18
- package/dist/components/icons/JsonIcon.d.ts +0 -9
- package/dist/components/icons/JsonIcon.d.ts.map +0 -1
- package/dist/components/icons/JsonIcon.js +0 -19
- package/dist/components/icons/PdfIcon.d.ts +0 -9
- package/dist/components/icons/PdfIcon.d.ts.map +0 -1
- package/dist/components/icons/PdfIcon.js +0 -20
- package/dist/components/icons/VideoIcon.d.ts +0 -9
- package/dist/components/icons/VideoIcon.d.ts.map +0 -1
- package/dist/components/icons/VideoIcon.js +0 -17
- package/dist/components/icons/XmlIcon.d.ts +0 -9
- package/dist/components/icons/XmlIcon.d.ts.map +0 -1
- package/dist/components/icons/XmlIcon.js +0 -19
- package/dist/components/icons/index.d.ts +0 -10
- package/dist/components/icons/index.d.ts.map +0 -1
- package/dist/components/icons/index.js +0 -24
- package/dist/components/ui/button.d.ts +0 -11
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/button.js +0 -68
- package/dist/components/ui/card.d.ts +0 -9
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/card.js +0 -56
- package/dist/components/ui/dialog.d.ts +0 -16
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/dialog.js +0 -85
- package/dist/components/ui/dropdown-menu.d.ts +0 -26
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/dropdown-menu.js +0 -110
- package/dist/components/ui/input.d.ts +0 -4
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/input.js +0 -41
- package/dist/components/ui/label.d.ts +0 -5
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/label.js +0 -42
- package/dist/components/ui/switch.d.ts +0 -5
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/switch.js +0 -44
- package/dist/components/ui/tabs.d.ts +0 -8
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tabs.js +0 -54
- package/dist/components/ui/toggle-group.d.ts +0 -8
- package/dist/components/ui/toggle-group.d.ts.map +0 -1
- package/dist/components/ui/toggle-group.js +0 -57
- package/dist/components/ui/toggle.d.ts +0 -10
- package/dist/components/ui/toggle.d.ts.map +0 -1
- package/dist/components/ui/toggle.js +0 -62
- package/dist/hooks/useCollaborativeIxoEditor.d.ts +0 -571
- package/dist/hooks/useCollaborativeIxoEditor.d.ts.map +0 -1
- package/dist/hooks/useCollaborativeIxoEditor.js +0 -127
- package/dist/hooks/useCreateIxoEditor.d.ts +0 -568
- package/dist/hooks/useCreateIxoEditor.d.ts.map +0 -1
- package/dist/hooks/useCreateIxoEditor.js +0 -62
- package/dist/hooks/useMatrixProvider.d.ts +0 -13
- package/dist/hooks/useMatrixProvider.d.ts.map +0 -1
- package/dist/hooks/useMatrixProvider.js +0 -147
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -24
- package/dist/lib/graphql-client.d.ts +0 -27
- package/dist/lib/graphql-client.d.ts.map +0 -1
- package/dist/lib/graphql-client.js +0 -36
- package/dist/lib/graphql-queries.d.ts +0 -31
- package/dist/lib/graphql-queries.d.ts.map +0 -1
- package/dist/lib/graphql-queries.js +0 -40
- package/dist/lib/utils/getMediaTypeIcon.d.ts +0 -20
- package/dist/lib/utils/getMediaTypeIcon.d.ts.map +0 -1
- package/dist/lib/utils/getMediaTypeIcon.js +0 -96
- package/dist/lib/utils/index.d.ts +0 -4
- package/dist/lib/utils/index.d.ts.map +0 -1
- package/dist/lib/utils/index.js +0 -12
- package/dist/lib/utils.d.ts +0 -3
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -8
- package/dist/types/Domain.d.ts +0 -18
- package/dist/types/Domain.d.ts.map +0 -1
- package/dist/types/Domain.js +0 -2
- package/dist/types/index.d.ts +0 -77
- package/dist/types/index.d.ts.map +0 -1
- 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
|
-
- 🎨 **
|
|
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 '@
|
|
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
|
-
|
|
165
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
280
|
+
## UI Library Comparison
|
|
278
281
|
|
|
279
|
-
|
|
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
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
302
|
+
## Development
|
|
295
303
|
|
|
296
|
-
|
|
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
|
-
|
|
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
|
-
|
|
340
|
+
pnpm install
|
|
314
341
|
|
|
315
|
-
# Build the package
|
|
316
|
-
|
|
342
|
+
# Build the package (creates all bundles)
|
|
343
|
+
pnpm build
|
|
317
344
|
|
|
318
345
|
# Watch for changes during development
|
|
319
|
-
|
|
346
|
+
pnpm run dev
|
|
320
347
|
|
|
321
348
|
# Type checking
|
|
322
|
-
|
|
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.
|