@nuxt/ui 4.2.0 → 4.3.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 (364) hide show
  1. package/.nuxt/ui.css +154 -0
  2. package/README.md +2 -1
  3. package/dist/module.json +1 -1
  4. package/dist/module.mjs +2 -2
  5. package/dist/runtime/components/Accordion.d.vue.ts +3 -3
  6. package/dist/runtime/components/Accordion.vue +1 -1
  7. package/dist/runtime/components/Accordion.vue.d.ts +3 -3
  8. package/dist/runtime/components/Alert.d.vue.ts +3 -5
  9. package/dist/runtime/components/Alert.vue +2 -2
  10. package/dist/runtime/components/Alert.vue.d.ts +3 -5
  11. package/dist/runtime/components/App.d.vue.ts +3 -1
  12. package/dist/runtime/components/App.vue.d.ts +3 -1
  13. package/dist/runtime/components/AuthForm.d.vue.ts +8 -46
  14. package/dist/runtime/components/AuthForm.vue +1 -1
  15. package/dist/runtime/components/AuthForm.vue.d.ts +8 -46
  16. package/dist/runtime/components/Avatar.vue +1 -1
  17. package/dist/runtime/components/Badge.d.vue.ts +1 -3
  18. package/dist/runtime/components/Badge.vue +3 -3
  19. package/dist/runtime/components/Badge.vue.d.ts +1 -3
  20. package/dist/runtime/components/Banner.d.vue.ts +2 -2
  21. package/dist/runtime/components/Banner.vue +2 -2
  22. package/dist/runtime/components/Banner.vue.d.ts +2 -2
  23. package/dist/runtime/components/BlogPost.d.vue.ts +1 -4
  24. package/dist/runtime/components/BlogPost.vue +0 -1
  25. package/dist/runtime/components/BlogPost.vue.d.ts +1 -4
  26. package/dist/runtime/components/BlogPosts.d.vue.ts +3 -1
  27. package/dist/runtime/components/BlogPosts.vue.d.ts +3 -1
  28. package/dist/runtime/components/Breadcrumb.d.vue.ts +3 -1
  29. package/dist/runtime/components/Breadcrumb.vue +1 -1
  30. package/dist/runtime/components/Breadcrumb.vue.d.ts +3 -1
  31. package/dist/runtime/components/Button.vue +4 -4
  32. package/dist/runtime/components/Calendar.d.vue.ts +8 -11
  33. package/dist/runtime/components/Calendar.vue +4 -4
  34. package/dist/runtime/components/Calendar.vue.d.ts +8 -11
  35. package/dist/runtime/components/Carousel.d.vue.ts +6 -6
  36. package/dist/runtime/components/Carousel.vue +24 -2
  37. package/dist/runtime/components/Carousel.vue.d.ts +6 -6
  38. package/dist/runtime/components/ChangelogVersion.d.vue.ts +1 -4
  39. package/dist/runtime/components/ChangelogVersion.vue +0 -1
  40. package/dist/runtime/components/ChangelogVersion.vue.d.ts +1 -4
  41. package/dist/runtime/components/ChangelogVersions.d.vue.ts +3 -1
  42. package/dist/runtime/components/ChangelogVersions.vue.d.ts +3 -1
  43. package/dist/runtime/components/ChatMessage.d.vue.ts +1 -3
  44. package/dist/runtime/components/ChatMessage.vue +1 -1
  45. package/dist/runtime/components/ChatMessage.vue.d.ts +1 -3
  46. package/dist/runtime/components/ChatMessages.d.vue.ts +3 -8
  47. package/dist/runtime/components/ChatMessages.vue +1 -1
  48. package/dist/runtime/components/ChatMessages.vue.d.ts +3 -8
  49. package/dist/runtime/components/ChatPrompt.d.vue.ts +2 -7
  50. package/dist/runtime/components/ChatPrompt.vue +2 -2
  51. package/dist/runtime/components/ChatPrompt.vue.d.ts +2 -7
  52. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +9 -17
  53. package/dist/runtime/components/ChatPromptSubmit.vue +14 -33
  54. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +9 -17
  55. package/dist/runtime/components/Checkbox.vue +2 -2
  56. package/dist/runtime/components/CheckboxGroup.d.vue.ts +3 -4
  57. package/dist/runtime/components/CheckboxGroup.vue +1 -1
  58. package/dist/runtime/components/CheckboxGroup.vue.d.ts +3 -4
  59. package/dist/runtime/components/Chip.d.vue.ts +1 -4
  60. package/dist/runtime/components/Chip.vue.d.ts +1 -4
  61. package/dist/runtime/components/Collapsible.d.vue.ts +1 -3
  62. package/dist/runtime/components/Collapsible.vue.d.ts +1 -3
  63. package/dist/runtime/components/ColorPicker.d.vue.ts +1 -5
  64. package/dist/runtime/components/ColorPicker.vue.d.ts +1 -5
  65. package/dist/runtime/components/CommandPalette.d.vue.ts +9 -14
  66. package/dist/runtime/components/CommandPalette.vue +7 -7
  67. package/dist/runtime/components/CommandPalette.vue.d.ts +9 -14
  68. package/dist/runtime/components/ContextMenu.d.vue.ts +9 -5
  69. package/dist/runtime/components/ContextMenu.vue +3 -3
  70. package/dist/runtime/components/ContextMenu.vue.d.ts +9 -5
  71. package/dist/runtime/components/ContextMenuContent.d.vue.ts +3 -7
  72. package/dist/runtime/components/ContextMenuContent.vue +5 -5
  73. package/dist/runtime/components/ContextMenuContent.vue.d.ts +3 -7
  74. package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -6
  75. package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -6
  76. package/dist/runtime/components/DashboardNavbar.d.vue.ts +3 -6
  77. package/dist/runtime/components/DashboardNavbar.vue +1 -1
  78. package/dist/runtime/components/DashboardNavbar.vue.d.ts +3 -6
  79. package/dist/runtime/components/DashboardPanel.d.vue.ts +1 -4
  80. package/dist/runtime/components/DashboardPanel.vue.d.ts +1 -4
  81. package/dist/runtime/components/DashboardSearch.d.vue.ts +4 -9
  82. package/dist/runtime/components/DashboardSearch.vue +3 -3
  83. package/dist/runtime/components/DashboardSearch.vue.d.ts +4 -9
  84. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +3 -8
  85. package/dist/runtime/components/DashboardSearchButton.vue +5 -24
  86. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +3 -8
  87. package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -6
  88. package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -6
  89. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +3 -7
  90. package/dist/runtime/components/DashboardSidebarCollapse.vue +5 -24
  91. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +3 -7
  92. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +3 -7
  93. package/dist/runtime/components/DashboardSidebarToggle.vue +5 -24
  94. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +3 -7
  95. package/dist/runtime/components/Drawer.d.vue.ts +1 -8
  96. package/dist/runtime/components/Drawer.vue.d.ts +1 -8
  97. package/dist/runtime/components/DropdownMenu.d.vue.ts +9 -5
  98. package/dist/runtime/components/DropdownMenu.vue +3 -3
  99. package/dist/runtime/components/DropdownMenu.vue.d.ts +9 -5
  100. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +3 -7
  101. package/dist/runtime/components/DropdownMenuContent.vue +5 -5
  102. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +3 -7
  103. package/dist/runtime/components/Editor.d.vue.ts +87 -0
  104. package/dist/runtime/components/Editor.vue +185 -0
  105. package/dist/runtime/components/Editor.vue.d.ts +87 -0
  106. package/dist/runtime/components/EditorDragHandle.d.vue.ts +64 -0
  107. package/dist/runtime/components/EditorDragHandle.vue +127 -0
  108. package/dist/runtime/components/EditorDragHandle.vue.d.ts +64 -0
  109. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +35 -0
  110. package/dist/runtime/components/EditorEmojiMenu.vue +70 -0
  111. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +35 -0
  112. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +39 -0
  113. package/dist/runtime/components/EditorMentionMenu.vue +72 -0
  114. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +39 -0
  115. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +52 -0
  116. package/dist/runtime/components/EditorSuggestionMenu.vue +80 -0
  117. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +52 -0
  118. package/dist/runtime/components/EditorToolbar.d.vue.ts +90 -0
  119. package/dist/runtime/components/EditorToolbar.vue +242 -0
  120. package/dist/runtime/components/EditorToolbar.vue.d.ts +90 -0
  121. package/dist/runtime/components/Empty.vue +1 -1
  122. package/dist/runtime/components/Error.d.vue.ts +2 -5
  123. package/dist/runtime/components/Error.vue.d.ts +2 -5
  124. package/dist/runtime/components/FieldGroup.d.vue.ts +1 -3
  125. package/dist/runtime/components/FieldGroup.vue.d.ts +1 -3
  126. package/dist/runtime/components/FileUpload.d.vue.ts +5 -6
  127. package/dist/runtime/components/FileUpload.vue +3 -3
  128. package/dist/runtime/components/FileUpload.vue.d.ts +5 -6
  129. package/dist/runtime/components/Footer.d.vue.ts +1 -3
  130. package/dist/runtime/components/Footer.vue.d.ts +1 -3
  131. package/dist/runtime/components/FooterColumns.d.vue.ts +3 -1
  132. package/dist/runtime/components/FooterColumns.vue.d.ts +3 -1
  133. package/dist/runtime/components/Form.d.vue.ts +3 -4
  134. package/dist/runtime/components/Form.vue.d.ts +3 -4
  135. package/dist/runtime/components/FormField.d.vue.ts +5 -0
  136. package/dist/runtime/components/FormField.vue +6 -5
  137. package/dist/runtime/components/FormField.vue.d.ts +5 -0
  138. package/dist/runtime/components/Header.d.vue.ts +5 -5
  139. package/dist/runtime/components/Header.vue.d.ts +5 -5
  140. package/dist/runtime/components/Icon.d.vue.ts +1 -1
  141. package/dist/runtime/components/Icon.vue +1 -1
  142. package/dist/runtime/components/Icon.vue.d.ts +1 -1
  143. package/dist/runtime/components/Input.d.vue.ts +5 -7
  144. package/dist/runtime/components/Input.vue +4 -4
  145. package/dist/runtime/components/Input.vue.d.ts +5 -7
  146. package/dist/runtime/components/InputDate.d.vue.ts +4 -8
  147. package/dist/runtime/components/InputDate.vue +5 -5
  148. package/dist/runtime/components/InputDate.vue.d.ts +4 -8
  149. package/dist/runtime/components/InputMenu.d.vue.ts +9 -15
  150. package/dist/runtime/components/InputMenu.vue +20 -7
  151. package/dist/runtime/components/InputMenu.vue.d.ts +9 -15
  152. package/dist/runtime/components/InputNumber.d.vue.ts +7 -9
  153. package/dist/runtime/components/InputNumber.vue +2 -2
  154. package/dist/runtime/components/InputNumber.vue.d.ts +7 -9
  155. package/dist/runtime/components/InputTags.d.vue.ts +4 -10
  156. package/dist/runtime/components/InputTags.vue +5 -5
  157. package/dist/runtime/components/InputTags.vue.d.ts +4 -10
  158. package/dist/runtime/components/InputTime.d.vue.ts +3 -5
  159. package/dist/runtime/components/InputTime.vue +4 -4
  160. package/dist/runtime/components/InputTime.vue.d.ts +3 -5
  161. package/dist/runtime/components/Kbd.d.vue.ts +1 -3
  162. package/dist/runtime/components/Kbd.vue.d.ts +1 -3
  163. package/dist/runtime/components/Link.d.vue.ts +58 -8
  164. package/dist/runtime/components/Link.vue.d.ts +58 -8
  165. package/dist/runtime/components/LinkBase.d.vue.ts +1 -4
  166. package/dist/runtime/components/LinkBase.vue.d.ts +1 -4
  167. package/dist/runtime/components/Marquee.d.vue.ts +1 -5
  168. package/dist/runtime/components/Marquee.vue.d.ts +1 -5
  169. package/dist/runtime/components/Modal.d.vue.ts +3 -10
  170. package/dist/runtime/components/Modal.vue +1 -1
  171. package/dist/runtime/components/Modal.vue.d.ts +3 -10
  172. package/dist/runtime/components/NavigationMenu.d.vue.ts +3 -3
  173. package/dist/runtime/components/NavigationMenu.vue +2 -2
  174. package/dist/runtime/components/NavigationMenu.vue.d.ts +3 -3
  175. package/dist/runtime/components/PageAnchors.d.vue.ts +3 -1
  176. package/dist/runtime/components/PageAnchors.vue.d.ts +3 -1
  177. package/dist/runtime/components/PageAside.d.vue.ts +1 -3
  178. package/dist/runtime/components/PageAside.vue.d.ts +1 -3
  179. package/dist/runtime/components/PageCTA.d.vue.ts +1 -4
  180. package/dist/runtime/components/PageCTA.vue.d.ts +1 -4
  181. package/dist/runtime/components/PageCard.d.vue.ts +1 -3
  182. package/dist/runtime/components/PageCard.vue +1 -1
  183. package/dist/runtime/components/PageCard.vue.d.ts +1 -3
  184. package/dist/runtime/components/PageFeature.d.vue.ts +1 -3
  185. package/dist/runtime/components/PageFeature.vue +3 -3
  186. package/dist/runtime/components/PageFeature.vue.d.ts +1 -3
  187. package/dist/runtime/components/PageHero.d.vue.ts +1 -3
  188. package/dist/runtime/components/PageHero.vue.d.ts +1 -3
  189. package/dist/runtime/components/PageLinks.d.vue.ts +3 -1
  190. package/dist/runtime/components/PageLinks.vue.d.ts +3 -1
  191. package/dist/runtime/components/PageList.d.vue.ts +1 -3
  192. package/dist/runtime/components/PageList.vue.d.ts +1 -3
  193. package/dist/runtime/components/PageLogos.d.vue.ts +1 -3
  194. package/dist/runtime/components/PageLogos.vue.d.ts +1 -3
  195. package/dist/runtime/components/PageSection.d.vue.ts +1 -4
  196. package/dist/runtime/components/PageSection.vue +1 -1
  197. package/dist/runtime/components/PageSection.vue.d.ts +1 -4
  198. package/dist/runtime/components/Pagination.d.vue.ts +1 -12
  199. package/dist/runtime/components/Pagination.vue +5 -5
  200. package/dist/runtime/components/Pagination.vue.d.ts +1 -12
  201. package/dist/runtime/components/PinInput.d.vue.ts +4 -7
  202. package/dist/runtime/components/PinInput.vue +1 -1
  203. package/dist/runtime/components/PinInput.vue.d.ts +4 -7
  204. package/dist/runtime/components/Popover.d.vue.ts +3 -4
  205. package/dist/runtime/components/Popover.vue.d.ts +3 -4
  206. package/dist/runtime/components/PricingPlan.d.vue.ts +1 -3
  207. package/dist/runtime/components/PricingPlan.vue.d.ts +1 -3
  208. package/dist/runtime/components/PricingPlans.d.vue.ts +3 -1
  209. package/dist/runtime/components/PricingPlans.vue.d.ts +3 -1
  210. package/dist/runtime/components/PricingTable.d.vue.ts +3 -1
  211. package/dist/runtime/components/PricingTable.vue.d.ts +3 -1
  212. package/dist/runtime/components/Progress.d.vue.ts +1 -5
  213. package/dist/runtime/components/Progress.vue.d.ts +1 -5
  214. package/dist/runtime/components/RadioGroup.d.vue.ts +3 -4
  215. package/dist/runtime/components/RadioGroup.vue.d.ts +3 -4
  216. package/dist/runtime/components/ScrollArea.d.vue.ts +81 -0
  217. package/dist/runtime/components/ScrollArea.vue +187 -0
  218. package/dist/runtime/components/ScrollArea.vue.d.ts +81 -0
  219. package/dist/runtime/components/Select.d.vue.ts +6 -8
  220. package/dist/runtime/components/Select.vue +19 -6
  221. package/dist/runtime/components/Select.vue.d.ts +6 -8
  222. package/dist/runtime/components/SelectMenu.d.vue.ts +9 -14
  223. package/dist/runtime/components/SelectMenu.vue +19 -6
  224. package/dist/runtime/components/SelectMenu.vue.d.ts +9 -14
  225. package/dist/runtime/components/Separator.d.vue.ts +1 -3
  226. package/dist/runtime/components/Separator.vue +1 -1
  227. package/dist/runtime/components/Separator.vue.d.ts +1 -3
  228. package/dist/runtime/components/Slideover.d.vue.ts +8 -11
  229. package/dist/runtime/components/Slideover.vue +4 -2
  230. package/dist/runtime/components/Slideover.vue.d.ts +8 -11
  231. package/dist/runtime/components/Slider.d.vue.ts +3 -4
  232. package/dist/runtime/components/Slider.vue +2 -2
  233. package/dist/runtime/components/Slider.vue.d.ts +3 -4
  234. package/dist/runtime/components/Stepper.d.vue.ts +3 -5
  235. package/dist/runtime/components/Stepper.vue.d.ts +3 -5
  236. package/dist/runtime/components/Switch.vue +3 -3
  237. package/dist/runtime/components/Table.d.vue.ts +5 -16
  238. package/dist/runtime/components/Table.vue +55 -33
  239. package/dist/runtime/components/Table.vue.d.ts +5 -16
  240. package/dist/runtime/components/Tabs.d.vue.ts +3 -3
  241. package/dist/runtime/components/Tabs.vue.d.ts +3 -3
  242. package/dist/runtime/components/Textarea.d.vue.ts +5 -7
  243. package/dist/runtime/components/Textarea.vue +4 -4
  244. package/dist/runtime/components/Textarea.vue.d.ts +5 -7
  245. package/dist/runtime/components/Timeline.d.vue.ts +3 -3
  246. package/dist/runtime/components/Timeline.vue.d.ts +3 -3
  247. package/dist/runtime/components/Toast.d.vue.ts +3 -7
  248. package/dist/runtime/components/Toast.vue +2 -2
  249. package/dist/runtime/components/Toast.vue.d.ts +3 -7
  250. package/dist/runtime/components/Toaster.d.vue.ts +1 -7
  251. package/dist/runtime/components/Toaster.vue.d.ts +1 -7
  252. package/dist/runtime/components/Tooltip.d.vue.ts +1 -3
  253. package/dist/runtime/components/Tooltip.vue.d.ts +1 -3
  254. package/dist/runtime/components/Tree.d.vue.ts +3 -4
  255. package/dist/runtime/components/Tree.vue +3 -3
  256. package/dist/runtime/components/Tree.vue.d.ts +3 -4
  257. package/dist/runtime/components/User.d.vue.ts +1 -3
  258. package/dist/runtime/components/User.vue +0 -1
  259. package/dist/runtime/components/User.vue.d.ts +1 -3
  260. package/dist/runtime/components/color-mode/ColorModeAvatar.vue +1 -1
  261. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -6
  262. package/dist/runtime/components/color-mode/ColorModeButton.vue +8 -26
  263. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -6
  264. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
  265. package/dist/runtime/components/color-mode/ColorModeSelect.vue +5 -4
  266. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
  267. package/dist/runtime/components/color-mode/ColorModeSwitch.vue +1 -1
  268. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +3 -3
  269. package/dist/runtime/components/content/ContentNavigation.vue +1 -1
  270. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +3 -3
  271. package/dist/runtime/components/content/ContentSearch.d.vue.ts +6 -6
  272. package/dist/runtime/components/content/ContentSearch.vue +3 -3
  273. package/dist/runtime/components/content/ContentSearch.vue.d.ts +6 -6
  274. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +3 -8
  275. package/dist/runtime/components/content/ContentSearchButton.vue +5 -24
  276. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +3 -8
  277. package/dist/runtime/components/content/ContentSurround.d.vue.ts +3 -1
  278. package/dist/runtime/components/content/ContentSurround.vue +2 -2
  279. package/dist/runtime/components/content/ContentSurround.vue.d.ts +3 -1
  280. package/dist/runtime/components/content/ContentToc.d.vue.ts +3 -4
  281. package/dist/runtime/components/content/ContentToc.vue +1 -1
  282. package/dist/runtime/components/content/ContentToc.vue.d.ts +3 -4
  283. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -5
  284. package/dist/runtime/components/locale/LocaleSelect.vue +15 -8
  285. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -5
  286. package/dist/runtime/components/prose/Accordion.d.vue.ts +1 -3
  287. package/dist/runtime/components/prose/Accordion.vue.d.ts +1 -3
  288. package/dist/runtime/components/prose/Callout.vue +1 -2
  289. package/dist/runtime/components/prose/Card.vue +1 -2
  290. package/dist/runtime/components/prose/CodeCollapse.vue +1 -1
  291. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +1 -3
  292. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +1 -3
  293. package/dist/runtime/components/prose/CodeIcon.vue +1 -1
  294. package/dist/runtime/components/prose/CodeTree.d.vue.ts +20 -1
  295. package/dist/runtime/components/prose/CodeTree.vue +32 -8
  296. package/dist/runtime/components/prose/CodeTree.vue.d.ts +20 -1
  297. package/dist/runtime/components/prose/Collapsible.vue +1 -1
  298. package/dist/runtime/components/prose/Img.d.vue.ts +1 -3
  299. package/dist/runtime/components/prose/Img.vue.d.ts +1 -3
  300. package/dist/runtime/components/prose/Pre.vue +1 -1
  301. package/dist/runtime/components/prose/Tabs.d.vue.ts +1 -3
  302. package/dist/runtime/components/prose/Tabs.vue.d.ts +1 -3
  303. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +2 -2
  304. package/dist/runtime/components/prose/callout/Caution.vue.d.ts +2 -2
  305. package/dist/runtime/components/prose/callout/Note.d.vue.ts +2 -2
  306. package/dist/runtime/components/prose/callout/Note.vue.d.ts +2 -2
  307. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +2 -2
  308. package/dist/runtime/components/prose/callout/Tip.vue.d.ts +2 -2
  309. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +2 -2
  310. package/dist/runtime/components/prose/callout/Warning.vue.d.ts +2 -2
  311. package/dist/runtime/composables/defineShortcuts.d.ts +2 -1
  312. package/dist/runtime/composables/defineShortcuts.js +62 -15
  313. package/dist/runtime/composables/useComponentIcons.d.ts +2 -2
  314. package/dist/runtime/composables/useEditorMenu.d.ts +64 -0
  315. package/dist/runtime/composables/useEditorMenu.js +448 -0
  316. package/dist/runtime/composables/useFileUpload.d.ts +1 -2
  317. package/dist/runtime/locale/en_gb.d.ts +3 -0
  318. package/dist/runtime/locale/en_gb.js +7 -0
  319. package/dist/runtime/locale/eu.d.ts +3 -0
  320. package/dist/runtime/locale/eu.js +129 -0
  321. package/dist/runtime/locale/index.d.ts +3 -0
  322. package/dist/runtime/locale/index.js +3 -0
  323. package/dist/runtime/locale/lo.d.ts +3 -0
  324. package/dist/runtime/locale/lo.js +129 -0
  325. package/dist/runtime/types/editor.d.ts +69 -0
  326. package/dist/runtime/types/editor.js +0 -0
  327. package/dist/runtime/types/index.d.ts +8 -0
  328. package/dist/runtime/types/index.js +8 -0
  329. package/dist/runtime/utils/content.d.ts +2 -2
  330. package/dist/runtime/utils/editor.d.ts +69 -0
  331. package/dist/runtime/utils/editor.js +364 -0
  332. package/dist/runtime/utils/locale.d.ts +1 -2
  333. package/dist/runtime/vue/components/Icon.vue +1 -1
  334. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
  335. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +5 -4
  336. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
  337. package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +1 -1
  338. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.d.vue.ts +6 -8
  339. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue +27 -8
  340. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue.d.ts +6 -8
  341. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.d.vue.ts +3 -5
  342. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue +5 -2
  343. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue.d.ts +3 -5
  344. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +71 -0
  345. package/dist/runtime/vue/overrides/none/Link.vue +122 -0
  346. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +71 -0
  347. package/dist/runtime/vue/{components → overrides/vue-router}/Link.d.vue.ts +6 -9
  348. package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue +34 -11
  349. package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue.d.ts +6 -9
  350. package/dist/runtime/vue/{stubs.d.ts → stubs/base.d.ts} +4 -5
  351. package/dist/runtime/vue/{stubs.js → stubs/base.js} +4 -5
  352. package/dist/runtime/vue/stubs/inertia.d.ts +5 -0
  353. package/dist/runtime/vue/stubs/inertia.js +10 -0
  354. package/dist/runtime/vue/stubs/none.d.ts +56 -0
  355. package/dist/runtime/vue/stubs/none.js +48 -0
  356. package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
  357. package/dist/runtime/vue/stubs/vue-router.js +2 -0
  358. package/dist/shared/{ui.B77q-Dvh.mjs → ui.DegC4tw1.mjs} +282 -60
  359. package/dist/unplugin.d.mts +14 -0
  360. package/dist/unplugin.mjs +73 -48
  361. package/dist/vite.mjs +1 -1
  362. package/package.json +49 -31
  363. package/dist/runtime/inertia/stubs.d.ts +0 -44
  364. package/dist/runtime/inertia/stubs.js +0 -84
