@nuxt/ui 4.2.1 → 4.4.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 (463) hide show
  1. package/.nuxt/ui.css +2 -0
  2. package/README.md +6 -5
  3. package/cli/package.json +1 -1
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +4 -4
  6. package/dist/runtime/components/Accordion.d.vue.ts +16 -7
  7. package/dist/runtime/components/Accordion.vue +2 -1
  8. package/dist/runtime/components/Accordion.vue.d.ts +16 -7
  9. package/dist/runtime/components/Alert.d.vue.ts +4 -4
  10. package/dist/runtime/components/Alert.vue.d.ts +4 -4
  11. package/dist/runtime/components/App.d.vue.ts +10 -6
  12. package/dist/runtime/components/App.vue.d.ts +10 -6
  13. package/dist/runtime/components/AuthForm.d.vue.ts +53 -11
  14. package/dist/runtime/components/AuthForm.vue.d.ts +53 -11
  15. package/dist/runtime/components/Avatar.d.vue.ts +2 -2
  16. package/dist/runtime/components/Avatar.vue.d.ts +2 -2
  17. package/dist/runtime/components/AvatarGroup.d.vue.ts +1 -1
  18. package/dist/runtime/components/AvatarGroup.vue.d.ts +1 -1
  19. package/dist/runtime/components/Badge.d.vue.ts +2 -2
  20. package/dist/runtime/components/Badge.vue.d.ts +2 -2
  21. package/dist/runtime/components/Banner.d.vue.ts +5 -6
  22. package/dist/runtime/components/Banner.vue +49 -23
  23. package/dist/runtime/components/Banner.vue.d.ts +5 -6
  24. package/dist/runtime/components/BlogPost.d.vue.ts +2 -2
  25. package/dist/runtime/components/BlogPost.vue +0 -1
  26. package/dist/runtime/components/BlogPost.vue.d.ts +2 -2
  27. package/dist/runtime/components/BlogPosts.d.vue.ts +10 -6
  28. package/dist/runtime/components/BlogPosts.vue.d.ts +10 -6
  29. package/dist/runtime/components/Breadcrumb.d.vue.ts +10 -6
  30. package/dist/runtime/components/Breadcrumb.vue.d.ts +10 -6
  31. package/dist/runtime/components/Button.d.vue.ts +1 -1
  32. package/dist/runtime/components/Button.vue.d.ts +1 -1
  33. package/dist/runtime/components/Calendar.d.vue.ts +17 -12
  34. package/dist/runtime/components/Calendar.vue +13 -2
  35. package/dist/runtime/components/Calendar.vue.d.ts +17 -12
  36. package/dist/runtime/components/Card.d.vue.ts +1 -1
  37. package/dist/runtime/components/Card.vue.d.ts +1 -1
  38. package/dist/runtime/components/Carousel.d.vue.ts +14 -10
  39. package/dist/runtime/components/Carousel.vue +22 -0
  40. package/dist/runtime/components/Carousel.vue.d.ts +14 -10
  41. package/dist/runtime/components/ChangelogVersion.d.vue.ts +2 -2
  42. package/dist/runtime/components/ChangelogVersion.vue +0 -1
  43. package/dist/runtime/components/ChangelogVersion.vue.d.ts +2 -2
  44. package/dist/runtime/components/ChangelogVersions.d.vue.ts +14 -8
  45. package/dist/runtime/components/ChangelogVersions.vue +3 -2
  46. package/dist/runtime/components/ChangelogVersions.vue.d.ts +14 -8
  47. package/dist/runtime/components/ChatMessage.d.vue.ts +2 -2
  48. package/dist/runtime/components/ChatMessage.vue.d.ts +2 -2
  49. package/dist/runtime/components/ChatMessages.d.vue.ts +5 -5
  50. package/dist/runtime/components/ChatMessages.vue.d.ts +5 -5
  51. package/dist/runtime/components/ChatPalette.d.vue.ts +1 -1
  52. package/dist/runtime/components/ChatPalette.vue.d.ts +1 -1
  53. package/dist/runtime/components/ChatPrompt.d.vue.ts +3 -3
  54. package/dist/runtime/components/ChatPrompt.vue.d.ts +3 -3
  55. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +7 -7
  56. package/dist/runtime/components/ChatPromptSubmit.vue +1 -20
  57. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +7 -7
  58. package/dist/runtime/components/Checkbox.d.vue.ts +2 -2
  59. package/dist/runtime/components/Checkbox.vue.d.ts +2 -2
  60. package/dist/runtime/components/CheckboxGroup.d.vue.ts +12 -8
  61. package/dist/runtime/components/CheckboxGroup.vue.d.ts +12 -8
  62. package/dist/runtime/components/Chip.d.vue.ts +2 -2
  63. package/dist/runtime/components/Chip.vue.d.ts +2 -2
  64. package/dist/runtime/components/Collapsible.d.vue.ts +2 -2
  65. package/dist/runtime/components/Collapsible.vue.d.ts +2 -2
  66. package/dist/runtime/components/ColorPicker.d.vue.ts +2 -2
  67. package/dist/runtime/components/ColorPicker.vue.d.ts +2 -2
  68. package/dist/runtime/components/CommandPalette.d.vue.ts +31 -13
  69. package/dist/runtime/components/CommandPalette.vue +26 -18
  70. package/dist/runtime/components/CommandPalette.vue.d.ts +31 -13
  71. package/dist/runtime/components/Container.d.vue.ts +1 -1
  72. package/dist/runtime/components/Container.vue.d.ts +1 -1
  73. package/dist/runtime/components/ContextMenu.d.vue.ts +17 -9
  74. package/dist/runtime/components/ContextMenu.vue.d.ts +17 -9
  75. package/dist/runtime/components/ContextMenuContent.d.vue.ts +11 -7
  76. package/dist/runtime/components/ContextMenuContent.vue +12 -13
  77. package/dist/runtime/components/ContextMenuContent.vue.d.ts +11 -7
  78. package/dist/runtime/components/DashboardGroup.d.vue.ts +2 -2
  79. package/dist/runtime/components/DashboardGroup.vue.d.ts +2 -2
  80. package/dist/runtime/components/DashboardNavbar.d.vue.ts +5 -5
  81. package/dist/runtime/components/DashboardNavbar.vue.d.ts +5 -5
  82. package/dist/runtime/components/DashboardPanel.d.vue.ts +2 -2
  83. package/dist/runtime/components/DashboardPanel.vue.d.ts +2 -2
  84. package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +1 -1
  85. package/dist/runtime/components/DashboardResizeHandle.vue.d.ts +1 -1
  86. package/dist/runtime/components/DashboardSearch.d.vue.ts +10 -6
  87. package/dist/runtime/components/DashboardSearch.vue +3 -1
  88. package/dist/runtime/components/DashboardSearch.vue.d.ts +10 -6
  89. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +5 -5
  90. package/dist/runtime/components/DashboardSearchButton.vue +1 -20
  91. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +5 -5
  92. package/dist/runtime/components/DashboardSidebar.d.vue.ts +13 -9
  93. package/dist/runtime/components/DashboardSidebar.vue.d.ts +13 -9
  94. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +5 -5
  95. package/dist/runtime/components/DashboardSidebarCollapse.vue +1 -20
  96. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +5 -5
  97. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +5 -5
  98. package/dist/runtime/components/DashboardSidebarToggle.vue +1 -20
  99. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +5 -5
  100. package/dist/runtime/components/DashboardToolbar.d.vue.ts +1 -1
  101. package/dist/runtime/components/DashboardToolbar.vue.d.ts +1 -1
  102. package/dist/runtime/components/Drawer.d.vue.ts +3 -3
  103. package/dist/runtime/components/Drawer.vue.d.ts +3 -3
  104. package/dist/runtime/components/DropdownMenu.d.vue.ts +17 -9
  105. package/dist/runtime/components/DropdownMenu.vue.d.ts +17 -9
  106. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +11 -7
  107. package/dist/runtime/components/DropdownMenuContent.vue +12 -13
  108. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +11 -7
  109. package/dist/runtime/components/Editor.d.vue.ts +101 -0
  110. package/dist/runtime/components/Editor.vue +199 -0
  111. package/dist/runtime/components/Editor.vue.d.ts +101 -0
  112. package/dist/runtime/components/EditorDragHandle.d.vue.ts +68 -0
  113. package/dist/runtime/components/EditorDragHandle.vue +127 -0
  114. package/dist/runtime/components/EditorDragHandle.vue.d.ts +68 -0
  115. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +41 -0
  116. package/dist/runtime/components/EditorEmojiMenu.vue +73 -0
  117. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +41 -0
  118. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +49 -0
  119. package/dist/runtime/components/EditorMentionMenu.vue +79 -0
  120. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +49 -0
  121. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +58 -0
  122. package/dist/runtime/components/EditorSuggestionMenu.vue +83 -0
  123. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +58 -0
  124. package/dist/runtime/components/EditorToolbar.d.vue.ts +92 -0
  125. package/dist/runtime/components/EditorToolbar.vue +242 -0
  126. package/dist/runtime/components/EditorToolbar.vue.d.ts +92 -0
  127. package/dist/runtime/components/Empty.d.vue.ts +1 -1
  128. package/dist/runtime/components/Empty.vue.d.ts +1 -1
  129. package/dist/runtime/components/Error.d.vue.ts +6 -5
  130. package/dist/runtime/components/Error.vue +1 -1
  131. package/dist/runtime/components/Error.vue.d.ts +6 -5
  132. package/dist/runtime/components/FieldGroup.d.vue.ts +2 -2
  133. package/dist/runtime/components/FieldGroup.vue.d.ts +2 -2
  134. package/dist/runtime/components/FileUpload.d.vue.ts +13 -9
  135. package/dist/runtime/components/FileUpload.vue +2 -2
  136. package/dist/runtime/components/FileUpload.vue.d.ts +13 -9
  137. package/dist/runtime/components/Footer.d.vue.ts +2 -2
  138. package/dist/runtime/components/Footer.vue.d.ts +2 -2
  139. package/dist/runtime/components/FooterColumns.d.vue.ts +10 -6
  140. package/dist/runtime/components/FooterColumns.vue.d.ts +10 -6
  141. package/dist/runtime/components/Form.d.vue.ts +11 -7
  142. package/dist/runtime/components/Form.vue.d.ts +11 -7
  143. package/dist/runtime/components/FormField.d.vue.ts +8 -1
  144. package/dist/runtime/components/FormField.vue +6 -5
  145. package/dist/runtime/components/FormField.vue.d.ts +8 -1
  146. package/dist/runtime/components/Header.d.vue.ts +13 -9
  147. package/dist/runtime/components/Header.vue.d.ts +13 -9
  148. package/dist/runtime/components/Icon.d.vue.ts +1 -1
  149. package/dist/runtime/components/Icon.vue.d.ts +1 -1
  150. package/dist/runtime/components/Input.d.vue.ts +14 -10
  151. package/dist/runtime/components/Input.vue.d.ts +14 -10
  152. package/dist/runtime/components/InputDate.d.vue.ts +13 -9
  153. package/dist/runtime/components/InputDate.vue.d.ts +13 -9
  154. package/dist/runtime/components/InputMenu.d.vue.ts +34 -13
  155. package/dist/runtime/components/InputMenu.vue +56 -11
  156. package/dist/runtime/components/InputMenu.vue.d.ts +34 -13
  157. package/dist/runtime/components/InputNumber.d.vue.ts +18 -14
  158. package/dist/runtime/components/InputNumber.vue +1 -1
  159. package/dist/runtime/components/InputNumber.vue.d.ts +18 -14
  160. package/dist/runtime/components/InputTags.d.vue.ts +13 -9
  161. package/dist/runtime/components/InputTags.vue.d.ts +13 -9
  162. package/dist/runtime/components/InputTime.d.vue.ts +4 -4
  163. package/dist/runtime/components/InputTime.vue.d.ts +4 -4
  164. package/dist/runtime/components/Kbd.d.vue.ts +2 -2
  165. package/dist/runtime/components/Kbd.vue.d.ts +2 -2
  166. package/dist/runtime/components/Link.d.vue.ts +8 -3
  167. package/dist/runtime/components/Link.vue.d.ts +8 -3
  168. package/dist/runtime/components/LinkBase.d.vue.ts +3 -3
  169. package/dist/runtime/components/LinkBase.vue.d.ts +3 -3
  170. package/dist/runtime/components/Main.d.vue.ts +4 -2
  171. package/dist/runtime/components/Main.vue +1 -1
  172. package/dist/runtime/components/Main.vue.d.ts +4 -2
  173. package/dist/runtime/components/Marquee.d.vue.ts +3 -3
  174. package/dist/runtime/components/Marquee.vue.d.ts +3 -3
  175. package/dist/runtime/components/Modal.d.vue.ts +7 -7
  176. package/dist/runtime/components/Modal.vue.d.ts +7 -7
  177. package/dist/runtime/components/NavigationMenu.d.vue.ts +17 -8
  178. package/dist/runtime/components/NavigationMenu.vue +3 -2
  179. package/dist/runtime/components/NavigationMenu.vue.d.ts +17 -8
  180. package/dist/runtime/components/Page.d.vue.ts +1 -1
  181. package/dist/runtime/components/Page.vue.d.ts +1 -1
  182. package/dist/runtime/components/PageAnchors.d.vue.ts +10 -6
  183. package/dist/runtime/components/PageAnchors.vue.d.ts +10 -6
  184. package/dist/runtime/components/PageAside.d.vue.ts +2 -2
  185. package/dist/runtime/components/PageAside.vue.d.ts +2 -2
  186. package/dist/runtime/components/PageBody.d.vue.ts +1 -1
  187. package/dist/runtime/components/PageBody.vue.d.ts +1 -1
  188. package/dist/runtime/components/PageCTA.d.vue.ts +2 -2
  189. package/dist/runtime/components/PageCTA.vue.d.ts +2 -2
  190. package/dist/runtime/components/PageCard.d.vue.ts +2 -2
  191. package/dist/runtime/components/PageCard.vue.d.ts +2 -2
  192. package/dist/runtime/components/PageColumns.d.vue.ts +1 -1
  193. package/dist/runtime/components/PageColumns.vue.d.ts +1 -1
  194. package/dist/runtime/components/PageFeature.d.vue.ts +2 -2
  195. package/dist/runtime/components/PageFeature.vue +2 -2
  196. package/dist/runtime/components/PageFeature.vue.d.ts +2 -2
  197. package/dist/runtime/components/PageGrid.d.vue.ts +1 -1
  198. package/dist/runtime/components/PageGrid.vue.d.ts +1 -1
  199. package/dist/runtime/components/PageHeader.d.vue.ts +1 -1
  200. package/dist/runtime/components/PageHeader.vue.d.ts +1 -1
  201. package/dist/runtime/components/PageHero.d.vue.ts +2 -2
  202. package/dist/runtime/components/PageHero.vue.d.ts +2 -2
  203. package/dist/runtime/components/PageLinks.d.vue.ts +10 -6
  204. package/dist/runtime/components/PageLinks.vue.d.ts +10 -6
  205. package/dist/runtime/components/PageList.d.vue.ts +2 -2
  206. package/dist/runtime/components/PageList.vue.d.ts +2 -2
  207. package/dist/runtime/components/PageLogos.d.vue.ts +2 -2
  208. package/dist/runtime/components/PageLogos.vue.d.ts +2 -2
  209. package/dist/runtime/components/PageSection.d.vue.ts +2 -2
  210. package/dist/runtime/components/PageSection.vue.d.ts +2 -2
  211. package/dist/runtime/components/Pagination.d.vue.ts +4 -5
  212. package/dist/runtime/components/Pagination.vue.d.ts +4 -5
  213. package/dist/runtime/components/PinInput.d.vue.ts +13 -9
  214. package/dist/runtime/components/PinInput.vue +1 -1
  215. package/dist/runtime/components/PinInput.vue.d.ts +13 -9
  216. package/dist/runtime/components/Popover.d.vue.ts +11 -7
  217. package/dist/runtime/components/Popover.vue.d.ts +11 -7
  218. package/dist/runtime/components/PricingPlan.d.vue.ts +2 -2
  219. package/dist/runtime/components/PricingPlan.vue.d.ts +2 -2
  220. package/dist/runtime/components/PricingPlans.d.vue.ts +10 -6
  221. package/dist/runtime/components/PricingPlans.vue.d.ts +10 -6
  222. package/dist/runtime/components/PricingTable.d.vue.ts +10 -6
  223. package/dist/runtime/components/PricingTable.vue.d.ts +10 -6
  224. package/dist/runtime/components/Progress.d.vue.ts +2 -2
  225. package/dist/runtime/components/Progress.vue.d.ts +2 -2
  226. package/dist/runtime/components/RadioGroup.d.vue.ts +12 -8
  227. package/dist/runtime/components/RadioGroup.vue.d.ts +12 -8
  228. package/dist/runtime/components/ScrollArea.d.vue.ts +85 -0
  229. package/dist/runtime/components/ScrollArea.vue +187 -0
  230. package/dist/runtime/components/ScrollArea.vue.d.ts +85 -0
  231. package/dist/runtime/components/Select.d.vue.ts +21 -9
  232. package/dist/runtime/components/Select.vue +24 -6
  233. package/dist/runtime/components/Select.vue.d.ts +21 -9
  234. package/dist/runtime/components/SelectMenu.d.vue.ts +34 -13
  235. package/dist/runtime/components/SelectMenu.vue +58 -12
  236. package/dist/runtime/components/SelectMenu.vue.d.ts +34 -13
  237. package/dist/runtime/components/Separator.d.vue.ts +4 -4
  238. package/dist/runtime/components/Separator.vue.d.ts +4 -4
  239. package/dist/runtime/components/Skeleton.d.vue.ts +2 -2
  240. package/dist/runtime/components/Skeleton.vue.d.ts +2 -2
  241. package/dist/runtime/components/Slideover.d.vue.ts +12 -7
  242. package/dist/runtime/components/Slideover.vue +3 -1
  243. package/dist/runtime/components/Slideover.vue.d.ts +12 -7
  244. package/dist/runtime/components/Slider.d.vue.ts +12 -8
  245. package/dist/runtime/components/Slider.vue +2 -2
  246. package/dist/runtime/components/Slider.vue.d.ts +12 -8
  247. package/dist/runtime/components/Stepper.d.vue.ts +21 -9
  248. package/dist/runtime/components/Stepper.vue +20 -16
  249. package/dist/runtime/components/Stepper.vue.d.ts +21 -9
  250. package/dist/runtime/components/Switch.d.vue.ts +2 -2
  251. package/dist/runtime/components/Switch.vue.d.ts +2 -2
  252. package/dist/runtime/components/Table.d.vue.ts +27 -23
  253. package/dist/runtime/components/Table.vue +55 -33
  254. package/dist/runtime/components/Table.vue.d.ts +27 -23
  255. package/dist/runtime/components/Tabs.d.vue.ts +17 -8
  256. package/dist/runtime/components/Tabs.vue +5 -4
  257. package/dist/runtime/components/Tabs.vue.d.ts +17 -8
  258. package/dist/runtime/components/Textarea.d.vue.ts +14 -10
  259. package/dist/runtime/components/Textarea.vue.d.ts +14 -10
  260. package/dist/runtime/components/Timeline.d.vue.ts +24 -10
  261. package/dist/runtime/components/Timeline.vue +26 -17
  262. package/dist/runtime/components/Timeline.vue.d.ts +24 -10
  263. package/dist/runtime/components/Toast.d.vue.ts +5 -5
  264. package/dist/runtime/components/Toast.vue.d.ts +5 -5
  265. package/dist/runtime/components/Toaster.d.vue.ts +2 -2
  266. package/dist/runtime/components/Toaster.vue.d.ts +2 -2
  267. package/dist/runtime/components/Tooltip.d.vue.ts +2 -2
  268. package/dist/runtime/components/Tooltip.vue.d.ts +2 -2
  269. package/dist/runtime/components/Tree.d.vue.ts +13 -9
  270. package/dist/runtime/components/Tree.vue.d.ts +13 -9
  271. package/dist/runtime/components/User.d.vue.ts +2 -2
  272. package/dist/runtime/components/User.vue +0 -1
  273. package/dist/runtime/components/User.vue.d.ts +2 -2
  274. package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +1 -1
  275. package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +1 -1
  276. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +5 -5
  277. package/dist/runtime/components/color-mode/ColorModeButton.vue +3 -22
  278. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +5 -5
  279. package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +1 -1
  280. package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +1 -1
  281. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +2 -2
  282. package/dist/runtime/components/color-mode/ColorModeSelect.vue +5 -0
  283. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +2 -2
  284. package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  285. package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  286. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +11 -7
  287. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +11 -7
  288. package/dist/runtime/components/content/ContentSearch.d.vue.ts +18 -10
  289. package/dist/runtime/components/content/ContentSearch.vue +3 -1
  290. package/dist/runtime/components/content/ContentSearch.vue.d.ts +18 -10
  291. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +5 -5
  292. package/dist/runtime/components/content/ContentSearchButton.vue +1 -20
  293. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +5 -5
  294. package/dist/runtime/components/content/ContentSurround.d.vue.ts +10 -6
  295. package/dist/runtime/components/content/ContentSurround.vue +1 -1
  296. package/dist/runtime/components/content/ContentSurround.vue.d.ts +10 -6
  297. package/dist/runtime/components/content/ContentToc.d.vue.ts +11 -7
  298. package/dist/runtime/components/content/ContentToc.vue.d.ts +11 -7
  299. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +2 -2
  300. package/dist/runtime/components/locale/LocaleSelect.vue +14 -3
  301. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +2 -2
  302. package/dist/runtime/components/prose/A.d.vue.ts +1 -1
  303. package/dist/runtime/components/prose/A.vue.d.ts +1 -1
  304. package/dist/runtime/components/prose/Accordion.d.vue.ts +2 -2
  305. package/dist/runtime/components/prose/Accordion.vue.d.ts +2 -2
  306. package/dist/runtime/components/prose/AccordionItem.d.vue.ts +1 -1
  307. package/dist/runtime/components/prose/AccordionItem.vue.d.ts +1 -1
  308. package/dist/runtime/components/prose/Badge.d.vue.ts +1 -1
  309. package/dist/runtime/components/prose/Badge.vue.d.ts +1 -1
  310. package/dist/runtime/components/prose/Blockquote.d.vue.ts +1 -1
  311. package/dist/runtime/components/prose/Blockquote.vue.d.ts +1 -1
  312. package/dist/runtime/components/prose/Callout.d.vue.ts +1 -1
  313. package/dist/runtime/components/prose/Callout.vue +0 -1
  314. package/dist/runtime/components/prose/Callout.vue.d.ts +1 -1
  315. package/dist/runtime/components/prose/Card.d.vue.ts +1 -1
  316. package/dist/runtime/components/prose/Card.vue +0 -1
  317. package/dist/runtime/components/prose/Card.vue.d.ts +1 -1
  318. package/dist/runtime/components/prose/CardGroup.d.vue.ts +1 -1
  319. package/dist/runtime/components/prose/CardGroup.vue.d.ts +1 -1
  320. package/dist/runtime/components/prose/Code.d.vue.ts +1 -1
  321. package/dist/runtime/components/prose/Code.vue.d.ts +1 -1
  322. package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +2 -2
  323. package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +2 -2
  324. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +2 -2
  325. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +2 -2
  326. package/dist/runtime/components/prose/CodeIcon.d.vue.ts +1 -1
  327. package/dist/runtime/components/prose/CodeIcon.vue.d.ts +1 -1
  328. package/dist/runtime/components/prose/CodePreview.d.vue.ts +1 -1
  329. package/dist/runtime/components/prose/CodePreview.vue.d.ts +1 -1
  330. package/dist/runtime/components/prose/CodeTree.d.vue.ts +20 -1
  331. package/dist/runtime/components/prose/CodeTree.vue +34 -7
  332. package/dist/runtime/components/prose/CodeTree.vue.d.ts +20 -1
  333. package/dist/runtime/components/prose/Collapsible.d.vue.ts +1 -1
  334. package/dist/runtime/components/prose/Collapsible.vue.d.ts +1 -1
  335. package/dist/runtime/components/prose/Em.d.vue.ts +1 -1
  336. package/dist/runtime/components/prose/Em.vue.d.ts +1 -1
  337. package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
  338. package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
  339. package/dist/runtime/components/prose/FieldGroup.d.vue.ts +1 -1
  340. package/dist/runtime/components/prose/FieldGroup.vue.d.ts +1 -1
  341. package/dist/runtime/components/prose/H1.d.vue.ts +1 -1
  342. package/dist/runtime/components/prose/H1.vue.d.ts +1 -1
  343. package/dist/runtime/components/prose/H2.d.vue.ts +1 -1
  344. package/dist/runtime/components/prose/H2.vue.d.ts +1 -1
  345. package/dist/runtime/components/prose/H3.d.vue.ts +1 -1
  346. package/dist/runtime/components/prose/H3.vue.d.ts +1 -1
  347. package/dist/runtime/components/prose/H4.d.vue.ts +1 -1
  348. package/dist/runtime/components/prose/H4.vue.d.ts +1 -1
  349. package/dist/runtime/components/prose/Hr.d.vue.ts +1 -1
  350. package/dist/runtime/components/prose/Hr.vue.d.ts +1 -1
  351. package/dist/runtime/components/prose/Icon.d.vue.ts +1 -1
  352. package/dist/runtime/components/prose/Icon.vue.d.ts +1 -1
  353. package/dist/runtime/components/prose/Img.d.vue.ts +2 -2
  354. package/dist/runtime/components/prose/Img.vue.d.ts +2 -2
  355. package/dist/runtime/components/prose/Kbd.d.vue.ts +1 -1
  356. package/dist/runtime/components/prose/Kbd.vue.d.ts +1 -1
  357. package/dist/runtime/components/prose/Li.d.vue.ts +1 -1
  358. package/dist/runtime/components/prose/Li.vue.d.ts +1 -1
  359. package/dist/runtime/components/prose/Ol.d.vue.ts +1 -1
  360. package/dist/runtime/components/prose/Ol.vue.d.ts +1 -1
  361. package/dist/runtime/components/prose/P.d.vue.ts +1 -1
  362. package/dist/runtime/components/prose/P.vue.d.ts +1 -1
  363. package/dist/runtime/components/prose/Pre.d.vue.ts +1 -1
  364. package/dist/runtime/components/prose/Pre.vue.d.ts +1 -1
  365. package/dist/runtime/components/prose/Steps.d.vue.ts +1 -1
  366. package/dist/runtime/components/prose/Steps.vue.d.ts +1 -1
  367. package/dist/runtime/components/prose/Strong.d.vue.ts +1 -1
  368. package/dist/runtime/components/prose/Strong.vue.d.ts +1 -1
  369. package/dist/runtime/components/prose/Table.d.vue.ts +1 -1
  370. package/dist/runtime/components/prose/Table.vue.d.ts +1 -1
  371. package/dist/runtime/components/prose/Tabs.d.vue.ts +2 -2
  372. package/dist/runtime/components/prose/Tabs.vue.d.ts +2 -2
  373. package/dist/runtime/components/prose/TabsItem.d.vue.ts +1 -1
  374. package/dist/runtime/components/prose/TabsItem.vue.d.ts +1 -1
  375. package/dist/runtime/components/prose/Tbody.d.vue.ts +1 -1
  376. package/dist/runtime/components/prose/Tbody.vue.d.ts +1 -1
  377. package/dist/runtime/components/prose/Td.d.vue.ts +2 -1
  378. package/dist/runtime/components/prose/Td.vue +2 -1
  379. package/dist/runtime/components/prose/Td.vue.d.ts +2 -1
  380. package/dist/runtime/components/prose/Th.d.vue.ts +2 -1
  381. package/dist/runtime/components/prose/Th.vue +2 -1
  382. package/dist/runtime/components/prose/Th.vue.d.ts +2 -1
  383. package/dist/runtime/components/prose/Thead.d.vue.ts +1 -1
  384. package/dist/runtime/components/prose/Thead.vue.d.ts +1 -1
  385. package/dist/runtime/components/prose/Tr.d.vue.ts +1 -1
  386. package/dist/runtime/components/prose/Tr.vue.d.ts +1 -1
  387. package/dist/runtime/components/prose/Ul.d.vue.ts +1 -1
  388. package/dist/runtime/components/prose/Ul.vue.d.ts +1 -1
  389. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +2 -2
  390. package/dist/runtime/components/prose/callout/Caution.vue.d.ts +2 -2
  391. package/dist/runtime/components/prose/callout/Note.d.vue.ts +2 -2
  392. package/dist/runtime/components/prose/callout/Note.vue.d.ts +2 -2
  393. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +2 -2
  394. package/dist/runtime/components/prose/callout/Tip.vue.d.ts +2 -2
  395. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +2 -2
  396. package/dist/runtime/components/prose/callout/Warning.vue.d.ts +2 -2
  397. package/dist/runtime/composables/defineShortcuts.d.ts +2 -1
  398. package/dist/runtime/composables/defineShortcuts.js +63 -16
  399. package/dist/runtime/composables/useEditorMenu.d.ts +75 -0
  400. package/dist/runtime/composables/useEditorMenu.js +435 -0
  401. package/dist/runtime/composables/useFileUpload.d.ts +1 -2
  402. package/dist/runtime/composables/useOverlay.d.ts +3 -1
  403. package/dist/runtime/locale/cs.js +2 -2
  404. package/dist/runtime/locale/en_gb.d.ts +3 -0
  405. package/dist/runtime/locale/en_gb.js +7 -0
  406. package/dist/runtime/locale/eu.d.ts +3 -0
  407. package/dist/runtime/locale/eu.js +129 -0
  408. package/dist/runtime/locale/index.d.ts +3 -0
  409. package/dist/runtime/locale/index.js +3 -0
  410. package/dist/runtime/locale/lo.d.ts +3 -0
  411. package/dist/runtime/locale/lo.js +129 -0
  412. package/dist/runtime/locale/sk.js +2 -2
  413. package/dist/runtime/types/editor.d.ts +70 -0
  414. package/dist/runtime/types/editor.js +0 -0
  415. package/dist/runtime/types/index.d.ts +8 -0
  416. package/dist/runtime/types/index.js +8 -0
  417. package/dist/runtime/utils/ai.d.ts +7 -0
  418. package/dist/runtime/utils/content.d.ts +2 -2
  419. package/dist/runtime/utils/editor.d.ts +69 -0
  420. package/dist/runtime/utils/editor.js +382 -0
  421. package/dist/runtime/utils/fuse.js +22 -3
  422. package/dist/runtime/utils/index.d.ts +1 -0
  423. package/dist/runtime/utils/index.js +2 -2
  424. package/dist/runtime/utils/locale.d.ts +1 -2
  425. package/dist/runtime/utils/virtualizer.d.ts +1 -3
  426. package/dist/runtime/utils/virtualizer.js +15 -6
  427. package/dist/runtime/vue/components/Icon.d.vue.ts +1 -1
  428. package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
  429. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +2 -2
  430. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +5 -0
  431. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +2 -2
  432. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
  433. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
  434. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.d.vue.ts +4 -4
  435. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue +3 -3
  436. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue.d.ts +4 -4
  437. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.d.vue.ts +4 -4
  438. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue.d.ts +4 -4
  439. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +76 -0
  440. package/dist/runtime/vue/overrides/none/Link.vue +130 -0
  441. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +76 -0
  442. package/dist/runtime/vue/{components → overrides/vue-router}/Link.d.vue.ts +4 -4
  443. package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue +6 -6
  444. package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue.d.ts +4 -4
  445. package/dist/runtime/vue/plugins/router.d.ts +4 -0
  446. package/dist/runtime/vue/plugins/router.js +7 -0
  447. package/dist/runtime/vue/{stubs.d.ts → stubs/base.d.ts} +4 -5
  448. package/dist/runtime/vue/{stubs.js → stubs/base.js} +4 -5
  449. package/dist/runtime/vue/stubs/inertia.d.ts +5 -0
  450. package/dist/runtime/vue/stubs/inertia.js +10 -0
  451. package/dist/runtime/vue/stubs/none.d.ts +56 -0
  452. package/dist/runtime/vue/stubs/none.js +48 -0
  453. package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
  454. package/dist/runtime/vue/stubs/vue-router.js +2 -0
  455. package/dist/shared/{ui.B77q-Dvh.mjs → ui.Ddb3hKxo.mjs} +511 -81
  456. package/dist/unplugin.d.mts +14 -0
  457. package/dist/unplugin.mjs +77 -50
  458. package/dist/vite.d.mts +2 -3
  459. package/dist/vite.mjs +1 -1
  460. package/package.json +64 -34
  461. package/dist/runtime/inertia/stubs.d.ts +0 -44
  462. package/dist/runtime/inertia/stubs.js +0 -84
  463. /package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue +0 -0
