@mieweb/ui 0.2.2 → 0.3.0-dev.60

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 (326) hide show
  1. package/dist/ag-grid.cjs +6 -5
  2. package/dist/ag-grid.cjs.map +1 -1
  3. package/dist/ag-grid.js +2 -1
  4. package/dist/ag-grid.js.map +1 -1
  5. package/dist/brands/index.cjs +20 -20
  6. package/dist/brands/index.js +3 -3
  7. package/dist/brands/types.cjs +4 -4
  8. package/dist/brands/types.d.cts +14 -8
  9. package/dist/brands/types.d.ts +14 -8
  10. package/dist/brands/types.js +1 -1
  11. package/dist/{chunk-B7YGVKTE.cjs → chunk-2YFJ6A5V.cjs} +51 -24
  12. package/dist/chunk-2YFJ6A5V.cjs.map +1 -0
  13. package/dist/{chunk-2J2V4TMJ.cjs → chunk-35J4B3ZK.cjs} +41 -31
  14. package/dist/chunk-35J4B3ZK.cjs.map +1 -0
  15. package/dist/{chunk-B5364UWR.cjs → chunk-3DBRHYTN.cjs} +2 -2
  16. package/dist/{chunk-B5364UWR.cjs.map → chunk-3DBRHYTN.cjs.map} +1 -1
  17. package/dist/{chunk-JFAXLE2J.js → chunk-3DM6LMZG.js} +7 -4
  18. package/dist/chunk-3DM6LMZG.js.map +1 -0
  19. package/dist/{chunk-N3QTYHRZ.cjs → chunk-3GGET5LK.cjs} +40 -22
  20. package/dist/chunk-3GGET5LK.cjs.map +1 -0
  21. package/dist/{chunk-VV4N4WY6.cjs → chunk-3XK5GENF.cjs} +61 -35
  22. package/dist/chunk-3XK5GENF.cjs.map +1 -0
  23. package/dist/{chunk-OW2BWGST.js → chunk-4ASPCSWT.js} +48 -31
  24. package/dist/chunk-4ASPCSWT.js.map +1 -0
  25. package/dist/{chunk-EKIQE524.cjs → chunk-4FALCEJI.cjs} +3 -2
  26. package/dist/chunk-4FALCEJI.cjs.map +1 -0
  27. package/dist/{chunk-6OCIIIAI.js → chunk-4Z6ZZKIY.js} +40 -22
  28. package/dist/chunk-4Z6ZZKIY.js.map +1 -0
  29. package/dist/{chunk-QUA7WVHK.cjs → chunk-4ZU53GNR.cjs} +6 -14
  30. package/dist/{chunk-QUA7WVHK.cjs.map → chunk-4ZU53GNR.cjs.map} +1 -1
  31. package/dist/{chunk-6Q4SU72T.js → chunk-5NSURWMM.js} +49 -10
  32. package/dist/chunk-5NSURWMM.js.map +1 -0
  33. package/dist/{chunk-4MHTSFPX.js → chunk-6EN6ZIW3.js} +43 -18
  34. package/dist/chunk-6EN6ZIW3.js.map +1 -0
  35. package/dist/chunk-7CLHYU4Q.cjs +270 -0
  36. package/dist/chunk-7CLHYU4Q.cjs.map +1 -0
  37. package/dist/{chunk-RYQ5NEKH.js → chunk-7MX7MGSA.js} +2 -2
  38. package/dist/{chunk-RYQ5NEKH.js.map → chunk-7MX7MGSA.js.map} +1 -1
  39. package/dist/chunk-7XWPUWSL.js +328 -0
  40. package/dist/chunk-7XWPUWSL.js.map +1 -0
  41. package/dist/{chunk-PEH4ZOEM.cjs → chunk-A2QVQF54.cjs} +12 -6
  42. package/dist/chunk-A2QVQF54.cjs.map +1 -0
  43. package/dist/{chunk-4AWW5WPF.js → chunk-ATALZYST.js} +51 -24
  44. package/dist/chunk-ATALZYST.js.map +1 -0
  45. package/dist/{chunk-HRA4FUO6.cjs → chunk-AUXHRAID.cjs} +71 -44
  46. package/dist/chunk-AUXHRAID.cjs.map +1 -0
  47. package/dist/{chunk-I7L6CQXR.cjs → chunk-AWUADXYI.cjs} +58 -31
  48. package/dist/chunk-AWUADXYI.cjs.map +1 -0
  49. package/dist/chunk-B43FRU5R.js +247 -0
  50. package/dist/chunk-B43FRU5R.js.map +1 -0
  51. package/dist/{chunk-XXOBTAKA.js → chunk-BBQZNIB4.js} +71 -44
  52. package/dist/chunk-BBQZNIB4.js.map +1 -0
  53. package/dist/{chunk-PEFJAWNR.cjs → chunk-BWYYA3LQ.cjs} +26 -10
  54. package/dist/chunk-BWYYA3LQ.cjs.map +1 -0
  55. package/dist/{chunk-WH6I7CMP.cjs → chunk-CW75IKA6.cjs} +27 -2
  56. package/dist/chunk-CW75IKA6.cjs.map +1 -0
  57. package/dist/{chunk-QSMMFATL.js → chunk-DCDXOT3A.js} +178 -127
  58. package/dist/chunk-DCDXOT3A.js.map +1 -0
  59. package/dist/{chunk-3NJ72QU6.js → chunk-DCER2QQB.js} +3 -2
  60. package/dist/chunk-DCER2QQB.js.map +1 -0
  61. package/dist/{chunk-AWIULTJW.js → chunk-DNPRRYPQ.js} +18 -3
  62. package/dist/chunk-DNPRRYPQ.js.map +1 -0
  63. package/dist/{chunk-NAATBUHR.cjs → chunk-EMMQPDOY.cjs} +43 -18
  64. package/dist/chunk-EMMQPDOY.cjs.map +1 -0
  65. package/dist/{chunk-GHRQ3ZJH.js → chunk-EUHPVNWD.js} +51 -12
  66. package/dist/chunk-EUHPVNWD.js.map +1 -0
  67. package/dist/{chunk-UZUBLXVC.js → chunk-FZJBFJJR.js} +3 -2
  68. package/dist/chunk-FZJBFJJR.js.map +1 -0
  69. package/dist/{chunk-SSKI6VTW.cjs → chunk-G7ZHQA4O.cjs} +2 -2
  70. package/dist/chunk-G7ZHQA4O.cjs.map +1 -0
  71. package/dist/{chunk-B3L43JGH.js → chunk-HEH3QXOQ.js} +26 -10
  72. package/dist/chunk-HEH3QXOQ.js.map +1 -0
  73. package/dist/{chunk-TA6FVVCM.js → chunk-I56VBDSC.js} +3 -3
  74. package/dist/{chunk-TA6FVVCM.js.map → chunk-I56VBDSC.js.map} +1 -1
  75. package/dist/{chunk-SWMRCGL4.cjs → chunk-IKMR2ADM.cjs} +5 -4
  76. package/dist/chunk-IKMR2ADM.cjs.map +1 -0
  77. package/dist/{chunk-53K3KWXQ.cjs → chunk-IMNLYVXJ.cjs} +166 -136
  78. package/dist/chunk-IMNLYVXJ.cjs.map +1 -0
  79. package/dist/{chunk-FFJVCQ5R.cjs → chunk-J644FU54.cjs} +49 -19
  80. package/dist/chunk-J644FU54.cjs.map +1 -0
  81. package/dist/{chunk-KWDTTGH2.js → chunk-JDI45GEY.js} +4 -4
  82. package/dist/{chunk-KWDTTGH2.js.map → chunk-JDI45GEY.js.map} +1 -1
  83. package/dist/{chunk-EF46XW4Z.cjs → chunk-JE4AH2TZ.cjs} +160 -66
  84. package/dist/chunk-JE4AH2TZ.cjs.map +1 -0
  85. package/dist/{chunk-VDMQCSXT.cjs → chunk-JHPFOG2N.cjs} +4 -4
  86. package/dist/{chunk-VDMQCSXT.cjs.map → chunk-JHPFOG2N.cjs.map} +1 -1
  87. package/dist/{chunk-5T3AWNHG.cjs → chunk-K7IGBNZA.cjs} +70 -39
  88. package/dist/chunk-K7IGBNZA.cjs.map +1 -0
  89. package/dist/chunk-LEMY57MI.js +3 -0
  90. package/dist/{chunk-Y22SOAJM.js.map → chunk-LEMY57MI.js.map} +1 -1
  91. package/dist/{chunk-EYH7OUX5.js → chunk-LUVSO5LK.js} +2 -2
  92. package/dist/chunk-LUVSO5LK.js.map +1 -0
  93. package/dist/chunk-LXHPW2ZF.cjs +353 -0
  94. package/dist/chunk-LXHPW2ZF.cjs.map +1 -0
  95. package/dist/chunk-MOULJE34.js +334 -0
  96. package/dist/chunk-MOULJE34.js.map +1 -0
  97. package/dist/{chunk-B26RIQ5R.js → chunk-MV3MTHWQ.js} +6 -2
  98. package/dist/chunk-MV3MTHWQ.js.map +1 -0
  99. package/dist/{chunk-AU5ADTYD.cjs → chunk-ND75VHB7.cjs} +49 -10
  100. package/dist/chunk-ND75VHB7.cjs.map +1 -0
  101. package/dist/{chunk-GV5JQBPX.js → chunk-NDHW3ZRF.js} +8 -4
  102. package/dist/chunk-NDHW3ZRF.js.map +1 -0
  103. package/dist/{chunk-QL2YTVTR.js → chunk-O43QBXRX.js} +7 -2
  104. package/dist/chunk-O43QBXRX.js.map +1 -0
  105. package/dist/{chunk-4T2ZNPTC.js → chunk-OJ64Q3A5.js} +104 -62
  106. package/dist/chunk-OJ64Q3A5.js.map +1 -0
  107. package/dist/{chunk-OT36EMM5.js → chunk-OKBR6PX4.js} +5 -4
  108. package/dist/chunk-OKBR6PX4.js.map +1 -0
  109. package/dist/{chunk-LZEY55QZ.cjs → chunk-OYKS2JBB.cjs} +18 -3
  110. package/dist/chunk-OYKS2JBB.cjs.map +1 -0
  111. package/dist/{chunk-ORUPC5TV.cjs → chunk-PLIK3DN6.cjs} +7 -4
  112. package/dist/chunk-PLIK3DN6.cjs.map +1 -0
  113. package/dist/{chunk-PF3XWKE5.cjs → chunk-QEAIFTUL.cjs} +26 -9
  114. package/dist/chunk-QEAIFTUL.cjs.map +1 -0
  115. package/dist/chunk-QMQE4PDD.cjs +615 -0
  116. package/dist/chunk-QMQE4PDD.cjs.map +1 -0
  117. package/dist/{chunk-XVZ4SLQB.js → chunk-QVJBUWJQ.js} +70 -39
  118. package/dist/chunk-QVJBUWJQ.js.map +1 -0
  119. package/dist/{chunk-XHJGYBYG.cjs → chunk-QXJMKJJV.cjs} +48 -31
  120. package/dist/chunk-QXJMKJJV.cjs.map +1 -0
  121. package/dist/{chunk-TPGT236K.js → chunk-RC2YMOMS.js} +26 -3
  122. package/dist/chunk-RC2YMOMS.js.map +1 -0
  123. package/dist/{chunk-BXK5TNJE.cjs → chunk-RH43XBNV.cjs} +3 -2
  124. package/dist/chunk-RH43XBNV.cjs.map +1 -0
  125. package/dist/{chunk-NIHESA7O.js → chunk-T4AO7KYK.js} +41 -31
  126. package/dist/chunk-T4AO7KYK.js.map +1 -0
  127. package/dist/chunk-TF5OZDFU.js +588 -0
  128. package/dist/chunk-TF5OZDFU.js.map +1 -0
  129. package/dist/{chunk-BV75DAKO.cjs → chunk-TSZRR2ZK.cjs} +104 -62
  130. package/dist/chunk-TSZRR2ZK.cjs.map +1 -0
  131. package/dist/{chunk-ONWOB76P.js → chunk-V2O636JO.js} +26 -9
  132. package/dist/chunk-V2O636JO.js.map +1 -0
  133. package/dist/{chunk-G2DOD34H.js → chunk-VKTQQOUH.js} +82 -36
  134. package/dist/chunk-VKTQQOUH.js.map +1 -0
  135. package/dist/{chunk-RRQGH7C5.cjs → chunk-VQW36LLX.cjs} +7 -2
  136. package/dist/chunk-VQW36LLX.cjs.map +1 -0
  137. package/dist/{chunk-IY7UQPDO.cjs → chunk-WGPMTW36.cjs} +6 -2
  138. package/dist/chunk-WGPMTW36.cjs.map +1 -0
  139. package/dist/{chunk-SOFX4T7M.js → chunk-WOYUQ4AT.js} +49 -19
  140. package/dist/chunk-WOYUQ4AT.js.map +1 -0
  141. package/dist/{chunk-SD44QJIP.js → chunk-WTDCNXZO.js} +58 -31
  142. package/dist/chunk-WTDCNXZO.js.map +1 -0
  143. package/dist/chunk-XHESCAUE.js +124 -0
  144. package/dist/chunk-XHESCAUE.js.map +1 -0
  145. package/dist/{chunk-QZLRB3UG.js → chunk-YN3ZIUYC.js} +166 -136
  146. package/dist/chunk-YN3ZIUYC.js.map +1 -0
  147. package/dist/{chunk-VZUVYJFU.cjs → chunk-YR365F2H.cjs} +16 -16
  148. package/dist/{chunk-VZUVYJFU.cjs.map → chunk-YR365F2H.cjs.map} +1 -1
  149. package/dist/{chunk-5UUL5EEO.cjs → chunk-Z2ABQA5Z.cjs} +178 -127
  150. package/dist/chunk-Z2ABQA5Z.cjs.map +1 -0
  151. package/dist/{chunk-JYMQJ32S.cjs → chunk-Z4HZ35KX.cjs} +8 -4
  152. package/dist/chunk-Z4HZ35KX.cjs.map +1 -0
  153. package/dist/{chunk-INFSKLXE.cjs → chunk-ZAHQU7PQ.cjs} +51 -12
  154. package/dist/chunk-ZAHQU7PQ.cjs.map +1 -0
  155. package/dist/{chunk-QYJ7RQJ2.cjs → chunk-ZGSPFVGL.cjs} +82 -36
  156. package/dist/chunk-ZGSPFVGL.cjs.map +1 -0
  157. package/dist/{chunk-VBHPXSCV.js → chunk-ZVSW2KS6.js} +12 -6
  158. package/dist/chunk-ZVSW2KS6.js.map +1 -0
  159. package/dist/components/Alert/index.cjs +5 -5
  160. package/dist/components/Alert/index.js +1 -1
  161. package/dist/components/AudioPlayer/index.cjs +6 -6
  162. package/dist/components/AudioPlayer/index.js +1 -1
  163. package/dist/components/AudioRecorder/index.cjs +6 -6
  164. package/dist/components/AudioRecorder/index.js +1 -1
  165. package/dist/components/Avatar/index.cjs +5 -5
  166. package/dist/components/Avatar/index.js +1 -1
  167. package/dist/components/Badge/index.cjs +3 -3
  168. package/dist/components/Badge/index.js +1 -1
  169. package/dist/components/Breadcrumb/index.cjs +3 -3
  170. package/dist/components/Breadcrumb/index.js +1 -1
  171. package/dist/components/Button/index.cjs +3 -3
  172. package/dist/components/Button/index.js +1 -1
  173. package/dist/components/Card/index.cjs +15 -15
  174. package/dist/components/Card/index.js +1 -1
  175. package/dist/components/Checkbox/index.cjs +4 -4
  176. package/dist/components/Checkbox/index.js +1 -1
  177. package/dist/components/CountryCodeDropdown/index.cjs +23 -0
  178. package/dist/components/CountryCodeDropdown/index.cjs.map +1 -0
  179. package/dist/components/CountryCodeDropdown/index.d.cts +69 -0
  180. package/dist/components/CountryCodeDropdown/index.d.ts +69 -0
  181. package/dist/components/CountryCodeDropdown/index.js +6 -0
  182. package/dist/components/CountryCodeDropdown/index.js.map +1 -0
  183. package/dist/components/DateInput/index.cjs +4 -4
  184. package/dist/components/DateInput/index.js +3 -3
  185. package/dist/components/Dropdown/index.cjs +9 -8
  186. package/dist/components/Dropdown/index.d.cts +29 -1
  187. package/dist/components/Dropdown/index.d.ts +29 -1
  188. package/dist/components/Dropdown/index.js +3 -2
  189. package/dist/components/Input/index.cjs +3 -3
  190. package/dist/components/Input/index.js +1 -1
  191. package/dist/components/Modal/index.cjs +9 -9
  192. package/dist/components/Modal/index.js +1 -1
  193. package/dist/components/Pagination/index.cjs +4 -4
  194. package/dist/components/Pagination/index.js +1 -1
  195. package/dist/components/PhoneInput/index.cjs +4 -4
  196. package/dist/components/PhoneInput/index.js +2 -2
  197. package/dist/components/Progress/index.cjs +6 -6
  198. package/dist/components/Progress/index.js +1 -1
  199. package/dist/components/QuickAction/index.cjs +6 -6
  200. package/dist/components/QuickAction/index.js +1 -1
  201. package/dist/components/Radio/index.cjs +4 -4
  202. package/dist/components/Radio/index.js +1 -1
  203. package/dist/components/RecordButton/index.cjs +4 -4
  204. package/dist/components/RecordButton/index.js +1 -1
  205. package/dist/components/SchedulePicker/index.cjs +10 -10
  206. package/dist/components/SchedulePicker/index.js +1 -1
  207. package/dist/components/Select/index.cjs +3 -3
  208. package/dist/components/Select/index.js +1 -1
  209. package/dist/components/Skeleton/index.cjs +6 -6
  210. package/dist/components/Skeleton/index.d.cts +1 -1
  211. package/dist/components/Skeleton/index.d.ts +1 -1
  212. package/dist/components/Skeleton/index.js +1 -1
  213. package/dist/components/Slider/index.cjs +5 -5
  214. package/dist/components/Slider/index.js +1 -1
  215. package/dist/components/Spinner/index.cjs +5 -5
  216. package/dist/components/Spinner/index.js +1 -1
  217. package/dist/components/Switch/index.cjs +4 -4
  218. package/dist/components/Switch/index.js +1 -1
  219. package/dist/components/Table/index.cjs +9 -9
  220. package/dist/components/Table/index.js +1 -1
  221. package/dist/components/Tabs/index.cjs +7 -7
  222. package/dist/components/Tabs/index.js +1 -1
  223. package/dist/components/Textarea/index.cjs +3 -3
  224. package/dist/components/Textarea/index.js +1 -1
  225. package/dist/components/ThemeProvider/index.cjs +8 -8
  226. package/dist/components/ThemeProvider/index.js +2 -2
  227. package/dist/components/Tooltip/index.cjs +2 -2
  228. package/dist/components/Tooltip/index.js +1 -1
  229. package/dist/datavis.cjs +251 -0
  230. package/dist/datavis.cjs.map +1 -0
  231. package/dist/datavis.d.cts +47 -0
  232. package/dist/datavis.d.ts +47 -0
  233. package/dist/datavis.js +247 -0
  234. package/dist/datavis.js.map +1 -0
  235. package/dist/hooks/index.cjs +2 -2
  236. package/dist/hooks/index.d.cts +2 -2
  237. package/dist/hooks/index.d.ts +2 -2
  238. package/dist/hooks/index.js +1 -1
  239. package/dist/index.cjs +12815 -8821
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.d.cts +43 -49
  242. package/dist/index.d.ts +43 -49
  243. package/dist/index.js +12183 -8208
  244. package/dist/index.js.map +1 -1
  245. package/dist/styles/init.css +326 -0
  246. package/dist/styles.css +1 -1
  247. package/dist/tailwind-preset.cjs +4 -4
  248. package/dist/tailwind-preset.d.cts +13 -2
  249. package/dist/tailwind-preset.d.ts +13 -2
  250. package/dist/tailwind-preset.js +1 -1
  251. package/dist/utils/index.cjs +30 -22
  252. package/dist/utils/index.d.cts +12 -1
  253. package/dist/utils/index.d.ts +12 -1
  254. package/dist/utils/index.js +1 -1
  255. package/package.json +24 -3
  256. package/dist/chunk-265CFCCX.js +0 -173
  257. package/dist/chunk-265CFCCX.js.map +0 -1
  258. package/dist/chunk-2J2V4TMJ.cjs.map +0 -1
  259. package/dist/chunk-3NJ72QU6.js.map +0 -1
  260. package/dist/chunk-4AWW5WPF.js.map +0 -1
  261. package/dist/chunk-4MHTSFPX.js.map +0 -1
  262. package/dist/chunk-4T2ZNPTC.js.map +0 -1
  263. package/dist/chunk-4YRAEFYW.js +0 -233
  264. package/dist/chunk-4YRAEFYW.js.map +0 -1
  265. package/dist/chunk-53K3KWXQ.cjs.map +0 -1
  266. package/dist/chunk-5T3AWNHG.cjs.map +0 -1
  267. package/dist/chunk-5UUL5EEO.cjs.map +0 -1
  268. package/dist/chunk-6OCIIIAI.js.map +0 -1
  269. package/dist/chunk-6Q4SU72T.js.map +0 -1
  270. package/dist/chunk-AU5ADTYD.cjs.map +0 -1
  271. package/dist/chunk-AWIULTJW.js.map +0 -1
  272. package/dist/chunk-B26RIQ5R.js.map +0 -1
  273. package/dist/chunk-B3L43JGH.js.map +0 -1
  274. package/dist/chunk-B7YGVKTE.cjs.map +0 -1
  275. package/dist/chunk-BV75DAKO.cjs.map +0 -1
  276. package/dist/chunk-BXK5TNJE.cjs.map +0 -1
  277. package/dist/chunk-CQCYXHCU.cjs +0 -256
  278. package/dist/chunk-CQCYXHCU.cjs.map +0 -1
  279. package/dist/chunk-DMA74PZ7.js +0 -240
  280. package/dist/chunk-DMA74PZ7.js.map +0 -1
  281. package/dist/chunk-EF46XW4Z.cjs.map +0 -1
  282. package/dist/chunk-EKIQE524.cjs.map +0 -1
  283. package/dist/chunk-EYH7OUX5.js.map +0 -1
  284. package/dist/chunk-FFJVCQ5R.cjs.map +0 -1
  285. package/dist/chunk-FIXAVBUA.cjs +0 -200
  286. package/dist/chunk-FIXAVBUA.cjs.map +0 -1
  287. package/dist/chunk-G2DOD34H.js.map +0 -1
  288. package/dist/chunk-GHRQ3ZJH.js.map +0 -1
  289. package/dist/chunk-GV5JQBPX.js.map +0 -1
  290. package/dist/chunk-HRA4FUO6.cjs.map +0 -1
  291. package/dist/chunk-I7L6CQXR.cjs.map +0 -1
  292. package/dist/chunk-INFSKLXE.cjs.map +0 -1
  293. package/dist/chunk-IY7UQPDO.cjs.map +0 -1
  294. package/dist/chunk-JFAXLE2J.js.map +0 -1
  295. package/dist/chunk-JYMQJ32S.cjs.map +0 -1
  296. package/dist/chunk-LZEY55QZ.cjs.map +0 -1
  297. package/dist/chunk-N3QTYHRZ.cjs.map +0 -1
  298. package/dist/chunk-NAATBUHR.cjs.map +0 -1
  299. package/dist/chunk-NIHESA7O.js.map +0 -1
  300. package/dist/chunk-NXRLGHEC.js +0 -98
  301. package/dist/chunk-NXRLGHEC.js.map +0 -1
  302. package/dist/chunk-ONWOB76P.js.map +0 -1
  303. package/dist/chunk-ORUPC5TV.cjs.map +0 -1
  304. package/dist/chunk-OT36EMM5.js.map +0 -1
  305. package/dist/chunk-OW2BWGST.js.map +0 -1
  306. package/dist/chunk-PEFJAWNR.cjs.map +0 -1
  307. package/dist/chunk-PEH4ZOEM.cjs.map +0 -1
  308. package/dist/chunk-PF3XWKE5.cjs.map +0 -1
  309. package/dist/chunk-QL2YTVTR.js.map +0 -1
  310. package/dist/chunk-QSMMFATL.js.map +0 -1
  311. package/dist/chunk-QYJ7RQJ2.cjs.map +0 -1
  312. package/dist/chunk-QZLRB3UG.js.map +0 -1
  313. package/dist/chunk-RRQGH7C5.cjs.map +0 -1
  314. package/dist/chunk-SD44QJIP.js.map +0 -1
  315. package/dist/chunk-SOFX4T7M.js.map +0 -1
  316. package/dist/chunk-SSKI6VTW.cjs.map +0 -1
  317. package/dist/chunk-SWMRCGL4.cjs.map +0 -1
  318. package/dist/chunk-TPGT236K.js.map +0 -1
  319. package/dist/chunk-UZUBLXVC.js.map +0 -1
  320. package/dist/chunk-VBHPXSCV.js.map +0 -1
  321. package/dist/chunk-VV4N4WY6.cjs.map +0 -1
  322. package/dist/chunk-WH6I7CMP.cjs.map +0 -1
  323. package/dist/chunk-XHJGYBYG.cjs.map +0 -1
  324. package/dist/chunk-XVZ4SLQB.js.map +0 -1
  325. package/dist/chunk-XXOBTAKA.js.map +0 -1
  326. package/dist/chunk-Y22SOAJM.js +0 -3