@@ -14,9 +14,9 @@ import UDropdownMenuContent from "./DropdownMenuContent.vue";
14
14
  const props = defineProps({
15
15
  size: { type: null, required: false },
16
16
  items: { type: null, required: false },
17
- checkedIcon: { type: [String, Object], required: false },
18
- loadingIcon: { type: [String, Object], required: false },
19
- externalIcon: { type: [Boolean, String, Object], required: false, default: true },
17
+ checkedIcon: { type: null, required: false },
18
+ loadingIcon: { type: null, required: false },
19
+ externalIcon: { type: [Boolean, String], required: false, skipCheck: true, default: true },
20
20
  content: { type: Object, required: false },
21
21
  arrow: { type: [Boolean, Object], required: false },
22
22
  portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
@@ -115,8 +115,12 @@ export type DropdownMenuSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayO
115
115
  index: number;
116
116
  }) => any;
117
117
  'item-trailing': SlotProps<T>;
118
- 'content-top': (props?: {}) => any;
119
- 'content-bottom': (props?: {}) => any;
118
+ 'content-top': (props: {
119
+ sub: boolean;
120
+ }) => any;
121
+ 'content-bottom': (props: {
122
+ sub: boolean;
123
+ }) => any;
120
124
  } & DynamicSlots<MergeTypes<T>, 'label' | 'description', {
121
125
  active?: boolean;
122
126
  index: number;
@@ -126,9 +130,9 @@ export type DropdownMenuSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayO
126
130
  ui: DropdownMenu['ui'];
127
131
  }>;
