tiptap-notion-editor 0.5.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 (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +172 -0
  3. package/lib/NotionEditor.d.ts +58 -0
  4. package/lib/components/Draggable/index.d.ts +5 -0
  5. package/lib/components/ToggleButton.d.ts +16 -0
  6. package/lib/components/TooltipWrapper.d.ts +9 -0
  7. package/lib/components/blocks/attachment.d.ts +2 -0
  8. package/lib/components/blocks/code.d.ts +2 -0
  9. package/lib/components/blocks/emoji.d.ts +2 -0
  10. package/lib/components/blocks/image.d.ts +2 -0
  11. package/lib/components/blocks/list.d.ts +4 -0
  12. package/lib/components/blocks/separator.d.ts +2 -0
  13. package/lib/components/blocks/table.d.ts +2 -0
  14. package/lib/components/blocks/tableOfContents.d.ts +2 -0
  15. package/lib/components/blocks/types.d.ts +26 -0
  16. package/lib/components/blocks/typography.d.ts +8 -0
  17. package/lib/components/bubble/BubbleMoreOption.d.ts +5 -0
  18. package/lib/components/bubble/ImageBubbleMenu.d.ts +7 -0
  19. package/lib/components/bubble/IndentButtons.d.ts +5 -0
  20. package/lib/components/bubble/MyBubbleMenu.d.ts +5 -0
  21. package/lib/components/bubble/PickLink.d.ts +6 -0
  22. package/lib/components/bubble/TextTurnInto.d.ts +5 -0
  23. package/lib/components/bubble/icon.d.ts +4 -0
  24. package/lib/components/color/ColorDropdown.d.ts +5 -0
  25. package/lib/components/color/ColorItem.d.ts +5 -0
  26. package/lib/components/color/ColorSubMenu.d.ts +7 -0
  27. package/lib/components/color/HighlightButton.d.ts +15 -0
  28. package/lib/components/color/TextButton.d.ts +9 -0
  29. package/lib/components/color/constant.d.ts +12 -0
  30. package/lib/components/color/icon.d.ts +2 -0
  31. package/lib/components/color/type.d.ts +9 -0
  32. package/lib/components/color/utils.d.ts +5 -0
  33. package/lib/components/extensions/Indent.d.ts +16 -0
  34. package/lib/components/extensions/emoji-picker/EmojiList.d.ts +8 -0
  35. package/lib/components/extensions/emoji-picker/EmojiPicker.d.ts +14 -0
  36. package/lib/components/extensions/emoji-picker/emoji-suggestion.d.ts +3 -0
  37. package/lib/components/extensions/file-handle.d.ts +19 -0
  38. package/lib/components/extensions/global-block-background.d.ts +2 -0
  39. package/lib/components/extensions/index.d.ts +51 -0
  40. package/lib/components/extensions/mention/MentionList.d.ts +11 -0
  41. package/lib/components/extensions/mention/mentionSuggestion.d.ts +11 -0
  42. package/lib/components/extensions/mention/types.d.ts +12 -0
  43. package/lib/components/extensions/slash-command/MenuListGroup.d.ts +9 -0
  44. package/lib/components/extensions/slash-command/SlashMenu.d.ts +11 -0
  45. package/lib/components/extensions/slash-command/items.d.ts +3 -0
  46. package/lib/components/extensions/slash-command/slash-command.d.ts +7 -0
  47. package/lib/components/extensions/slash-command/suggestion.d.ts +3 -0
  48. package/lib/components/icons.d.ts +5 -0
  49. package/lib/components/node/attachment/AttachmentNode.d.ts +38 -0
  50. package/lib/components/node/attachment/AttachmentNodeView.d.ts +3 -0
  51. package/lib/components/node/attachment/AttachmentUploadNode.d.ts +37 -0
  52. package/lib/components/node/attachment/AttachmentUploadNodeView.d.ts +3 -0
  53. package/lib/components/node/attachment/context.d.ts +16 -0
  54. package/lib/components/node/attachment/index.d.ts +3 -0
  55. package/lib/components/node/image/CustomImage.d.ts +1 -0
  56. package/lib/components/node/image/ImageNodeView.d.ts +5 -0
  57. package/lib/components/node/image-upload/drop-zone-content.d.ts +4 -0
  58. package/lib/components/node/image-upload/hooks.d.ts +7 -0
  59. package/lib/components/node/image-upload/image-drop-area.d.ts +15 -0
  60. package/lib/components/node/image-upload/image-preview.d.ts +13 -0
  61. package/lib/components/node/image-upload/image-upload-node-extension.d.ts +58 -0
  62. package/lib/components/node/image-upload/image-upload-node-view.d.ts +2 -0
  63. package/lib/components/node/image-upload/index.d.ts +1 -0
  64. package/lib/components/node/image-upload/types.d.ts +66 -0
  65. package/lib/components/node/table-node/AddRowButton.d.ts +5 -0
  66. package/lib/components/node/table-node/CustomTable.d.ts +1 -0
  67. package/lib/components/node/table-node/TableAddRowColumnHandle.d.ts +7 -0
  68. package/lib/components/node/table-node/TableHandle.d.ts +4 -0
  69. package/lib/components/node/table-node/TableMenuHandle.d.ts +7 -0
  70. package/lib/components/node/table-node/TableSelectionOverlay.d.ts +7 -0
  71. package/lib/components/node/table-node/plugins/add-row-plugin.d.ts +9 -0
  72. package/lib/components/node/table-node/plugins/plugin-keys.d.ts +6 -0
  73. package/lib/components/node/table-node/plugins/table-menu-handle-plugin.d.ts +33 -0
  74. package/lib/components/node/table-node/plugins/table-selection-overlay.d.ts +10 -0
  75. package/lib/components/node/table-node/popover/AlignmentContent.d.ts +4 -0
  76. package/lib/components/node/table-node/popover/CellMenuPopover.d.ts +4 -0
  77. package/lib/components/node/table-node/popover/Colors.d.ts +4 -0
  78. package/lib/components/node/table-node/popover/TableMenuItem.d.ts +11 -0
  79. package/lib/components/node/table-node/popover/TableMenuPopover.d.ts +9 -0
  80. package/lib/components/node/table-node/table-kit.d.ts +2 -0
  81. package/lib/components/node/table-node/utils/getActiveTableCellAlignment.d.ts +14 -0
  82. package/lib/components/node/table-node/utils/getTableColumnMeta.d.ts +15 -0
  83. package/lib/components/node/table-node/utils/getTableContext.d.ts +16 -0
  84. package/lib/components/node/table-node/utils/index.d.ts +17 -0
  85. package/lib/components/node/table-node/utils/table.d.ts +51 -0
  86. package/lib/components/node/toc-node/TableOfContentsNode.d.ts +13 -0
  87. package/lib/components/node/toc-node/TocNodeView.d.ts +9 -0
  88. package/lib/components/toc-sidebar/TocPopover.d.ts +6 -0
  89. package/lib/components/toc-sidebar/TocSidebar.d.ts +9 -0
  90. package/lib/components/toc-sidebar/TocSidebarContent.d.ts +6 -0
  91. package/lib/components/toc-sidebar/TocUIList.d.ts +8 -0
  92. package/lib/components/ui/button.d.ts +10 -0
  93. package/lib/components/ui/command.d.ts +18 -0
  94. package/lib/components/ui/dialog.d.ts +17 -0
  95. package/lib/components/ui/dropdown-menu.d.ts +29 -0
  96. package/lib/components/ui/input-group.d.ts +16 -0
  97. package/lib/components/ui/input.d.ts +3 -0
  98. package/lib/components/ui/popover.d.ts +10 -0
  99. package/lib/components/ui/scroll-area.d.ts +5 -0
  100. package/lib/components/ui/separator.d.ts +4 -0
  101. package/lib/components/ui/textarea.d.ts +3 -0
  102. package/lib/components/ui/tooltip.d.ts +7 -0
  103. package/lib/i18n/context.d.ts +15 -0
  104. package/lib/i18n/index.d.ts +2 -0
  105. package/lib/i18n/messages.d.ts +202 -0
  106. package/lib/index.cjs +9 -0
  107. package/lib/index.cjs.map +1 -0
  108. package/lib/index.d.ts +15 -0
  109. package/lib/index.js +5188 -0
  110. package/lib/index.js.map +1 -0
  111. package/lib/lib/aspect-ratio.d.ts +21 -0
  112. package/lib/lib/collect-file-urls.d.ts +10 -0
  113. package/lib/lib/tiptap-utils.d.ts +173 -0
  114. package/lib/lib/use-event.d.ts +1 -0
  115. package/lib/lib/utils.d.ts +25 -0
  116. package/lib/styles/colors.css +88 -0
  117. package/lib/styles/editor.css +268 -0
  118. package/lib/styles/image-upload.css +256 -0
  119. package/lib/styles/image.css +113 -0
  120. package/lib/styles/index.css +18 -0
  121. package/lib/styles/prosemirror.css +271 -0
  122. package/lib/styles/table.css +243 -0
  123. package/lib/styles/tokens.css +66 -0
  124. package/package.json +114 -0
@@ -0,0 +1,243 @@
1
+ .ProseMirror.notion-editor .tableWrapper {
2
+ overflow-x: auto;
3
+ }
4
+
5
+ .ProseMirror.notion-editor table {
6
+ border-collapse: collapse;
7
+ table-layout: fixed;
8
+ width: 100%;
9
+ overflow: hidden;
10
+ }
11
+
12
+ .ProseMirror.notion-editor td,
13
+ .ProseMirror.notion-editor th {
14
+ vertical-align: top;
15
+ box-sizing: border-box;
16
+ position: relative;
17
+ }
18
+
19
+ .ProseMirror.notion-editor td:not([data-colwidth]):not(.column-resize-dragging),
20
+ .ProseMirror.notion-editor th:not([data-colwidth]):not(.column-resize-dragging) {
21
+ min-width: var(--default-cell-min-width);
22
+ }
23
+
24
+ .ProseMirror.notion-editor .column-resize-handle {
25
+ z-index: 20;
26
+ pointer-events: none;
27
+ background-color: #adf;
28
+ width: 4px;
29
+ position: absolute;
30
+ top: 0;
31
+ bottom: 0;
32
+ right: -2px;
33
+ }
34
+
35
+ .ProseMirror.notion-editor.resize-cursor {
36
+ cursor: ew-resize;
37
+ cursor: col-resize;
38
+ }
39
+
40
+ .ProseMirror.notion-editor .selectedCell:after {
41
+ z-index: 2;
42
+ content: "";
43
+ pointer-events: none;
44
+ background: #c8c8ff66;
45
+ position: absolute;
46
+ inset: 0;
47
+ }
48
+
49
+ :root {
50
+ --tt-table-border-color: var(--color-border);
51
+ --tt-table-selected-bg: #c3bdff66;
52
+ --tt-table-selected-stroke: var(--color-blue-600);
53
+ --tt-table-column-resize-handle-bg: var(--color-indigo-500);
54
+ --tt-table-cell-padding: 0.5rem;
55
+ --tt-table-margin-block: 1.25rem;
56
+ --tt-table-pad-block-start: 1rem;
57
+ --tt-table-pad-block-end: 1.5rem;
58
+ --tt-table-pad-inline-start: 1rem;
59
+ --tt-table-pad-inline-end: 1.5rem;
60
+ }
61
+
62
+ .dark,
63
+ [data-theme="dark"],
64
+ [data-color-scheme="dark"] {
65
+ --tt-table-border-color: var(--color-border);
66
+ --tt-table-selected-bg: #c3bdff33;
67
+ --tt-table-selected-stroke: var(--tt-color-blue-600);
68
+ --tt-table-column-resize-handle-bg: var(--color-indigo-500);
69
+ }
70
+
71
+ .tiptap.notion-editor [data-content-type="table"] {
72
+ margin-block: var(--tt-table-margin-block);
73
+ }
74
+
75
+ .tiptap.notion-editor [data-content-type="table"] .tableWrapper {
76
+ width: 100%;
77
+ margin-left: -1rem;
78
+ padding-block-start: var(--tt-table-pad-block-start);
79
+ padding-block-end: var(--tt-table-pad-block-end);
80
+ padding-inline-start: var(--tt-table-pad-inline-start);
81
+ padding-inline-end: var(--tt-table-pad-inline-end);
82
+ position: relative;
83
+ overflow-y: hidden;
84
+ }
85
+
86
+ .tiptap.notion-editor table {
87
+ word-break: break-word;
88
+ /* width: auto; */
89
+ }
90
+
91
+ .tiptap.notion-editor th,
92
+ .tiptap.notion-editor td {
93
+ border: 1px solid var(--color-border);
94
+ padding: var(--tt-table-cell-padding);
95
+ }
96
+ .tiptap.notion-editor th p,
97
+ .tiptap.notion-editor td p {
98
+ margin: 0px 0px;
99
+ }
100
+
101
+ .tiptap.notion-editor table th {
102
+ background-color: var(--tt-table-header-bg);
103
+ text-align: left;
104
+ font-weight: 700;
105
+ }
106
+
107
+ .ProseMirror.notion-editor .column-resize-handle {
108
+ margin-inline-start: -1px;
109
+ background: var(--tt-table-column-resize-handle-bg);
110
+ cursor: col-resize;
111
+ z-index: 1;
112
+ pointer-events: auto;
113
+ width: 3px;
114
+ height: calc(100% + 2px);
115
+ margin-top: -1px;
116
+ transition: background 0.15s 50ms;
117
+ position: absolute;
118
+ top: 0;
119
+ right: 0;
120
+ }
121
+
122
+ .tiptap.notion-editor td[data-text-align="left"],
123
+ .tiptap.notion-editor td[data-node-text-align="left"],
124
+ .tiptap.notion-editor th[data-text-align="left"],
125
+ .tiptap.notion-editor th[data-node-text-align="left"] {
126
+ text-align: left;
127
+ }
128
+
129
+ .tiptap.notion-editor td[data-text-align="center"],
130
+ .tiptap.notion-editor td[data-node-text-align="center"],
131
+ .tiptap.notion-editor th[data-text-align="center"],
132
+ .tiptap.notion-editor th[data-node-text-align="center"] {
133
+ text-align: center;
134
+ }
135
+
136
+ .tiptap.notion-editor td[data-text-align="right"],
137
+ .tiptap.notion-editor td[data-node-text-align="right"],
138
+ .tiptap.notion-editor th[data-text-align="right"],
139
+ .tiptap.notion-editor th[data-node-text-align="right"] {
140
+ text-align: right;
141
+ }
142
+
143
+ .tiptap.notion-editor td[data-text-align="justify"],
144
+ .tiptap.notion-editor td[data-node-text-align="justify"],
145
+ .tiptap.notion-editor th[data-text-align="justify"],
146
+ .tiptap.notion-editor th[data-node-text-align="justify"] {
147
+ text-align: justify;
148
+ }
149
+
150
+ .tiptap.notion-editor td[data-vertical-align="top"],
151
+ .tiptap.notion-editor td[data-node-vertical-align="top"],
152
+ .tiptap.notion-editor th[data-vertical-align="top"],
153
+ .tiptap.notion-editor th[data-node-vertical-align="top"] {
154
+ vertical-align: top;
155
+ }
156
+
157
+ .tiptap.notion-editor td[data-vertical-align="middle"],
158
+ .tiptap.notion-editor td[data-node-vertical-align="middle"],
159
+ .tiptap.notion-editor th[data-vertical-align="middle"],
160
+ .tiptap.notion-editor th[data-node-vertical-align="middle"] {
161
+ vertical-align: middle;
162
+ }
163
+
164
+ .tiptap.notion-editor td[data-vertical-align="bottom"],
165
+ .tiptap.notion-editor td[data-node-vertical-align="bottom"],
166
+ .tiptap.notion-editor th[data-vertical-align="bottom"],
167
+ .tiptap.notion-editor th[data-node-vertical-align="bottom"] {
168
+ vertical-align: bottom;
169
+ }
170
+
171
+ .tiptap.notion-editor [data-content-type="table"] td[data-text-align="left"],
172
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-text-align="left"],
173
+ .tiptap.notion-editor [data-content-type="table"] th[data-text-align="left"],
174
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-text-align="left"] {
175
+ text-align: left;
176
+ }
177
+
178
+ .tiptap.notion-editor [data-content-type="table"] td[data-text-align="center"],
179
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-text-align="center"],
180
+ .tiptap.notion-editor [data-content-type="table"] th[data-text-align="center"],
181
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-text-align="center"] {
182
+ text-align: center;
183
+ }
184
+
185
+ .tiptap.notion-editor [data-content-type="table"] td[data-text-align="right"],
186
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-text-align="right"],
187
+ .tiptap.notion-editor [data-content-type="table"] th[data-text-align="right"],
188
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-text-align="right"] {
189
+ text-align: right;
190
+ }
191
+
192
+ .tiptap.notion-editor [data-content-type="table"] td[data-text-align="justify"],
193
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-text-align="justify"],
194
+ .tiptap.notion-editor [data-content-type="table"] th[data-text-align="justify"],
195
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-text-align="justify"] {
196
+ text-align: justify;
197
+ }
198
+
199
+ .tiptap.notion-editor [data-content-type="table"] td[data-vertical-align="top"],
200
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-vertical-align="top"],
201
+ .tiptap.notion-editor [data-content-type="table"] th[data-vertical-align="top"],
202
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-vertical-align="top"] {
203
+ vertical-align: top;
204
+ }
205
+
206
+ .tiptap.notion-editor [data-content-type="table"] td[data-vertical-align="middle"],
207
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-vertical-align="middle"],
208
+ .tiptap.notion-editor [data-content-type="table"] th[data-vertical-align="middle"],
209
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-vertical-align="middle"] {
210
+ vertical-align: middle;
211
+ }
212
+
213
+ .tiptap.notion-editor [data-content-type="table"] td[data-vertical-align="bottom"],
214
+ .tiptap.notion-editor [data-content-type="table"] td[data-node-vertical-align="bottom"],
215
+ .tiptap.notion-editor [data-content-type="table"] th[data-vertical-align="bottom"],
216
+ .tiptap.notion-editor [data-content-type="table"] th[data-node-vertical-align="bottom"] {
217
+ vertical-align: bottom;
218
+ }
219
+
220
+ .ProseMirror.notion-editor td,
221
+ .ProseMirror.notion-editor th {
222
+ min-width: auto !important;
223
+ }
224
+
225
+ .ProseMirror.notion-editor td:not([colwidth]):not(.column-resize-dragging),
226
+ .ProseMirror.notion-editor th:not([colwidth]):not(.column-resize-dragging) {
227
+ min-width: var(--default-cell-min-width) !important;
228
+ }
229
+
230
+ .tiptap-table-dropcursor {
231
+ z-index: 20;
232
+ background-color: var(--tt-table-column-resize-handle-bg);
233
+ pointer-events: none;
234
+ position: absolute;
235
+ }
236
+
237
+ .table-cell-dragging-source {
238
+ z-index: 2;
239
+ content: "";
240
+ background: #c8c8ff66;
241
+ position: absolute;
242
+ inset: 0;
243
+ }
@@ -0,0 +1,66 @@
1
+ /*
2
+ * Token nội bộ của editor.
3
+ *
4
+ * Các file style và node view trong package tham chiếu một số biến `--tt-*`
5
+ * theo quy ước của Tiptap UI. Chúng vốn nằm trong `_variables.scss` của
6
+ * template gốc — file đó chưa bao giờ được import, nên các biến này rỗng và
7
+ * khối image-upload hiển thị sai. Ở đây chỉ khai báo đúng những token thực sự
8
+ * được tham chiếu, không bê nguyên 193 biến của template.
9
+ *
10
+ * Token *bố cục* (radius, spacing, indent, table) là hằng số của editor.
11
+ * Token *màu* fallback về biến theme của app khi có, để editor ăn theo màu
12
+ * thương hiệu thay vì ép màu tím mặc định của Tiptap.
13
+ */
14
+
15
+ :root {
16
+ /* Brand — dùng cho vùng drop ảnh và trạng thái active */
17
+ --tt-brand-color-50: var(--color-primary-50, rgba(239, 238, 255, 1));
18
+ --tt-brand-color-400: var(--color-primary-400, rgba(122, 82, 255, 1));
19
+ --tt-brand-color-500: var(--color-primary, rgba(98, 41, 255, 1));
20
+ --tt-brand-color-900: var(--color-primary-900, rgba(43, 25, 102, 1));
21
+
22
+ --tt-color-blue-600: rgba(41, 115, 216, 1);
23
+
24
+ /* Gray — thang alpha (a-) chồng lên nền, thang đặc dùng cho viền */
25
+ --tt-gray-light-a-200: rgba(37, 39, 45, 0.1);
26
+ --tt-gray-light-a-300: rgba(47, 50, 55, 0.2);
27
+ --tt-gray-light-a-400: rgba(40, 44, 51, 0.42);
28
+ --tt-gray-light-a-700: rgba(35, 37, 42, 0.87);
29
+ --tt-gray-light-300: rgba(213, 214, 215, 1);
30
+
31
+ --tt-gray-dark-a-200: rgba(238, 238, 246, 0.11);
32
+ --tt-gray-dark-a-300: rgba(239, 239, 245, 0.22);
33
+ --tt-gray-dark-a-400: rgba(244, 244, 255, 0.37);
34
+ --tt-gray-dark-a-700: rgba(251, 251, 254, 0.75);
35
+ --tt-gray-dark-300: rgba(70, 70, 73, 1);
36
+
37
+ /*
38
+ * Nền header bảng. Trước đây lấy thẳng --color-accent của app chủ, nhưng
39
+ * nhiều app map token đó thành màu thương hiệu bão hoà chứ không phải nền
40
+ * dịu như quy ước shadcn, và bảng biến thành một khối màu chói.
41
+ * App chủ muốn đổi thì ghi đè đúng biến này.
42
+ */
43
+ --tt-table-header-bg: var(--tt-gray-light-a-200);
44
+
45
+ /*
46
+ * Nền item của menu khi rê chuột hoặc đang được chọn bằng bàn phím.
47
+ * Dùng token riêng thay vì --color-muted/--color-accent của app chủ: nhiều
48
+ * app map hai token đó thành xám đậm hoặc màu thương hiệu bão hoà, và menu
49
+ * biến thành một khối màu đặc.
50
+ */
51
+ --tt-menu-item-hover-bg: var(--tt-gray-light-a-200);
52
+
53
+ --tt-radius-md: 0.5rem;
54
+ --tt-radius-lg: 0.75rem;
55
+
56
+ --white: rgba(255, 255, 255, 1);
57
+ --black: rgba(0, 0, 0, 1);
58
+ }
59
+
60
+
61
+ .dark,
62
+ [data-theme="dark"],
63
+ [data-color-scheme="dark"] {
64
+ --tt-table-header-bg: var(--tt-gray-dark-a-200);
65
+ --tt-menu-item-hover-bg: var(--tt-gray-dark-a-200);
66
+ }
package/package.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "name": "tiptap-notion-editor",
3
+ "version": "0.5.0",
4
+ "type": "module",
5
+ "description": "Notion-style rich text editor built on Tiptap 3 — slash commands, drag handles, tables, image upload, math and table of contents.",
6
+ "license": "MIT",
7
+ "sideEffects": [
8
+ "*.css"
9
+ ],
10
+ "main": "./lib/index.cjs",
11
+ "module": "./lib/index.js",
12
+ "types": "./lib/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "import": {
16
+ "types": "./lib/index.d.ts",
17
+ "default": "./lib/index.js"
18
+ },
19
+ "require": {
20
+ "types": "./lib/index.d.ts",
21
+ "default": "./lib/index.cjs"
22
+ }
23
+ },
24
+ "./style.css": "./lib/styles/index.css",
25
+ "./package.json": "./package.json"
26
+ },
27
+ "files": [
28
+ "lib",
29
+ "README.md",
30
+ "LICENSE"
31
+ ],
32
+ "engines": {
33
+ "node": ">=18"
34
+ },
35
+ "scripts": {
36
+ "build": "vite build && node scripts/copy-styles.mjs",
37
+ "dev": "vite build --watch",
38
+ "type-check": "tsc --noEmit",
39
+ "prepublishOnly": "npm run build"
40
+ },
41
+ "peerDependencies": {
42
+ "@tiptap/core": "^3.20.0",
43
+ "@tiptap/pm": "^3.20.0",
44
+ "@tiptap/react": "^3.20.0",
45
+ "react": ">=18",
46
+ "react-dom": ">=18"
47
+ },
48
+ "dependencies": {
49
+ "@floating-ui/dom": "^1.8.0",
50
+ "@floating-ui/react": "^0.27.20",
51
+ "@tanstack/react-virtual": "^3.14.9",
52
+ "@tiptap/extension-blockquote": "^3.20.0",
53
+ "@tiptap/extension-bold": "^3.20.0",
54
+ "@tiptap/extension-code": "^3.20.0",
55
+ "@tiptap/extension-code-block": "^3.20.0",
56
+ "@tiptap/extension-code-block-lowlight": "^3.20.0",
57
+ "@tiptap/extension-document": "^3.20.0",
58
+ "@tiptap/extension-drag-handle-react": "^3.20.0",
59
+ "@tiptap/extension-emoji": "^3.20.0",
60
+ "@tiptap/extension-file-handler": "^3.20.0",
61
+ "@tiptap/extension-hard-break": "^3.30.1",
62
+ "@tiptap/extension-heading": "^3.20.0",
63
+ "@tiptap/extension-highlight": "^3.20.0",
64
+ "@tiptap/extension-horizontal-rule": "^3.20.0",
65
+ "@tiptap/extension-image": "^3.20.0",
66
+ "@tiptap/extension-italic": "^3.20.0",
67
+ "@tiptap/extension-link": "^3.20.0",
68
+ "@tiptap/extension-list": "^3.20.0",
69
+ "@tiptap/extension-mathematics": "^3.20.0",
70
+ "@tiptap/extension-mention": "^3.20.0",
71
+ "@tiptap/extension-paragraph": "^3.20.0",
72
+ "@tiptap/extension-placeholder": "^3.20.0",
73
+ "@tiptap/extension-strike": "^3.20.0",
74
+ "@tiptap/extension-subscript": "^3.20.0",
75
+ "@tiptap/extension-superscript": "^3.20.0",
76
+ "@tiptap/extension-table": "^3.20.0",
77
+ "@tiptap/extension-table-of-contents": "^3.20.0",
78
+ "@tiptap/extension-text": "^3.20.0",
79
+ "@tiptap/extension-text-align": "^3.20.0",
80
+ "@tiptap/extension-text-style": "^3.20.0",
81
+ "@tiptap/extension-underline": "^3.20.0",
82
+ "@tiptap/extension-unique-id": "^3.20.0",
83
+ "@tiptap/extensions": "^3.20.0",
84
+ "@tiptap/suggestion": "^3.20.0",
85
+ "class-variance-authority": "^0.7.1",
86
+ "clsx": "^2.1.1",
87
+ "cmdk": "^1.1.1",
88
+ "katex": "^0.17.0",
89
+ "lowlight": "^3.3.0",
90
+ "lucide-react": "^0.577.0",
91
+ "radix-ui": "^1.6.7",
92
+ "tailwind-merge": "^3.4.0",
93
+ "uuid": "^13.0.0"
94
+ },
95
+ "devDependencies": {
96
+ "@types/node": "^24.10.1",
97
+ "@types/react": "^19.2.7",
98
+ "@types/react-dom": "^19.2.3",
99
+ "@vitejs/plugin-react": "^5.1.1",
100
+ "react": "^19.2.0",
101
+ "react-dom": "^19.2.0",
102
+ "typescript": "~5.9.3",
103
+ "vite": "^7.3.1",
104
+ "vite-plugin-dts": "^4.5.4"
105
+ },
106
+ "keywords": [
107
+ "tiptap",
108
+ "editor",
109
+ "notion",
110
+ "wysiwyg",
111
+ "rich-text",
112
+ "react"
113
+ ]
114
+ }