@@ -0,0 +1,270 @@
1
+ 'use strict';
2
+
3
+ var chunk3XK5GENF_cjs = require('./chunk-3XK5GENF.cjs');
4
+ var chunkBTJHYGPI_cjs = require('./chunk-BTJHYGPI.cjs');
5
+ var chunkOR5DRJCW_cjs = require('./chunk-OR5DRJCW.cjs');
6
+ var React = require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
29
+ var PhoneInput = React__namespace.forwardRef(
30
+ ({
31
+ value = "",
32
+ onChange,
33
+ onFormattedChange,
34
+ validateOnBlur,
35
+ className,
36
+ onBlur,
37
+ hasError,
38
+ error,
39
+ ...props
40
+ }, ref) => {
41
+ const [displayValue, setDisplayValue] = React__namespace.useState(
42
+ () => chunkBTJHYGPI_cjs.formatPhoneNumber(value)
43
+ );
44
+ const [localError, setLocalError] = React__namespace.useState();
45
+ React__namespace.useEffect(() => {
46
+ setDisplayValue(chunkBTJHYGPI_cjs.formatPhoneNumber(value));
47
+ }, [value]);
48
+ const handleChange = (e) => {
49
+ const formatted = chunkBTJHYGPI_cjs.formatPhoneNumber(e.target.value);
50
+ setDisplayValue(formatted);
51
+ const unformatted = chunkBTJHYGPI_cjs.unformatPhoneNumber(formatted);
52
+ onChange?.(unformatted);
53
+ onFormattedChange?.(formatted);
54
+ if (localError) {
55
+ setLocalError(void 0);
56
+ }
57
+ };
58
+ const handleBlur = (e) => {
59
+ onBlur?.(e);
60
+ if (validateOnBlur) {
61
+ const unformatted = chunkBTJHYGPI_cjs.unformatPhoneNumber(displayValue);
62
+ if (unformatted.length > 0 && !chunkBTJHYGPI_cjs.isValidPhoneNumber(displayValue)) {
63
+ setLocalError("Please enter a valid 10-digit phone number");
64
+ } else {
65
+ setLocalError(void 0);
66
+ }
67
+ }
68
+ };
69
+ return /* @__PURE__ */ jsxRuntime.jsx(
70
+ chunk3XK5GENF_cjs.Input,
71
+ {
72
+ ref,
73
+ type: "tel",
74
+ inputMode: "numeric",
75
+ autoComplete: "tel-national",
76
+ placeholder: "(555) 555-5555",
77
+ value: displayValue,
78
+ onChange: handleChange,
79
+ onBlur: handleBlur,
80
+ hasError: hasError || !!localError,
81
+ error: error || localError,
82
+ className: chunkOR5DRJCW_cjs.cn(className),
83
+ ...props
84
+ }
85
+ );
86
+ }
87
+ );
88
+ PhoneInput.displayName = "PhoneInput";
89
+ var PHONE_TYPES = [
90
+ { value: "cell", label: "Cell" },
91
+ { value: "landline", label: "Landline" },
92
+ { value: "home", label: "Home" },
93
+ { value: "work", label: "Work" },
94
+ { value: "fax", label: "Fax" }
95
+ ];
96
+ function PhoneInputGroup({
97
+ value,
98
+ onChange,
99
+ minEntries = 1,
100
+ maxEntries = 5,
101
+ required = false,
102
+ disabled = false,
103
+ validateOnBlur = false,
104
+ label,
105
+ typeLabels,
106
+ className
107
+ }) {
108
+ const phones = React__namespace.useMemo(() => {
109
+ if (value.length >= minEntries) return value;
110
+ const padding = Array(minEntries - value.length).fill(null).map(() => ({ number: "", type: "cell" }));
111
+ return [...value, ...padding];
112
+ }, [value, minEntries]);
113
+ const handlePhoneChange = (index, number) => {
114
+ const updated = [...phones];
115
+ updated[index] = { ...updated[index], number };
116
+ onChange(updated);
117
+ };
118
+ const handleTypeChange = (index, type) => {
119
+ const updated = [...phones];
120
+ updated[index] = { ...updated[index], type };
121
+ onChange(updated);
122
+ };
123
+ const handleAdd = () => {
124
+ if (phones.length < maxEntries) {
125
+ onChange([...phones, { number: "", type: "cell" }]);
126
+ }
127
+ };
128
+ const handleRemove = (index) => {
129
+ if (phones.length > minEntries) {
130
+ onChange(phones.filter((_, i) => i !== index));
131
+ }
132
+ };
133
+ const getTypeLabel = (type) => {
134
+ if (typeLabels?.[type]) return typeLabels[type];
135
+ return PHONE_TYPES.find((t) => t.value === type)?.label || type;
136
+ };
137
+ const canAdd = phones.length < maxEntries;
138
+ const canRemove = phones.length > minEntries;
139
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "phone-group", className: chunkOR5DRJCW_cjs.cn("space-y-3", className), children: phones.map((phone, index) => /* @__PURE__ */ jsxRuntime.jsxs(
140
+ "div",
141
+ {
142
+ "data-slot": "phone-row",
143
+ className: "flex items-start gap-2",
144
+ children: [
145
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
146
+ PhoneInput,
147
+ {
148
+ label: index === 0 ? label : void 0,
149
+ value: phone.number,
150
+ onChange: (num) => handlePhoneChange(index, num),
151
+ disabled,
152
+ validateOnBlur,
153
+ required: required && index === 0
154
+ }
155
+ ) }),
156
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-24 shrink-0 sm:w-32", children: [
157
+ /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: `phone-type-${index}`, className: "sr-only", children: "Phone type" }),
158
+ /* @__PURE__ */ jsxRuntime.jsx(
159
+ "select",
160
+ {
161
+ id: `phone-type-${index}`,
162
+ "data-slot": "phone-type-select",
163
+ value: phone.type,
164
+ onChange: (e) => handleTypeChange(index, e.target.value),
165
+ disabled,
166
+ className: chunkOR5DRJCW_cjs.cn(
167
+ "h-10 w-full rounded-md border px-3 py-2 text-sm",
168
+ "border-gray-300 bg-white text-gray-900",
169
+ "focus:border-brand-500 focus:ring-brand-500/20 focus:ring-2 focus:outline-none",
170
+ "disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500",
171
+ "dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100",
172
+ "dark:focus:border-brand-400 dark:focus:ring-brand-400/20",
173
+ index === 0 && label ? "mt-[26px]" : ""
174
+ ),
175
+ children: PHONE_TYPES.map((type) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: type.value, children: getTypeLabel(type.value) }, type.value))
176
+ }
177
+ )
178
+ ] }),
179
+ /* @__PURE__ */ jsxRuntime.jsx(
180
+ "div",
181
+ {
182
+ "data-slot": "phone-action",
183
+ className: chunkOR5DRJCW_cjs.cn(
184
+ "flex shrink-0 items-center",
185
+ index === 0 && label ? "mt-[26px]" : ""
186
+ ),
187
+ children: index === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
188
+ "button",
189
+ {
190
+ type: "button",
191
+ "data-slot": "phone-add-btn",
192
+ onClick: handleAdd,
193
+ disabled: disabled || !canAdd,
194
+ className: chunkOR5DRJCW_cjs.cn(
195
+ "rounded-full p-2 transition-colors",
196
+ "text-brand-600 hover:bg-brand-50",
197
+ "disabled:cursor-not-allowed disabled:text-gray-300 disabled:hover:bg-transparent",
198
+ "dark:text-brand-400 dark:hover:bg-brand-900/20",
199
+ "dark:disabled:text-gray-600"
200
+ ),
201
+ "aria-label": "Add phone number",
202
+ children: /* @__PURE__ */ jsxRuntime.jsx(
203
+ "svg",
204
+ {
205
+ "data-slot": "phone-add-icon",
206
+ className: "h-5 w-5",
207
+ fill: "none",
208
+ viewBox: "0 0 24 24",
209
+ stroke: "currentColor",
210
+ children: /* @__PURE__ */ jsxRuntime.jsx(
211
+ "path",
212
+ {
213
+ strokeLinecap: "round",
214
+ strokeLinejoin: "round",
215
+ strokeWidth: 2,
216
+ d: "M12 4v16m8-8H4"
217
+ }
218
+ )
219
+ }
220
+ )
221
+ }
222
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
223
+ "button",
224
+ {
225
+ type: "button",
226
+ "data-slot": "phone-remove-btn",
227
+ onClick: () => handleRemove(index),
228
+ disabled: disabled || !canRemove,
229
+ className: chunkOR5DRJCW_cjs.cn(
230
+ "rounded-full p-2 transition-colors",
231
+ "text-red-600 hover:bg-red-50",
232
+ "disabled:cursor-not-allowed disabled:text-gray-300 disabled:hover:bg-transparent",
233
+ "dark:text-red-400 dark:hover:bg-red-900/20",
234
+ "dark:disabled:text-gray-600"
235
+ ),
236
+ "aria-label": "Remove phone number",
237
+ children: /* @__PURE__ */ jsxRuntime.jsx(
238
+ "svg",
239
+ {
240
+ "data-slot": "phone-remove-icon",
241
+ className: "h-5 w-5",
242
+ fill: "none",
243
+ viewBox: "0 0 24 24",
244
+ stroke: "currentColor",
245
+ children: /* @__PURE__ */ jsxRuntime.jsx(
246
+ "path",
247
+ {
248
+ strokeLinecap: "round",
249
+ strokeLinejoin: "round",
250
+ strokeWidth: 2,
251
+ d: "M20 12H4"
252
+ }
253
+ )
254
+ }
255
+ )
256
+ }
257
+ )
258
+ }
259
+ )
260
+ ]
261
+ },
262
+ index
263
+ )) });
264
+ }
265
+ PhoneInputGroup.displayName = "PhoneInputGroup";
266
+
267
+ exports.PhoneInput = PhoneInput;
268
+ exports.PhoneInputGroup = PhoneInputGroup;
269
+ //# sourceMappingURL=chunk-7CLHYU4Q.cjs.map
270
+ //# sourceMappingURL=chunk-7CLHYU4Q.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/PhoneInput/PhoneInput.tsx"],"names":["React","formatPhoneNumber","unformatPhoneNumber","isValidPhoneNumber","jsx","Input","cn","jsxs"],"mappings":"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","file":"chunk-7CLHYU4Q.cjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n formatPhoneNumber,\n unformatPhoneNumber,\n isValidPhoneNumber,\n} from '../../utils/phone';\nimport { Input, type InputProps } from '../Input';\n\nexport interface PhoneInputProps extends Omit<\n InputProps,\n 'type' | 'onChange' | 'value'\n> {\n /** The phone number value (can be formatted or unformatted) */\n value?: string;\n /** Callback fired when the value changes, receives the unformatted value */\n onChange?: (value: string) => void;\n /** Callback fired when the formatted value changes */\n onFormattedChange?: (formattedValue: string) => void;\n /** Whether to validate and show error state for incomplete phone numbers */\n validateOnBlur?: boolean;\n}\n\n/**\n * A phone number input that automatically formats to US format: (XXX) XXX-XXXX\n *\n * @example\n * ```tsx\n * const [phone, setPhone] = useState('');\n * <PhoneInput\n * label=\"Phone Number\"\n * value={phone}\n * onChange={setPhone}\n * validateOnBlur\n * />\n * ```\n */\nconst PhoneInput = React.forwardRef<HTMLInputElement, PhoneInputProps>(\n (\n {\n value = '',\n onChange,\n onFormattedChange,\n validateOnBlur,\n className,\n onBlur,\n hasError,\n error,\n ...props\n },\n ref\n ) => {\n const [displayValue, setDisplayValue] = React.useState(() =>\n formatPhoneNumber(value)\n );\n const [localError, setLocalError] = React.useState<string | undefined>();\n\n // Sync external value changes\n React.useEffect(() => {\n setDisplayValue(formatPhoneNumber(value));\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const formatted = formatPhoneNumber(e.target.value);\n setDisplayValue(formatted);\n\n const unformatted = unformatPhoneNumber(formatted);\n onChange?.(unformatted);\n onFormattedChange?.(formatted);\n\n // Clear error when user starts typing again\n if (localError) {\n setLocalError(undefined);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n\n if (validateOnBlur) {\n const unformatted = unformatPhoneNumber(displayValue);\n if (unformatted.length > 0 && !isValidPhoneNumber(displayValue)) {\n setLocalError('Please enter a valid 10-digit phone number');\n } else {\n setLocalError(undefined);\n }\n }\n };\n\n return (\n <Input\n ref={ref}\n type=\"tel\"\n inputMode=\"numeric\"\n autoComplete=\"tel-national\"\n placeholder=\"(555) 555-5555\"\n value={displayValue}\n onChange={handleChange}\n onBlur={handleBlur}\n hasError={hasError || !!localError}\n error={error || localError}\n className={cn(className)}\n {...props}\n />\n );\n }\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\n// =============================================================================\n// Phone Types\n// =============================================================================\n\nexport type PhoneType = 'cell' | 'landline' | 'home' | 'work' | 'fax';\n\nexport interface PhoneEntry {\n number: string;\n type: PhoneType;\n}\n\nconst PHONE_TYPES: { value: PhoneType; label: string }[] = [\n { value: 'cell', label: 'Cell' },\n { value: 'landline', label: 'Landline' },\n { value: 'home', label: 'Home' },\n { value: 'work', label: 'Work' },\n { value: 'fax', label: 'Fax' },\n];\n\n// =============================================================================\n// PhoneInputGroup\n// =============================================================================\n\nexport interface PhoneInputGroupProps {\n /** Array of phone entries */\n value: PhoneEntry[];\n /** Callback when phone entries change */\n onChange: (phones: PhoneEntry[]) => void;\n /** Minimum number of phone entries (default: 1) */\n minEntries?: number;\n /** Maximum number of phone entries (default: 5) */\n maxEntries?: number;\n /** Whether the first entry is required */\n required?: boolean;\n /** Whether all inputs are disabled */\n disabled?: boolean;\n /** Validate on blur */\n validateOnBlur?: boolean;\n /** Label for the phone input */\n label?: string;\n /** Labels for type options (for i18n) */\n typeLabels?: Record<PhoneType, string>;\n /** Custom className */\n className?: string;\n}\n\n/**\n * A group of phone inputs with type selection and add/remove functionality.\n *\n * @example\n * ```tsx\n * const [phones, setPhones] = useState<PhoneEntry[]>([\n * { number: '', type: 'cell' }\n * ]);\n *\n * <PhoneInputGroup\n * value={phones}\n * onChange={setPhones}\n * required\n * />\n * ```\n */\nfunction PhoneInputGroup({\n value,\n onChange,\n minEntries = 1,\n maxEntries = 5,\n required = false,\n disabled = false,\n validateOnBlur = false,\n label,\n typeLabels,\n className,\n}: PhoneInputGroupProps) {\n // Ensure we always have at least minEntries\n const phones = React.useMemo(() => {\n if (value.length >= minEntries) return value;\n const padding: PhoneEntry[] = Array(minEntries - value.length)\n .fill(null)\n .map(() => ({ number: '', type: 'cell' as PhoneType }));\n return [...value, ...padding];\n }, [value, minEntries]);\n\n const handlePhoneChange = (index: number, number: string) => {\n const updated = [...phones];\n updated[index] = { ...updated[index], number };\n onChange(updated);\n };\n\n const handleTypeChange = (index: number, type: PhoneType) => {\n const updated = [...phones];\n updated[index] = { ...updated[index], type };\n onChange(updated);\n };\n\n const handleAdd = () => {\n if (phones.length < maxEntries) {\n onChange([...phones, { number: '', type: 'cell' }]);\n }\n };\n\n const handleRemove = (index: number) => {\n if (phones.length > minEntries) {\n onChange(phones.filter((_, i) => i !== index));\n }\n };\n\n const getTypeLabel = (type: PhoneType): string => {\n if (typeLabels?.[type]) return typeLabels[type];\n return PHONE_TYPES.find((t) => t.value === type)?.label || type;\n };\n\n const canAdd = phones.length < maxEntries;\n const canRemove = phones.length > minEntries;\n\n return (\n <div data-slot=\"phone-group\" className={cn('space-y-3', className)}>\n {phones.map((phone, index) => (\n <div\n key={index}\n data-slot=\"phone-row\"\n className=\"flex items-start gap-2\"\n >\n {/* Phone number input */}\n <div className=\"flex-1\">\n <PhoneInput\n label={index === 0 ? label : undefined}\n value={phone.number}\n onChange={(num) => handlePhoneChange(index, num)}\n disabled={disabled}\n validateOnBlur={validateOnBlur}\n required={required && index === 0}\n />\n </div>\n\n {/* Type selector */}\n <div className=\"w-24 shrink-0 sm:w-32\">\n <label htmlFor={`phone-type-${index}`} className=\"sr-only\">\n Phone type\n </label>\n <select\n id={`phone-type-${index}`}\n data-slot=\"phone-type-select\"\n value={phone.type}\n onChange={(e) =>\n handleTypeChange(index, e.target.value as PhoneType)\n }\n disabled={disabled}\n className={cn(\n 'h-10 w-full rounded-md border px-3 py-2 text-sm',\n 'border-gray-300 bg-white text-gray-900',\n 'focus:border-brand-500 focus:ring-brand-500/20 focus:ring-2 focus:outline-none',\n 'disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500',\n 'dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100',\n 'dark:focus:border-brand-400 dark:focus:ring-brand-400/20',\n index === 0 && label ? 'mt-[26px]' : ''\n )}\n >\n {PHONE_TYPES.map((type) => (\n <option key={type.value} value={type.value}>\n {getTypeLabel(type.value)}\n </option>\n ))}\n </select>\n </div>\n\n {/* Add/Remove buttons */}\n <div\n data-slot=\"phone-action\"\n className={cn(\n 'flex shrink-0 items-center',\n index === 0 && label ? 'mt-[26px]' : ''\n )}\n >\n {index === 0 ? (\n <button\n type=\"button\"\n data-slot=\"phone-add-btn\"\n onClick={handleAdd}\n disabled={disabled || !canAdd}\n className={cn(\n 'rounded-full p-2 transition-colors',\n 'text-brand-600 hover:bg-brand-50',\n 'disabled:cursor-not-allowed disabled:text-gray-300 disabled:hover:bg-transparent',\n 'dark:text-brand-400 dark:hover:bg-brand-900/20',\n 'dark:disabled:text-gray-600'\n )}\n aria-label=\"Add phone number\"\n >\n <svg\n data-slot=\"phone-add-icon\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v16m8-8H4\"\n />\n </svg>\n </button>\n ) : (\n <button\n type=\"button\"\n data-slot=\"phone-remove-btn\"\n onClick={() => handleRemove(index)}\n disabled={disabled || !canRemove}\n className={cn(\n 'rounded-full p-2 transition-colors',\n 'text-red-600 hover:bg-red-50',\n 'disabled:cursor-not-allowed disabled:text-gray-300 disabled:hover:bg-transparent',\n 'dark:text-red-400 dark:hover:bg-red-900/20',\n 'dark:disabled:text-gray-600'\n )}\n aria-label=\"Remove phone number\"\n >\n <svg\n data-slot=\"phone-remove-icon\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M20 12H4\"\n />\n </svg>\n </button>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nPhoneInputGroup.displayName = 'PhoneInputGroup';\n\nexport { PhoneInput, PhoneInputGroup };\n"]}
@@ -10,5 +10,5 @@ var brands = {
10
10
  };