128
132
  declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
129
- props: __VLS_PrettifyLocal<DropdownMenuProps<T> & {
130
- "onUpdate:open"?: ((payload: boolean) => any) | undefined;
131
- }> & import("vue").PublicProps;
133
+ props: __VLS_PrettifyLocal<DropdownMenuProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "update:open", payload: boolean) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
134
+ __VLS_PROPS_FALLBACK: infer P;
135
+ } ? P : {});
132
136
  expose: (exposed: {}) => void;
133
137
  attrs: any;
134
138
  slots: DropdownMenuSlots<T, NestedItem<T>>;
@@ -39,13 +39,9 @@ type DropdownMenuContentSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayO
39
39
  ui: DropdownMenu['ui'];
40
40
  }>;
41
41
  declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
42
- props: __VLS_PrettifyLocal<DropdownMenuContentProps<T> & {
43
- onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
44
- onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
45
- onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
46
- onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
47
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
48
- }> & import("vue").PublicProps;
42
+ props: __VLS_PrettifyLocal<DropdownMenuContentProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
43
+ __VLS_PROPS_FALLBACK: infer P;
44
+ } ? P : {});
49
45
  expose: (exposed: {}) => void;
50
46
  attrs: any;
51
47
  slots: DropdownMenuContentSlots<T, NestedItem<T>>;
