@maz-ui/mcp 5.0.0 → 5.1.0-beta.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 (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 +14 -0
  6. package/dist/index.d.mts +340 -0
  7. package/dist/index.d.ts +340 -0
  8. package/dist/index.mjs +14 -0
  9. package/dist/shared/mcp.DzqVbCaL.mjs +2346 -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 +76 -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 +26 -189
  23. package/docs/{src/components → components}/maz-btn.md +60 -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 +106 -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 +43 -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 +22 -16
  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 +46 -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 +237 -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 +483 -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 +57 -0
  187. package/package.json +84 -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
@@ -1,942 +0,0 @@
1
- ---
2
- title: MazInputPhoneNumber
3
- description: MazInputPhoneNumber is a powerful and user-friendly component that helps users enter and validate phone numbers from any country with automatic formatting and validation
4
- ---
5
-
6
- # {{ $frontmatter.title }}
7
-
8
- {{ $frontmatter.description }}
9
-
10
- <!--@include: ./../../.vitepress/mixins/getting-started.md-->
11
-
12
- <!--@include: ./../../.vitepress/mixins/translated-component.md-->
13
-
14
- ::: tip ✨ What makes this component special?
15
- - **Smart country detection** - Automatically detects country from browser locale or IP
16
- - **Real-time validation** - Visual feedback as you type
17
- - **Auto-formatting** - Formats numbers according to country standards
18
- - **Search countries** - Find countries quickly in the dropdown
19
- - **Customizable** - Full control over appearance and behavior
20
- - **Accessible** - Keyboard navigation and screen reader support
21
- - **International** - Supports all countries and phone formats
22
- :::
23
-
24
- ## Basic Usage
25
-
26
- The simplest way to use MazInputPhoneNumber - just add it and it works!
27
-
28
- <ComponentDemo expanded>
29
- <MazInputPhoneNumber
30
- v-model="phoneNumber"
31
- v-model:country-code="countryCode"
32
- @data="results = $event"
33
- />
34
-
35
- <div class="maz:mt-4 maz:text-sm">
36
- <p><strong>Phone Number:</strong> {{ phoneNumber || 'Not entered yet' }}</p>
37
- <p><strong>Country:</strong> {{ countryCode || 'Not selected' }}</p>
38
- <p><strong>Is Valid:</strong> {{ results?.isValid ? '✅ Yes' : '❌ No' }}</p>
39
- </div>
40
-
41
- <template #code>
42
-
43
- ```vue
44
- <script setup lang="ts">
45
- import type { MazInputPhoneNumberData } from 'maz-ui/components/MazInputPhoneNumber'
46
- import MazInputPhoneNumber from 'maz-ui/components/MazInputPhoneNumber'
47
- import { ref } from 'vue'
48
-
49
- const phoneNumber = ref<string>()
50
- const countryCode = ref<string>()
51
- const results = ref<MazInputPhoneNumberData>()
52
- </script>
53
-
54
- <template>
55
- <MazInputPhoneNumber
56
- v-model="phoneNumber"
57
- v-model:country-code="countryCode"
58
- @data="results = $event"
59
- />
60
- </template>
61
- ```
62
-
63
- </template>
64
- </ComponentDemo>
65
-
66
- ## Country Management
67
-
68
- Control which countries appear in the dropdown and their order.
69
-
70
- <ComponentDemo>
71
- <div class="maz:flex maz:flex-col maz:gap-4">
72
- <MazInputPhoneNumber
73
- top-label="Preferred Countries"
74
- assistive-text="Show your most common countries first"
75
- v-model="phone1"
76
- :preferred-countries="['US', 'FR', 'GB', 'DE', 'CA']"
77
- placeholder="Common countries appear first"
78
- />
79
- <MazInputPhoneNumber
80
- top-label="Only Specific Countries"
81
- assistive-text="Limit to certain countries only"
82
- v-model="phone2"
83
- :only-countries="['US', 'FR', 'GB', 'DE', 'IT', 'ES']"
84
- placeholder="Only European + North American countries"
85
- />
86
- <MazInputPhoneNumber
87
- top-label="Ignore Countries"
88
- assistive-text="Remove unwanted countries"
89
- v-model="phone3"
90
- :ignored-countries="['AF', 'AL', 'DZ']"
91
- placeholder="Some countries are hidden"
92
- />
93
- </div>
94
-
95
- <template #code>
96
-
97
- ```vue
98
- <template>
99
- <!-- Preferred countries (moved to top, order not preserved) -->
100
- <MazInputPhoneNumber
101
- v-model="phoneNumber"
102
- :preferred-countries="['US', 'FR', 'GB', 'DE', 'CA']"
103
- placeholder="Common countries appear first"
104
- />
105
-
106
- <!-- Only specific countries -->
107
- <MazInputPhoneNumber
108
- v-model="phoneNumber"
109
- :only-countries="['US', 'FR', 'GB', 'DE', 'IT', 'ES']"
110
- placeholder="Only European + North American countries"
111
- />
112
-
113
- <!-- Ignore certain countries -->
114
- <MazInputPhoneNumber
115
- v-model="phoneNumber"
116
- :ignored-countries="['AF', 'AL', 'DZ']"
117
- placeholder="Some countries are hidden"
118
- />
119
- </template>
120
- ```
121
-
122
- </template>
123
- </ComponentDemo>
124
-
125
- ## Layout Orientations
126
-
127
- Choose how the country selector and phone input are arranged.
128
-
129
- <ComponentDemo>
130
- <div class="maz:flex maz:flex-col maz:gap-6">
131
- <MazInputPhoneNumber
132
- top-label="Responsive"
133
- assistive-text="Stacks on mobile, side-by-side on desktop"
134
- orientation="responsive"
135
- />
136
- <MazInputPhoneNumber
137
- top-label="Always Row"
138
- assistive-text="Side-by-side on all screen sizes"
139
- orientation="row"
140
- />
141
- <MazInputPhoneNumber
142
- top-label="Always Column"
143
- assistive-text="Stacked on all screen sizes"
144
- orientation="col"
145
- />
146
- </div>
147
-
148
- <template #code>
149
-
150
- ```vue
151
- <template>
152
- <!-- Responsive layout (default) -->
153
- <MazInputPhoneNumber
154
- top-label="Responsive"
155
- assistive-text="Stacks on mobile, side-by-side on desktop"
156
- orientation="responsive"
157
- />
158
-
159
- <!-- Always side-by-side -->
160
- <MazInputPhoneNumber
161
- top-label="Always Row"
162
- assistive-text="Side-by-side on all screen sizes"
163
- orientation="row"
164
- />
165
-
166
- <!-- Always stacked -->
167
- <MazInputPhoneNumber
168
- top-label="Always Column"
169
- assistive-text="Stacked on all screen sizes"
170
- orientation="col"
171
- />
172
- </template>
173
- ```
174
-
175
- </template>
176
- </ComponentDemo>
177
-
178
- ## Display Options
179
-
180
- Customize what information is shown to users.
181
-
182
- <ComponentDemo>
183
- <div class="maz:flex maz:flex-col maz:gap-4">
184
- <MazInputPhoneNumber
185
- top-label="Show Country Names"
186
- assistive-text="Display country names instead of calling codes"
187
- display-country-name
188
- :translations="{
189
- countrySelect: { placeholder: 'Choose country' }
190
- }"
191
- />
192
- <MazInputPhoneNumber
193
- top-label="Show Calling Codes in List"
194
- assistive-text="Help users see the dialing codes"
195
- show-code-in-list
196
- />
197
- <MazInputPhoneNumber
198
- top-label="Hide Phone Examples"
199
- assistive-text="Remove the example phone number hints (visible when the phone input is focused)"
200
- :example="false"
201
- />
202
- <MazInputPhoneNumber
203
- top-label="Hide Country Flags"
204
- assistive-text="Text-only country selection"
205
- hide-flags
206
- />
207
- <MazInputPhoneNumber
208
- top-label="Flags of maz-ui"
209
- assistive-text="No request to flagcdn.com, works offline"
210
- :flag-src="loadCountryFlag"
211
- />
212
- </div>
213
-
214
- <template #code>
215
-
216
- ```vue
217
- <template>
218
- <!-- Show country names instead of codes -->
219
- <MazInputPhoneNumber
220
- display-country-name
221
- :translations="{ countrySelect: { placeholder: 'Choose country' } }"
222
- />
223
-
224
- <!-- Show calling codes in dropdown -->
225
- <MazInputPhoneNumber show-code-in-list />
226
-
227
- <!-- Hide phone number examples -->
228
- <MazInputPhoneNumber :example="false" />
229
-
230
- <!-- Hide country flags -->
231
- <MazInputPhoneNumber hide-flags />
232
-
233
- <!-- Flags of maz-ui, no request to flagcdn.com: import { loadCountryFlag } from 'maz-ui/country-flags' -->
234
- <MazInputPhoneNumber :flag-src="loadCountryFlag" />
235
-
236
- <!-- Your own files: public/flags/fr.svg... -->
237
- <MazInputPhoneNumber flag-src="/flags/{code}.svg" />
238
- </template>
239
- ```
240
-
241
- </template>
242
- </ComponentDemo>
243
-
244
- ### Flags source
245
-
246
- By default, the flags come from the [flagcdn.com](https://flagcdn.com) CDN. The `flag-src` prop, passed to the country selector, takes:
247
-
248
- - `loadCountryFlag` from `maz-ui/country-flags`: the flags of `@maz-ui/icons`, without any request to a third party, offline (hybrid apps with Capacitor or Cordova, PWAs);
249
- - a URL template of your own files: `'/flags/{code}.svg'` (`{CODE}` for uppercase codes);
250
- - your own function: `(code) => string | undefined | Promise<string | undefined>`.
251
-
252
- Each flag is loaded only when visible, and a code without flag displays a badge. Set it once for the whole app with `defaults.global.flagSrc` of the MazUi plugin, or `mazUi.flags` of the Nuxt module (`'local'` or a URL template):
253
-
254
- ```ts
255
- import { loadCountryFlag } from 'maz-ui/country-flags'
256
-
257
- app.use(MazUi, { theme: { preset: mazUi }, defaults: { global: { flagSrc: loadCountryFlag } } })
258
- ```
259
-
260
- See [MazSelectCountry](./maz-select-country.md#flags-source) for the details (bundle, Content Security Policy, PWA precache).
261
-
262
- ## Smart Country Detection
263
-
264
- Let the component automatically detect the user's country.
265
-
266
- <ComponentDemo>
267
- <div class="maz:space-y-6">
268
- <div>
269
- <h4 class="maz:font-semibold maz:mb-2">Browser Locale Detection</h4>
270
- <p class="maz:text-sm maz:text-muted maz:mb-2">Uses browser language settings (enabled by default)</p>
271
- <MazInputPhoneNumber :use-browser-locale="true" />
272
- </div>
273
- <div>
274
- <h4 class="maz:font-semibold maz:mb-2">IP-based Detection</h4>
275
- <p class="maz:text-sm maz:text-muted maz:mb-2">Fetches country from user's IP address</p>
276
- <MazInputPhoneNumber fetch-country />
277
- </div>
278
- <div>
279
- <h4 class="maz:font-semibold maz:mb-2">Manual Default Country</h4>
280
- <p class="maz:text-sm maz:text-muted maz:mb-2">Set a specific default country</p>
281
- <MazInputPhoneNumber
282
- :use-browser-locale="false"
283
- country-code="JP"
284
- />
285
- </div>
286
- </div>
287
-
288
- <template #code>
289
-
290
- ```vue
291
- <template>
292
- <!-- Auto-detect from browser (default behavior) -->
293
- <MazInputPhoneNumber :use-browser-locale="true" />
294
-
295
- <!-- Auto-detect from IP address -->
296
- <MazInputPhoneNumber fetch-country />
297
-
298
- <!-- Set specific default country -->
299
- <MazInputPhoneNumber
300
- :use-browser-locale="false"
301
- country-code="JP"
302
- />
303
- </template>
304
- ```
305
-
306
- </template>
307
- </ComponentDemo>
308
-
309
- ## Phone Number Formatting
310
-
311
- Control how phone numbers are automatically formatted as users type.
312
-
313
- <ComponentDemo>
314
- <div class="maz:space-y-6">
315
- <div>
316
- <h4 class="maz:font-semibold maz:mb-2">Format on Blur (Default)</h4>
317
- <p class="maz:text-sm maz:text-muted maz:mb-2">Shows raw input while typing, formats when field loses focus</p>
318
- <MazInputPhoneNumber
319
- auto-format="blur"
320
- country-code="US"
321
- :translations="{
322
- phoneInput: {
323
- placeholder: 'Type freely, formats on blur'
324
- }
325
- }"
326
- />
327
- </div>
328
- <div>
329
- <h4 class="maz:font-semibold maz:mb-2">Format While Typing</h4>
330
- <p class="maz:text-sm maz:text-muted maz:mb-2">Real-time formatting as you type</p>
331
- <MazInputPhoneNumber
332
- auto-format="typing"
333
- country-code="FR"
334
- :translations="{
335
- phoneInput: {
336
- placeholder: 'Formats as you type'
337
- }
338
- }"
339
- />
340
- </div>
341
- <div>
342
- <h4 class="maz:font-semibold maz:mb-2">Disable Formatting</h4>
343
- <p class="maz:text-sm maz:text-muted maz:mb-2">For countries with multiple valid lengths or custom formatting</p>
344
- <MazInputPhoneNumber
345
- auto-format="disabled"
346
- country-code="AI"
347
- :translations="{
348
- phoneInput: {
349
- placeholder: 'Raw input, no formatting'
350
- }
351
- }"
352
- />
353
- </div>
354
- </div>
355
-
356
- <template #code>
357
-
358
- ```vue
359
- <template>
360
- <!-- Format on blur (default) - best UX for most cases -->
361
- <MazInputPhoneNumber auto-format="blur" />
362
-
363
- <!-- Format while typing - immediate visual feedback -->
364
- <MazInputPhoneNumber auto-format="typing" />
365
-
366
- <!-- Disable formatting - for special cases -->
367
- <MazInputPhoneNumber auto-format="disabled" />
368
-
369
- <!-- Legacy boolean support (false = disabled, true = typing) -->
370
- <MazInputPhoneNumber :auto-format="false" />
371
- </template>
372
- ```
373
-
374
- </template>
375
- </ComponentDemo>
376
-
377
- ## Validation States
378
-
379
- Control the visual validation feedback and success/error indicators.
380
-
381
- <ComponentDemo>
382
- <div class="maz:space-y-6">
383
- <div>
384
- <h4 class="maz:font-semibold maz:mb-2">Hide Validation UI</h4>
385
- <p class="maz:text-sm maz:text-muted maz:mb-2">No visual success/error indicators</p>
386
- <MazInputPhoneNumber
387
- :validation-success="false"
388
- :validation-error="false"
389
- />
390
- </div>
391
- <div>
392
- <h4 class="maz:font-semibold maz:mb-2">Force Success State</h4>
393
- <p class="maz:text-sm maz:text-muted maz:mb-2">Always show success styling</p>
394
- <MazInputPhoneNumber success />
395
- </div>
396
- <div>
397
- <h4 class="maz:font-semibold maz:mb-2">Force Error State</h4>
398
- <p class="maz:text-sm maz:text-muted maz:mb-2">Always show error styling</p>
399
- <MazInputPhoneNumber error />
400
- </div>
401
- </div>
402
-
403
- <template #code>
404
-
405
- ```vue
406
- <template>
407
- <!-- Hide validation indicators -->
408
- <MazInputPhoneNumber
409
- :validation-success="false"
410
- :validation-error="false"
411
- />
412
-
413
- <!-- Force success state -->
414
- <MazInputPhoneNumber success />
415
-
416
- <!-- Force error state -->
417
- <MazInputPhoneNumber error />
418
- </template>
419
- ```
420
-
421
- </template>
422
- </ComponentDemo>
423
-
424
- ## Internationalization
425
-
426
- Make the component speak your users' language.
427
-
428
- <ComponentDemo>
429
- <div class="maz:space-y-6">
430
- <div>
431
- <h4 class="maz:font-semibold maz:mb-2">Custom Labels</h4>
432
- <p class="maz:text-sm maz:text-muted maz:mb-2">Translate all text in the interface</p>
433
- <MazInputPhoneNumber
434
- :translations="{
435
- countrySelect: {
436
- placeholder: 'Select your country',
437
- error: 'Please choose a country',
438
- searchPlaceholder: 'Search countries...'
439
- },
440
- phoneInput: {
441
- placeholder: 'Enter phone number',
442
- example: 'Format: {example}'
443
- }
444
- }"
445
- />
446
- </div>
447
- <div>
448
- <h4 class="maz:font-semibold maz:mb-2">Country Names in French</h4>
449
- <p class="maz:text-sm maz:text-muted maz:mb-2">Change the language of country names</p>
450
- <MazInputPhoneNumber country-locale="fr-FR" />
451
- </div>
452
- <div>
453
- <h4 class="maz:font-semibold maz:mb-2">Custom Country Names</h4>
454
- <p class="maz:text-sm maz:text-muted maz:mb-2">Override specific country names</p>
455
- <MazInputPhoneNumber
456
- :custom-countries-list="{
457
- US: 'United States of America',
458
- GB: 'United Kingdom',
459
- FR: 'République Française'
460
- }"
461
- />
462
- </div>
463
- </div>
464
-
465
- <template #code>
466
-
467
- ```vue
468
- <template>
469
- <!-- Custom translations -->
470
- <MazInputPhoneNumber
471
- :translations="{
472
- countrySelect: {
473
- placeholder: 'Select your country',
474
- error: 'Please choose a country',
475
- searchPlaceholder: 'Search countries...'
476
- },
477
- phoneInput: {
478
- placeholder: 'Enter phone number',
479
- example: 'Format: {example}'
480
- }
481
- }"
482
- />
483
-
484
- <!-- French country names -->
485
- <MazInputPhoneNumber country-locale="fr-FR" />
486
-
487
- <!-- Custom country names -->
488
- <MazInputPhoneNumber
489
- :custom-countries-list="{
490
- US: 'United States of America',
491
- GB: 'United Kingdom',
492
- FR: 'République Française'
493
- }"
494
- />
495
- </template>
496
- ```
497
-
498
- </template>
499
- </ComponentDemo>
500
-
501
- ## Custom Flag Styling
502
-
503
- Replace the default flag emojis with your own design.
504
-
505
- <ComponentDemo>
506
- <div class="maz:space-y-6">
507
- <div>
508
- <h4 class="maz:font-semibold maz:mb-2">Country Code Badges</h4>
509
- <p class="maz:text-sm maz:text-muted maz:mb-2">Show country codes instead of flags</p>
510
- <MazInputPhoneNumber>
511
- <template #selector-flag="{ countryCode }">
512
- <span
513
- id="custom-flag-element"
514
- class="maz:bg-primary maz:text-primary-foreground maz:px-2 maz:py-1 maz:rounded-md maz:text-xs maz:font-semibold"
515
- >
516
- {{ countryCode }}
517
- </span>
518
- </template>
519
- <template #country-list-flag="{ countryCode }">
520
- <MazBadge size="sm" class="maz:me-2 maz:min-w-10">
521
- {{ countryCode }}
522
- </MazBadge>
523
- </template>
524
- </MazInputPhoneNumber>
525
- </div>
526
- <div>
527
- <h4 class="maz:font-semibold maz:mb-2">Custom Icons</h4>
528
- <p class="maz:text-sm maz:text-muted maz:mb-2">Use your own flag icons or designs</p>
529
- <MazInputPhoneNumber>
530
- <template #selector-flag="{ countryCode }">
531
- <div
532
- id="icon-flag-element"
533
- class="maz:w-6 maz:h-6 maz:bg-linear-to-r maz:from-blue-500 maz:to-green-500 maz:rounded-full maz:flex maz:items-center maz:justify-center maz:text-white maz:text-xs maz:font-bold"
534
- >
535
- {{ countryCode?.charAt(0) }}
536
- </div>
537
- </template>
538
- <template #country-list-flag="{ countryCode }">
539
- <div class="maz:w-6 maz:h-6 maz:bg-linear-to-r maz:from-purple-500 maz:to-pink-500 maz:rounded-md maz:flex maz:items-center maz:justify-center maz:text-white maz:text-xs maz:font-bold maz:me-2">
540
- {{ countryCode?.charAt(0) }}
541
- </div>
542
- </template>
543
- </MazInputPhoneNumber>
544
- </div>
545
- </div>
546
-
547
- <template #code>
548
-
549
- ```vue
550
- <template>
551
- <!-- Country code badges -->
552
- <MazInputPhoneNumber>
553
- <template #selector-flag="{ countryCode }">
554
- <span class="country-badge">
555
- {{ countryCode }}
556
- </span>
557
- </template>
558
- <template #country-list-flag="{ countryCode }">
559
- <MazBadge size="sm" class="maz:me-2">
560
- {{ countryCode }}
561
- </MazBadge>
562
- </template>
563
- </MazInputPhoneNumber>
564
-
565
- <!-- Custom icons -->
566
- <MazInputPhoneNumber>
567
- <template #selector-flag="{ countryCode }">
568
- <div class="custom-flag-icon">
569
- {{ countryCode?.charAt(0) }}
570
- </div>
571
- </template>
572
- <template #country-list-flag="{ countryCode }">
573
- <div class="custom-list-icon">
574
- {{ countryCode?.charAt(0) }}
575
- </div>
576
- </template>
577
- </MazInputPhoneNumber>
578
- </template>
579
-
580
- <style scoped>
581
- @reference "../../.vitepress/theme/main.css";
582
- .country-badge {
583
- @apply maz:bg-primary maz:text-primary-foreground maz:px-2 maz:py-1 maz:rounded-md maz:text-xs maz:font-semibold;
584
- }
585
-
586
- .custom-flag-icon,
587
- .custom-list-icon {
588
- @apply maz:w-6 maz:h-6 maz:bg-linear-to-r maz:from-blue-500 maz:to-green-500 maz:rounded-full maz:flex maz:items-center maz:justify-center maz:text-white maz:text-xs maz:font-bold;
589
- }
590
-
591
- .custom-list-icon {
592
- @apply maz:me-2;
593
- }
594
- </style>
595
- ```
596
-
597
- ::: tip SVG Flags
598
- You can use libraries like [country-flag-icons](https://www.npmjs.com/package/country-flag-icons) to display beautiful SVG flags instead of emoji flags.
599
- :::
600
-
601
- </template>
602
- </ComponentDemo>
603
-
604
- ## Advanced Configuration
605
-
606
- Fine-tune the component for specific use cases.
607
-
608
- <ComponentDemo>
609
- <div class="maz:space-y-6">
610
- <div>
611
- <h4 class="maz:font-semibold maz:mb-2">Phone-only Mode</h4>
612
- <p class="maz:text-sm maz:text-muted maz:mb-2">Hide country selector, pre-select country</p>
613
- <MazInputPhoneNumber
614
- hide-country-select
615
- country-code="US"
616
- :translations="{
617
- phoneInput: {
618
- placeholder: 'US Phone Number'
619
- }
620
- }"
621
- />
622
- </div>
623
- <div>
624
- <h4 class="maz:font-semibold maz:mb-2">Custom Search Sensitivity</h4>
625
- <p class="maz:text-sm maz:text-muted maz:mb-2">Adjust how strict country search is (0 = fuzzy, 1 = exact)</p>
626
- <MazInputPhoneNumber
627
- :search-threshold="0.3"
628
- placeholder="Try searching 'unite' for United States"
629
- />
630
- </div>
631
- <div>
632
- <h4 class="maz:font-semibold maz:mb-2">Disable Search</h4>
633
- <p class="maz:text-sm maz:text-muted maz:mb-2">Remove search functionality from country list</p>
634
- <MazInputPhoneNumber :search="false" />
635
- </div>
636
- <div>
637
- <h4 class="maz:font-semibold maz:mb-2">Different Dropdown Position</h4>
638
- <p class="maz:text-sm maz:text-muted maz:mb-2">Control where the country list appears</p>
639
- <MazInputPhoneNumber list-position="top-start" />
640
- </div>
641
- </div>
642
-
643
- <template #code>
644
-
645
- ```vue
646
- <template>
647
- <!-- Phone-only mode -->
648
- <MazInputPhoneNumber
649
- hide-country-select
650
- country-code="US"
651
- :translations="{
652
- phoneInput: {
653
- placeholder: 'US Phone Number'
654
- }
655
- }"
656
- />
657
-
658
- <!-- Fuzzy search -->
659
- <MazInputPhoneNumber :search-threshold="0.3" />
660
-
661
- <!-- No search -->
662
- <MazInputPhoneNumber :search="false" />
663
-
664
- <!-- Different dropdown position -->
665
- <MazInputPhoneNumber list-position="top-start" />
666
- </template>
667
- ```
668
-
669
- </template>
670
- </ComponentDemo>
671
-
672
- ## Real-world Examples
673
-
674
- See how to use the component in common scenarios.
675
-
676
- <ComponentDemo>
677
- <div class="maz:space-y-8">
678
- <div>
679
- <h4 class="maz:font-semibold maz:mb-2">🏢 Business Form</h4>
680
- <p class="maz:text-sm maz:text-muted maz:mb-4">Perfect for customer registration</p>
681
- <div class="maz:max-w-md maz:grid maz:grid-cols-1 maz:gap-4">
682
- <MazInput label="Full Name" placeholder="John Doe" />
683
- <MazInput label="Email" type="email" placeholder="john@example.com" />
684
- <MazInputPhoneNumber
685
- v-model="businessPhone"
686
- v-model:country-code="businessCountry"
687
- label="Business Phone"
688
- :preferred-countries="['US', 'CA', 'GB', 'AU']"
689
- :validation-success="businessResults?.isValid"
690
- @data="businessResults = $event"
691
- />
692
- <MazBtn color="primary" block>
693
- Create Account
694
- </MazBtn>
695
- </div>
696
- </div>
697
- <div>
698
- <h4 class="maz:font-semibold maz:mb-2">🌍 Global Support</h4>
699
- <p class="maz:text-sm maz:text-muted maz:mb-4">Multi-language international form</p>
700
- <div class="maz:max-w-md">
701
- <MazInputPhoneNumber
702
- v-model="globalPhone"
703
- country-locale="es-ES"
704
- show-code-in-list
705
- :translations="{
706
- countrySelect: {
707
- placeholder: 'País',
708
- searchPlaceholder: 'Buscar país...'
709
- },
710
- phoneInput: {
711
- placeholder: 'Número de teléfono'
712
- }
713
- }"
714
- />
715
- </div>
716
- </div>
717
- <div>
718
- <h4 class="maz:font-semibold maz:mb-2">📱 Mobile-first Design</h4>
719
- <p class="maz:text-sm maz:text-muted maz:mb-4">Optimized for mobile apps</p>
720
- <div class="maz:max-w-xs">
721
- <MazInputPhoneNumber
722
- v-model="mobilePhone"
723
- orientation="col"
724
- size="lg"
725
- fetch-country
726
- block
727
- />
728
- </div>
729
- </div>
730
- </div>
731
-
732
- <template #code>
733
-
734
- ```vue
735
- <script setup>
736
- import { ref } from 'vue'
737
-
738
- const businessPhone = ref()
739
- const businessCountry = ref()
740
- const businessResults = ref()
741
-
742
- const globalPhone = ref()
743
- const mobilePhone = ref()
744
- </script>
745
-
746
- <template>
747
- <!-- Business form -->
748
- <div class="form-container">
749
- <MazInput label="Full Name" placeholder="John Doe" />
750
- <MazInput label="Email" type="email" placeholder="john@example.com" />
751
- <MazInputPhoneNumber
752
- v-model="businessPhone"
753
- v-model:country-code="businessCountry"
754
- label="Business Phone"
755
- :preferred-countries="['US', 'CA', 'GB', 'AU']"
756
- @data="businessResults = $event"
757
- />
758
- <MazBtn color="primary" block>Create Account</MazBtn>
759
- </div>
760
-
761
- <!-- Global support -->
762
- <MazInputPhoneNumber
763
- v-model="globalPhone"
764
- country-locale="es-ES"
765
- show-code-in-list
766
- :translations="{
767
- countrySelect: {
768
- placeholder: 'País',
769
- searchPlaceholder: 'Buscar país...'
770
- },
771
- phoneInput: {
772
- placeholder: 'Número de teléfono'
773
- }
774
- }"
775
- />
776
-
777
- <!-- Mobile-first -->
778
- <MazInputPhoneNumber
779
- v-model="mobilePhone"
780
- orientation="col"
781
- size="lg"
782
- fetch-country
783
- block
784
- />
785
- </template>
786
- ```
787
-
788
- </template>
789
- </ComponentDemo>
790
-
791
- ## Data Handling
792
-
793
- Understanding what data the component provides.
794
-
795
- <ComponentDemo>
796
- <MazInputPhoneNumber
797
- v-model="dataPhone"
798
- v-model:country-code="dataCountry"
799
- top-label="Your phone number"
800
- placeholder="Enter a phone number to see data"
801
- assistive-text="Enter your phone number in international format (e.g. +33612345678)"
802
- @data="phoneData = $event"
803
- />
804
-
805
- <div v-if="phoneData" class="maz:bg-surface-400 maz:pt-8 maz:rounded-md">
806
- <h4 class="maz:font-semibold maz:mb-3">📊 Phone Number Data</h4>
807
- <div class="maz:grid maz:grid-cols-1 maz:md:grid-cols-2 maz:gap-4 maz:text-sm">
808
- <div>
809
- <strong>Valid:</strong> {{ phoneData?.isValid ? '✅' : '❌' }}
810
- </div>
811
- <div>
812
- <strong>Country:</strong> {{ phoneData?.countryCode || 'None' }}
813
- </div>
814
- <div>
815
- <strong>National Format:</strong> {{ phoneData?.formatNational || 'None' }}
816
- </div>
817
- <div>
818
- <strong>International:</strong> {{ phoneData?.formatInternational || 'None' }}
819
- </div>
820
- <div>
821
- <strong>E164 Format:</strong> {{ phoneData?.e164 || 'None' }}
822
- </div>
823
- <div>
824
- <strong>Phone Type:</strong> {{ phoneData?.type || 'Unknown' }}
825
- </div>
826
- </div>
827
- </div>
828
-
829
- <template #code>
830
-
831
- ```vue
832
- <script setup>
833
- import { ref } from 'vue'
834
-
835
- const dataPhone = ref()
836
- const dataCountry = ref()
837
- const phoneData = ref()
838
-
839
- // Handle the data event
840
- function handlePhoneData(results) {
841
- console.log('Phone validation results:', results)
842
- // results contains:
843
- // - isValid: boolean
844
- // - countryCode: string
845
- // - formatNational: string
846
- // - formatInternational: string
847
- // - e164: string
848
- // - type: 'mobile' | 'fixedLine' | etc.
849
- // - and more...
850
- }
851
- </script>
852
-
853
- <template>
854
- <MazInputPhoneNumber
855
- v-model="dataPhone"
856
- v-model:country-code="dataCountry"
857
- @data="handlePhoneData"
858
- />
859
- </template>
860
- ```
861
-
862
- </template>
863
- </ComponentDemo>
864
-
865
- ## Troubleshooting
866
-
867
- Common issues and solutions:
868
-
869
- ### ⚠️ Auto-formatting Issues
870
-
871
- For countries like Anguilla (AI) with multiple valid number lengths, disable auto-formatting:
872
-
873
- ```vue
874
- <MazInputPhoneNumber auto-format="disabled" country-code="AI" />
875
- ```
876
-
877
- ### 🌐 Country Detection Not Working
878
-
879
- Make sure to enable the right detection method:
880
-
881
- ```vue
882
- <!-- Browser locale (default) -->
883
- <MazInputPhoneNumber :use-browser-locale="true" />
884
-
885
- <!-- IP-based detection (requires internet) -->
886
- <MazInputPhoneNumber fetch-country />
887
-
888
- <!-- Manual fallback -->
889
- <MazInputPhoneNumber country-code="US" />
890
- ```
891
-
892
- ## Types
893
-
894
- **Results object emitted by `@data` event:**
895
-
896
- ```ts
897
- interface MazInputPhoneNumberData {
898
- isValid: boolean
899
- isPossible?: boolean
900
- countryCode?: CountryCode
901
- countryCallingCode?: CountryCallingCode
902
- nationalNumber?: NationalNumber
903
- type?: NumberType
904
- formatInternational?: string
905
- formatNational?: string
906
- uri?: string
907
- e164?: string
908
- rfc3966?: string
909
- possibleCountries?: CountryCode[]
910
- phoneNumber?: string
911
- }
912
- ```
913
-
914
- <!--@include: ./../../.vitepress/mixins/maz-input-props.md-->
915
- <!--@include: ./../../.vitepress/generated-docs/maz-input-phone-number.doc.md-->
916
-
917
- <script setup lang="ts">
918
- import { loadCountryFlag } from 'maz-ui/country-flags'
919
- import { ref } from 'vue'
920
-
921
- // Basic usage
922
- const phoneNumber = ref()
923
- const countryCode = ref()
924
- const results = ref()
925
-
926
- // Country management
927
- const phone1 = ref()
928
- const phone2 = ref()
929
- const phone3 = ref()
930
-
931
- // Real-world examples
932
- const businessPhone = ref()
933
- const businessCountry = ref()
934
- const businessResults = ref()
935
- const globalPhone = ref()
936
- const mobilePhone = ref()
937
-
938
- // Data handling
939
- const dataPhone = ref()
940
- const dataCountry = ref()
941
- const phoneData = ref()
942
- </script>