@maz-ui/mcp 5.0.1-beta.0 → 5.1.0-beta.1

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 (343) hide show
  1. package/README.md +61 -228
  2. package/bin/maz-ui-mcp.mjs +2 -5
  3. package/dist/cli.d.mts +7 -0
  4. package/dist/cli.d.ts +7 -0
  5. package/dist/cli.mjs +16 -0
  6. package/dist/index.d.mts +345 -0
  7. package/dist/index.d.ts +345 -0
  8. package/dist/index.mjs +16 -0
  9. package/dist/shared/mcp.DseFuKdl.mjs +2968 -0
  10. package/docs/README.md +207 -0
  11. package/docs/agents/agents-md.md +52 -0
  12. package/docs/agents/claude-rule.md +52 -0
  13. package/docs/components/maz-accordion.md +78 -0
  14. package/docs/{src/components → components}/maz-alert.md +31 -164
  15. package/docs/components/maz-animated-counter.md +87 -0
  16. package/docs/components/maz-animated-element.md +46 -0
  17. package/docs/components/maz-animated-text.md +53 -0
  18. package/docs/components/maz-avatar.md +193 -0
  19. package/docs/components/maz-backdrop.md +178 -0
  20. package/docs/{src/components → components}/maz-badge.md +26 -67
  21. package/docs/components/maz-bottom-sheet.md +257 -0
  22. package/docs/{src/components → components}/maz-btn-group.md +27 -189
  23. package/docs/{src/components → components}/maz-btn.md +62 -245
  24. package/docs/components/maz-card-spotlight.md +84 -0
  25. package/docs/{src/components → components}/maz-card.md +67 -192
  26. package/docs/components/maz-carousel.md +153 -0
  27. package/docs/{src/components → components}/maz-chart.md +17 -161
  28. package/docs/components/maz-checkbox.md +138 -0
  29. package/docs/components/maz-checklist.md +251 -0
  30. package/docs/components/maz-circular-progress-bar.md +109 -0
  31. package/docs/{src/components → components}/maz-code-highlight.md +15 -93
  32. package/docs/components/maz-container.md +241 -0
  33. package/docs/{src/components → components}/maz-date-picker.md +85 -454
  34. package/docs/components/maz-dialog-confirm.md +215 -0
  35. package/docs/components/maz-dialog.md +143 -0
  36. package/docs/components/maz-drawer.md +107 -0
  37. package/docs/components/maz-dropdown.md +419 -0
  38. package/docs/{src/components → components}/maz-dropzone.md +80 -221
  39. package/docs/components/maz-expand-animation.md +82 -0
  40. package/docs/components/maz-fullscreen-loader.md +58 -0
  41. package/docs/components/maz-gallery.md +79 -0
  42. package/docs/{src/components → components}/maz-icon.md +32 -83
  43. package/docs/components/maz-input-code.md +73 -0
  44. package/docs/components/maz-input-number.md +79 -0
  45. package/docs/components/maz-input-phone-number.md +536 -0
  46. package/docs/components/maz-input-price.md +68 -0
  47. package/docs/components/maz-input-tags.md +112 -0
  48. package/docs/{src/components → components}/maz-input.md +74 -221
  49. package/docs/components/maz-lazy-img.md +113 -0
  50. package/docs/components/maz-link.md +146 -0
  51. package/docs/components/maz-loading-bar.md +38 -0
  52. package/docs/{src/components → components}/maz-markdown-editor.md +72 -125
  53. package/docs/components/maz-pagination.md +82 -0
  54. package/docs/components/maz-popover.md +794 -0
  55. package/docs/{src/components → components}/maz-pull-to-refresh.md +59 -45
  56. package/docs/components/maz-radio-buttons.md +313 -0
  57. package/docs/components/maz-radio.md +119 -0
  58. package/docs/{src/components → components}/maz-read-more.md +31 -122
  59. package/docs/components/maz-reading-progress-bar.md +96 -0
  60. package/docs/{src/components → components}/maz-select-country.md +80 -340
  61. package/docs/{src/components → components}/maz-select.md +76 -206
  62. package/docs/components/maz-sidebar-content.md +25 -0
  63. package/docs/components/maz-sidebar-footer.md +25 -0
  64. package/docs/components/maz-sidebar-group.md +27 -0
  65. package/docs/components/maz-sidebar-header.md +25 -0
  66. package/docs/components/maz-sidebar-menu-button.md +41 -0
  67. package/docs/components/maz-sidebar-menu-item.md +25 -0
  68. package/docs/components/maz-sidebar-menu-sub.md +32 -0
  69. package/docs/components/maz-sidebar-menu.md +25 -0
  70. package/docs/components/maz-sidebar-separator.md +21 -0
  71. package/docs/components/maz-sidebar-trigger.md +25 -0
  72. package/docs/{src/components → components}/maz-sidebar.md +117 -329
  73. package/docs/{src/components → components}/maz-skeleton.md +27 -156
  74. package/docs/{src/components → components}/maz-slider.md +33 -66
  75. package/docs/components/maz-spinner.md +84 -0
  76. package/docs/{src/components → components}/maz-stepper.md +48 -185
  77. package/docs/components/maz-switch.md +86 -0
  78. package/docs/components/maz-table-cell.md +27 -0
  79. package/docs/components/maz-table-row.md +28 -0
  80. package/docs/components/maz-table-title.md +27 -0
  81. package/docs/components/maz-table-virtualizer.md +31 -0
  82. package/docs/components/maz-table.md +426 -0
  83. package/docs/components/maz-tabs-bar.md +43 -0
  84. package/docs/components/maz-tabs-content-item.md +27 -0
  85. package/docs/components/maz-tabs-content.md +27 -0
  86. package/docs/{src/components → components}/maz-tabs.md +89 -126
  87. package/docs/components/maz-textarea.md +255 -0
  88. package/docs/components/maz-ticker.md +427 -0
  89. package/docs/components/maz-timeline.md +304 -0
  90. package/docs/components/maz-ui-provider.md +26 -0
  91. package/docs/{src/components → components}/maz-window-mockup.md +38 -105
  92. package/docs/composables/use-aos.md +41 -0
  93. package/docs/composables/use-breakpoints.md +42 -0
  94. package/docs/composables/use-dialog.md +58 -0
  95. package/docs/{src/composables → composables}/use-display-names.md +12 -59
  96. package/docs/{src/composables → composables}/use-drag.md +14 -68
  97. package/docs/{src/composables → composables}/use-form-validator.md +22 -696
  98. package/docs/{src/composables → composables}/use-idle-timeout.md +13 -97
  99. package/docs/{src/composables → composables}/use-pull-to-refresh.md +14 -7
  100. package/docs/{src/composables → composables}/use-reading-time.md +20 -56
  101. package/docs/composables/use-string-matching.md +41 -0
  102. package/docs/{src/composables → composables}/use-swipe.md +14 -81
  103. package/docs/{src/composables → composables}/use-timer.md +12 -38
  104. package/docs/composables/use-toast.md +50 -0
  105. package/docs/{src/composables → composables}/use-user-visibility.md +14 -56
  106. package/docs/composables/use-wait.md +50 -0
  107. package/docs/composables/use-window-size.md +25 -0
  108. package/docs/{src/directives → directives}/click-outside.md +13 -99
  109. package/docs/{src/directives → directives}/fullscreen-img.md +10 -28
  110. package/docs/{src/directives → directives}/lazy-img.md +14 -49
  111. package/docs/{src/directives → directives}/tooltip.md +12 -217
  112. package/docs/{src/directives → directives}/zoom-img.md +11 -38
  113. package/docs/{src/ecosystem → ecosystem}/eslint-config.md +37 -29
  114. package/docs/ecosystem/icons/icon-set.md +25 -0
  115. package/docs/{src/ecosystem → ecosystem}/icons/index.md +21 -15
  116. package/docs/ecosystem/mcp.md +165 -0
  117. package/docs/{src/ecosystem → ecosystem}/node/exec-promise.md +12 -6
  118. package/docs/ecosystem/node/index.md +53 -0
  119. package/docs/{src/ecosystem → ecosystem}/node/logger.md +12 -6
  120. package/docs/{src/ecosystem → ecosystem}/node/print-banner.md +12 -4
  121. package/docs/ecosystem/node/setup-agents.md +102 -0
  122. package/docs/{src/ecosystem → ecosystem}/nuxt.md +50 -19
  123. package/docs/{src/ecosystem → ecosystem}/stylelint-config.md +33 -25
  124. package/docs/{src/ecosystem → ecosystem}/themes.md +72 -235
  125. package/docs/{src/ecosystem → ecosystem}/translations.md +25 -23
  126. package/docs/ecosystem/utils/camel-case.md +37 -0
  127. package/docs/ecosystem/utils/capitalize.md +37 -0
  128. package/docs/{src/ecosystem → ecosystem}/utils/check-availability.md +14 -8
  129. package/docs/{src/ecosystem → ecosystem}/utils/cookie.md +18 -12
  130. package/docs/ecosystem/utils/country-code-to-unicode-flag.md +128 -0
  131. package/docs/{src/ecosystem → ecosystem}/utils/currency.md +12 -26
  132. package/docs/{src/ecosystem → ecosystem}/utils/date.md +10 -24
  133. package/docs/ecosystem/utils/debounce-callback.md +44 -0
  134. package/docs/{src/ecosystem → ecosystem}/utils/debounce-id.md +14 -8
  135. package/docs/{src/ecosystem → ecosystem}/utils/debounce.md +14 -8
  136. package/docs/ecosystem/utils/fetch-locale-ip.md +39 -0
  137. package/docs/{src/ecosystem → ecosystem}/utils/format-json.md +11 -5
  138. package/docs/{src/ecosystem → ecosystem}/utils/format-phone-number.md +12 -6
  139. package/docs/ecosystem/utils/get-browser-locale.md +35 -0
  140. package/docs/ecosystem/utils/get-country-flag-url.md +67 -0
  141. package/docs/{src/ecosystem → ecosystem}/utils/get-error-message.md +10 -4
  142. package/docs/{src/ecosystem → ecosystem}/utils/idle-timeout.md +15 -9
  143. package/docs/{src/ecosystem → ecosystem}/utils/index.md +10 -13
  144. package/docs/{src/ecosystem → ecosystem}/utils/is-client.md +11 -5
  145. package/docs/{src/ecosystem → ecosystem}/utils/is-equal.md +14 -8
  146. package/docs/{src/ecosystem → ecosystem}/utils/is-ios.md +12 -6
  147. package/docs/ecosystem/utils/is-server.md +37 -0
  148. package/docs/ecosystem/utils/is-standalone-mode.md +49 -0
  149. package/docs/{src/ecosystem → ecosystem}/utils/kebab-case.md +10 -4
  150. package/docs/{src/ecosystem → ecosystem}/utils/normalize-string.md +10 -4
  151. package/docs/{src/ecosystem → ecosystem}/utils/number.md +10 -24
  152. package/docs/{src/ecosystem → ecosystem}/utils/pascal-case.md +11 -5
  153. package/docs/{src/ecosystem → ecosystem}/utils/prevent-ios-input-zoom.md +14 -8
  154. package/docs/{src/ecosystem → ecosystem}/utils/script-loader.md +16 -8
  155. package/docs/{src/ecosystem → ecosystem}/utils/sleep.md +10 -4
  156. package/docs/{src/ecosystem → ecosystem}/utils/snake-case.md +10 -4
  157. package/docs/{src/ecosystem → ecosystem}/utils/swipe-handler.md +14 -8
  158. package/docs/{src/ecosystem → ecosystem}/utils/textarea-autogrow.md +12 -6
  159. package/docs/{src/ecosystem → ecosystem}/utils/throttle-id.md +13 -7
  160. package/docs/{src/ecosystem → ecosystem}/utils/throttle.md +14 -8
  161. package/docs/ecosystem/utils/truthy-filter.md +37 -0
  162. package/docs/{src/ecosystem → ecosystem}/utils/types/deep-key-of.md +11 -5
  163. package/docs/{src/ecosystem → ecosystem}/utils/types/deep-partial.md +10 -4
  164. package/docs/ecosystem/utils/types/deep-required.md +45 -0
  165. package/docs/ecosystem/utils/types/flatten-object-keys.md +50 -0
  166. package/docs/{src/ecosystem → ecosystem}/utils/types/generic-instance-type.md +10 -4
  167. package/docs/{src/ecosystem → ecosystem}/utils/types/infer-maybe-ref.md +10 -4
  168. package/docs/ecosystem/utils/upper-first.md +38 -0
  169. package/docs/{src/ecosystem → ecosystem}/utils/user-visibility.md +12 -6
  170. package/docs/guide/ai-agents.md +239 -0
  171. package/docs/{src/guide → guide}/browser-support.md +22 -15
  172. package/docs/{src/guide → guide}/getting-started.md +34 -139
  173. package/docs/{src/guide → guide}/global-defaults.md +12 -11
  174. package/docs/{src/guide → guide}/maz-ui-provider.md +17 -16
  175. package/docs/{src/guide → guide}/migration-v5.md +95 -88
  176. package/docs/{src/guide → guide}/resolvers.md +33 -100
  177. package/docs/guide/tailwind.md +507 -0
  178. package/docs/{src/guide → guide}/vue.md +33 -39
  179. package/docs/manifest.json +1 -0
  180. package/docs/{src/plugins → plugins}/aos.md +20 -55
  181. package/docs/{src/plugins → plugins}/dialog.md +14 -161
  182. package/docs/plugins/toast.md +221 -0
  183. package/docs/plugins/wait.md +78 -0
  184. package/docs/reference/icons.md +46 -0
  185. package/docs/reference/tailwind-tokens.md +191 -0
  186. package/docs/rules.md +59 -0
  187. package/package.json +86 -22
  188. package/dist/mcp.d.mts +0 -153
  189. package/dist/mcp.d.ts +0 -153
  190. package/dist/mcp.mjs +0 -1511
  191. package/docs/generated-docs/maz-accordion.doc.md +0 -21
  192. package/docs/generated-docs/maz-alert.doc.md +0 -20
  193. package/docs/generated-docs/maz-animated-counter.doc.md +0 -17
  194. package/docs/generated-docs/maz-animated-element.doc.md +0 -14
  195. package/docs/generated-docs/maz-animated-text.doc.md +0 -17
  196. package/docs/generated-docs/maz-avatar.doc.md +0 -45
  197. package/docs/generated-docs/maz-backdrop.doc.md +0 -55
  198. package/docs/generated-docs/maz-badge.doc.md +0 -16
  199. package/docs/generated-docs/maz-bottom-sheet.doc.md +0 -24
  200. package/docs/generated-docs/maz-btn-group.doc.md +0 -20
  201. package/docs/generated-docs/maz-btn.doc.md +0 -33
  202. package/docs/generated-docs/maz-card-spotlight.doc.md +0 -16
  203. package/docs/generated-docs/maz-card.doc.md +0 -39
  204. package/docs/generated-docs/maz-carousel.doc.md +0 -17
  205. package/docs/generated-docs/maz-chart.doc.md +0 -10
  206. package/docs/generated-docs/maz-checkbox.doc.md +0 -33
  207. package/docs/generated-docs/maz-checklist.doc.md +0 -30
  208. package/docs/generated-docs/maz-circular-progress-bar.doc.md +0 -27
  209. package/docs/generated-docs/maz-code-highlight.doc.md +0 -11
  210. package/docs/generated-docs/maz-container.doc.md +0 -26
  211. package/docs/generated-docs/maz-date-picker.doc.md +0 -56
  212. package/docs/generated-docs/maz-dialog-confirm.doc.md +0 -24
  213. package/docs/generated-docs/maz-dialog.doc.md +0 -22
  214. package/docs/generated-docs/maz-drawer.doc.md +0 -25
  215. package/docs/generated-docs/maz-dropdown.doc.md +0 -45
  216. package/docs/generated-docs/maz-dropzone.doc.md +0 -82
  217. package/docs/generated-docs/maz-expand-animation.doc.md +0 -12
  218. package/docs/generated-docs/maz-fullscreen-loader.doc.md +0 -13
  219. package/docs/generated-docs/maz-gallery.doc.md +0 -17
  220. package/docs/generated-docs/maz-icon.doc.md +0 -16
  221. package/docs/generated-docs/maz-input-code.doc.md +0 -25
  222. package/docs/generated-docs/maz-input-number.doc.md +0 -33
  223. package/docs/generated-docs/maz-input-phone-number.doc.md +0 -62
  224. package/docs/generated-docs/maz-input-price.doc.md +0 -26
  225. package/docs/generated-docs/maz-input-tags.doc.md +0 -24
  226. package/docs/generated-docs/maz-input.doc.md +0 -54
  227. package/docs/generated-docs/maz-lazy-img.doc.md +0 -49
  228. package/docs/generated-docs/maz-link.doc.md +0 -31
  229. package/docs/generated-docs/maz-loading-bar.doc.md +0 -6
  230. package/docs/generated-docs/maz-markdown-editor.doc.md +0 -65
  231. package/docs/generated-docs/maz-pagination.doc.md +0 -21
  232. package/docs/generated-docs/maz-popover.doc.md +0 -79
  233. package/docs/generated-docs/maz-pull-to-refresh.doc.md +0 -50
  234. package/docs/generated-docs/maz-radio-buttons.doc.md +0 -34
  235. package/docs/generated-docs/maz-radio.doc.md +0 -33
  236. package/docs/generated-docs/maz-read-more.doc.md +0 -18
  237. package/docs/generated-docs/maz-reading-progress-bar.doc.md +0 -18
  238. package/docs/generated-docs/maz-select-country.doc.md +0 -45
  239. package/docs/generated-docs/maz-select.doc.md +0 -32
  240. package/docs/generated-docs/maz-sidebar-content.doc.md +0 -5
  241. package/docs/generated-docs/maz-sidebar-footer.doc.md +0 -5
  242. package/docs/generated-docs/maz-sidebar-group.doc.md +0 -11
  243. package/docs/generated-docs/maz-sidebar-header.doc.md +0 -5
  244. package/docs/generated-docs/maz-sidebar-menu-button.doc.md +0 -27
  245. package/docs/generated-docs/maz-sidebar-menu-item.doc.md +0 -5
  246. package/docs/generated-docs/maz-sidebar-menu-sub.doc.md +0 -16
  247. package/docs/generated-docs/maz-sidebar-menu.doc.md +0 -5
  248. package/docs/generated-docs/maz-sidebar-separator.doc.md +0 -0
  249. package/docs/generated-docs/maz-sidebar-trigger.doc.md +0 -5
  250. package/docs/generated-docs/maz-sidebar.doc.md +0 -36
  251. package/docs/generated-docs/maz-skeleton.doc.md +0 -12
  252. package/docs/generated-docs/maz-slider.doc.md +0 -20
  253. package/docs/generated-docs/maz-spinner.doc.md +0 -6
  254. package/docs/generated-docs/maz-stepper.doc.md +0 -30
  255. package/docs/generated-docs/maz-switch.doc.md +0 -31
  256. package/docs/generated-docs/maz-table-cell.doc.md +0 -5
  257. package/docs/generated-docs/maz-table-row.doc.md +0 -12
  258. package/docs/generated-docs/maz-table-title.doc.md +0 -5
  259. package/docs/generated-docs/maz-table-virtualizer.doc.md +0 -20
  260. package/docs/generated-docs/maz-table.doc.md +0 -72
  261. package/docs/generated-docs/maz-tabs-bar.doc.md +0 -29
  262. package/docs/generated-docs/maz-tabs-content-item.doc.md +0 -11
  263. package/docs/generated-docs/maz-tabs-content.doc.md +0 -5
  264. package/docs/generated-docs/maz-tabs.doc.md +0 -20
  265. package/docs/generated-docs/maz-textarea.doc.md +0 -46
  266. package/docs/generated-docs/maz-ticker.doc.md +0 -25
  267. package/docs/generated-docs/maz-timeline.doc.md +0 -32
  268. package/docs/generated-docs/maz-ui-provider.doc.md +0 -12
  269. package/docs/generated-docs/maz-window-mockup.doc.md +0 -23
  270. package/docs/src/blog/v4.md +0 -276
  271. package/docs/src/blog/v5.md +0 -184
  272. package/docs/src/changelog.md +0 -7
  273. package/docs/src/components/index.md +0 -8
  274. package/docs/src/components/maz-accordion.md +0 -80
  275. package/docs/src/components/maz-animated-counter.md +0 -124
  276. package/docs/src/components/maz-animated-element.md +0 -36
  277. package/docs/src/components/maz-animated-text.md +0 -36
  278. package/docs/src/components/maz-avatar.md +0 -227
  279. package/docs/src/components/maz-backdrop.md +0 -250
  280. package/docs/src/components/maz-bottom-sheet.md +0 -533
  281. package/docs/src/components/maz-card-spotlight.md +0 -163
  282. package/docs/src/components/maz-carousel.md +0 -231
  283. package/docs/src/components/maz-checkbox.md +0 -168
  284. package/docs/src/components/maz-checklist.md +0 -414
  285. package/docs/src/components/maz-circular-progress-bar.md +0 -145
  286. package/docs/src/components/maz-container.md +0 -363
  287. package/docs/src/components/maz-dialog-confirm.md +0 -240
  288. package/docs/src/components/maz-dialog.md +0 -164
  289. package/docs/src/components/maz-drawer.md +0 -181
  290. package/docs/src/components/maz-dropdown.md +0 -691
  291. package/docs/src/components/maz-expand-animation.md +0 -99
  292. package/docs/src/components/maz-fullscreen-loader.md +0 -58
  293. package/docs/src/components/maz-gallery.md +0 -85
  294. package/docs/src/components/maz-input-code.md +0 -61
  295. package/docs/src/components/maz-input-number.md +0 -81
  296. package/docs/src/components/maz-input-phone-number.md +0 -942
  297. package/docs/src/components/maz-input-price.md +0 -67
  298. package/docs/src/components/maz-input-tags.md +0 -114
  299. package/docs/src/components/maz-lazy-img.md +0 -88
  300. package/docs/src/components/maz-link.md +0 -178
  301. package/docs/src/components/maz-loading-bar.md +0 -26
  302. package/docs/src/components/maz-pagination.md +0 -79
  303. package/docs/src/components/maz-popover.md +0 -1416
  304. package/docs/src/components/maz-radio-buttons.md +0 -462
  305. package/docs/src/components/maz-radio.md +0 -142
  306. package/docs/src/components/maz-reading-progress-bar.md +0 -74
  307. package/docs/src/components/maz-spinner.md +0 -93
  308. package/docs/src/components/maz-switch.md +0 -92
  309. package/docs/src/components/maz-table.md +0 -732
  310. package/docs/src/components/maz-textarea.md +0 -400
  311. package/docs/src/components/maz-ticker.md +0 -692
  312. package/docs/src/components/maz-timeline.md +0 -478
  313. package/docs/src/composables/use-aos.md +0 -34
  314. package/docs/src/composables/use-breakpoints.md +0 -35
  315. package/docs/src/composables/use-dialog.md +0 -88
  316. package/docs/src/composables/use-string-matching.md +0 -63
  317. package/docs/src/composables/use-toast.md +0 -71
  318. package/docs/src/composables/use-wait.md +0 -62
  319. package/docs/src/composables/use-window-size.md +0 -18
  320. package/docs/src/ecosystem/icons/icon-set.md +0 -123
  321. package/docs/src/ecosystem/mcp.md +0 -210
  322. package/docs/src/ecosystem/node/index.md +0 -53
  323. package/docs/src/ecosystem/utils/camel-case.md +0 -31
  324. package/docs/src/ecosystem/utils/capitalize.md +0 -50
  325. package/docs/src/ecosystem/utils/country-code-to-unicode-flag.md +0 -213
  326. package/docs/src/ecosystem/utils/debounce-callback.md +0 -38
  327. package/docs/src/ecosystem/utils/fetch-locale-ip.md +0 -33
  328. package/docs/src/ecosystem/utils/get-browser-locale.md +0 -29
  329. package/docs/src/ecosystem/utils/get-country-flag-url.md +0 -156
  330. package/docs/src/ecosystem/utils/is-server.md +0 -31
  331. package/docs/src/ecosystem/utils/is-standalone-mode.md +0 -43
  332. package/docs/src/ecosystem/utils/truthy-filter.md +0 -31
  333. package/docs/src/ecosystem/utils/types/deep-required.md +0 -39
  334. package/docs/src/ecosystem/utils/types/flatten-object-keys.md +0 -44
  335. package/docs/src/ecosystem/utils/upper-first.md +0 -32
  336. package/docs/src/guide/cli.md +0 -144
  337. package/docs/src/guide/migration-v4.md +0 -925
  338. package/docs/src/guide/tailwind.md +0 -158
  339. package/docs/src/index.md +0 -603
  340. package/docs/src/made-with-maz-ui.md +0 -58
  341. package/docs/src/plugins/toast.md +0 -349
  342. package/docs/src/plugins/wait.md +0 -109
  343. package/docs/src/theme-editor.md +0 -21