@@ -24,9 +24,9 @@ const props = defineProps({
24
24
  sub: { type: Boolean, required: false },
25
25
  labelKey: { type: null, required: true },
26
26
  descriptionKey: { type: null, required: true },
27
- checkedIcon: { type: [String, Object], required: false },
28
- loadingIcon: { type: [String, Object], required: false },
29
- externalIcon: { type: [Boolean, String, Object], required: false },
27
+ checkedIcon: { type: null, required: false },
28
+ loadingIcon: { type: null, required: false },
29
+ externalIcon: { type: [Boolean, String], required: false, skipCheck: true },
30
30
  class: { type: null, required: false },
31
31
  ui: { type: null, required: true },
32
32
  uiOverride: { type: null, required: false },
@@ -105,7 +105,7 @@ const groups = computed(
105
105
 
106
106
  <DropdownMenu.Portal v-bind="portalProps">
107
107
  <component :is="sub ? DropdownMenu.SubContent : DropdownMenu.Content" data-slot="content" :class="ui.content({ class: [uiOverride?.content, props.class] })" v-bind="contentProps">
108
- <slot name="content-top" />
108
+ <slot name="content-top" :sub="sub ?? false" />
109
109
 
110
110
  <div role="presentation" data-slot="viewport" :class="ui.viewport({ class: uiOverride?.viewport })">
111
111
  <DropdownMenu.Group v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" data-slot="group" :class="ui.group({ class: uiOverride?.group })">
@@ -179,7 +179,7 @@ const groups = computed(
179
179
 
180
180
  <slot />
181
181
 
182
- <slot name="content-bottom" />
182
+ <slot name="content-bottom" :sub="sub ?? false" />
183
183
  </component>
184
184
  </DropdownMenu.Portal>
185
185
  </template>
@@ -39,13 +39,9 @@ type DropdownMenuContentSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayO
39
39
  ui: DropdownMenu['ui'];
40
40
  }>;
41
41
  declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
42
- props: __VLS_PrettifyLocal<DropdownMenuContentProps<T> & {
43
- onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
44
- onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
45
- onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
46
- onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
47
- onCloseAutoFocus?: ((event: Event) => any) | undefined;
48
- }> & import("vue").PublicProps;
42
+ props: __VLS_PrettifyLocal<DropdownMenuContentProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
43
+ __VLS_PROPS_FALLBACK: infer P;
44
+ } ? P : {});
49
45
  expose: (exposed: {}) => void;
50
46
  attrs: any;
51
47
  slots: DropdownMenuContentSlots<T, NestedItem<T>>;
@@ -0,0 +1,87 @@
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 { headings: { levels: [1, 2, 3, 4] }, 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.
33
+ * `{ showOnlyWhenEditable: false, showOnlyCurrent: true }`{lang="ts-type"}
34
+ * Can be a string or PlaceholderOptions from `@tiptap/extension-placeholder`.
35
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/placeholder
36
+ */
37
+ placeholder?: string | Partial<PlaceholderOptions>;
38
+ /**
39
+ * The markdown extension options to configure markdown parsing and serialization.
40
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/markdown
41
+ */
42
+ markdown?: Partial<MarkdownExtensionOptions>;
43
+ /**
44
+ * The image extension options to configure image handling.
45
+ * @see https://tiptap.dev/docs/editor/extensions/nodes/image
46
+ */
47
+ image?: Partial<ImageOptions>;
48
+ /**
49
+ * The mention extension options to configure mention handling.
50
+ * @see https://tiptap.dev/docs/editor/extensions/nodes/mention
51
+ */
52
+ mention?: Partial<MentionOptions>;
53
+ /**
54
+ * Custom item handlers to override or extend the default handlers.
55
+ * These handlers are provided to all child components (toolbar, suggestion menu, etc.).
56
+ */
57
+ handlers?: H;
58
+ class?: any;
59
+ ui?: Editor['slots'];
60
+ }
61
+ export interface EditorEmits<T extends Content = Content> {
62
+ 'update:modelValue': [value: T];
63
+ }
64
+ export interface EditorSlots<H extends EditorCustomHandlers = EditorCustomHandlers> {
65
+ default(props: {
66
+ editor: TiptapEditor;
67
+ handlers: EditorHandlers<H>;
68
+ }): any;
69
+ }
70
+ 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_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
71
+ props: __VLS_PrettifyLocal<EditorProps<T, H> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "update:modelValue", value: T) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
72
+ __VLS_PROPS_FALLBACK: infer P;
73
+ } ? P : {});
74
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
75
+ editor: import("vue").ShallowRef<TiptapEditor | undefined, TiptapEditor | undefined>;
76
+ }>) => void;
77
+ attrs: any;
78
+ slots: EditorSlots<H>;
79
+ emit: (evt: "update:modelValue", value: T) => void;
80
+ }>) => import("vue").VNode & {
81
+ __ctx?: Awaited<typeof __VLS_setup>;
82
+ };
83
+ declare const _default: typeof __VLS_export;
84
+ export default _default;
85
+ type __VLS_PrettifyLocal<T> = {
86
+ [K in keyof T as K]: T[K];
87
+ } & {};
@@ -0,0 +1,185 @@
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 HorizontalRule from "@tiptap/extension-horizontal-rule";
11
+ import Image from "@tiptap/extension-image";
12
+ import Mention from "@tiptap/extension-mention";
13
+ import Placeholder from "@tiptap/extension-placeholder";
14
+ import { Markdown } from "@tiptap/markdown";
15
+ import StarterKit from "@tiptap/starter-kit";
16
+ import { useEditor, EditorContent } from "@tiptap/vue-3";
17
+ import { reactiveOmit } from "@vueuse/core";
18
+ import { useAppConfig } from "#imports";
19
+ import { createHandlers } from "../utils/editor";
20
+ import { tv } from "../utils/tv";
21
+ defineOptions({ inheritAttrs: false });
22
+ const props = defineProps({
23
+ as: { type: null, required: false },
24
+ modelValue: { type: null, required: false },
25
+ contentType: { type: String, required: false },
26
+ starterKit: { type: Object, required: false },
27
+ placeholder: { type: [String, Object], required: false },
28
+ markdown: { type: Object, required: false },
29
+ image: { type: Object, required: false },
30
+ mention: { type: Object, required: false },
31
+ handlers: { type: null, required: false },
32
+ class: { type: null, required: false },
33
+ ui: { type: null, required: false },
34
+ extensions: { type: Array, required: false },
35
+ injectCSS: { type: Boolean, required: false },
36
+ injectNonce: { type: null, required: false },
37
+ autofocus: { type: [String, Number, Boolean, null], required: false },
38
+ editable: { type: Boolean, required: false },
39
+ textDirection: { type: String, required: false },
40
+ editorProps: { type: Object, required: false },
41
+ parseOptions: { type: Object, required: false },
42
+ coreExtensionOptions: { type: Object, required: false },
43
+ enableInputRules: { type: [Array, Boolean], required: false },
44
+ enablePasteRules: { type: [Array, Boolean], required: false },
45
+ enableCoreExtensions: { type: [Boolean, Object], required: false },
46
+ enableContentCheck: { type: Boolean, required: false },
47
+ emitContentError: { type: Boolean, required: false },
48
+ onBeforeCreate: { type: Function, required: false },
49
+ onCreate: { type: Function, required: false },
50
+ onMount: { type: Function, required: false },
51
+ onUnmount: { type: Function, required: false },
52
+ onContentError: { type: Function, required: false },
53
+ onUpdate: { type: Function, required: false },
54
+ onSelectionUpdate: { type: Function, required: false },
55
+ onTransaction: { type: Function, required: false },
56
+ onFocus: { type: Function, required: false },
57
+ onBlur: { type: Function, required: false },
58
+ onDestroy: { type: Function, required: false },
59
+ onPaste: { type: Function, required: false },
60
+ onDrop: { type: Function, required: false },
61
+ onDelete: { type: Function, required: false }
62
+ });
63
+ const emits = defineEmits(["update:modelValue"]);
64
+ defineSlots();
65
+ const attrs = useAttrs();
66
+ const appConfig = useAppConfig();
67
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editor || {} })());
68
+ const rootProps = useForwardProps(reactiveOmit(props, "starterKit", "extensions", "editorProps", "contentType", "class", "placeholder", "markdown", "image", "mention", "handlers"));
69
+ const editorProps = computed(() => defu(props.editorProps, {
70
+ attributes: {
71
+ autocomplete: "off",
72
+ autocorrect: "off",
73
+ autocapitalize: "off",
74
+ ...attrs,
75
+ class: ui.value.base({ class: props.ui?.base })
76
+ }
77
+ }));
78
+ const contentType = computed(() => props.contentType || (typeof props.modelValue === "string" ? "html" : "json"));
79
+ const starterKit = computed(() => defu(props.starterKit, {
80
+ horizontalRule: false,
81
+ headings: {
82
+ levels: [1, 2, 3, 4]
83
+ },
84
+ dropcursor: {
85
+ color: "var(--ui-primary)",
86
+ width: 2
87
+ },
88
+ link: {
89
+ openOnClick: false
90
+ }
91
+ }));
92
+ const placeholder = computed(() => defu(typeof props.placeholder === "string" ? { placeholder: props.placeholder } : props.placeholder, {
93
+ showOnlyWhenEditable: false,
94
+ showOnlyCurrent: true
95
+ }));
96
+ const markdown = computed(() => defu(props.markdown, {
97
+ markedOptions: {
98
+ gfm: true
99
+ }
100
+ }));
101
+ const image = computed(() => defu(props.image, {}));
102
+ const mention = computed(() => defu(props.mention, {
103
+ HTMLAttributes: {
104
+ class: "mention"
105
+ }
106
+ }));
107
+ const extensions = computed(() => [
108
+ contentType.value === "markdown" && Markdown.configure(markdown.value),
109
+ StarterKit.configure(starterKit.value),
110
+ HorizontalRule.extend({
111
+ renderHTML() {
112
+ return [
113
+ "div",
114
+ mergeAttributes(this.options.HTMLAttributes, { "data-type": this.name }),
115
+ ["hr"]
116
+ ];
117
+ }
118
+ }),
119
+ Image.configure(image.value),
120
+ props.placeholder && Placeholder.configure(placeholder.value),
121
+ Mention.configure(mention.value),
122
+ ...props.extensions || []
123
+ ].filter((extension) => !!extension));
124
+ const editor = useEditor({
125
+ ...rootProps.value,
126
+ content: props.modelValue,
127
+ contentType: contentType.value,
128
+ extensions: extensions.value,
129
+ editorProps: editorProps.value,
130
+ onUpdate: ({ editor: editor2 }) => {
131
+ let value;
132
+ try {
133
+ if (contentType.value === "html") {
134
+ value = editor2.getHTML();
135
+ } else if (contentType.value === "json") {
136
+ value = editor2.getJSON();
137
+ } else if (contentType.value === "markdown") {
138
+ value = editor2.getMarkdown();
139
+ }
140
+ } catch (error) {
141
+ value = editor2.getText();
142
+ }
143
+ emits("update:modelValue", value);
144
+ }
145
+ });
146
+ watch(() => props.modelValue, (newVal) => {
147
+ if (!editor.value || newVal == null) {
148
+ return;
149
+ }
150
+ 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();
151
+ const newContent = contentType.value === "json" && typeof newVal === "object" ? JSON.stringify(newVal) : String(newVal);
152
+ if (currentContent !== newContent) {
153
+ const currentSelection = editor.value.state.selection;
154
+ const currentPos = currentSelection.from;
155
+ editor.value.commands.setContent(newVal);
156
+ const newDoc = editor.value.state.doc;
157
+ if (currentPos <= newDoc.content.size) {
158
+ editor.value.commands.setTextSelection(currentPos);
159
+ }
160
+ }
161
+ });
162
+ const handlers = computed(() => ({
163
+ ...createHandlers(),
164
+ ...props.handlers
165
+ }));
166
+ provide("editorHandlers", handlers);
167
+ defineExpose({
168
+ editor
169
+ });
170
+ </script>
171
+
172
+ <template>
173
+ <Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
174
+ <template v-if="editor">
175
+ <slot :editor="editor" :handlers="handlers" />
176
+
177
+ <EditorContent
178
+ role="presentation"
179
+ :editor="editor"
180
+ data-slot="content"
181
+ :class="ui.content({ class: props.ui?.content })"
182
+ />
183
+ </template>
184
+ </Primitive>
185
+ </template>
@@ -0,0 +1,87 @@
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 { headings: { levels: [1, 2, 3, 4] }, 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.
33
+ * `{ showOnlyWhenEditable: false, showOnlyCurrent: true }`{lang="ts-type"}
34
+ * Can be a string or PlaceholderOptions from `@tiptap/extension-placeholder`.
35
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/placeholder
36
+ */
37
+ placeholder?: string | Partial<PlaceholderOptions>;
38
+ /**
39
+ * The markdown extension options to configure markdown parsing and serialization.
40
+ * @see https://tiptap.dev/docs/editor/extensions/functionality/markdown
41
+ */
42
+ markdown?: Partial<MarkdownExtensionOptions>;
43
+ /**
44
+ * The image extension options to configure image handling.
45
+ * @see https://tiptap.dev/docs/editor/extensions/nodes/image
46
+ */
47
+ image?: Partial<ImageOptions>;
48
+ /**
49
+ * The mention extension options to configure mention handling.
50
+ * @see https://tiptap.dev/docs/editor/extensions/nodes/mention
51
+ */
52
+ mention?: Partial<MentionOptions>;
53
+ /**
54
+ * Custom item handlers to override or extend the default handlers.
55
+ * These handlers are provided to all child components (toolbar, suggestion menu, etc.).
56
+ */
57
+ handlers?: H;
58
+ class?: any;
59
+ ui?: Editor['slots'];
60
+ }
61
+ export interface EditorEmits<T extends Content = Content> {
62
+ 'update:modelValue': [value: T];
63
+ }
64
+ export interface EditorSlots<H extends EditorCustomHandlers = EditorCustomHandlers> {
65
+ default(props: {
66
+ editor: TiptapEditor;
67
+ handlers: EditorHandlers<H>;
68
+ }): any;
69
+ }
70
+ 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_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
71
+ props: __VLS_PrettifyLocal<EditorProps<T, H> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "update:modelValue", value: T) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
72
+ __VLS_PROPS_FALLBACK: infer P;
73
+ } ? P : {});
74
+ expose: (exposed: import("vue").ShallowUnwrapRef<{
75
+ editor: import("vue").ShallowRef<TiptapEditor | undefined, TiptapEditor | undefined>;
76
+ }>) => void;
77
+ attrs: any;
78
+ slots: EditorSlots<H>;
79
+ emit: (evt: "update:modelValue", value: T) => void;
80
+ }>) => import("vue").VNode & {
81
+ __ctx?: Awaited<typeof __VLS_setup>;
82
+ };
83
+ declare const _default: typeof __VLS_export;
84
+ export default _default;
85
+ type __VLS_PrettifyLocal<T> = {
86
+ [K in keyof T as K]: T[K];
87
+ } & {};
@@ -0,0 +1,64 @@
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 __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<EditorDragHandleProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
48
+ nodeChange: (args_0: {
49
+ node: JSONContent;
50
+ pos: number;
51
+ }) => any;
52
+ }, string, import("vue").PublicProps, Readonly<EditorDragHandleProps> & Readonly<{
53
+ onNodeChange?: ((args_0: {
54
+ node: JSONContent;
55
+ pos: number;
56
+ }) => any) | undefined;
57
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, EditorDragHandleSlots>;
58
+ declare const _default: typeof __VLS_export;
59
+ export default _default;
60
+ type __VLS_WithSlots<T, S> = T & {
61
+ new (): {
62
+ $slots: S;
63
+ };
64
+ };
@@ -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>