@nuxt/ui 4.2.1 → 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 (312) hide show
  1. package/.nuxt/ui.css +2 -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.d.ts +3 -3
  7. package/dist/runtime/components/Alert.d.vue.ts +3 -5
  8. package/dist/runtime/components/Alert.vue.d.ts +3 -5
  9. package/dist/runtime/components/App.d.vue.ts +3 -1
  10. package/dist/runtime/components/App.vue.d.ts +3 -1
  11. package/dist/runtime/components/AuthForm.d.vue.ts +8 -46
  12. package/dist/runtime/components/AuthForm.vue.d.ts +8 -46
  13. package/dist/runtime/components/Badge.d.vue.ts +1 -3
  14. package/dist/runtime/components/Badge.vue.d.ts +1 -3
  15. package/dist/runtime/components/Banner.d.vue.ts +2 -2
  16. package/dist/runtime/components/Banner.vue.d.ts +2 -2
  17. package/dist/runtime/components/BlogPost.d.vue.ts +1 -4
  18. package/dist/runtime/components/BlogPost.vue +0 -1
  19. package/dist/runtime/components/BlogPost.vue.d.ts +1 -4
  20. package/dist/runtime/components/BlogPosts.d.vue.ts +3 -1
  21. package/dist/runtime/components/BlogPosts.vue.d.ts +3 -1
  22. package/dist/runtime/components/Breadcrumb.d.vue.ts +3 -1
  23. package/dist/runtime/components/Breadcrumb.vue.d.ts +3 -1
  24. package/dist/runtime/components/Calendar.d.vue.ts +8 -11
  25. package/dist/runtime/components/Calendar.vue.d.ts +8 -11
  26. package/dist/runtime/components/Carousel.d.vue.ts +6 -6
  27. package/dist/runtime/components/Carousel.vue +22 -0
  28. package/dist/runtime/components/Carousel.vue.d.ts +6 -6
  29. package/dist/runtime/components/ChangelogVersion.d.vue.ts +1 -4
  30. package/dist/runtime/components/ChangelogVersion.vue +0 -1
  31. package/dist/runtime/components/ChangelogVersion.vue.d.ts +1 -4
  32. package/dist/runtime/components/ChangelogVersions.d.vue.ts +3 -1
  33. package/dist/runtime/components/ChangelogVersions.vue.d.ts +3 -1
  34. package/dist/runtime/components/ChatMessage.d.vue.ts +1 -3
  35. package/dist/runtime/components/ChatMessage.vue.d.ts +1 -3
  36. package/dist/runtime/components/ChatMessages.d.vue.ts +3 -8
  37. package/dist/runtime/components/ChatMessages.vue.d.ts +3 -8
  38. package/dist/runtime/components/ChatPrompt.d.vue.ts +2 -7
  39. package/dist/runtime/components/ChatPrompt.vue.d.ts +2 -7
  40. package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +3 -11
  41. package/dist/runtime/components/ChatPromptSubmit.vue +1 -20
  42. package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +3 -11
  43. package/dist/runtime/components/CheckboxGroup.d.vue.ts +3 -4
  44. package/dist/runtime/components/CheckboxGroup.vue.d.ts +3 -4
  45. package/dist/runtime/components/Chip.d.vue.ts +1 -4
  46. package/dist/runtime/components/Chip.vue.d.ts +1 -4
  47. package/dist/runtime/components/Collapsible.d.vue.ts +1 -3
  48. package/dist/runtime/components/Collapsible.vue.d.ts +1 -3
  49. package/dist/runtime/components/ColorPicker.d.vue.ts +1 -5
  50. package/dist/runtime/components/ColorPicker.vue.d.ts +1 -5
  51. package/dist/runtime/components/CommandPalette.d.vue.ts +9 -14
  52. package/dist/runtime/components/CommandPalette.vue.d.ts +9 -14
  53. package/dist/runtime/components/ContextMenu.d.vue.ts +9 -5
  54. package/dist/runtime/components/ContextMenu.vue.d.ts +9 -5
  55. package/dist/runtime/components/ContextMenuContent.d.vue.ts +3 -7
  56. package/dist/runtime/components/ContextMenuContent.vue +2 -2
  57. package/dist/runtime/components/ContextMenuContent.vue.d.ts +3 -7
  58. package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -6
  59. package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -6
  60. package/dist/runtime/components/DashboardNavbar.d.vue.ts +3 -6
  61. package/dist/runtime/components/DashboardNavbar.vue.d.ts +3 -6
  62. package/dist/runtime/components/DashboardPanel.d.vue.ts +1 -4
  63. package/dist/runtime/components/DashboardPanel.vue.d.ts +1 -4
  64. package/dist/runtime/components/DashboardSearch.d.vue.ts +4 -9
  65. package/dist/runtime/components/DashboardSearch.vue.d.ts +4 -9
  66. package/dist/runtime/components/DashboardSearchButton.d.vue.ts +3 -8
  67. package/dist/runtime/components/DashboardSearchButton.vue +1 -20
  68. package/dist/runtime/components/DashboardSearchButton.vue.d.ts +3 -8
  69. package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -6
  70. package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -6
  71. package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +3 -7
  72. package/dist/runtime/components/DashboardSidebarCollapse.vue +1 -20
  73. package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +3 -7
  74. package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +3 -7
  75. package/dist/runtime/components/DashboardSidebarToggle.vue +1 -20
  76. package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +3 -7
  77. package/dist/runtime/components/Drawer.d.vue.ts +1 -8
  78. package/dist/runtime/components/Drawer.vue.d.ts +1 -8
  79. package/dist/runtime/components/DropdownMenu.d.vue.ts +9 -5
  80. package/dist/runtime/components/DropdownMenu.vue.d.ts +9 -5
  81. package/dist/runtime/components/DropdownMenuContent.d.vue.ts +3 -7
  82. package/dist/runtime/components/DropdownMenuContent.vue +2 -2
  83. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +3 -7
  84. package/dist/runtime/components/Editor.d.vue.ts +87 -0
  85. package/dist/runtime/components/Editor.vue +185 -0
  86. package/dist/runtime/components/Editor.vue.d.ts +87 -0
  87. package/dist/runtime/components/EditorDragHandle.d.vue.ts +64 -0
  88. package/dist/runtime/components/EditorDragHandle.vue +127 -0
  89. package/dist/runtime/components/EditorDragHandle.vue.d.ts +64 -0
  90. package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +35 -0
  91. package/dist/runtime/components/EditorEmojiMenu.vue +70 -0
  92. package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +35 -0
  93. package/dist/runtime/components/EditorMentionMenu.d.vue.ts +39 -0
  94. package/dist/runtime/components/EditorMentionMenu.vue +72 -0
  95. package/dist/runtime/components/EditorMentionMenu.vue.d.ts +39 -0
  96. package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +52 -0
  97. package/dist/runtime/components/EditorSuggestionMenu.vue +80 -0
  98. package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +52 -0
  99. package/dist/runtime/components/EditorToolbar.d.vue.ts +90 -0
  100. package/dist/runtime/components/EditorToolbar.vue +242 -0
  101. package/dist/runtime/components/EditorToolbar.vue.d.ts +90 -0
  102. package/dist/runtime/components/Error.d.vue.ts +2 -5
  103. package/dist/runtime/components/Error.vue.d.ts +2 -5
  104. package/dist/runtime/components/FieldGroup.d.vue.ts +1 -3
  105. package/dist/runtime/components/FieldGroup.vue.d.ts +1 -3
  106. package/dist/runtime/components/FileUpload.d.vue.ts +5 -6
  107. package/dist/runtime/components/FileUpload.vue.d.ts +5 -6
  108. package/dist/runtime/components/Footer.d.vue.ts +1 -3
  109. package/dist/runtime/components/Footer.vue.d.ts +1 -3
  110. package/dist/runtime/components/FooterColumns.d.vue.ts +3 -1
  111. package/dist/runtime/components/FooterColumns.vue.d.ts +3 -1
  112. package/dist/runtime/components/Form.d.vue.ts +3 -4
  113. package/dist/runtime/components/Form.vue.d.ts +3 -4
  114. package/dist/runtime/components/FormField.d.vue.ts +5 -0
  115. package/dist/runtime/components/FormField.vue +6 -5
  116. package/dist/runtime/components/FormField.vue.d.ts +5 -0
  117. package/dist/runtime/components/Header.d.vue.ts +5 -5
  118. package/dist/runtime/components/Header.vue.d.ts +5 -5
  119. package/dist/runtime/components/Input.d.vue.ts +5 -7
  120. package/dist/runtime/components/Input.vue.d.ts +5 -7
  121. package/dist/runtime/components/InputDate.d.vue.ts +4 -8
  122. package/dist/runtime/components/InputDate.vue.d.ts +4 -8
  123. package/dist/runtime/components/InputMenu.d.vue.ts +9 -15
  124. package/dist/runtime/components/InputMenu.vue +14 -1
  125. package/dist/runtime/components/InputMenu.vue.d.ts +9 -15
  126. package/dist/runtime/components/InputNumber.d.vue.ts +7 -9
  127. package/dist/runtime/components/InputNumber.vue.d.ts +7 -9
  128. package/dist/runtime/components/InputTags.d.vue.ts +4 -10
  129. package/dist/runtime/components/InputTags.vue.d.ts +4 -10
  130. package/dist/runtime/components/InputTime.d.vue.ts +3 -5
  131. package/dist/runtime/components/InputTime.vue.d.ts +3 -5
  132. package/dist/runtime/components/Kbd.d.vue.ts +1 -3
  133. package/dist/runtime/components/Kbd.vue.d.ts +1 -3
  134. package/dist/runtime/components/Link.d.vue.ts +6 -6
  135. package/dist/runtime/components/Link.vue.d.ts +6 -6
  136. package/dist/runtime/components/LinkBase.d.vue.ts +1 -4
  137. package/dist/runtime/components/LinkBase.vue.d.ts +1 -4
  138. package/dist/runtime/components/Marquee.d.vue.ts +1 -5
  139. package/dist/runtime/components/Marquee.vue.d.ts +1 -5
  140. package/dist/runtime/components/Modal.d.vue.ts +3 -10
  141. package/dist/runtime/components/Modal.vue.d.ts +3 -10
  142. package/dist/runtime/components/NavigationMenu.d.vue.ts +3 -3
  143. package/dist/runtime/components/NavigationMenu.vue.d.ts +3 -3
  144. package/dist/runtime/components/PageAnchors.d.vue.ts +3 -1
  145. package/dist/runtime/components/PageAnchors.vue.d.ts +3 -1
  146. package/dist/runtime/components/PageAside.d.vue.ts +1 -3
  147. package/dist/runtime/components/PageAside.vue.d.ts +1 -3
  148. package/dist/runtime/components/PageCTA.d.vue.ts +1 -4
  149. package/dist/runtime/components/PageCTA.vue.d.ts +1 -4
  150. package/dist/runtime/components/PageCard.d.vue.ts +1 -3
  151. package/dist/runtime/components/PageCard.vue.d.ts +1 -3
  152. package/dist/runtime/components/PageFeature.d.vue.ts +1 -3
  153. package/dist/runtime/components/PageFeature.vue +2 -2
  154. package/dist/runtime/components/PageFeature.vue.d.ts +1 -3
  155. package/dist/runtime/components/PageHero.d.vue.ts +1 -3
  156. package/dist/runtime/components/PageHero.vue.d.ts +1 -3
  157. package/dist/runtime/components/PageLinks.d.vue.ts +3 -1
  158. package/dist/runtime/components/PageLinks.vue.d.ts +3 -1
  159. package/dist/runtime/components/PageList.d.vue.ts +1 -3
  160. package/dist/runtime/components/PageList.vue.d.ts +1 -3
  161. package/dist/runtime/components/PageLogos.d.vue.ts +1 -3
  162. package/dist/runtime/components/PageLogos.vue.d.ts +1 -3
  163. package/dist/runtime/components/PageSection.d.vue.ts +1 -4
  164. package/dist/runtime/components/PageSection.vue.d.ts +1 -4
  165. package/dist/runtime/components/Pagination.d.vue.ts +1 -12
  166. package/dist/runtime/components/Pagination.vue.d.ts +1 -12
  167. package/dist/runtime/components/PinInput.d.vue.ts +4 -7
  168. package/dist/runtime/components/PinInput.vue +1 -1
  169. package/dist/runtime/components/PinInput.vue.d.ts +4 -7
  170. package/dist/runtime/components/Popover.d.vue.ts +3 -4
  171. package/dist/runtime/components/Popover.vue.d.ts +3 -4
  172. package/dist/runtime/components/PricingPlan.d.vue.ts +1 -3
  173. package/dist/runtime/components/PricingPlan.vue.d.ts +1 -3
  174. package/dist/runtime/components/PricingPlans.d.vue.ts +3 -1
  175. package/dist/runtime/components/PricingPlans.vue.d.ts +3 -1
  176. package/dist/runtime/components/PricingTable.d.vue.ts +3 -1
  177. package/dist/runtime/components/PricingTable.vue.d.ts +3 -1
  178. package/dist/runtime/components/Progress.d.vue.ts +1 -5
  179. package/dist/runtime/components/Progress.vue.d.ts +1 -5
  180. package/dist/runtime/components/RadioGroup.d.vue.ts +3 -4
  181. package/dist/runtime/components/RadioGroup.vue.d.ts +3 -4
  182. package/dist/runtime/components/ScrollArea.d.vue.ts +81 -0
  183. package/dist/runtime/components/ScrollArea.vue +187 -0
  184. package/dist/runtime/components/ScrollArea.vue.d.ts +81 -0
  185. package/dist/runtime/components/Select.d.vue.ts +6 -8
  186. package/dist/runtime/components/Select.vue +14 -1
  187. package/dist/runtime/components/Select.vue.d.ts +6 -8
  188. package/dist/runtime/components/SelectMenu.d.vue.ts +9 -14
  189. package/dist/runtime/components/SelectMenu.vue +14 -1
  190. package/dist/runtime/components/SelectMenu.vue.d.ts +9 -14
  191. package/dist/runtime/components/Separator.d.vue.ts +1 -3
  192. package/dist/runtime/components/Separator.vue.d.ts +1 -3
  193. package/dist/runtime/components/Slideover.d.vue.ts +8 -11
  194. package/dist/runtime/components/Slideover.vue +3 -1
  195. package/dist/runtime/components/Slideover.vue.d.ts +8 -11
  196. package/dist/runtime/components/Slider.d.vue.ts +3 -4
  197. package/dist/runtime/components/Slider.vue +2 -2
  198. package/dist/runtime/components/Slider.vue.d.ts +3 -4
  199. package/dist/runtime/components/Stepper.d.vue.ts +3 -5
  200. package/dist/runtime/components/Stepper.vue.d.ts +3 -5
  201. package/dist/runtime/components/Table.d.vue.ts +5 -16
  202. package/dist/runtime/components/Table.vue +55 -33
  203. package/dist/runtime/components/Table.vue.d.ts +5 -16
  204. package/dist/runtime/components/Tabs.d.vue.ts +3 -3
  205. package/dist/runtime/components/Tabs.vue.d.ts +3 -3
  206. package/dist/runtime/components/Textarea.d.vue.ts +5 -7
  207. package/dist/runtime/components/Textarea.vue.d.ts +5 -7
  208. package/dist/runtime/components/Timeline.d.vue.ts +3 -3
  209. package/dist/runtime/components/Timeline.vue.d.ts +3 -3
  210. package/dist/runtime/components/Toast.d.vue.ts +3 -7
  211. package/dist/runtime/components/Toast.vue.d.ts +3 -7
  212. package/dist/runtime/components/Toaster.d.vue.ts +1 -7
  213. package/dist/runtime/components/Toaster.vue.d.ts +1 -7
  214. package/dist/runtime/components/Tooltip.d.vue.ts +1 -3
  215. package/dist/runtime/components/Tooltip.vue.d.ts +1 -3
  216. package/dist/runtime/components/Tree.d.vue.ts +3 -4
  217. package/dist/runtime/components/Tree.vue.d.ts +3 -4
  218. package/dist/runtime/components/User.d.vue.ts +1 -3
  219. package/dist/runtime/components/User.vue +0 -1
  220. package/dist/runtime/components/User.vue.d.ts +1 -3
  221. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -6
  222. package/dist/runtime/components/color-mode/ColorModeButton.vue +3 -22
  223. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -6
  224. package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
  225. package/dist/runtime/components/color-mode/ColorModeSelect.vue +1 -0
  226. package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
  227. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +3 -3
  228. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +3 -3
  229. package/dist/runtime/components/content/ContentSearch.d.vue.ts +6 -6
  230. package/dist/runtime/components/content/ContentSearch.vue.d.ts +6 -6
  231. package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +3 -8
  232. package/dist/runtime/components/content/ContentSearchButton.vue +1 -20
  233. package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +3 -8
  234. package/dist/runtime/components/content/ContentSurround.d.vue.ts +3 -1
  235. package/dist/runtime/components/content/ContentSurround.vue.d.ts +3 -1
  236. package/dist/runtime/components/content/ContentToc.d.vue.ts +3 -4
  237. package/dist/runtime/components/content/ContentToc.vue.d.ts +3 -4
  238. package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -5
  239. package/dist/runtime/components/locale/LocaleSelect.vue +10 -3
  240. package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -5
  241. package/dist/runtime/components/prose/Accordion.d.vue.ts +1 -3
  242. package/dist/runtime/components/prose/Accordion.vue.d.ts +1 -3
  243. package/dist/runtime/components/prose/Callout.vue +0 -1
  244. package/dist/runtime/components/prose/Card.vue +0 -1
  245. package/dist/runtime/components/prose/CodeGroup.d.vue.ts +1 -3
  246. package/dist/runtime/components/prose/CodeGroup.vue.d.ts +1 -3
  247. package/dist/runtime/components/prose/CodeTree.d.vue.ts +20 -1
  248. package/dist/runtime/components/prose/CodeTree.vue +32 -8
  249. package/dist/runtime/components/prose/CodeTree.vue.d.ts +20 -1
  250. package/dist/runtime/components/prose/Img.d.vue.ts +1 -3
  251. package/dist/runtime/components/prose/Img.vue.d.ts +1 -3
  252. package/dist/runtime/components/prose/Tabs.d.vue.ts +1 -3
  253. package/dist/runtime/components/prose/Tabs.vue.d.ts +1 -3
  254. package/dist/runtime/components/prose/callout/Caution.d.vue.ts +2 -2
  255. package/dist/runtime/components/prose/callout/Caution.vue.d.ts +2 -2
  256. package/dist/runtime/components/prose/callout/Note.d.vue.ts +2 -2
  257. package/dist/runtime/components/prose/callout/Note.vue.d.ts +2 -2
  258. package/dist/runtime/components/prose/callout/Tip.d.vue.ts +2 -2
  259. package/dist/runtime/components/prose/callout/Tip.vue.d.ts +2 -2
  260. package/dist/runtime/components/prose/callout/Warning.d.vue.ts +2 -2
  261. package/dist/runtime/components/prose/callout/Warning.vue.d.ts +2 -2
  262. package/dist/runtime/composables/defineShortcuts.d.ts +2 -1
  263. package/dist/runtime/composables/defineShortcuts.js +62 -15
  264. package/dist/runtime/composables/useEditorMenu.d.ts +64 -0
  265. package/dist/runtime/composables/useEditorMenu.js +448 -0
  266. package/dist/runtime/composables/useFileUpload.d.ts +1 -2
  267. package/dist/runtime/locale/en_gb.d.ts +3 -0
  268. package/dist/runtime/locale/en_gb.js +7 -0
  269. package/dist/runtime/locale/eu.d.ts +3 -0
  270. package/dist/runtime/locale/eu.js +129 -0
  271. package/dist/runtime/locale/index.d.ts +3 -0
  272. package/dist/runtime/locale/index.js +3 -0
  273. package/dist/runtime/locale/lo.d.ts +3 -0
  274. package/dist/runtime/locale/lo.js +129 -0
  275. package/dist/runtime/types/editor.d.ts +69 -0
  276. package/dist/runtime/types/editor.js +0 -0
  277. package/dist/runtime/types/index.d.ts +8 -0
  278. package/dist/runtime/types/index.js +8 -0
  279. package/dist/runtime/utils/content.d.ts +2 -2
  280. package/dist/runtime/utils/editor.d.ts +69 -0
  281. package/dist/runtime/utils/editor.js +364 -0
  282. package/dist/runtime/utils/locale.d.ts +1 -2
  283. package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
  284. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +1 -0
  285. package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
  286. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.d.vue.ts +2 -7
  287. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue +3 -3
  288. package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue.d.ts +2 -7
  289. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.d.vue.ts +2 -5
  290. package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue.d.ts +2 -5
  291. package/dist/runtime/vue/overrides/none/Link.d.vue.ts +71 -0
  292. package/dist/runtime/vue/overrides/none/Link.vue +122 -0
  293. package/dist/runtime/vue/overrides/none/Link.vue.d.ts +71 -0
  294. package/dist/runtime/vue/{components → overrides/vue-router}/Link.d.vue.ts +2 -7
  295. package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue +4 -4
  296. package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue.d.ts +2 -7
  297. package/dist/runtime/vue/{stubs.d.ts → stubs/base.d.ts} +4 -5
  298. package/dist/runtime/vue/{stubs.js → stubs/base.js} +4 -5
  299. package/dist/runtime/vue/stubs/inertia.d.ts +5 -0
  300. package/dist/runtime/vue/stubs/inertia.js +10 -0
  301. package/dist/runtime/vue/stubs/none.d.ts +56 -0
  302. package/dist/runtime/vue/stubs/none.js +48 -0
  303. package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
  304. package/dist/runtime/vue/stubs/vue-router.js +2 -0
  305. package/dist/shared/{ui.B77q-Dvh.mjs → ui.DegC4tw1.mjs} +282 -60
  306. package/dist/unplugin.d.mts +14 -0
  307. package/dist/unplugin.mjs +73 -48
  308. package/dist/vite.mjs +1 -1
  309. package/package.json +45 -31
  310. package/dist/runtime/inertia/stubs.d.ts +0 -44
  311. package/dist/runtime/inertia/stubs.js +0 -84
  312. /package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue +0 -0