@@ -0,0 +1,794 @@
1
+ ---
2
+ title: "MazPopover"
3
+ description: "MazPopover is a versatile Vue component for displaying content in overlays that bypass overflow constraints of parent elements"
4
+ package: "maz-ui"
5
+ url: "https://maz-ui.com/components/maz-popover"
6
+ ---
7
+
8
+ # MazPopover
9
+
10
+ > MazPopover is a versatile Vue component for displaying content in overlays that bypass overflow constraints of parent elements
11
+
12
+ - Package: `maz-ui`
13
+ - Import: `import MazPopover from 'maz-ui/components/MazPopover'`
14
+ - Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
15
+ - Web: https://maz-ui.com/components/maz-popover
16
+
17
+ ## Basic usage
18
+
19
+ ```vue
20
+ <template>
21
+ <MazPopover>
22
+ <template #trigger>
23
+ <MazBtn>
24
+ Click me
25
+ </MazBtn>
26
+ </template>
27
+ <div class="p-4">
28
+ <h3 class="mb-2 text-lg font-semibold">
29
+ Popover Content
30
+ </h3>
31
+ <p class="text-sm">
32
+ This is the content inside the popover.
33
+ </p>
34
+ </div>
35
+ </MazPopover>
36
+
37
+ <MazPopover trigger="hover">
38
+ <template #trigger>
39
+ <MazBtn color="secondary">
40
+ Hover me
41
+ </MazBtn>
42
+ </template>
43
+ <div class="p-4">
44
+ <p class="text-sm">
45
+ This popover appears on hover!
46
+ </p>
47
+ </div>
48
+ </MazPopover>
49
+ </template>
50
+ ```
51
+
52
+ ## Adaptive trigger
53
+
54
+ The `adaptive` trigger mode automatically adapts to the user's device:
55
+ - **Desktop**: Uses hover behavior (mouseenter/mouseleave)
56
+ - **Mobile/Touch devices**: Uses click behavior
57
+
58
+ This provides the best user experience across all devices without requiring manual configuration.
59
+
60
+ ```vue
61
+ <template>
62
+ <!-- Basic adaptive trigger -->
63
+ <MazPopover trigger="adaptive">
64
+ <template #trigger>
65
+ <MazBtn color="primary">
66
+ Adaptive Trigger
67
+ </MazBtn>
68
+ </template>
69
+ <div class="p-4">
70
+ <h3 class="text-lg font-semibold mb-2">Smart Behavior</h3>
71
+ <p class="text-sm mb-2">
72
+ On desktop: Hover to open, move away to close
73
+ </p>
74
+ <p class="text-sm">
75
+ On mobile: Tap to open, tap outside to close
76
+ </p>
77
+ </div>
78
+ </MazPopover>
79
+
80
+ <!-- Adaptive with keep-open-on-hover for menus -->
81
+ <MazPopover trigger="adaptive" keep-open-on-hover>
82
+ <template #trigger>
83
+ <MazBtn color="secondary">
84
+ Adaptive Menu
85
+ </MazBtn>
86
+ </template>
87
+ <div class="p-4">
88
+ <p class="text-sm mb-2">
89
+ Perfect for dropdown menus that work on all devices
90
+ </p>
91
+ <button class="block w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400 rounded-md">
92
+ Menu Item 1
93
+ </button>
94
+ <button class="block w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400 rounded-md">
95
+ Menu Item 2
96
+ </button>
97
+ </div>
98
+ </MazPopover>
99
+ </template>
100
+ ```
101
+
102
+ ## Positions
103
+
104
+ **Tip:**
105
+
106
+ The position prop is used to position the popover relative to the trigger. The chosen position will force the popover to be displayed in the chosen position.
107
+
108
+ ```vue
109
+ <template>
110
+ <MazPopover trigger="hover" position="top">
111
+ <template #trigger>
112
+ <MazBtn>Top</MazBtn>
113
+ </template>
114
+ <div class="p-3">
115
+ <p class="text-sm">
116
+ Top positioned popover
117
+ </p>
118
+ </div>
119
+ </MazPopover>
120
+
121
+ <MazPopover trigger="hover" position="bottom">
122
+ <template #trigger>
123
+ <MazBtn>Bottom</MazBtn>
124
+ </template>
125
+ <div class="p-3">
126
+ <p class="text-sm">
127
+ Bottom positioned popover
128
+ </p>
129
+ </div>
130
+ </MazPopover>
131
+
132
+ <MazPopover trigger="hover" position="left">
133
+ <template #trigger>
134
+ <MazBtn>Left</MazBtn>
135
+ </template>
136
+ <div class="p-3">
137
+ <p class="text-sm">
138
+ Left positioned popover
139
+ </p>
140
+ </div>
141
+ </MazPopover>
142
+
143
+ <MazPopover trigger="hover" position="right">
144
+ <template #trigger>
145
+ <MazBtn>Right</MazBtn>
146
+ </template>
147
+ <div class="p-3">
148
+ <p class="text-sm">
149
+ Right positioned popover
150
+ </p>
151
+ </div>
152
+ </MazPopover>
153
+ </template>
154
+ ```
155
+
156
+ ## Advanced positions
157
+
158
+ ```vue
159
+ <template>
160
+ <MazPopover position="top-start">
161
+ <template #trigger>
162
+ <MazBtn block size="sm">
163
+ Top Start
164
+ </MazBtn>
165
+ </template>
166
+ <div class="p-3">
167
+ <p class="text-sm">Top start aligned</p>
168
+ </div>
169
+ </MazPopover>
170
+ <MazPopover position="top-end">
171
+ <template #trigger>
172
+ <MazBtn block size="sm">
173
+ Top End
174
+ </MazBtn>
175
+ </template>
176
+ <div class="p-3">
177
+ <p class="text-sm">Top end aligned</p>
178
+ </div>
179
+ </MazPopover>
180
+ <MazPopover position="bottom-start">
181
+ <template #trigger>
182
+ <MazBtn block size="sm">
183
+ Bottom Start
184
+ </MazBtn>
185
+ </template>
186
+ <div class="p-3">
187
+ <p class="text-sm">Bottom start aligned</p>
188
+ </div>
189
+ </MazPopover>
190
+ <MazPopover position="bottom-end">
191
+ <template #trigger>
192
+ <MazBtn block size="sm">
193
+ Bottom End
194
+ </MazBtn>
195
+ </template>
196
+ <div class="p-3">
197
+ <p class="text-sm">Bottom end aligned</p>
198
+ </div>
199
+ </MazPopover>
200
+
201
+ <MazPopover position="left-start">
202
+ <template #trigger>
203
+ <MazBtn block size="sm">
204
+ Left Start
205
+ </MazBtn>
206
+ </template>
207
+ <div class="p-3">
208
+ <p class="text-sm">Left start aligned</p>
209
+ </div>
210
+ </MazPopover>
211
+ <MazPopover position="left-end">
212
+ <template #trigger>
213
+ <MazBtn block size="sm">
214
+ Left End
215
+ </MazBtn>
216
+ </template>
217
+ <div class="p-3">
218
+ <p class="text-sm">Left end aligned</p>
219
+ </div>
220
+ </MazPopover>
221
+
222
+ <MazPopover position="right-start">
223
+ <template #trigger>
224
+ <MazBtn block size="sm">
225
+ Right Start
226
+ </MazBtn>
227
+ </template>
228
+ <div class="p-3">
229
+ <p class="text-sm">Right start aligned</p>
230
+ </div>
231
+ </MazPopover>
232
+ <MazPopover position="right-end">
233
+ <template #trigger>
234
+ <MazBtn block size="sm">
235
+ Right End
236
+ </MazBtn>
237
+ </template>
238
+ <div class="p-3">
239
+ <p class="text-sm">Right end aligned</p>
240
+ </div>
241
+ </MazPopover>
242
+
243
+ <MazPopover position="auto">
244
+ <template #trigger>
245
+ <MazBtn color="accent">
246
+ Auto Position
247
+ </MazBtn>
248
+ </template>
249
+ <div class="p-3">
250
+ <p class="text-sm">
251
+ Automatically positioned based on available space
252
+ </p>
253
+ </div>
254
+ </MazPopover>
255
+ </template>
256
+ ```
257
+
258
+ ## Prefer position and fallback position
259
+
260
+ **Tip:**
261
+
262
+ The prefer-position and fallback-position props are used to position the popover relative to the trigger. The prefer-position is the position that will be used if it's available, and the fallback-position is the position that will be used if the prefer-position is not available.
263
+
264
+ When you not specify a fallback position, the popover will fallback on the best position available.
265
+
266
+ ```html
267
+ <MazPopover prefer-position="top-start" fallback-position="bottom-start">
268
+ <template #trigger>
269
+ <MazBtn>
270
+ Prefer position and fallback position
271
+ </MazBtn>
272
+ </template>
273
+ <div class="p-4">
274
+ <p class="text-sm">This popover will prefer the top position, but if it's not available, it will fallback to the bottom position.</p>
275
+ </div>
276
+ </MazPopover>
277
+ ```
278
+
279
+ ## Colors
280
+
281
+ ```vue
282
+ <template>
283
+ <MazPopover color="surface" trigger="hover">
284
+ <template #trigger>
285
+ <MazBtn color="contrast">Background</MazBtn>
286
+ </template>
287
+ <div class="p-4">
288
+ <p class="text-sm">This popover has a default color!</p>
289
+ </div>
290
+ </MazPopover>
291
+ <MazPopover color="primary" trigger="hover">
292
+ <template #trigger>
293
+ <MazBtn color="primary">Primary</MazBtn>
294
+ </template>
295
+ <div class="p-4">
296
+ <p class="text-sm">This popover has a primary color!</p>
297
+ </div>
298
+ </MazPopover>
299
+ <MazPopover color="secondary" trigger="hover">
300
+ <template #trigger>
301
+ <MazBtn color="secondary">Secondary</MazBtn>
302
+ </template>
303
+ <div class="p-4">
304
+ <p class="text-sm">This popover has a secondary color!</p>
305
+ </div>
306
+ </MazPopover>
307
+ <MazPopover color="accent" trigger="hover">
308
+ <template #trigger>
309
+ <MazBtn color="accent">Accent</MazBtn>
310
+ </template>
311
+ <div class="p-4">
312
+ <p class="text-sm">This popover has a accent color!</p>
313
+ </div>
314
+ </MazPopover>
315
+ <MazPopover color="contrast" trigger="hover">
316
+ <template #trigger>
317
+ <MazBtn color="contrast">Contrast</MazBtn>
318
+ </template>
319
+ <div class="p-4">
320
+ <p class="text-sm">This popover has a contrast color!</p>
321
+ </div>
322
+ </MazPopover>
323
+ <MazPopover color="success" trigger="hover">
324
+ <template #trigger>
325
+ <MazBtn color="success">Success</MazBtn>
326
+ </template>
327
+ <div class="p-4">
328
+ <p class="text-sm">This popover has a success color!</p>
329
+ </div>
330
+ </MazPopover>
331
+ <MazPopover color="info" trigger="hover">
332
+ <template #trigger>
333
+ <MazBtn color="info">Info</MazBtn>
334
+ </template>
335
+ <div class="p-4">
336
+ <p class="text-sm">This popover has a info color!</p>
337
+ </div>
338
+ </MazPopover>
339
+ <MazPopover color="destructive" trigger="hover">
340
+ <template #trigger>
341
+ <MazBtn color="destructive">Destructive</MazBtn>
342
+ </template>
343
+ <div class="p-4">
344
+ <p class="text-sm">This popover has a destructive color!</p>
345
+ </div>
346
+ </MazPopover>
347
+ <MazPopover color="warning" trigger="hover">
348
+ <template #trigger>
349
+ <MazBtn color="warning">Warning</MazBtn>
350
+ </template>
351
+ <div class="p-4">
352
+ <p class="text-sm">This popover has a warning color!</p>
353
+ </div>
354
+ </MazPopover>
355
+ </template>
356
+ ```
357
+
358
+ ## Tooltip role
359
+
360
+ A directive is available to more easily add a tooltip to an element, see [vTooltip](../directives/tooltip.md) for more information.
361
+
362
+ ```vue
363
+ <template>
364
+ <MazPopover role="tooltip" trigger="hover" position="top">
365
+ <template #trigger>
366
+ <MazBtn color="info">
367
+ Hover for tooltip
368
+ </MazBtn>
369
+ </template>
370
+ <div class="p-2">
371
+ <p class="text-xs">This is a tooltip with proper ARIA attributes</p>
372
+ </div>
373
+ </MazPopover>
374
+ <MazPopover
375
+ role="tooltip"
376
+ trigger="hover"
377
+ position="bottom"
378
+ panel-class="bg-gray-800! text-white! border-gray-700!"
379
+ >
380
+ <template #trigger>
381
+ <span class="underline cursor-help">
382
+ Hover this text
383
+ </span>
384
+ </template>
385
+ <div class="p-2">
386
+ <p class="text-xs">Custom styled tooltip</p>
387
+ </div>
388
+ </MazPopover>
389
+ <MazPopover
390
+ role="tooltip"
391
+ trigger="hover"
392
+ :delay="1000"
393
+ position="right"
394
+ >
395
+ <template #trigger>
396
+ <MazInformationCircle class="cursor-help text-info text-xl" />
397
+ </template>
398
+ <div class="p-2 max-w-48">
399
+ <p class="text-xs">This tooltip has a 1000ms delay before showing</p>
400
+ </div>
401
+ </MazPopover>
402
+ </template>
403
+ ```
404
+
405
+ ## Controlled popover
406
+
407
+ ```vue
408
+ <script setup>
409
+ import { ref } from 'vue'
410
+
411
+ const isOpen = ref(false)
412
+ </script>
413
+
414
+ <template>
415
+ <MazPopover v-model="isOpen" trigger="manual">
416
+ <template #trigger="{ toggle }">
417
+ <MazBtn @click="toggle">
418
+ Controlled Trigger
419
+ </MazBtn>
420
+ </template>
421
+ <div class="p-4">
422
+ <h4 class="font-semibold mb-2">Controlled Popover</h4>
423
+ <p class="text-sm mb-3">This popover is controlled externally.</p>
424
+ <MazBtn @click="isOpen = false" size="sm" color="destructive">
425
+ Close
426
+ </MazBtn>
427
+ </div>
428
+ </MazPopover>
429
+ <MazBtn @click="isOpen = !isOpen" color="secondary">
430
+ {{ isOpen ? 'Close' : 'Open' }} Popover
431
+ </MazBtn>
432
+ <span class="text-sm text-muted">
433
+ Popover is {{ isOpen ? 'open' : 'closed' }}
434
+ </span>
435
+
436
+ <MazBtn color="secondary" @click="isOpen = !isOpen">
437
+ {{ isOpen ? 'Close' : 'Open' }} Popover
438
+ </MazBtn>
439
+ </template>
440
+ ```
441
+
442
+ ## Menu example
443
+
444
+ ```vue
445
+ <script setup>
446
+ const menuItems = [
447
+ { label: 'Profile', icon: 'user', action: 'profile' },
448
+ { label: 'Settings', icon: 'cog-6-tooth', action: 'settings' },
449
+ { label: 'Sign out', icon: 'arrow-right-on-rectangle', action: 'signout' }
450
+ ]
451
+
452
+ function handleMenuClick(action) {
453
+ console.log('Menu action:', action)
454
+ }
455
+ </script>
456
+
457
+ <template>
458
+ <MazPopover position="bottom-start">
459
+ <template #trigger>
460
+ <MazBtn>
461
+ <MazIcon icon="/cog-6-tooth.svg" class="me-2" />
462
+ Settings
463
+ <MazIcon icon="/chevron-down.svg" class="ms-2" />
464
+ </MazBtn>
465
+ </template>
466
+ <div class="py-1 min-w-48">
467
+ <button
468
+ v-for="item in menuItems"
469
+ :key="item.label"
470
+ class="w-full px-4 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400 flex items-center gap-2"
471
+ @click="handleMenuClick(item.action)"
472
+ >
473
+ <MazIcon :icon="item.icon" class="w-4 h-4" />
474
+ {{ item.label }}
475
+ </button>
476
+ </div>
477
+ </MazPopover>
478
+
479
+ <MazPopover position="bottom-end">
480
+ <template #trigger>
481
+ <MazBtn color="transparent" size="sm">
482
+ <MazIcon icon="/ellipsis-vertical.svg" />
483
+ </MazBtn>
484
+ </template>
485
+ <div class="py-1 min-w-32">
486
+ <button class="w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400">
487
+ Edit
488
+ </button>
489
+ <button class="w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400">
490
+ Share
491
+ </button>
492
+ <hr class="my-1 border-divider">
493
+ <button class="w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400 text-destructive">
494
+ Delete
495
+ </button>
496
+ </div>
497
+ </MazPopover>
498
+ </template>
499
+ ```
500
+
501
+ ## Keep open on hover
502
+
503
+ > With this option, the popover will stay open when you hover over it (a timeout is used to close the popover after a certain time).
504
+
505
+ ```vue
506
+ <template>
507
+ <MazPopover position="bottom-end" keep-open-on-hover trigger="hover">
508
+ <template #trigger>
509
+ <MazBtn color="secondary">
510
+ Keep open on hover
511
+ </MazBtn>
512
+ </template>
513
+ <div class="py-1 min-w-32">
514
+ <button class="w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400">
515
+ Edit
516
+ </button>
517
+ <button class="w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400">
518
+ Share
519
+ </button>
520
+ <hr class="my-1 border-divider">
521
+ <button class="w-full px-3 py-2 text-start text-sm hover:bg-surface-600 dark:hover:bg-surface-400 text-destructive">
522
+ Delete
523
+ </button>
524
+ </div>
525
+ </MazPopover>
526
+ </template>
527
+ ```
528
+
529
+ ## Form example
530
+
531
+ ```vue
532
+ <script setup>
533
+ import { reactive } from 'vue'
534
+
535
+ const formData = reactive({
536
+ name: '',
537
+ description: ''
538
+ })
539
+
540
+ function handleSubmit() {
541
+ console.log('Form submitted:', formData)
542
+ resetForm()
543
+ }
544
+
545
+ function resetForm() {
546
+ formData.name = ''
547
+ formData.description = ''
548
+ }
549
+ </script>
550
+
551
+ <template>
552
+ <MazPopover position="bottom-start" :close-on-click-outside="false">
553
+ <template #trigger>
554
+ <MazBtn block>
555
+ <MazIcon icon="/plus.svg" class="me-2" />
556
+ Add Item
557
+ </MazBtn>
558
+ </template>
559
+ <div class="w-80 p-4">
560
+ <h3 class="mb-4 text-lg font-semibold">
561
+ Add New Item
562
+ </h3>
563
+ <form class="space-y-4" @submit.prevent="handleSubmit">
564
+ <MazInput
565
+ v-model="formData.name"
566
+ label="Name"
567
+ placeholder="Enter item name"
568
+ required
569
+ />
570
+ <MazTextarea
571
+ v-model="formData.description"
572
+ label="Description"
573
+ placeholder="Enter description"
574
+ rows="3"
575
+ />
576
+ <div class="flex gap-2">
577
+ <MazBtn type="submit" color="success" size="sm">
578
+ Save
579
+ </MazBtn>
580
+ <MazBtn type="button" color="transparent" size="sm" @click="resetForm">
581
+ Reset
582
+ </MazBtn>
583
+ </div>
584
+ </form>
585
+ </div>
586
+ </MazPopover>
587
+ </template>
588
+ ```
589
+
590
+ ## Configuration options
591
+
592
+ ```vue
593
+ <template>
594
+ <!-- Persistent popover -->
595
+ <MazPopover persistent>
596
+ <template #trigger>
597
+ <MazBtn color="warning">
598
+ Persistent Popover
599
+ </MazBtn>
600
+ </template>
601
+ <div class="p-4">
602
+ <p class="mb-3 text-sm">
603
+ This popover won't close on click outside or ESC.
604
+ </p>
605
+ <MazBtn size="sm" color="destructive" @click="close">
606
+ Close manually
607
+ </MazBtn>
608
+ </div>
609
+ </MazPopover>
610
+
611
+ <!-- Custom offset -->
612
+ <MazPopover :offset="20" position="top">
613
+ <template #trigger>
614
+ <MazBtn color="accent">
615
+ Large Offset
616
+ </MazBtn>
617
+ </template>
618
+ <div class="p-3">
619
+ <p class="text-sm">
620
+ 20px offset from trigger
621
+ </p>
622
+ </div>
623
+ </MazPopover>
624
+
625
+ <!-- Custom styling -->
626
+ <MazPopover
627
+ panel-class="bg-linear-to-r from-purple-500 to-pink-500 text-white border-none"
628
+ position="bottom"
629
+ >
630
+ <template #trigger>
631
+ <MazBtn color="contrast">
632
+ Styled Popover
633
+ </MazBtn>
634
+ </template>
635
+ <div class="p-4">
636
+ <p class="text-sm font-semibold">
637
+ Beautiful gradient background!
638
+ </p>
639
+ </div>
640
+ </MazPopover>
641
+
642
+ <!-- Disabled -->
643
+ <MazPopover disabled>
644
+ <template #trigger>
645
+ <MazBtn disabled>
646
+ Disabled Popover
647
+ </MazBtn>
648
+ </template>
649
+ <div class="p-3">
650
+ <p class="text-sm">
651
+ This won't show
652
+ </p>
653
+ </div>
654
+ </MazPopover>
655
+ </template>
656
+ ```
657
+
658
+ ## Events
659
+
660
+ ```vue
661
+ <script setup>
662
+ import { ref } from 'vue'
663
+
664
+ const events = ref([])
665
+
666
+ function onOpen() {
667
+ console.log('Popover opened')
668
+ events.value.push({
669
+ type: 'open',
670
+ time: new Date().toLocaleTimeString()
671
+ })
672
+ }
673
+
674
+ function onClose() {
675
+ console.log('Popover closed')
676
+ events.value.push({
677
+ type: 'close',
678
+ time: new Date().toLocaleTimeString()
679
+ })
680
+ }
681
+
682
+ function onToggle(isOpen) {
683
+ console.log('Popover toggled:', isOpen)
684
+ events.value.push({
685
+ type: `toggle (${isOpen ? 'open' : 'close'})`,
686
+ time: new Date().toLocaleTimeString()
687
+ })
688
+ }
689
+ </script>
690
+
691
+ <template>
692
+ <MazPopover
693
+ @open="onOpen"
694
+ @close="onClose"
695
+ @toggle="onToggle"
696
+ >
697
+ <template #trigger>
698
+ <MazBtn>
699
+ Event Example
700
+ </MazBtn>
701
+ </template>
702
+ <div class="p-4">
703
+ <p class="text-sm">
704
+ Check the console for events!
705
+ </p>
706
+ </div>
707
+ </MazPopover>
708
+ </template>
709
+ ```
710
+
711
+ ## Position values
712
+
713
+ - `auto` - Automatically choose best position
714
+ - `top`, `bottom`, `left`, `right` - Basic positions
715
+ - `top-start`, `top-end` - Top with start/end alignment
716
+ - `bottom-start`, `bottom-end` - Bottom with start/end alignment
717
+ - `left-start`, `left-end` - Left with start/end alignment
718
+ - `right-start`, `right-end` - Right with start/end alignment
719
+
720
+ ## Accessibility
721
+
722
+ MazPopover follows WAI-ARIA guidelines:
723
+
724
+ - **Focus management**: Automatically manages focus when opening/closing
725
+ - **Keyboard navigation**: Supports Escape key and Tab navigation
726
+ - **ARIA attributes**: Proper `role`, `aria-modal`, `aria-labelledby`, etc.
727
+ - **Screen reader support**: Appropriate roles for different use cases
728
+ - **Trigger ARIA on the real control**: `aria-expanded`, `aria-haspopup` and `aria-controls` are set on the interactive element of the `trigger` slot (your button, link...), never on a wrapper around it. ARIA attributes you set yourself on that element are kept, and a `combobox` keeps managing its own state. When the slot has no interactive element, the wrapper becomes a focusable `button` (Enter / Space toggle the popover).
729
+
730
+ ### Best practices
731
+
732
+ - Use `role="tooltip"` for simple informational overlays
733
+ - Use `role="dialog"` for interactive content
734
+ - Provide meaningful `aria-labelledby` or `aria-describedby` attributes
735
+ - Ensure trigger elements are focusable and have proper labels
736
+
737
+ ## MazPopover API
738
+
739
+ `import MazPopover from 'maz-ui/components/MazPopover'`
740
+
741
+ ### Props
742
+
743
+ - `model-value` (`boolean`, default: `false`, `v-model`): Controls the popover open state.
744
+ - `position` (`MazPopoverPosition`, default: `"auto"`): Position of the popover relative to trigger - Position of the popover relative to trigger. Values: `'auto'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-start'`, `'top-end'`, `'bottom-start'`, `'bottom-end'`, `'left-start'`, `'left-end'`, `'right-start'`, `'right-end'` (non exhaustive).
745
+ - `prefer-position` (`MazPopoverPreferPosition`, default: `'bottom-start'`): Preferred position of the popover relative to trigger when auto position is used - Preferred position of the popover relative to trigger. Values: `'auto'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-start'`, `'top-end'`, `'bottom-start'`, `'bottom-end'`, `'left-start'`, `'left-end'`, `'right-start'`, `'right-end'` (non exhaustive).
746
+ - `fallback-position` (`MazPopoverFallbackPosition`, default: `auto`): Fallback position of the popover relative to trigger when prefer position is not visible - Fallback position of the popover relative to trigger. Values: `'auto'`, `'top'`, `'bottom'`, `'left'`, `'right'`, `'top-start'`, `'top-end'`, `'bottom-start'`, `'bottom-end'`, `'left-start'`, `'left-end'`, `'right-start'`, `'right-end'` (non exhaustive).
747
+ - `trigger` (`MazPopoverTrigger`, default: `"click"`): How the popover is triggered - How the popover is triggered. 'adaptive' uses hover on desktop and click on mobile. Values: `'click'`, `'hover'`, `'manual'`, `'adaptive'` (non exhaustive).
748
+ - `role` (`MazPopoverRole`, default: `"dialog"`): ARIA role for accessibility - ARIA role for accessibility. Values: `'dialog'`, `'tooltip'` (non exhaustive).
749
+ - `aria-label` (`string`): ARIA label for the popover.
750
+ - `announce-changes` (`boolean`, default: `false`): Announce content changes to screen readers.
751
+ - `disabled` (`boolean`, default: `false`): Disables the popover - Disables the popover.
752
+ - `offset` (`number`, default: `8`): Distance between trigger and popover in pixels.
753
+ - `delay` (`number`, default: `0`): Delay before showing/hiding in milliseconds.
754
+ - `hover-delay` (`number`, default: `150`): Delay before closing on hover in milliseconds.
755
+ - `transition` (`string`, default: `"scale-pop"`): CSS transition name for animations - 'scale-pop' | 'scale-fade' for default transitions. 'scale-pop' is a pop effect, 'scale-fade' is a fade effect. Values: `'scale-pop'`, `'scale-fade'`, `'string'` (non exhaustive).
756
+ - `teleport-to` (`string`, default: `"body"`): Teleport target selector.
757
+ - `overlay-class` (`ClassValue`): Additional CSS classes for the overlay wrapper.
758
+ - `panel-class` (`ClassValue`): Additional CSS classes for the popover panel.
759
+ - `panel-style` (`StyleValue`): Inline styles for the popover panel.
760
+ - `close-on-click-outside` (`boolean`, default: `true`): Close popover when clicking outside.
761
+ - `close-on-escape` (`boolean`, default: `true`): Close popover when pressing Escape key.
762
+ - `persistent` (`boolean`, default: `false`): Prevent auto-close (ignores click outside and escape key).
763
+ - `id` (`string`): Custom ID for the popover element.
764
+ - `aria-labelledby` (`string`): ARIA labelledby attribute for accessibility.
765
+ - `aria-describedby` (`string`): ARIA describedby attribute for accessibility.
766
+ - `color` (`"primary" | "secondary" | "accent" | "info" | "success" | "warning" | "destructive" | "contrast" | "transparent" | "surface"`, default: `"surface"`): Color variant of the popover.
767
+ - `trap-focus` (`boolean`, default: `true`): Trap focus inside the popover.
768
+ - `keep-open-on-hover` (`boolean`, default: `false`): Keep popover open when hovering over the panel.
769
+ - `block` (`boolean`, default: `false`): The popover will be full width of the trigger.
770
+ - `position-reference` (`string | HTMLElement`): CSS selector or element reference to use for positioning calculations - When provided, the popover will position relative to this element instead of the trigger Useful for components with labels where you want to position relative to the actual input.
771
+
772
+ ### Events
773
+
774
+ - `@update:model-value` (payload: `value: boolean`): Emitted when popover state changes
775
+ - `@open`: Emitted when popover opens
776
+ - `@close`: Emitted when popover closes
777
+ - `@toggle` (payload: `value: boolean`): Emitted when popover toggles
778
+ - `@update:modelValue` (payload: `value: boolean`)
779
+ - `@after-close-animation`: Emitted after the close animation
780
+
781
+ ### Slots
782
+
783
+ - `#trigger`: Trigger element content Bindings: `open: () => void` (Function to open the popover), `close: () => void` (Function to close the popover), `toggle: () => void` (Function to toggle the popover), `isOpen: boolean` (Current open state of the popover), `trigger: "click" | "hover" | "manual"` (The trigger type).
784
+ - `#default`: Popover content Bindings: `open: () => void` (Function to open the popover), `close: () => void` (Function to close the popover), `toggle: () => void` (Function to toggle the popover), `isOpen: true` (Current open state of the popover).
785
+
786
+ ### Exposed (template ref)
787
+
788
+ - `open`: Open the popover
789
+ - `close`: Close the popover
790
+ - `toggle`: Toggle the popover
791
+ - `isOpen`: Check if the popover is open
792
+ - `updatePosition`: Update the popover position
793
+ - `panelRef`: Panel reference
794
+ - `onTransitionAfterLeave`