11
11
 
12
12
  export { brands };
13
- //# sourceMappingURL=chunk-RYQ5NEKH.js.map
14
- //# sourceMappingURL=chunk-RYQ5NEKH.js.map
13
+ //# sourceMappingURL=chunk-7MX7MGSA.js.map
14
+ //# sourceMappingURL=chunk-7MX7MGSA.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/brands/index.ts"],"names":[],"mappings":";AAiCO,IAAM,MAAA,GAAS;AAAA,EACpB,QAAA,EAAU,MAAM,OAAO,sBAAY,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA;AAAA,EAChE,OAAA,EAAS,MAAM,OAAO,uBAAW,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,YAAY,CAAA;AAAA,EAC7D,mBAAA,EAAqB,MACnB,OAAO,iCAAqB,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,qBAAqB,CAAA;AAAA,EACnE,MAAA,EAAQ,MAAM,OAAO,sBAAU,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,CAAA;AAAA,EAC1D,MAAA,EAAQ,MAAM,OAAO,oBAAU,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,CAAA;AAAA,EAC1D,UAAA,EAAY,MAAM,OAAO,0BAAc,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,eAAe,CAAA;AAAA,EACtE,QAAA,EAAU,MAAM,OAAO,wBAAY,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa;AAClE","file":"chunk-RYQ5NEKH.js","sourcesContent":["/**\n * @mieweb/ui Brand System\n *\n * Export all brand-related types, utilities, and configurations.\n */\n\n// Types and utilities\nexport type {\n BrandConfig,\n BrandColors,\n BrandTypography,\n BrandBorderRadius,\n BrandBoxShadow,\n ColorScale,\n SemanticColors,\n} from './types';\n\nexport {\n generateBrandCSS,\n generateTailwindTheme,\n createBrandPreset,\n} from './types';\n\n// Brand configurations\nexport { bluehiveBrand } from './bluehive';\nexport { defaultBrand } from './default';\nexport { enterpriseHealthBrand } from './enterprise-health';\nexport { miewebBrand } from './mieweb';\nexport { ozwellBrand } from './ozwell';\nexport { wagglelineBrand } from './waggleline';\nexport { webchartBrand } from './webchart';\n\n// All brands for iteration\nexport const brands = {\n bluehive: () => import('./bluehive').then((m) => m.bluehiveBrand),\n default: () => import('./default').then((m) => m.defaultBrand),\n 'enterprise-health': () =>\n import('./enterprise-health').then((m) => m.enterpriseHealthBrand),\n mieweb: () => import('./mieweb').then((m) => m.miewebBrand),\n ozwell: () => import('./ozwell').then((m) => m.ozwellBrand),\n waggleline: () => import('./waggleline').then((m) => m.wagglelineBrand),\n webchart: () => import('./webchart').then((m) => m.webchartBrand),\n} as const;\n"]}
1
+ {"version":3,"sources":["../src/brands/index.ts"],"names":[],"mappings":";AAiCO,IAAM,MAAA,GAAS;AAAA,EACpB,QAAA,EAAU,MAAM,OAAO,sBAAY,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,CAAA;AAAA,EAChE,OAAA,EAAS,MAAM,OAAO,uBAAW,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,YAAY,CAAA;AAAA,EAC7D,mBAAA,EAAqB,MACnB,OAAO,iCAAqB,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,qBAAqB,CAAA;AAAA,EACnE,MAAA,EAAQ,MAAM,OAAO,sBAAU,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,CAAA;AAAA,EAC1D,MAAA,EAAQ,MAAM,OAAO,oBAAU,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,CAAA;AAAA,EAC1D,UAAA,EAAY,MAAM,OAAO,0BAAc,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,eAAe,CAAA;AAAA,EACtE,QAAA,EAAU,MAAM,OAAO,wBAAY,EAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa;AAClE","file":"chunk-7MX7MGSA.js","sourcesContent":["/**\n * @mieweb/ui Brand System\n *\n * Export all brand-related types, utilities, and configurations.\n */\n\n// Types and utilities\nexport type {\n BrandConfig,\n BrandColors,\n BrandTypography,\n BrandBorderRadius,\n BrandBoxShadow,\n ColorScale,\n SemanticColors,\n} from './types';\n\nexport {\n generateBrandCSS,\n generateTailwindTheme,\n createBrandPreset,\n} from './types';\n\n// Brand configurations\nexport { bluehiveBrand } from './bluehive';\nexport { defaultBrand } from './default';\nexport { enterpriseHealthBrand } from './enterprise-health';\nexport { miewebBrand } from './mieweb';\nexport { ozwellBrand } from './ozwell';\nexport { wagglelineBrand } from './waggleline';\nexport { webchartBrand } from './webchart';\n\n// All brands for iteration\nexport const brands = {\n bluehive: () => import('./bluehive').then((m) => m.bluehiveBrand),\n default: () => import('./default').then((m) => m.defaultBrand),\n 'enterprise-health': () =>\n import('./enterprise-health').then((m) => m.enterpriseHealthBrand),\n mieweb: () => import('./mieweb').then((m) => m.miewebBrand),\n ozwell: () => import('./ozwell').then((m) => m.ozwellBrand),\n waggleline: () => import('./waggleline').then((m) => m.wagglelineBrand),\n webchart: () => import('./webchart').then((m) => m.webchartBrand),\n} as const;\n"]}
@@ -0,0 +1,328 @@
1
+ import { useClickOutside } from './chunk-OKBR6PX4.js';
2
+ import { useEscapeKey } from './chunk-T4ME7QCT.js';
3
+ import { cn } from './chunk-F3SOEIN2.js';
4
+ import * as React from 'react';
5
+ import * as libphonenumber from 'google-libphonenumber';
6
+ import { jsxs, jsx } from 'react/jsx-runtime';
7
+
8
+ var PhoneNumberUtil2 = libphonenumber.default?.PhoneNumberUtil ?? libphonenumber.PhoneNumberUtil;
9
+ var PhoneNumberFormat2 = libphonenumber.default?.PhoneNumberFormat ?? libphonenumber.PhoneNumberFormat;
10
+ function isoToEmoji(code) {
11
+ return [...code.toUpperCase()].map((c) => String.fromCodePoint(127462 - 65 + c.charCodeAt(0))).join("");
12
+ }
13
+ function buildCountryList() {
14
+ const phoneUtil = PhoneNumberUtil2.getInstance();
15
+ const regions = phoneUtil.getSupportedRegions();
16
+ const list = regions.map((code) => {
17
+ const callingCode = phoneUtil.getCountryCodeForRegion(code);
18
+ return {
19
+ code,
20
+ name: regionDisplayName(code),
21
+ dialCode: `+${callingCode}`,
22
+ flag: isoToEmoji(code)
23
+ };
24
+ });
25
+ list.sort((a, b) => a.name.localeCompare(b.name));
26
+ return list;
27
+ }
28
+ var _countries = null;
29
+ function getCountries() {
30
+ if (!_countries) _countries = buildCountryList();
31
+ return _countries;
32
+ }
33
+ var _regionDisplayNames = null;
34
+ function getRegionDisplayNames() {
35
+ if (_regionDisplayNames === null) {
36
+ try {
37
+ const locales = typeof navigator !== "undefined" && navigator.languages?.length ? [...navigator.languages] : ["en"];
38
+ _regionDisplayNames = new Intl.DisplayNames(locales, { type: "region" });
39
+ } catch {
40
+ return null;
41
+ }
42
+ }
43
+ return _regionDisplayNames;
44
+ }
45
+ function regionDisplayName(code) {
46
+ const dn = getRegionDisplayNames();
47
+ if (!dn) return code;
48
+ return dn.of(code) ?? code;
49
+ }
50
+ function validatePhoneNumber(phoneNumber, countryCode) {
51
+ try {
52
+ const phoneUtil = PhoneNumberUtil2.getInstance();
53
+ const parsed = phoneUtil.parse(phoneNumber, countryCode);
54
+ return phoneUtil.isValidNumberForRegion(parsed, countryCode);
55
+ } catch {
56
+ return false;
57
+ }
58
+ }
59
+ function formatE164(phoneNumber, countryCode) {
60
+ try {
61
+ const phoneUtil = PhoneNumberUtil2.getInstance();
62
+ const parsed = phoneUtil.parse(phoneNumber, countryCode);
63
+ return phoneUtil.format(parsed, PhoneNumberFormat2.E164);
64
+ } catch {
65
+ return phoneNumber;
66
+ }
67
+ }
68
+ function CountryCodeDropdown({
69
+ value,
70
+ onChange,
71
+ disabled = false,
72
+ className,
73
+ placement = "bottom-start",
74
+ searchPlaceholder = "Search countries\u2026",
75
+ "aria-label": ariaLabel = "Select country code"
76
+ }) {
77
+ const [isOpen, setIsOpen] = React.useState(false);
78
+ const [search, setSearch] = React.useState("");
79
+ const [internalValue, setInternalValue] = React.useState(value ?? "US");
80
+ const containerRef = React.useRef(null);
81
+ const searchInputRef = React.useRef(null);
82
+ const listRef = React.useRef(null);
83
+ const menuId = React.useId();
84
+ const isControlled = value !== void 0;
85
+ const activeValue = isControlled ? value : internalValue;
86
+ const [countriesLoaded, setCountriesLoaded] = React.useState(false);
87
+ const countries = React.useMemo(
88
+ () => countriesLoaded ? getCountries() : [],
89
+ [countriesLoaded]
90
+ );
91
+ React.useEffect(() => {
92
+ if (isOpen && !countriesLoaded) setCountriesLoaded(true);
93
+ }, [isOpen, countriesLoaded]);
94
+ const selected = React.useMemo(() => {
95
+ if (countries.length) {
96
+ return countries.find((c) => c.code === activeValue) ?? countries.find((c) => c.code === "US");
97
+ }
98
+ return {
99
+ code: activeValue ?? "US",
100
+ name: regionDisplayName(activeValue ?? "US"),
101
+ dialCode: `+${PhoneNumberUtil2.getInstance().getCountryCodeForRegion(activeValue ?? "US")}`,
102
+ flag: isoToEmoji(activeValue ?? "US")
103
+ };
104
+ }, [activeValue, countries]);
105
+ const filtered = React.useMemo(() => {
106
+ if (!search) return countries;
107
+ const q = search.toLowerCase();
108
+ return countries.filter(
109
+ (c) => c.name.toLowerCase().includes(q) || c.dialCode.includes(q) || c.code.toLowerCase().includes(q)
110
+ );
111
+ }, [search, countries]);
112
+ const close = React.useCallback(() => {
113
+ setIsOpen(false);
114
+ setSearch("");
115
+ }, []);
116
+ useClickOutside(containerRef, close);
117
+ useEscapeKey(close, isOpen);
118
+ React.useEffect(() => {
119
+ if (isOpen) {
120
+ requestAnimationFrame(() => searchInputRef.current?.focus());
121
+ }
122
+ }, [isOpen]);
123
+ const handleToggle = React.useCallback(() => {
124
+ if (!disabled) setIsOpen((prev) => !prev);
125
+ }, [disabled]);
126
+ const handleSelect = React.useCallback(
127
+ (country) => {
128
+ if (!isControlled) {
129
+ setInternalValue(country.code);
130
+ }
131
+ onChange?.(country);
132
+ close();
133
+ },
134
+ [isControlled, onChange, close]
135
+ );
136
+ const handleKeyDown = React.useCallback(
137
+ (e) => {
138
+ if (!isOpen) return;
139
+ if (e.key === "ArrowDown" || e.key === "ArrowUp") {
140
+ e.preventDefault();
141
+ const items = listRef.current?.querySelectorAll(
142
+ '[role="option"]'
143
+ );
144
+ if (!items?.length) return;
145
+ const current = document.activeElement;
146
+ const idx = Array.from(items).indexOf(current);
147
+ let next;
148
+ if (e.key === "ArrowDown") {
149
+ next = idx < items.length - 1 ? idx + 1 : 0;
150
+ } else {
151
+ next = idx > 0 ? idx - 1 : items.length - 1;
152
+ }
153
+ items[next].focus();
154
+ }
155
+ },
156
+ [isOpen]
157
+ );
158
+ const placementClass = placement === "bottom-end" ? "top-full right-0 mt-1" : "top-full left-0 mt-1";
159
+ return /* @__PURE__ */ jsxs(
160
+ "div",
161
+ {
162
+ ref: containerRef,
163
+ "data-slot": "country-dropdown",
164
+ className: "relative inline-flex",
165
+ children: [
166
+ /* @__PURE__ */ jsxs(
167
+ "button",
168
+ {
169
+ type: "button",
170
+ "data-slot": "country-dropdown-trigger",
171
+ onClick: handleToggle,
172
+ disabled,
173
+ "aria-label": ariaLabel,
174
+ "aria-haspopup": "listbox",
175
+ "aria-expanded": isOpen,
176
+ "aria-controls": isOpen ? menuId : void 0,
177
+ className: cn(
178
+ "inline-flex items-center gap-1.5 rounded-lg border px-3 py-2 text-sm",
179
+ "border-input bg-background text-foreground",
180
+ "transition-colors duration-200",
181
+ "hover:bg-neutral-50 dark:hover:bg-neutral-700",
182
+ "focus:ring-ring focus:ring-2 focus:outline-none",
183
+ "disabled:cursor-not-allowed disabled:opacity-50",
184
+ className
185
+ ),
186
+ children: [
187
+ /* @__PURE__ */ jsx(
188
+ "span",
189
+ {
190
+ "data-slot": "country-dropdown-flag",
191
+ className: "text-base leading-none",
192
+ "aria-hidden": "true",
193
+ children: selected.flag
194
+ }
195
+ ),
196
+ /* @__PURE__ */ jsx("span", { "data-slot": "country-dropdown-dialcode", children: selected.dialCode }),
197
+ /* @__PURE__ */ jsx(
198
+ "svg",
199
+ {
200
+ "data-slot": "country-dropdown-chevron",
201
+ className: cn(
202
+ "h-4 w-4 shrink-0 text-neutral-500 transition-transform duration-200",
203
+ isOpen && "rotate-180"
204
+ ),
205
+ xmlns: "http://www.w3.org/2000/svg",
206
+ viewBox: "0 0 20 20",
207
+ fill: "currentColor",
208
+ "aria-hidden": "true",
209
+ children: /* @__PURE__ */ jsx(
210
+ "path",
211
+ {
212
+ fillRule: "evenodd",
213
+ d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z",
214
+ clipRule: "evenodd"
215
+ }
216
+ )
217
+ }
218
+ )
219
+ ]
220
+ }
221
+ ),
222
+ isOpen && /* @__PURE__ */ jsxs(
223
+ "div",
224
+ {
225
+ id: menuId,
226
+ role: "listbox",
227
+ "data-slot": "country-dropdown-panel",
228
+ "aria-label": ariaLabel,
229
+ tabIndex: -1,
230
+ onKeyDown: handleKeyDown,
231
+ className: cn(
232
+ "absolute z-50 w-72",
233
+ "rounded-xl border border-neutral-200 bg-white shadow-lg",
234
+ "dark:border-neutral-700 dark:bg-neutral-800",
235
+ "animate-in fade-in zoom-in-95 duration-100",
236
+ placementClass
237
+ ),
238
+ children: [
239
+ /* @__PURE__ */ jsx(
240
+ "div",
241
+ {
242
+ "data-slot": "country-dropdown-search",
243
+ className: "border-b border-neutral-200 p-2 dark:border-neutral-700",
244
+ children: /* @__PURE__ */ jsx(
245
+ "input",
246
+ {
247
+ ref: searchInputRef,
248
+ type: "text",
249
+ "data-slot": "country-dropdown-search-input",
250
+ value: search,
251
+ onChange: (e) => setSearch(e.target.value),
252
+ placeholder: searchPlaceholder,
253
+ "aria-label": "Search countries",
254
+ className: cn(
255
+ "w-full rounded-lg border border-neutral-200 px-3 py-1.5 text-sm",
256
+ "text-foreground placeholder:text-muted-foreground bg-white",
257
+ "focus:ring-ring focus:border-transparent focus:ring-2 focus:outline-none",
258
+ "dark:border-neutral-600 dark:bg-neutral-700 dark:text-neutral-100"
259
+ )
260
+ }
261
+ )
262
+ }
263
+ ),
264
+ /* @__PURE__ */ jsx(
265
+ "div",
266
+ {
267
+ ref: listRef,
268
+ "data-slot": "country-dropdown-list",
269
+ className: "max-h-60 overflow-y-auto p-1",
270
+ children: filtered.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-4 text-center text-sm", children: "No countries found" }) : filtered.map((country) => /* @__PURE__ */ jsxs(
271
+ "button",
272
+ {
273
+ type: "button",
274
+ role: "option",
275
+ "data-slot": "country-dropdown-option",
276
+ "aria-selected": country.code === selected.code,
277
+ onClick: () => handleSelect(country),
278
+ className: cn(
279
+ "flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-sm",
280
+ "transition-colors duration-150",
281
+ "focus:outline-none",
282
+ country.code === selected.code ? "bg-neutral-100 font-medium text-neutral-900 dark:bg-neutral-700 dark:text-white" : "text-neutral-700 hover:bg-neutral-50 dark:text-neutral-300 dark:hover:bg-neutral-700/50",
283
+ "focus:bg-neutral-100 dark:focus:bg-neutral-700"
284
+ ),
285
+ children: [
286
+ /* @__PURE__ */ jsx(
287
+ "span",
288
+ {
289
+ "data-slot": "country-dropdown-option-flag",
290
+ className: "text-base leading-none",
291
+ "aria-hidden": "true",
292
+ children: country.flag
293
+ }
294
+ ),
295
+ /* @__PURE__ */ jsx(
296
+ "span",
297
+ {
298
+ "data-slot": "country-dropdown-option-name",
299
+ className: "flex-1 truncate",
300
+ children: country.name
301
+ }
302
+ ),
303
+ /* @__PURE__ */ jsx(
304
+ "span",
305
+ {
306
+ "data-slot": "country-dropdown-option-dialcode",
307
+ className: "shrink-0 text-xs text-neutral-500 dark:text-neutral-400",
308
+ children: country.dialCode
309
+ }
310
+ )
311
+ ]
312
+ },
313
+ country.code
314
+ ))
315
+ }
316
+ )
317
+ ]
318
+ }
319
+ )
320
+ ]
321
+ }
322
+ );
323
+ }
324
+ CountryCodeDropdown.displayName = "CountryCodeDropdown";
325
+
326
+ export { CountryCodeDropdown, formatE164, validatePhoneNumber };
327
+ //# sourceMappingURL=chunk-7XWPUWSL.js.map
328
+ //# sourceMappingURL=chunk-7XWPUWSL.js.map