@@ -0,0 +1,199 @@
1
+ <script>
2
+ import theme from "#build/ui/editor";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { computed, provide, useAttrs, watch } from "vue";
7
+ import { defu } from "defu";
8
+ import { Primitive, useForwardProps } from "reka-ui";
9
+ import { mergeAttributes } from "@tiptap/core";
10
+ import Code from "@tiptap/extension-code";
11
+ import HorizontalRule from "@tiptap/extension-horizontal-rule";
12
+ import Image from "@tiptap/extension-image";
13
+ import Mention from "@tiptap/extension-mention";
14
+ import Placeholder from "@tiptap/extension-placeholder";
15
+ import { Markdown } from "@tiptap/markdown";
16
+ import StarterKit from "@tiptap/starter-kit";
17
+ import { useEditor, EditorContent } from "@tiptap/vue-3";
18
+ import { reactiveOmit } from "@vueuse/core";
19
+ import { useAppConfig } from "#imports";
20
+ import { createHandlers } from "../utils/editor";
21
+ import { tv } from "../utils/tv";
22
+ defineOptions({ inheritAttrs: false });
23
+ const props = defineProps({
24
+ as: { type: null, required: false },
25
+ modelValue: { type: null, required: false },
26
+ contentType: { type: String, required: false },
27
+ starterKit: { type: Object, required: false },
28
+ placeholder: { type: [String, Object], required: false },
29
+ markdown: { type: Object, required: false },
30
+ image: { type: [Boolean, Object], required: false, default: true },
31
+ mention: { type: [Boolean, Object], required: false, default: true },
32
+ handlers: { type: null, required: false },
33
+ class: { type: null, required: false },
34
+ ui: { type: null, required: false },
35
+ extensions: { type: Array, required: false },
36
+ injectCSS: { type: Boolean, required: false },
37
+ injectNonce: { type: null, required: false },
38
+ autofocus: { type: [String, Number, Boolean, null], required: false },
39
+ editable: { type: Boolean, required: false },
40
+ textDirection: { type: String, required: false },
41
+ editorProps: { type: Object, required: false },
42
+ parseOptions: { type: Object, required: false },
43
+ coreExtensionOptions: { type: Object, required: false },
44
+ enableInputRules: { type: [Array, Boolean], required: false },
45
+ enablePasteRules: { type: [Array, Boolean], required: false },
46
+ enableCoreExtensions: { type: [Boolean, Object], required: false },
47
+ enableContentCheck: { type: Boolean, required: false },
48
+ emitContentError: { type: Boolean, required: false },
49
+ onBeforeCreate: { type: Function, required: false },
50
+ onCreate: { type: Function, required: false },
51
+ onMount: { type: Function, required: false },
52
+ onUnmount: { type: Function, required: false },
53
+ onContentError: { type: Function, required: false },
54
+ onUpdate: { type: Function, required: false },
55
+ onSelectionUpdate: { type: Function, required: false },
56
+ onTransaction: { type: Function, required: false },
57
+ onFocus: { type: Function, required: false },
58
+ onBlur: { type: Function, required: false },
59
+ onDestroy: { type: Function, required: false },
60
+ onPaste: { type: Function, required: false },
61
+ onDrop: { type: Function, required: false },
62
+ onDelete: { type: Function, required: false },
63
+ enableExtensionDispatchTransaction: { type: Boolean, required: false }
64
+ });
65
+ const emits = defineEmits(["update:modelValue"]);
66
+ defineSlots();
67
+ const attrs = useAttrs();
68
+ const appConfig = useAppConfig();
69
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editor || {} })({
70
+ placeholderMode: typeof props.placeholder === "object" ? props.placeholder.mode : void 0
71
+ }));
72
+ const rootProps = useForwardProps(reactiveOmit(props, "starterKit", "extensions", "editorProps", "contentType", "class", "placeholder", "markdown", "image", "mention", "handlers"));
73
+ const editorProps = computed(() => defu(props.editorProps, {
74
+ attributes: {
75
+ autocomplete: "off",
76
+ autocorrect: "off",
77
+ autocapitalize: "off",
78
+ ...attrs,
79
+ class: ui.value.base({ class: props.ui?.base })
80
+ }
81
+ }));
82
+ const contentType = computed(() => props.contentType || (typeof props.modelValue === "string" ? "html" : "json"));
83
+ const starterKit = computed(() => defu(props.starterKit, {
84
+ code: false,
85
+ horizontalRule: false,
86
+ dropcursor: {
87
+ color: "var(--ui-primary)",
88
+ width: 2
89
+ },
90
+ link: {
91
+ openOnClick: false
92
+ }
93
+ }));
94
+ const placeholder = computed(() => {
95
+ const options = typeof props.placeholder === "string" ? { placeholder: props.placeholder } : props.placeholder;
96
+ const { mode, ...rest } = options || {};
97
+ return defu(rest, {
98
+ showOnlyWhenEditable: false,
99
+ showOnlyCurrent: true
100
+ });
101
+ });
102
+ const markdown = computed(() => defu(props.markdown, {
103
+ markedOptions: {
104
+ gfm: true
105
+ }
106
+ }));
107
+ const image = computed(() => typeof props.image === "boolean" ? {} : props.image);
108
+ const mention = computed(() => defu(typeof props.mention === "boolean" ? {} : props.mention, {
109
+ HTMLAttributes: {
110
+ class: "mention"
111
+ }
112
+ }));
113
+ const extensions = computed(() => [
114
+ contentType.value === "markdown" && Markdown.configure(markdown.value),
115
+ StarterKit.configure(starterKit.value),
116
+ Code.extend({
117
+ excludes: "code"
118
+ }),
119
+ HorizontalRule.extend({
120
+ renderHTML() {
121
+ return [
122
+ "div",
123
+ mergeAttributes(this.options.HTMLAttributes, { "data-type": this.name }),
124
+ ["hr"]
125
+ ];
126
+ }
127
+ }),
128
+ props.image !== false && Image.configure(image.value),
129
+ props.mention !== false && Mention.configure(mention.value),
130
+ props.placeholder && Placeholder.configure(placeholder.value),
131
+ ...props.extensions || []
132
+ ].filter((extension) => !!extension));
133
+ const editor = useEditor({
134
+ ...rootProps.value,
135
+ content: props.modelValue,
136
+ contentType: contentType.value,
137
+ extensions: extensions.value,
138
+ editorProps: editorProps.value,
139
+ onCreate: ({ editor: editor2 }) => {
140
+ if (props.placeholder) {
141
+ editor2.view.dispatch(editor2.state.tr);
142
+ }
143
+ },
144
+ onUpdate: ({ editor: editor2 }) => {
145
+ let value;
146
+ try {
147
+ if (contentType.value === "html") {
148
+ value = editor2.getHTML();
149
+ } else if (contentType.value === "json") {
150
+ value = editor2.getJSON();
151
+ } else if (contentType.value === "markdown") {
152
+ value = editor2.getMarkdown();
153
+ }
154
+ } catch (error) {
155
+ value = editor2.getText();
156
+ }
157
+ emits("update:modelValue", value);
158
+ }
159
+ });
160
+ watch(() => props.modelValue, (newVal) => {
161
+ if (!editor.value || newVal == null) {
162
+ return;
163
+ }
164
+ const currentContent = contentType.value === "html" ? editor.value.getHTML() : contentType.value === "json" ? JSON.stringify(editor.value.getJSON()) : contentType.value === "markdown" ? editor.value.getMarkdown() : editor.value.getText();
165
+ const newContent = contentType.value === "json" && typeof newVal === "object" ? JSON.stringify(newVal) : String(newVal);
166
+ if (currentContent !== newContent) {
167
+ const currentSelection = editor.value.state.selection;
168
+ const currentPos = currentSelection.from;
169
+ editor.value.commands.setContent(newVal, { contentType: contentType.value });
170
+ const newDoc = editor.value.state.doc;
171
+ if (currentPos <= newDoc.content.size) {
172
+ editor.value.commands.setTextSelection(currentPos);
173
+ }
174
+ }
175
+ });
176
+ const handlers = computed(() => ({
177
+ ...createHandlers(),
178
+ ...props.handlers
179
+ }));
180
+ provide("editorHandlers", handlers);
181
+ defineExpose({
182
+ editor
183
+ });
184
+ </script>
185
+
186
+ <template>
187
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
188
+ <template v-if="editor">
189
+ <slot :editor="editor" :handlers="handlers" />
190
+
191
+ <EditorContent
192
+ role="presentation"
193
+ :editor="editor"
194
+ data-slot="content"
195
+ :class="ui.content({ class: props.ui?.content })"
196
+ />
197
+ </template>
198
+ </Primitive>
199
+ </template>
@@ -0,0 +1,101 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import type { Editor as TiptapEditor, EditorOptions, Content } from '@tiptap/vue-3';
3
+ import type { StarterKitOptions } from '@tiptap/starter-kit';
4
+ import type { PlaceholderOptions } from '@tiptap/extension-placeholder';
5
+ import type { MarkdownExtensionOptions } from '@tiptap/markdown';
6
+ import type { ImageOptions } from '@tiptap/extension-image';
7
+ import type { MentionOptions } from '@tiptap/extension-mention';
8
+ import theme from '#build/ui/editor';
9
+ import type { EditorHandlers, EditorCustomHandlers } from '../types/editor';
10
+ import type { ComponentConfig } from '../types/tv';
11
+ type Editor = ComponentConfig<typeof theme, AppConfig, 'editor'>;
12
+ export type EditorContentType = 'json' | 'html' | 'markdown';
13
+ export interface EditorProps<T extends Content = Content, H extends EditorCustomHandlers = EditorCustomHandlers> extends Omit<Partial<EditorOptions>, 'content' | 'element'> {
14
+ /**
15
+ * The element or component this component should render as.
16
+ * @defaultValue 'div'
17
+ */
18
+ as?: any;
19
+ modelValue?: T;
20
+ /**
21
+ * The content type the content is provided as.
22
+ * When not specified, it's automatically inferred: strings are treated as 'html', objects as 'json'.
23
+ */
24
+ contentType?: EditorContentType;
25
+ /**
26
+ * The starter kit options to configure the editor.
27
+ * @defaultValue { horizontalRule: false, link: { openOnClick: false }, dropcursor: { color: 'var(--ui-primary)', width: 2 } }
28
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/starterkit
29
+ */
30
+ starterKit?: Partial<StarterKitOptions>;
31
+ /**
32
+ * The placeholder text to show in empty paragraphs. Can be a string or PlaceholderOptions from `@tiptap/extension-placeholder`.
33
+ * @defaultValue { showOnlyWhenEditable: false, showOnlyCurrent: true, mode: 'everyLine' }
34
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/placeholder
35
+ */
36
+ placeholder?: string | (Partial<PlaceholderOptions> & {
37
+ /**
38
+ * Control how placeholders are displayed in the editor.
39
+ * - `firstLine`: Display placeholder only on the first line when the editor is empty.
40
+ * - `everyLine`: Display placeholder on every empty line when focused.
41
+ * @defaultValue 'everyLine'
42
+ */
43
+ mode?: 'firstLine' | 'everyLine';
44
+ });
45
+ /**
46
+ * The markdown extension options to configure markdown parsing and serialization.
47
+ * @defaultValue { markedOptions: { gfm: true } }
48
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/markdown
49
+ */
50
+ markdown?: Partial<MarkdownExtensionOptions>;
51
+ /**
52
+ * The image extension options to configure image handling. Set to `false` to disable the extension.
53
+ * @defaultValue {}
54
+ * @see https://tiptap.dev/docs/editor/extensions/nodes/image
55
+ */
56
+ image?: boolean | Partial<ImageOptions>;
57
+ /**
58
+ * The mention extension options to configure mention handling. Set to `false` to disable the extension.
59
+ * @defaultValue { HTMLAttributes: { class: 'mention' } }
60
+ * @see https://tiptap.dev/docs/editor/extensions/nodes/mention
61
+ */
62
+ mention?: boolean | Partial<MentionOptions>;
63
+ /**
64
+ * Custom item handlers to override or extend the default handlers.
65
+ * These handlers are provided to all child components (toolbar, suggestion menu, etc.).
66
+ */
67
+ handlers?: H;
68
+ class?: any;
69
+ ui?: Editor['slots'];
70
+ }
71
+ export interface EditorEmits<T extends Content = Content> {
72
+ 'update:modelValue': [value: T];
73
+ }
74
+ export interface EditorSlots<H extends EditorCustomHandlers = EditorCustomHandlers> {
75
+ default(props: {
76
+ editor: TiptapEditor;
77
+ handlers: EditorHandlers<H>;
78
+ }): any;
79
+ }
80
+ declare const _default: typeof __VLS_export;
81
+ export default _default;
82
+ declare const __VLS_export: <T extends Content, H extends EditorCustomHandlers>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
83
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<EditorProps<T, H> & {
84
+ "onUpdate:modelValue"?: ((value: T) => any) | undefined;
85
+ }> & (typeof globalThis extends {
86
+ __VLS_PROPS_FALLBACK: infer P;
87
+ } ? P : {});
88
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
89
+ editor: import("vue").ShallowRef<TiptapEditor | undefined, TiptapEditor | undefined>;
90
+ }>) => void;
91
+ attrs: any;
92
+ slots: EditorSlots<H>;
93
+ emit: (evt: "update:modelValue", value: T) => void;
94
+ }>) => import("vue").VNode & {
95
+ __ctx?: Awaited<typeof __VLS_setup>;
96
+ };
97
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
98
+ [K in keyof T]: T[K];
99
+ } : {
100
+ [K in keyof T as K]: T[K];
101
+ }) & {};
@@ -0,0 +1,68 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import type { Editor, JSONContent } from '@tiptap/vue-3';
3
+ import type { DragHandleProps } from '@tiptap/extension-drag-handle-vue-3';
4
+ import theme from '#build/ui/editor-drag-handle';
5
+ import type { ButtonProps, IconProps, LinkPropsKeys } from '../types';
6
+ import type { FloatingUIOptions } from '../types/editor';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type EditorDragHandle = ComponentConfig<typeof theme, AppConfig, 'editorDragHandle'>;
9
+ export interface EditorDragHandleProps extends Omit<DragHandleProps, 'editor' | 'element' | 'onNodeChange' | 'computePositionConfig' | 'class'>, Omit<ButtonProps, LinkPropsKeys | 'icon' | 'color' | 'variant'> {
10
+ /**
11
+ * @defaultValue appConfig.ui.icons.drag
12
+ * @IconifyIcon
13
+ */
14
+ icon?: IconProps['name'];
15
+ /**
16
+ * @defaultValue 'neutral'
17
+ */
18
+ color?: ButtonProps['color'];
19
+ /**
20
+ * @defaultValue 'ghost'
21
+ */
22
+ variant?: ButtonProps['variant'];
23
+ /**
24
+ * The options for positioning the drag handle. Those are passed to Floating UI and include options for the placement, offset, flip, shift, size, autoPlacement, hide, and inline middleware.
25
+ * @defaultValue { strategy: 'absolute', placement: 'left-start' }
26
+ * @see https://floating-ui.com/docs/computePosition#options
27
+ */
28
+ options?: FloatingUIOptions;
29
+ editor: Editor;
30
+ ui?: EditorDragHandle['slots'] & ButtonProps['ui'];
31
+ }
32
+ export interface EditorDragHandleSlots {
33
+ default(props: {
34
+ ui: EditorDragHandle['ui'];
35
+ onClick: () => {
36
+ node: JSONContent;
37
+ pos: number;
38
+ } | undefined;
39
+ }): any;
40
+ }
41
+ export interface EditorDragHandleEmits {
42
+ nodeChange: [{
43
+ node: JSONContent;
44
+ pos: number;
45
+ }];
46
+ }
47
+ declare const _default: typeof __VLS_export;
48
+ export default _default;
49
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<EditorDragHandleProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
50
+ nodeChange: (args_0: {
51
+ node: JSONContent;
52
+ pos: number;
53
+ }) => any;
54
+ }, string, import("vue").PublicProps, Readonly<EditorDragHandleProps> & Readonly<{
55
+ onNodeChange?: ((args_0: {
56
+ node: JSONContent;
57
+ pos: number;
58
+ }) => any) | undefined;
59
+ }>, {
60
+ size: "md" | "xs" | "sm" | "lg" | "xl";
61
+ color: "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral";
62
+ variant: "link" | "solid" | "outline" | "soft" | "subtle" | "ghost";
63
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, EditorDragHandleSlots>;
64
+ type __VLS_WithSlots<T, S> = T & {
65
+ new (): {
66
+ $slots: S;
67
+ };
68
+ };
@@ -0,0 +1,127 @@
1
+ <script>
2
+ import theme from "#build/ui/editor-drag-handle";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { computed, ref } from "vue";
7
+ import DragHandle from "@tiptap/extension-drag-handle-vue-3";
8
+ import { useForwardProps } from "reka-ui";
9
+ import { reactiveOmit, reactivePick } from "@vueuse/core";
10
+ import { defu } from "defu";
11
+ import { useAppConfig } from "#imports";
12
+ import { buildFloatingUIMiddleware } from "../utils/editor";
13
+ import { transformUI } from "../utils";
14
+ import { tv } from "../utils/tv";
15
+ import UButton from "./Button.vue";
16
+ defineOptions({ inheritAttrs: false });
17
+ const props = defineProps({
18
+ icon: { type: null, required: false },
19
+ color: { type: null, required: false, default: "neutral" },
20
+ variant: { type: null, required: false, default: "ghost" },
21
+ options: { type: Object, required: false },
22
+ editor: { type: Object, required: true },
23
+ ui: { type: void 0, required: false },
24
+ pluginKey: { type: [Object, String], required: false },
25
+ onElementDragStart: { type: Function, required: false },
26
+ onElementDragEnd: { type: Function, required: false },
27
+ getReferencedVirtualElement: { type: Function, required: false },
28
+ label: { type: String, required: false },
29
+ activeColor: { type: null, required: false },
30
+ activeVariant: { type: null, required: false },
31
+ size: { type: null, required: false, default: "sm" },
32
+ square: { type: Boolean, required: false },
33
+ block: { type: Boolean, required: false },
34
+ loadingAuto: { type: Boolean, required: false },
35
+ onClick: { type: [Function, Array], required: false },
36
+ class: { type: null, required: false },
37
+ avatar: { type: Object, required: false },
38
+ leading: { type: Boolean, required: false },
39
+ leadingIcon: { type: null, required: false },
40
+ trailing: { type: Boolean, required: false },
41
+ trailingIcon: { type: null, required: false },
42
+ loading: { type: Boolean, required: false },
43
+ loadingIcon: { type: null, required: false },
44
+ as: { type: null, required: false },
45
+ type: { type: null, required: false },
46
+ disabled: { type: Boolean, required: false },
47
+ exactActiveClass: { type: String, required: false },
48
+ viewTransition: { type: Boolean, required: false }
49
+ });
50
+ defineSlots();
51
+ const emit = defineEmits(["nodeChange"]);
52
+ const dragHandleProps = useForwardProps(reactivePick(props, "pluginKey", "onElementDragEnd", "onElementDragStart", "getReferencedVirtualElement"));
53
+ const buttonProps = useForwardProps(reactiveOmit(props, "icon", "options", "editor", "pluginKey", "onElementDragEnd", "onElementDragStart", "getReferencedVirtualElement", "class", "ui"));
54
+ const appConfig = useAppConfig();
55
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editorDragHandle || {} })());
56
+ const floatingUIOptions = computed(() => defu(props.options, {
57
+ strategy: "absolute",
58
+ placement: "left-start",
59
+ offset: ({ rects }) => {
60
+ const blockHeight = rects.reference.height;
61
+ const handleHeight = rects.floating.height;
62
+ if (blockHeight > 40) {
63
+ return {
64
+ alignmentAxis: 0,
65
+ mainAxis: 8
66
+ };
67
+ }
68
+ return {
69
+ alignmentAxis: (blockHeight - handleHeight) / 2,
70
+ mainAxis: 8
71
+ };
72
+ },
73
+ flip: {},
74
+ shift: {},
75
+ size: false,
76
+ autoPlacement: false,
77
+ hide: false,
78
+ inline: false
79
+ }));
80
+ const middleware = computed(() => buildFloatingUIMiddleware(floatingUIOptions.value));
81
+ const computePositionConfig = computed(() => ({
82
+ placement: floatingUIOptions.value.placement,
83
+ strategy: floatingUIOptions.value.strategy,
84
+ middleware: middleware.value
85
+ }));
86
+ const currentNodePos = ref();
87
+ function onNodeChange({ pos }) {
88
+ currentNodePos.value = pos;
89
+ }
90
+ function onClick() {
91
+ if (!props.editor) return;
92
+ const pos = currentNodePos.value;
93
+ if (pos == null) return;
94
+ const node = props.editor.state.doc.nodeAt(pos);
95
+ if (node) {
96
+ const selectedNode = { node: node.toJSON(), pos };
97
+ emit("nodeChange", selectedNode);
98
+ props.editor.chain().setNodeSelection(pos).run();
99
+ return selectedNode;
100
+ }
101
+ }
102
+ </script>
103
+
104
+ <template>
105
+ <DragHandle
106
+ v-bind="dragHandleProps"
107
+ :compute-position-config="computePositionConfig"
108
+ :editor="editor"
109
+ :on-node-change="onNodeChange"
110
+ data-slot="root"
111
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
112
+ @click="onClick"
113
+ >
114
+ <slot :ui="ui" :on-click="onClick">
115
+ <UButton
116
+ v-bind="{
117
+ ...buttonProps,
118
+ icon: props.icon || appConfig.ui.icons.drag,
119
+ ...$attrs
120
+ }"
121
+ data-slot="handle"
122
+ :class="ui.handle({ class: [props.ui?.handle, props.class] })"
123
+ :ui="transformUI(ui, props.ui)"
124
+ />
125
+ </slot>
126
+ </DragHandle>
127
+ </template>
@@ -0,0 +1,68 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import type { Editor, JSONContent } from '@tiptap/vue-3';
3
+ import type { DragHandleProps } from '@tiptap/extension-drag-handle-vue-3';
4
+ import theme from '#build/ui/editor-drag-handle';
5
+ import type { ButtonProps, IconProps, LinkPropsKeys } from '../types';
6
+ import type { FloatingUIOptions } from '../types/editor';
7
+ import type { ComponentConfig } from '../types/tv';
8
+ type EditorDragHandle = ComponentConfig<typeof theme, AppConfig, 'editorDragHandle'>;
9
+ export interface EditorDragHandleProps extends Omit<DragHandleProps, 'editor' | 'element' | 'onNodeChange' | 'computePositionConfig' | 'class'>, Omit<ButtonProps, LinkPropsKeys | 'icon' | 'color' | 'variant'> {
10
+ /**
11
+ * @defaultValue appConfig.ui.icons.drag
12
+ * @IconifyIcon
13
+ */
14
+ icon?: IconProps['name'];
15
+ /**
16
+ * @defaultValue 'neutral'
17
+ */
18
+ color?: ButtonProps['color'];
19
+ /**
20
+ * @defaultValue 'ghost'
21
+ */
22
+ variant?: ButtonProps['variant'];
23
+ /**
24
+ * The options for positioning the drag handle. Those are passed to Floating UI and include options for the placement, offset, flip, shift, size, autoPlacement, hide, and inline middleware.
25
+ * @defaultValue { strategy: 'absolute', placement: 'left-start' }
26
+ * @see https://floating-ui.com/docs/computePosition#options
27
+ */
28
+ options?: FloatingUIOptions;
29
+ editor: Editor;
30
+ ui?: EditorDragHandle['slots'] & ButtonProps['ui'];
31
+ }
32
+ export interface EditorDragHandleSlots {
33
+ default(props: {
34
+ ui: EditorDragHandle['ui'];
35
+ onClick: () => {
36
+ node: JSONContent;
37
+ pos: number;
38
+ } | undefined;
39
+ }): any;
40
+ }
41
+ export interface EditorDragHandleEmits {
42
+ nodeChange: [{
43
+ node: JSONContent;
44
+ pos: number;
45
+ }];
46
+ }
47
+ declare const _default: typeof __VLS_export;
48
+ export default _default;
49
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<EditorDragHandleProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
50
+ nodeChange: (args_0: {
51
+ node: JSONContent;
52
+ pos: number;
53
+ }) => any;
54
+ }, string, import("vue").PublicProps, Readonly<EditorDragHandleProps> & Readonly<{
55
+ onNodeChange?: ((args_0: {
56
+ node: JSONContent;
57
+ pos: number;
58
+ }) => any) | undefined;
59
+ }>, {
60
+ size: "md" | "xs" | "sm" | "lg" | "xl";
61
+ color: "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral";
62
+ variant: "link" | "solid" | "outline" | "soft" | "subtle" | "ghost";
63
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, EditorDragHandleSlots>;
64
+ type __VLS_WithSlots<T, S> = T & {
65
+ new (): {
66
+ $slots: S;
67
+ };
68
+ };
@@ -0,0 +1,41 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import type { EditorMenuOptions } from '../composables/useEditorMenu';
3
+ import type { ComponentConfig } from '../types/tv';
4
+ import theme from '#build/ui/editor-emoji-menu';
5
+ type EditorEmojiMenu = ComponentConfig<typeof theme, AppConfig, 'editorEmojiMenu'>;
6
+ export interface EditorEmojiMenuItem {
7
+ name: string;
8
+ emoji?: string;
9
+ shortcodes: string[];
10
+ tags: string[];
11
+ group?: string;
12
+ fallbackImage?: string;
13
+ [key: string]: any;
14
+ }
15
+ export interface EditorEmojiMenuProps<T extends EditorEmojiMenuItem = EditorEmojiMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
16
+ /**
17
+ * @defaultValue 'md'
18
+ */
19
+ size?: EditorEmojiMenu['variants']['size'];
20
+ items?: T[] | T[][];
21
+ class?: any;
22
+ ui?: EditorEmojiMenu['slots'];
23
+ }
24
+ declare const _default: typeof __VLS_export;
25
+ export default _default;
26
+ declare const __VLS_export: <T extends EditorEmojiMenuItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
27
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<EditorEmojiMenuProps<T>> & (typeof globalThis extends {
28
+ __VLS_PROPS_FALLBACK: infer P;
29
+ } ? P : {});
30
+ expose: (exposed: {}) => void;
31
+ attrs: any;
32
+ slots: {};
33
+ emit: {};
34
+ }>) => import("vue").VNode & {
35
+ __ctx?: Awaited<typeof __VLS_setup>;
36
+ };
37
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
38
+ [K in keyof T]: T[K];
39
+ } : {
40
+ [K in keyof T as K]: T[K];
41
+ }) & {};
@@ -0,0 +1,73 @@
1
+ <script>
2
+ import theme from "#build/ui/editor-emoji-menu";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { computed, h, onMounted, onBeforeUnmount, nextTick, toRef } from "vue";
7
+ import { useAppConfig } from "#imports";
8
+ import { useEditorMenu } from "../composables/useEditorMenu";
9
+ import { tv } from "../utils/tv";
10
+ defineOptions({ inheritAttrs: false });
11
+ const props = defineProps({
12
+ size: { type: null, required: false },
13
+ items: { type: Array, required: false },
14
+ class: { type: null, required: false },
15
+ ui: { type: null, required: false },
16
+ editor: { type: Object, required: false },
17
+ char: { type: String, required: false, default: ":" },
18
+ pluginKey: { type: String, required: false, default: "emojiMenu" },
19
+ filterFields: { type: Array, required: false, default: () => ["name", "shortcodes", "tags"] },
20
+ limit: { type: Number, required: false },
21
+ options: { type: Object, required: false },
22
+ appendTo: { type: Function, required: false, skipCheck: true }
23
+ });
24
+ const appConfig = useAppConfig();
25
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editorEmojiMenu || {} })({
26
+ size: props.size
27
+ }));
28
+ let menu = null;
29
+ onMounted(async () => {
30
+ await nextTick();
31
+ if (!props.editor || props.editor.isDestroyed) {
32
+ return;
33
+ }
34
+ menu = useEditorMenu({
35
+ editor: props.editor,
36
+ char: props.char,
37
+ pluginKey: props.pluginKey,
38
+ items: toRef(() => props.items),
39
+ filterFields: props.filterFields,
40
+ limit: props.limit,
41
+ options: props.options,
42
+ appendTo: props.appendTo,
43
+ ui,
44
+ onSelect: (editor, range, item) => {
45
+ if (!item.emoji) return;
46
+ editor.chain().focus().deleteRange(range).insertContent(item.emoji).run();
47
+ },
48
+ renderItem: (item, styles) => {
49
+ const content = item.emoji || item.shortcodes[0] || item.name;
50
+ return [
51
+ h("span", { class: styles.value.itemLeadingIcon() }, content),
52
+ h("span", { class: styles.value.itemWrapper() }, [
53
+ h("span", { class: styles.value.itemLabel() }, item.name)
54
+ ])
55
+ ];
56
+ }
57
+ });
58
+ props.editor.registerPlugin(menu.plugin);
59
+ });
60
+ onBeforeUnmount(() => {
61
+ if (menu) {
62
+ menu.destroy();
63
+ menu = null;
64
+ }
65
+ if (props.editor && !props.editor.isDestroyed) {
66
+ props.editor.unregisterPlugin(props.pluginKey);
67
+ }
68
+ });
69
+ </script>
70
+
71
+ <template>
72
+ <div />
73
+ </template>