@@ -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,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,35 @@
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
+ items?: T[] | T[][];
17
+ class?: any;
18
+ ui?: EditorEmojiMenu['slots'];
19
+ }
20
+ 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_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
21
+ props: __VLS_PrettifyLocal<EditorEmojiMenuProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
22
+ __VLS_PROPS_FALLBACK: infer P;
23
+ } ? P : {});
24
+ expose: (exposed: {}) => void;
25
+ attrs: any;
26
+ slots: {};
27
+ emit: {};
28
+ }>) => import("vue").VNode & {
29
+ __ctx?: Awaited<typeof __VLS_setup>;
30
+ };
31
+ declare const _default: typeof __VLS_export;
32
+ export default _default;
33
+ type __VLS_PrettifyLocal<T> = {
34
+ [K in keyof T as K]: T[K];
35
+ } & {};
@@ -0,0 +1,70 @@
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
+ items: { type: Array, required: false },
13
+ class: { type: null, required: false },
14
+ ui: { type: null, required: false },
15
+ editor: { type: Object, required: false },
16
+ char: { type: String, required: false, default: ":" },
17
+ pluginKey: { type: String, required: false, default: "emojiMenu" },
18
+ filterFields: { type: Array, required: false, default: () => ["name", "shortcodes", "tags"] },
19
+ limit: { type: Number, required: false },
20
+ options: { type: Object, required: false },
21
+ appendTo: { type: Function, required: false, skipCheck: true }
22
+ });
23
+ const appConfig = useAppConfig();
24
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editorEmojiMenu || {} })());
25
+ let menu = null;
26
+ onMounted(async () => {
27
+ await nextTick();
28
+ if (!props.editor || props.editor.isDestroyed) {
29
+ return;
30
+ }
31
+ menu = useEditorMenu({
32
+ editor: props.editor,
33
+ char: props.char,
34
+ pluginKey: props.pluginKey,
35
+ items: toRef(() => props.items),
36
+ filterFields: props.filterFields,
37
+ limit: props.limit,
38
+ options: props.options,
39
+ appendTo: props.appendTo,
40
+ ui,
41
+ onSelect: (editor, range, item) => {
42
+ if (!item.emoji) return;
43
+ editor.chain().focus().deleteRange(range).insertContent(item.emoji).run();
44
+ },
45
+ renderItem: (item, styles) => {
46
+ const content = item.emoji || item.shortcodes[0] || item.name;
47
+ return [
48
+ h("span", { class: styles.value.itemLeadingIcon() }, content),
49
+ h("span", { class: styles.value.itemWrapper() }, [
50
+ h("span", { class: styles.value.itemLabel() }, item.name)
51
+ ])
52
+ ];
53
+ }
54
+ });
55
+ props.editor.registerPlugin(menu.plugin);
56
+ });
57
+ onBeforeUnmount(() => {
58
+ if (menu) {
59
+ menu.destroy();
60
+ menu = null;
61
+ }
62
+ if (props.editor && !props.editor.isDestroyed) {
63
+ props.editor.unregisterPlugin(props.pluginKey);
64
+ }
65
+ });
66
+ </script>
67
+
68
+ <template>
69
+ <div />
70
+ </template>
@@ -0,0 +1,35 @@
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
+ items?: T[] | T[][];
17
+ class?: any;
18
+ ui?: EditorEmojiMenu['slots'];
19
+ }
20
+ 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_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
21
+ props: __VLS_PrettifyLocal<EditorEmojiMenuProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
22
+ __VLS_PROPS_FALLBACK: infer P;
23
+ } ? P : {});
24
+ expose: (exposed: {}) => void;
25
+ attrs: any;
26
+ slots: {};
27
+ emit: {};
28
+ }>) => import("vue").VNode & {
29
+ __ctx?: Awaited<typeof __VLS_setup>;
30
+ };
31
+ declare const _default: typeof __VLS_export;
32
+ export default _default;
33
+ type __VLS_PrettifyLocal<T> = {
34
+ [K in keyof T as K]: T[K];
35
+ } & {};
@@ -0,0 +1,39 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/editor-mention-menu';
3
+ import type { EditorMenuOptions } from '../composables/useEditorMenu';
4
+ import type { AvatarProps, IconProps } from '../types';
5
+ import type { ComponentConfig } from '../types/tv';
6
+ type EditorMentionMenu = ComponentConfig<typeof theme, AppConfig, 'editorMentionMenu'>;
7
+ export interface EditorMentionMenuItem {
8
+ label: string;
9
+ description?: string;
10
+ /**
11
+ * @IconifyIcon
12
+ */
13
+ icon?: IconProps['name'];
14
+ avatar?: AvatarProps;
15
+ disabled?: boolean;
16
+ class?: any;
17
+ [key: string]: any;
18
+ }
19
+ export interface EditorMentionMenuProps<T extends EditorMentionMenuItem = EditorMentionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
20
+ items?: T[] | T[][];
21
+ class?: any;
22
+ ui?: EditorMentionMenu['slots'];
23
+ }
24
+ declare const __VLS_export: <T extends EditorMentionMenuItem>(__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<{
25
+ props: __VLS_PrettifyLocal<EditorMentionMenuProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
26
+ __VLS_PROPS_FALLBACK: infer P;
27
+ } ? P : {});
28
+ expose: (exposed: {}) => void;
29
+ attrs: any;
30
+ slots: {};
31
+ emit: {};
32
+ }>) => import("vue").VNode & {
33
+ __ctx?: Awaited<typeof __VLS_setup>;
34
+ };
35
+ declare const _default: typeof __VLS_export;
36
+ export default _default;
37
+ type __VLS_PrettifyLocal<T> = {
38
+ [K in keyof T as K]: T[K];
39
+ } & {};
@@ -0,0 +1,72 @@
1
+ <script>
2
+ import theme from "#build/ui/editor-mention-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
+ import UIcon from "./Icon.vue";
11
+ import UAvatar from "./Avatar.vue";
12
+ defineOptions({ inheritAttrs: false });
13
+ const props = defineProps({
14
+ items: { type: Array, required: false },
15
+ class: { type: null, required: false },
16
+ ui: { type: null, required: false },
17
+ editor: { type: Object, required: false },
18
+ char: { type: String, required: false, default: "@" },
19
+ pluginKey: { type: String, required: false, default: "mentionMenu" },
20
+ filterFields: { type: Array, required: false },
21
+ limit: { type: Number, required: false },
22
+ options: { type: Object, required: false },
23
+ appendTo: { type: Function, required: false, skipCheck: true }
24
+ });
25
+ const appConfig = useAppConfig();
26
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editorMentionMenu || {} })());
27
+ let menu = null;
28
+ onMounted(async () => {
29
+ await nextTick();
30
+ if (!props.editor || props.editor.isDestroyed) {
31
+ return;
32
+ }
33
+ menu = useEditorMenu({
34
+ editor: props.editor,
35
+ char: props.char,
36
+ pluginKey: props.pluginKey,
37
+ items: toRef(() => props.items),
38
+ filterFields: props.filterFields,
39
+ limit: props.limit,
40
+ options: props.options,
41
+ appendTo: props.appendTo,
42
+ ui,
43
+ onSelect: (editor, range, item) => {
44
+ editor.chain().focus().deleteRange(range).insertContent({
45
+ type: "mention",
46
+ attrs: item
47
+ }).run();
48
+ },
49
+ renderItem: (item, styles) => [
50
+ item.avatar ? h(UAvatar, { ...item.avatar, size: styles.value.itemLeadingAvatarSize(), class: styles.value.itemLeadingAvatar() }) : item.icon ? h(UIcon, { name: item.icon, class: styles.value.itemLeadingIcon() }) : null,
51
+ h("span", { class: styles.value.itemWrapper() }, [
52
+ h("span", { class: styles.value.itemLabel() }, item.label),
53
+ item.description ? h("span", { class: styles.value.itemDescription() }, item.description) : null
54
+ ])
55
+ ]
56
+ });
57
+ props.editor.registerPlugin(menu.plugin);
58
+ });
59
+ onBeforeUnmount(() => {
60
+ if (menu) {
61
+ menu.destroy();
62
+ menu = null;
63
+ }
64
+ if (props.editor && !props.editor.isDestroyed) {
65
+ props.editor.unregisterPlugin(props.pluginKey);
66
+ }
67
+ });
68
+ </script>
69
+
70
+ <template>
71
+ <div />
72
+ </template>
@@ -0,0 +1,39 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/editor-mention-menu';
3
+ import type { EditorMenuOptions } from '../composables/useEditorMenu';
4
+ import type { AvatarProps, IconProps } from '../types';
5
+ import type { ComponentConfig } from '../types/tv';
6
+ type EditorMentionMenu = ComponentConfig<typeof theme, AppConfig, 'editorMentionMenu'>;
7
+ export interface EditorMentionMenuItem {
8
+ label: string;
9
+ description?: string;
10
+ /**
11
+ * @IconifyIcon
12
+ */
13
+ icon?: IconProps['name'];
14
+ avatar?: AvatarProps;
15
+ disabled?: boolean;
16
+ class?: any;
17
+ [key: string]: any;
18
+ }
19
+ export interface EditorMentionMenuProps<T extends EditorMentionMenuItem = EditorMentionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
20
+ items?: T[] | T[][];
21
+ class?: any;
22
+ ui?: EditorMentionMenu['slots'];
23
+ }
24
+ declare const __VLS_export: <T extends EditorMentionMenuItem>(__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<{
25
+ props: __VLS_PrettifyLocal<EditorMentionMenuProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
26
+ __VLS_PROPS_FALLBACK: infer P;
27
+ } ? P : {});
28
+ expose: (exposed: {}) => void;
29
+ attrs: any;
30
+ slots: {};
31
+ emit: {};
32
+ }>) => import("vue").VNode & {
33
+ __ctx?: Awaited<typeof __VLS_setup>;
34
+ };
35
+ declare const _default: typeof __VLS_export;
36
+ export default _default;
37
+ type __VLS_PrettifyLocal<T> = {
38
+ [K in keyof T as K]: T[K];
39
+ } & {};
@@ -0,0 +1,52 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/editor-suggestion-menu';
3
+ import type { EditorMenuOptions } from '../composables/useEditorMenu';
4
+ import type { IconProps } from '../types';
5
+ import type { EditorItem, EditorCustomHandlers } from '../types/editor';
6
+ import type { ComponentConfig } from '../types/tv';
7
+ type EditorSuggestionMenu = ComponentConfig<typeof theme, AppConfig, 'editorSuggestionMenu'>;
8
+ type EditorSuggestionMenuLabelItem = {
9
+ type: 'label';
10
+ label: string;
11
+ class?: any;
12
+ [key: string]: any;
13
+ };
14
+ type EditorSuggestionMenuSeparatorItem = {
15
+ type: 'separator';
16
+ class?: any;
17
+ [key: string]: any;
18
+ };
19
+ type EditorSuggestionMenuActionItem<H extends EditorCustomHandlers = EditorCustomHandlers> = {
20
+ type?: never;
21
+ label: string;
22
+ description?: string;
23
+ /**
24
+ * @IconifyIcon
25
+ */
26
+ icon?: IconProps['name'];
27
+ disabled?: boolean;
28
+ class?: any;
29
+ [key: string]: any;
30
+ } & EditorItem<H>;
31
+ export type EditorSuggestionMenuItem<H extends EditorCustomHandlers = EditorCustomHandlers> = EditorSuggestionMenuLabelItem | EditorSuggestionMenuSeparatorItem | EditorSuggestionMenuActionItem<H>;
32
+ export interface EditorSuggestionMenuProps<T extends EditorSuggestionMenuItem = EditorSuggestionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
33
+ items?: T[] | T[][];
34
+ class?: any;
35
+ ui?: EditorSuggestionMenu['slots'];
36
+ }
37
+ declare const __VLS_export: <T extends EditorSuggestionMenuItem>(__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<{
38
+ props: __VLS_PrettifyLocal<EditorSuggestionMenuProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
39
+ __VLS_PROPS_FALLBACK: infer P;
40
+ } ? P : {});
41
+ expose: (exposed: {}) => void;
42
+ attrs: any;
43
+ slots: {};
44
+ emit: {};
45
+ }>) => import("vue").VNode & {
46
+ __ctx?: Awaited<typeof __VLS_setup>;
47
+ };
48
+ declare const _default: typeof __VLS_export;
49
+ export default _default;
50
+ type __VLS_PrettifyLocal<T> = {
51
+ [K in keyof T as K]: T[K];
52
+ } & {};
@@ -0,0 +1,80 @@
1
+ <script>
2
+ import theme from "#build/ui/editor-suggestion-menu";
3
+ </script>
4
+
5
+ <script setup>
6
+ import { computed, h, inject, onMounted, onBeforeUnmount, nextTick, toRef } from "vue";
7
+ import { useAppConfig } from "#imports";
8
+ import { useEditorMenu } from "../composables/useEditorMenu";
9
+ import { createHandlers } from "../utils/editor";
10
+ import { tv } from "../utils/tv";
11
+ import UIcon from "./Icon.vue";
12
+ defineOptions({ inheritAttrs: false });
13
+ const props = defineProps({
14
+ items: { type: Array, required: false },
15
+ class: { type: null, required: false },
16
+ ui: { type: null, required: false },
17
+ editor: { type: Object, required: false },
18
+ char: { type: String, required: false, default: "/" },
19
+ pluginKey: { type: String, required: false, default: "suggestionMenu" },
20
+ filterFields: { type: Array, required: false },
21
+ limit: { type: Number, required: false },
22
+ options: { type: Object, required: false },
23
+ appendTo: { type: Function, required: false, skipCheck: true }
24
+ });
25
+ const appConfig = useAppConfig();
26
+ const handlers = inject("editorHandlers", computed(() => createHandlers()));
27
+ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editorSuggestionMenu || {} })());
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.type === "label" || item.type === "separator") return;
46
+ editor.chain().focus().deleteRange(range).run();
47
+ const handler = handlers?.value?.[item.kind];
48
+ if (handler) {
49
+ handler.execute(editor, item).run();
50
+ }
51
+ },
52
+ renderItem: (item, styles) => {
53
+ if (item.type === "label") {
54
+ return [h("span", {}, item.label)];
55
+ }
56
+ return [
57
+ item.icon ? h(UIcon, { name: item.icon, class: styles.value.itemLeadingIcon() }) : null,
58
+ h("span", { class: styles.value.itemWrapper() }, [
59
+ h("span", { class: styles.value.itemLabel() }, item.label),
60
+ item.description ? h("span", { class: styles.value.itemDescription() }, item.description) : null
61
+ ])
62
+ ];
63
+ }
64
+ });
65
+ props.editor.registerPlugin(menu.plugin);
66
+ });
67
+ onBeforeUnmount(() => {
68
+ if (menu) {
69
+ menu.destroy();
70
+ menu = null;
71
+ }
72
+ if (props.editor && !props.editor.isDestroyed) {
73
+ props.editor.unregisterPlugin(props.pluginKey);
74
+ }
75
+ });
76
+ </script>
77
+
78
+ <template>
79
+ <div />
80
+ </template>
@@ -0,0 +1,52 @@
1
+ import type { AppConfig } from '@nuxt/schema';
2
+ import theme from '#build/ui/editor-suggestion-menu';
3
+ import type { EditorMenuOptions } from '../composables/useEditorMenu';
4
+ import type { IconProps } from '../types';
5
+ import type { EditorItem, EditorCustomHandlers } from '../types/editor';
6
+ import type { ComponentConfig } from '../types/tv';
7
+ type EditorSuggestionMenu = ComponentConfig<typeof theme, AppConfig, 'editorSuggestionMenu'>;
8
+ type EditorSuggestionMenuLabelItem = {
9
+ type: 'label';
10
+ label: string;
11
+ class?: any;
12
+ [key: string]: any;
13
+ };
14
+ type EditorSuggestionMenuSeparatorItem = {
15
+ type: 'separator';
16
+ class?: any;
17
+ [key: string]: any;
18
+ };
19
+ type EditorSuggestionMenuActionItem<H extends EditorCustomHandlers = EditorCustomHandlers> = {
20
+ type?: never;
21
+ label: string;
22
+ description?: string;
23
+ /**
24
+ * @IconifyIcon
25
+ */
26
+ icon?: IconProps['name'];
27
+ disabled?: boolean;
28
+ class?: any;
29
+ [key: string]: any;
30
+ } & EditorItem<H>;
31
+ export type EditorSuggestionMenuItem<H extends EditorCustomHandlers = EditorCustomHandlers> = EditorSuggestionMenuLabelItem | EditorSuggestionMenuSeparatorItem | EditorSuggestionMenuActionItem<H>;
32
+ export interface EditorSuggestionMenuProps<T extends EditorSuggestionMenuItem = EditorSuggestionMenuItem> extends Partial<Pick<EditorMenuOptions<T>, 'editor' | 'char' | 'pluginKey' | 'filterFields' | 'limit' | 'options' | 'appendTo'>> {
33
+ items?: T[] | T[][];
34
+ class?: any;
35
+ ui?: EditorSuggestionMenu['slots'];
36
+ }
37
+ declare const __VLS_export: <T extends EditorSuggestionMenuItem>(__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<{
38
+ props: __VLS_PrettifyLocal<EditorSuggestionMenuProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
39
+ __VLS_PROPS_FALLBACK: infer P;
40
+ } ? P : {});
41
+ expose: (exposed: {}) => void;
42
+ attrs: any;
43
+ slots: {};
44
+ emit: {};
45
+ }>) => import("vue").VNode & {
46
+ __ctx?: Awaited<typeof __VLS_setup>;
47
+ };
48
+ declare const _default: typeof __VLS_export;
49
+ export default _default;
50
+ type __VLS_PrettifyLocal<T> = {
51
+ [K in keyof T as K]: T[K];
52
+ } & {};