@mieweb/ui 0.1.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 (459) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +696 -0
  3. package/dist/brands/bluehive.cjs +18 -0
  4. package/dist/brands/bluehive.cjs.map +1 -0
  5. package/dist/brands/bluehive.css +136 -0
  6. package/dist/brands/bluehive.d.cts +16 -0
  7. package/dist/brands/bluehive.d.ts +16 -0
  8. package/dist/brands/bluehive.js +3 -0
  9. package/dist/brands/bluehive.js.map +1 -0
  10. package/dist/brands/enterprise-health.css +260 -0
  11. package/dist/brands/index.cjs +55 -0
  12. package/dist/brands/index.cjs.map +1 -0
  13. package/dist/brands/index.d.cts +100 -0
  14. package/dist/brands/index.d.ts +100 -0
  15. package/dist/brands/index.js +10 -0
  16. package/dist/brands/index.js.map +1 -0
  17. package/dist/brands/mieweb.css +138 -0
  18. package/dist/brands/types.cjs +20 -0
  19. package/dist/brands/types.cjs.map +1 -0
  20. package/dist/brands/types.d.cts +188 -0
  21. package/dist/brands/types.d.ts +188 -0
  22. package/dist/brands/types.js +3 -0
  23. package/dist/brands/types.js.map +1 -0
  24. package/dist/brands/waggleline.css +164 -0
  25. package/dist/brands/webchart.css +138 -0
  26. package/dist/chunk-265CFCCX.js +173 -0
  27. package/dist/chunk-265CFCCX.js.map +1 -0
  28. package/dist/chunk-2J2V4TMJ.cjs +139 -0
  29. package/dist/chunk-2J2V4TMJ.cjs.map +1 -0
  30. package/dist/chunk-2O7D6F67.cjs +63 -0
  31. package/dist/chunk-2O7D6F67.cjs.map +1 -0
  32. package/dist/chunk-3NJ72QU6.js +55 -0
  33. package/dist/chunk-3NJ72QU6.js.map +1 -0
  34. package/dist/chunk-4AWW5WPF.js +161 -0
  35. package/dist/chunk-4AWW5WPF.js.map +1 -0
  36. package/dist/chunk-4LNS5QDP.cjs +84 -0
  37. package/dist/chunk-4LNS5QDP.cjs.map +1 -0
  38. package/dist/chunk-4LTN2LEN.js +79 -0
  39. package/dist/chunk-4LTN2LEN.js.map +1 -0
  40. package/dist/chunk-4MHTSFPX.js +205 -0
  41. package/dist/chunk-4MHTSFPX.js.map +1 -0
  42. package/dist/chunk-4YRAEFYW.js +233 -0
  43. package/dist/chunk-4YRAEFYW.js.map +1 -0
  44. package/dist/chunk-53K3KWXQ.cjs +753 -0
  45. package/dist/chunk-53K3KWXQ.cjs.map +1 -0
  46. package/dist/chunk-6DP6RKUA.cjs +15 -0
  47. package/dist/chunk-6DP6RKUA.cjs.map +1 -0
  48. package/dist/chunk-6HFFWEM3.cjs +22 -0
  49. package/dist/chunk-6HFFWEM3.cjs.map +1 -0
  50. package/dist/chunk-6OCIIIAI.js +128 -0
  51. package/dist/chunk-6OCIIIAI.js.map +1 -0
  52. package/dist/chunk-6Q4SU72T.js +300 -0
  53. package/dist/chunk-6Q4SU72T.js.map +1 -0
  54. package/dist/chunk-AU5ADTYD.cjs +326 -0
  55. package/dist/chunk-AU5ADTYD.cjs.map +1 -0
  56. package/dist/chunk-AWIULTJW.js +190 -0
  57. package/dist/chunk-AWIULTJW.js.map +1 -0
  58. package/dist/chunk-B26RIQ5R.js +97 -0
  59. package/dist/chunk-B26RIQ5R.js.map +1 -0
  60. package/dist/chunk-B3L43JGH.js +98 -0
  61. package/dist/chunk-B3L43JGH.js.map +1 -0
  62. package/dist/chunk-B7DA35BY.cjs +496 -0
  63. package/dist/chunk-B7DA35BY.cjs.map +1 -0
  64. package/dist/chunk-B7YGVKTE.cjs +184 -0
  65. package/dist/chunk-B7YGVKTE.cjs.map +1 -0
  66. package/dist/chunk-BR2XGATJ.cjs +40 -0
  67. package/dist/chunk-BR2XGATJ.cjs.map +1 -0
  68. package/dist/chunk-BTJHYGPI.cjs +27 -0
  69. package/dist/chunk-BTJHYGPI.cjs.map +1 -0
  70. package/dist/chunk-BXK5TNJE.cjs +329 -0
  71. package/dist/chunk-BXK5TNJE.cjs.map +1 -0
  72. package/dist/chunk-C6MDPPPL.js +82 -0
  73. package/dist/chunk-C6MDPPPL.js.map +1 -0
  74. package/dist/chunk-CEHWXAAI.js +22 -0
  75. package/dist/chunk-CEHWXAAI.js.map +1 -0
  76. package/dist/chunk-CLNOI5J7.js +38 -0
  77. package/dist/chunk-CLNOI5J7.js.map +1 -0
  78. package/dist/chunk-CP7NPDQW.js +99 -0
  79. package/dist/chunk-CP7NPDQW.js.map +1 -0
  80. package/dist/chunk-CQCYXHCU.cjs +256 -0
  81. package/dist/chunk-CQCYXHCU.cjs.map +1 -0
  82. package/dist/chunk-D5IBXXF2.js +243 -0
  83. package/dist/chunk-D5IBXXF2.js.map +1 -0
  84. package/dist/chunk-DMA74PZ7.js +240 -0
  85. package/dist/chunk-DMA74PZ7.js.map +1 -0
  86. package/dist/chunk-EF46XW4Z.cjs +270 -0
  87. package/dist/chunk-EF46XW4Z.cjs.map +1 -0
  88. package/dist/chunk-EKIQE524.cjs +78 -0
  89. package/dist/chunk-EKIQE524.cjs.map +1 -0
  90. package/dist/chunk-F3SOEIN2.js +11 -0
  91. package/dist/chunk-F3SOEIN2.js.map +1 -0
  92. package/dist/chunk-FFJVCQ5R.cjs +128 -0
  93. package/dist/chunk-FFJVCQ5R.cjs.map +1 -0
  94. package/dist/chunk-FHY3K6PL.cjs +24 -0
  95. package/dist/chunk-FHY3K6PL.cjs.map +1 -0
  96. package/dist/chunk-FIUNOH6W.js +13 -0
  97. package/dist/chunk-FIUNOH6W.js.map +1 -0
  98. package/dist/chunk-FIXAVBUA.cjs +200 -0
  99. package/dist/chunk-FIXAVBUA.cjs.map +1 -0
  100. package/dist/chunk-FQ5G7J24.js +297 -0
  101. package/dist/chunk-FQ5G7J24.js.map +1 -0
  102. package/dist/chunk-G2DOD34H.js +215 -0
  103. package/dist/chunk-G2DOD34H.js.map +1 -0
  104. package/dist/chunk-GV5JQBPX.js +110 -0
  105. package/dist/chunk-GV5JQBPX.js.map +1 -0
  106. package/dist/chunk-H2CIKJQI.js +32 -0
  107. package/dist/chunk-H2CIKJQI.js.map +1 -0
  108. package/dist/chunk-HB7C7NB5.js +20 -0
  109. package/dist/chunk-HB7C7NB5.js.map +1 -0
  110. package/dist/chunk-HLW3XD5R.cjs +322 -0
  111. package/dist/chunk-HLW3XD5R.cjs.map +1 -0
  112. package/dist/chunk-HRA4FUO6.cjs +425 -0
  113. package/dist/chunk-HRA4FUO6.cjs.map +1 -0
  114. package/dist/chunk-IY7UQPDO.cjs +122 -0
  115. package/dist/chunk-IY7UQPDO.cjs.map +1 -0
  116. package/dist/chunk-JFAXLE2J.js +217 -0
  117. package/dist/chunk-JFAXLE2J.js.map +1 -0
  118. package/dist/chunk-JYMQJ32S.cjs +115 -0
  119. package/dist/chunk-JYMQJ32S.cjs.map +1 -0
  120. package/dist/chunk-KJOFWJHV.js +406 -0
  121. package/dist/chunk-KJOFWJHV.js.map +1 -0
  122. package/dist/chunk-KJZNEVYM.js +61 -0
  123. package/dist/chunk-KJZNEVYM.js.map +1 -0
  124. package/dist/chunk-KMN7JX2X.cjs +67 -0
  125. package/dist/chunk-KMN7JX2X.cjs.map +1 -0
  126. package/dist/chunk-LEE3NMNP.cjs +429 -0
  127. package/dist/chunk-LEE3NMNP.cjs.map +1 -0
  128. package/dist/chunk-LZEY55QZ.cjs +219 -0
  129. package/dist/chunk-LZEY55QZ.cjs.map +1 -0
  130. package/dist/chunk-MKJDBXX4.cjs +171 -0
  131. package/dist/chunk-MKJDBXX4.cjs.map +1 -0
  132. package/dist/chunk-MTZPVOP6.js +99 -0
  133. package/dist/chunk-MTZPVOP6.js.map +1 -0
  134. package/dist/chunk-N3QTYHRZ.cjs +134 -0
  135. package/dist/chunk-N3QTYHRZ.cjs.map +1 -0
  136. package/dist/chunk-N5EKL4DH.js +148 -0
  137. package/dist/chunk-N5EKL4DH.js.map +1 -0
  138. package/dist/chunk-NAATBUHR.cjs +231 -0
  139. package/dist/chunk-NAATBUHR.cjs.map +1 -0
  140. package/dist/chunk-NH2JVQ6V.cjs +272 -0
  141. package/dist/chunk-NH2JVQ6V.cjs.map +1 -0
  142. package/dist/chunk-NIHESA7O.js +114 -0
  143. package/dist/chunk-NIHESA7O.js.map +1 -0
  144. package/dist/chunk-NXRLGHEC.js +98 -0
  145. package/dist/chunk-NXRLGHEC.js.map +1 -0
  146. package/dist/chunk-O5HS7ZND.cjs +81 -0
  147. package/dist/chunk-O5HS7ZND.cjs.map +1 -0
  148. package/dist/chunk-O7WRE2WX.js +195 -0
  149. package/dist/chunk-O7WRE2WX.js.map +1 -0
  150. package/dist/chunk-ONWOB76P.js +319 -0
  151. package/dist/chunk-ONWOB76P.js.map +1 -0
  152. package/dist/chunk-OR5DRJCW.cjs +13 -0
  153. package/dist/chunk-OR5DRJCW.cjs.map +1 -0
  154. package/dist/chunk-ORUPC5TV.cjs +244 -0
  155. package/dist/chunk-ORUPC5TV.cjs.map +1 -0
  156. package/dist/chunk-OT36EMM5.js +22 -0
  157. package/dist/chunk-OT36EMM5.js.map +1 -0
  158. package/dist/chunk-OW2BWGST.js +238 -0
  159. package/dist/chunk-OW2BWGST.js.map +1 -0
  160. package/dist/chunk-OWPWP46L.js +92 -0
  161. package/dist/chunk-OWPWP46L.js.map +1 -0
  162. package/dist/chunk-P52GA3GJ.cjs +101 -0
  163. package/dist/chunk-P52GA3GJ.cjs.map +1 -0
  164. package/dist/chunk-PEFJAWNR.cjs +121 -0
  165. package/dist/chunk-PEFJAWNR.cjs.map +1 -0
  166. package/dist/chunk-PF3XWKE5.cjs +343 -0
  167. package/dist/chunk-PF3XWKE5.cjs.map +1 -0
  168. package/dist/chunk-QBWVTJKF.js +548 -0
  169. package/dist/chunk-QBWVTJKF.js.map +1 -0
  170. package/dist/chunk-QDGZBDBI.cjs +99 -0
  171. package/dist/chunk-QDGZBDBI.cjs.map +1 -0
  172. package/dist/chunk-QL2YTVTR.js +163 -0
  173. package/dist/chunk-QL2YTVTR.js.map +1 -0
  174. package/dist/chunk-QYJ7RQJ2.cjs +239 -0
  175. package/dist/chunk-QYJ7RQJ2.cjs.map +1 -0
  176. package/dist/chunk-QZLRB3UG.js +727 -0
  177. package/dist/chunk-QZLRB3UG.js.map +1 -0
  178. package/dist/chunk-R4DM4635.cjs +109 -0
  179. package/dist/chunk-R4DM4635.cjs.map +1 -0
  180. package/dist/chunk-RCMF6KZA.js +75 -0
  181. package/dist/chunk-RCMF6KZA.js.map +1 -0
  182. package/dist/chunk-RRQGH7C5.cjs +187 -0
  183. package/dist/chunk-RRQGH7C5.cjs.map +1 -0
  184. package/dist/chunk-S6UNPMAS.cjs +84 -0
  185. package/dist/chunk-S6UNPMAS.cjs.map +1 -0
  186. package/dist/chunk-SJ3BF4BO.cjs +199 -0
  187. package/dist/chunk-SJ3BF4BO.cjs.map +1 -0
  188. package/dist/chunk-SN52QMRT.js +58 -0
  189. package/dist/chunk-SN52QMRT.js.map +1 -0
  190. package/dist/chunk-SOFX4T7M.js +124 -0
  191. package/dist/chunk-SOFX4T7M.js.map +1 -0
  192. package/dist/chunk-SWMRCGL4.cjs +24 -0
  193. package/dist/chunk-SWMRCGL4.cjs.map +1 -0
  194. package/dist/chunk-SWV5E75F.cjs +94 -0
  195. package/dist/chunk-SWV5E75F.cjs.map +1 -0
  196. package/dist/chunk-T4ME7QCT.js +22 -0
  197. package/dist/chunk-T4ME7QCT.js.map +1 -0
  198. package/dist/chunk-TA6FVVCM.js +207 -0
  199. package/dist/chunk-TA6FVVCM.js.map +1 -0
  200. package/dist/chunk-UHSPAFY6.js +82 -0
  201. package/dist/chunk-UHSPAFY6.js.map +1 -0
  202. package/dist/chunk-ULOA7WBW.js +82 -0
  203. package/dist/chunk-ULOA7WBW.js.map +1 -0
  204. package/dist/chunk-UZUBLXVC.js +307 -0
  205. package/dist/chunk-UZUBLXVC.js.map +1 -0
  206. package/dist/chunk-VDMQCSXT.cjs +234 -0
  207. package/dist/chunk-VDMQCSXT.cjs.map +1 -0
  208. package/dist/chunk-VV4N4WY6.cjs +121 -0
  209. package/dist/chunk-VV4N4WY6.cjs.map +1 -0
  210. package/dist/chunk-VWXGUNBR.cjs +574 -0
  211. package/dist/chunk-VWXGUNBR.cjs.map +1 -0
  212. package/dist/chunk-WN2FJE23.js +474 -0
  213. package/dist/chunk-WN2FJE23.js.map +1 -0
  214. package/dist/chunk-XHJGYBYG.cjs +262 -0
  215. package/dist/chunk-XHJGYBYG.cjs.map +1 -0
  216. package/dist/chunk-XXOBTAKA.js +390 -0
  217. package/dist/chunk-XXOBTAKA.js.map +1 -0
  218. package/dist/chunk-Z3TFPXVN.cjs +84 -0
  219. package/dist/chunk-Z3TFPXVN.cjs.map +1 -0
  220. package/dist/chunk-ZJCPW6MS.cjs +54 -0
  221. package/dist/chunk-ZJCPW6MS.cjs.map +1 -0
  222. package/dist/chunk-ZO46CFVN.cjs +4 -0
  223. package/dist/chunk-ZO46CFVN.cjs.map +1 -0
  224. package/dist/chunk-ZQ4XMJH7.js +3 -0
  225. package/dist/chunk-ZQ4XMJH7.js.map +1 -0
  226. package/dist/components/Alert/index.cjs +25 -0
  227. package/dist/components/Alert/index.cjs.map +1 -0
  228. package/dist/components/Alert/index.d.cts +39 -0
  229. package/dist/components/Alert/index.d.ts +39 -0
  230. package/dist/components/Alert/index.js +4 -0
  231. package/dist/components/Alert/index.js.map +1 -0
  232. package/dist/components/AudioPlayer/index.cjs +29 -0
  233. package/dist/components/AudioPlayer/index.cjs.map +1 -0
  234. package/dist/components/AudioPlayer/index.d.cts +83 -0
  235. package/dist/components/AudioPlayer/index.d.ts +83 -0
  236. package/dist/components/AudioPlayer/index.js +4 -0
  237. package/dist/components/AudioPlayer/index.js.map +1 -0
  238. package/dist/components/AudioRecorder/index.cjs +29 -0
  239. package/dist/components/AudioRecorder/index.cjs.map +1 -0
  240. package/dist/components/AudioRecorder/index.d.cts +106 -0
  241. package/dist/components/AudioRecorder/index.d.ts +106 -0
  242. package/dist/components/AudioRecorder/index.js +4 -0
  243. package/dist/components/AudioRecorder/index.js.map +1 -0
  244. package/dist/components/Avatar/index.cjs +25 -0
  245. package/dist/components/Avatar/index.cjs.map +1 -0
  246. package/dist/components/Avatar/index.d.cts +62 -0
  247. package/dist/components/Avatar/index.d.ts +62 -0
  248. package/dist/components/Avatar/index.js +4 -0
  249. package/dist/components/Avatar/index.js.map +1 -0
  250. package/dist/components/Badge/index.cjs +17 -0
  251. package/dist/components/Badge/index.cjs.map +1 -0
  252. package/dist/components/Badge/index.d.cts +25 -0
  253. package/dist/components/Badge/index.d.ts +25 -0
  254. package/dist/components/Badge/index.js +4 -0
  255. package/dist/components/Badge/index.js.map +1 -0
  256. package/dist/components/Breadcrumb/index.cjs +17 -0
  257. package/dist/components/Breadcrumb/index.cjs.map +1 -0
  258. package/dist/components/Breadcrumb/index.d.cts +47 -0
  259. package/dist/components/Breadcrumb/index.d.ts +47 -0
  260. package/dist/components/Breadcrumb/index.js +4 -0
  261. package/dist/components/Breadcrumb/index.js.map +1 -0
  262. package/dist/components/Button/index.cjs +17 -0
  263. package/dist/components/Button/index.cjs.map +1 -0
  264. package/dist/components/Button/index.d.cts +32 -0
  265. package/dist/components/Button/index.d.ts +32 -0
  266. package/dist/components/Button/index.js +4 -0
  267. package/dist/components/Button/index.js.map +1 -0
  268. package/dist/components/Card/index.cjs +65 -0
  269. package/dist/components/Card/index.cjs.map +1 -0
  270. package/dist/components/Card/index.d.cts +119 -0
  271. package/dist/components/Card/index.d.ts +119 -0
  272. package/dist/components/Card/index.js +4 -0
  273. package/dist/components/Card/index.js.map +1 -0
  274. package/dist/components/Checkbox/index.cjs +21 -0
  275. package/dist/components/Checkbox/index.cjs.map +1 -0
  276. package/dist/components/Checkbox/index.d.cts +63 -0
  277. package/dist/components/Checkbox/index.d.ts +63 -0
  278. package/dist/components/Checkbox/index.js +4 -0
  279. package/dist/components/Checkbox/index.js.map +1 -0
  280. package/dist/components/DateInput/index.cjs +15 -0
  281. package/dist/components/DateInput/index.cjs.map +1 -0
  282. package/dist/components/DateInput/index.d.cts +55 -0
  283. package/dist/components/DateInput/index.d.ts +55 -0
  284. package/dist/components/DateInput/index.js +6 -0
  285. package/dist/components/DateInput/index.js.map +1 -0
  286. package/dist/components/Dropdown/index.cjs +35 -0
  287. package/dist/components/Dropdown/index.cjs.map +1 -0
  288. package/dist/components/Dropdown/index.d.cts +102 -0
  289. package/dist/components/Dropdown/index.d.ts +102 -0
  290. package/dist/components/Dropdown/index.js +6 -0
  291. package/dist/components/Dropdown/index.js.map +1 -0
  292. package/dist/components/Input/index.cjs +17 -0
  293. package/dist/components/Input/index.cjs.map +1 -0
  294. package/dist/components/Input/index.d.cts +32 -0
  295. package/dist/components/Input/index.d.ts +32 -0
  296. package/dist/components/Input/index.js +4 -0
  297. package/dist/components/Input/index.js.map +1 -0
  298. package/dist/components/Modal/index.cjs +43 -0
  299. package/dist/components/Modal/index.cjs.map +1 -0
  300. package/dist/components/Modal/index.d.cts +82 -0
  301. package/dist/components/Modal/index.d.ts +82 -0
  302. package/dist/components/Modal/index.js +6 -0
  303. package/dist/components/Modal/index.js.map +1 -0
  304. package/dist/components/Pagination/index.cjs +21 -0
  305. package/dist/components/Pagination/index.cjs.map +1 -0
  306. package/dist/components/Pagination/index.d.cts +78 -0
  307. package/dist/components/Pagination/index.d.ts +78 -0
  308. package/dist/components/Pagination/index.js +4 -0
  309. package/dist/components/Pagination/index.js.map +1 -0
  310. package/dist/components/PhoneInput/index.cjs +19 -0
  311. package/dist/components/PhoneInput/index.cjs.map +1 -0
  312. package/dist/components/PhoneInput/index.d.cts +80 -0
  313. package/dist/components/PhoneInput/index.d.ts +80 -0
  314. package/dist/components/PhoneInput/index.js +6 -0
  315. package/dist/components/PhoneInput/index.js.map +1 -0
  316. package/dist/components/Progress/index.cjs +29 -0
  317. package/dist/components/Progress/index.cjs.map +1 -0
  318. package/dist/components/Progress/index.d.cts +76 -0
  319. package/dist/components/Progress/index.d.ts +76 -0
  320. package/dist/components/Progress/index.js +4 -0
  321. package/dist/components/Progress/index.js.map +1 -0
  322. package/dist/components/QuickAction/index.cjs +29 -0
  323. package/dist/components/QuickAction/index.cjs.map +1 -0
  324. package/dist/components/QuickAction/index.d.cts +78 -0
  325. package/dist/components/QuickAction/index.d.ts +78 -0
  326. package/dist/components/QuickAction/index.js +4 -0
  327. package/dist/components/QuickAction/index.js.map +1 -0
  328. package/dist/components/Radio/index.cjs +21 -0
  329. package/dist/components/Radio/index.cjs.map +1 -0
  330. package/dist/components/Radio/index.d.cts +72 -0
  331. package/dist/components/Radio/index.d.ts +72 -0
  332. package/dist/components/Radio/index.js +4 -0
  333. package/dist/components/Radio/index.js.map +1 -0
  334. package/dist/components/RecordButton/index.cjs +25 -0
  335. package/dist/components/RecordButton/index.cjs.map +1 -0
  336. package/dist/components/RecordButton/index.d.cts +83 -0
  337. package/dist/components/RecordButton/index.d.ts +83 -0
  338. package/dist/components/RecordButton/index.js +4 -0
  339. package/dist/components/RecordButton/index.js.map +1 -0
  340. package/dist/components/SchedulePicker/index.cjs +45 -0
  341. package/dist/components/SchedulePicker/index.cjs.map +1 -0
  342. package/dist/components/SchedulePicker/index.d.cts +111 -0
  343. package/dist/components/SchedulePicker/index.d.ts +111 -0
  344. package/dist/components/SchedulePicker/index.js +4 -0
  345. package/dist/components/SchedulePicker/index.js.map +1 -0
  346. package/dist/components/Select/index.cjs +19 -0
  347. package/dist/components/Select/index.cjs.map +1 -0
  348. package/dist/components/Select/index.d.cts +79 -0
  349. package/dist/components/Select/index.d.ts +79 -0
  350. package/dist/components/Select/index.js +6 -0
  351. package/dist/components/Select/index.js.map +1 -0
  352. package/dist/components/Skeleton/index.cjs +29 -0
  353. package/dist/components/Skeleton/index.cjs.map +1 -0
  354. package/dist/components/Skeleton/index.d.cts +96 -0
  355. package/dist/components/Skeleton/index.d.ts +96 -0
  356. package/dist/components/Skeleton/index.js +4 -0
  357. package/dist/components/Skeleton/index.js.map +1 -0
  358. package/dist/components/Spinner/index.cjs +25 -0
  359. package/dist/components/Spinner/index.cjs.map +1 -0
  360. package/dist/components/Spinner/index.d.cts +67 -0
  361. package/dist/components/Spinner/index.d.ts +67 -0
  362. package/dist/components/Spinner/index.js +4 -0
  363. package/dist/components/Spinner/index.js.map +1 -0
  364. package/dist/components/Switch/index.cjs +21 -0
  365. package/dist/components/Switch/index.cjs.map +1 -0
  366. package/dist/components/Switch/index.d.cts +41 -0
  367. package/dist/components/Switch/index.d.ts +41 -0
  368. package/dist/components/Switch/index.js +4 -0
  369. package/dist/components/Switch/index.js.map +1 -0
  370. package/dist/components/Table/index.cjs +41 -0
  371. package/dist/components/Table/index.cjs.map +1 -0
  372. package/dist/components/Table/index.d.cts +54 -0
  373. package/dist/components/Table/index.d.ts +54 -0
  374. package/dist/components/Table/index.js +4 -0
  375. package/dist/components/Table/index.js.map +1 -0
  376. package/dist/components/Tabs/index.cjs +33 -0
  377. package/dist/components/Tabs/index.cjs.map +1 -0
  378. package/dist/components/Tabs/index.d.cts +70 -0
  379. package/dist/components/Tabs/index.d.ts +70 -0
  380. package/dist/components/Tabs/index.js +4 -0
  381. package/dist/components/Tabs/index.js.map +1 -0
  382. package/dist/components/Text/index.cjs +21 -0
  383. package/dist/components/Text/index.cjs.map +1 -0
  384. package/dist/components/Text/index.d.cts +35 -0
  385. package/dist/components/Text/index.d.ts +35 -0
  386. package/dist/components/Text/index.js +4 -0
  387. package/dist/components/Text/index.js.map +1 -0
  388. package/dist/components/Textarea/index.cjs +17 -0
  389. package/dist/components/Textarea/index.cjs.map +1 -0
  390. package/dist/components/Textarea/index.d.cts +42 -0
  391. package/dist/components/Textarea/index.d.ts +42 -0
  392. package/dist/components/Textarea/index.js +4 -0
  393. package/dist/components/Textarea/index.js.map +1 -0
  394. package/dist/components/ThemeProvider/index.cjs +36 -0
  395. package/dist/components/ThemeProvider/index.cjs.map +1 -0
  396. package/dist/components/ThemeProvider/index.d.cts +121 -0
  397. package/dist/components/ThemeProvider/index.d.ts +121 -0
  398. package/dist/components/ThemeProvider/index.js +7 -0
  399. package/dist/components/ThemeProvider/index.js.map +1 -0
  400. package/dist/components/Tooltip/index.cjs +14 -0
  401. package/dist/components/Tooltip/index.cjs.map +1 -0
  402. package/dist/components/Tooltip/index.d.cts +55 -0
  403. package/dist/components/Tooltip/index.d.ts +55 -0
  404. package/dist/components/Tooltip/index.js +5 -0
  405. package/dist/components/Tooltip/index.js.map +1 -0
  406. package/dist/components/VisuallyHidden/index.cjs +12 -0
  407. package/dist/components/VisuallyHidden/index.cjs.map +1 -0
  408. package/dist/components/VisuallyHidden/index.d.cts +20 -0
  409. package/dist/components/VisuallyHidden/index.d.ts +20 -0
  410. package/dist/components/VisuallyHidden/index.js +3 -0
  411. package/dist/components/VisuallyHidden/index.js.map +1 -0
  412. package/dist/default-LIRPABBK.js +3 -0
  413. package/dist/default-LIRPABBK.js.map +1 -0
  414. package/dist/default-ZGHKI5WF.cjs +18 -0
  415. package/dist/default-ZGHKI5WF.cjs.map +1 -0
  416. package/dist/enterprise-health-ORQQOLM3.js +3 -0
  417. package/dist/enterprise-health-ORQQOLM3.js.map +1 -0
  418. package/dist/enterprise-health-UDI25OCV.cjs +18 -0
  419. package/dist/enterprise-health-UDI25OCV.cjs.map +1 -0
  420. package/dist/hooks/index.cjs +69 -0
  421. package/dist/hooks/index.cjs.map +1 -0
  422. package/dist/hooks/index.d.cts +179 -0
  423. package/dist/hooks/index.d.ts +179 -0
  424. package/dist/hooks/index.js +8 -0
  425. package/dist/hooks/index.js.map +1 -0
  426. package/dist/index.cjs +33153 -0
  427. package/dist/index.cjs.map +1 -0
  428. package/dist/index.d.cts +8188 -0
  429. package/dist/index.d.ts +8188 -0
  430. package/dist/index.js +32162 -0
  431. package/dist/index.js.map +1 -0
  432. package/dist/mieweb-PV2YKYO7.js +3 -0
  433. package/dist/mieweb-PV2YKYO7.js.map +1 -0
  434. package/dist/mieweb-UJABK5XX.cjs +18 -0
  435. package/dist/mieweb-UJABK5XX.cjs.map +1 -0
  436. package/dist/styles.css +2 -0
  437. package/dist/tailwind-preset.cjs +22 -0
  438. package/dist/tailwind-preset.cjs.map +1 -0
  439. package/dist/tailwind-preset.d.cts +39 -0
  440. package/dist/tailwind-preset.d.ts +39 -0
  441. package/dist/tailwind-preset.js +3 -0
  442. package/dist/tailwind-preset.js.map +1 -0
  443. package/dist/useTheme-B9SWu6ui.d.cts +24 -0
  444. package/dist/useTheme-B9SWu6ui.d.ts +24 -0
  445. package/dist/utils/index.cjs +63 -0
  446. package/dist/utils/index.cjs.map +1 -0
  447. package/dist/utils/index.d.cts +73 -0
  448. package/dist/utils/index.d.ts +73 -0
  449. package/dist/utils/index.js +6 -0
  450. package/dist/utils/index.js.map +1 -0
  451. package/dist/waggleline-6IGA66HR.cjs +18 -0
  452. package/dist/waggleline-6IGA66HR.cjs.map +1 -0
  453. package/dist/waggleline-BMUYAFJF.js +3 -0
  454. package/dist/waggleline-BMUYAFJF.js.map +1 -0
  455. package/dist/webchart-2SLO5ICI.js +3 -0
  456. package/dist/webchart-2SLO5ICI.js.map +1 -0
  457. package/dist/webchart-EHVGP46N.cjs +18 -0
  458. package/dist/webchart-EHVGP46N.cjs.map +1 -0
  459. package/package.json +212 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 MIE Web Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,696 @@
1
+ # @mieweb/ui
2
+
3
+ A themeable, accessible React component library built with Tailwind CSS 4.
4
+
5
+ ## Features
6
+
7
+ - 🎨 **Fully Themeable** - Customize colors, fonts, border radius, and more using CSS variables
8
+ - 🏢 **Multi-Brand Support** - Pre-configured themes for BlueHive, Enterprise Health, WebChart, Waggleline, and MIE
9
+ - ♿ **Accessible** - Built with WCAG guidelines in mind, including proper ARIA attributes and keyboard navigation
10
+ - 🌳 **Tree-Shakeable** - Import only the components you need
11
+ - 🌙 **Dark Mode** - Built-in dark mode support with system preference detection
12
+ - 📦 **Dual Format** - ESM and CommonJS support
13
+ - 🎯 **TypeScript** - Full TypeScript support with comprehensive type definitions
14
+ - 📚 **Storybook** - Interactive documentation and component playground
15
+
16
+ ## Table of Contents
17
+
18
+ - [Installation](#installation)
19
+ - [Quick Start](#quick-start)
20
+ - [Development](#development)
21
+ - [Storybook](#storybook)
22
+ - [Using in Other Projects](#using-in-other-projects)
23
+ - [Brand System](#brand-system)
24
+ - [Theming](#theming)
25
+ - [Components](#components)
26
+ - [Hooks](#hooks)
27
+ - [Utilities](#utilities)
28
+ - [Releases](#releases)
29
+ - [Contributing](#contributing)
30
+
31
+ ## Installation
32
+
33
+ ```bash
34
+ npm install @mieweb/ui
35
+ # or
36
+ yarn add @mieweb/ui
37
+ # or
38
+ pnpm add @mieweb/ui
39
+ ```
40
+
41
+ ### Peer Dependencies
42
+
43
+ This library requires React 18+ and React DOM 18+:
44
+
45
+ ```bash
46
+ npm install react react-dom
47
+ ```
48
+
49
+ ## Quick Start
50
+
51
+ ### Option 1: With Tailwind CSS (Recommended)
52
+
53
+ If your project uses Tailwind CSS 4, you can use the library's Tailwind preset for the best experience:
54
+
55
+ 1. Add the preset to your `tailwind.config.js`:
56
+
57
+ ```js
58
+ // tailwind.config.js
59
+ module.exports = {
60
+ presets: [require('@mieweb/ui/tailwind-preset')],
61
+ content: [
62
+ // ... your content
63
+ './node_modules/@mieweb/ui/dist/**/*.js',
64
+ ],
65
+ // Override theme values to match your brand
66
+ theme: {
67
+ extend: {
68
+ colors: {
69
+ primary: {
70
+ 500: '#your-brand-color',
71
+ },
72
+ },
73
+ },
74
+ },
75
+ };
76
+ ```
77
+
78
+ 2. Import and use components:
79
+
80
+ ```tsx
81
+ import { Button, Card, Input } from '@mieweb/ui';
82
+
83
+ function App() {
84
+ return (
85
+ <Card>
86
+ <Input label="Email" type="email" />
87
+ <Button>Submit</Button>
88
+ </Card>
89
+ );
90
+ }
91
+ ```
92
+
93
+ ### Option 2: Pre-compiled CSS
94
+
95
+ If you're not using Tailwind CSS, you can import the pre-compiled stylesheet:
96
+
97
+ ```tsx
98
+ import '@mieweb/ui/styles.css';
99
+ import { Button } from '@mieweb/ui';
100
+ ```
101
+
102
+ ## Development
103
+
104
+ ### Getting Started
105
+
106
+ 1. **Clone the repository:**
107
+
108
+ ```bash
109
+ git clone https://github.com/mieweb/ui.git
110
+ cd ui
111
+ ```
112
+
113
+ 2. **Install dependencies:**
114
+
115
+ ```bash
116
+ npm install
117
+ ```
118
+
119
+ 3. **Start development mode:**
120
+
121
+ ```bash
122
+ npm run dev
123
+ ```
124
+
125
+ This will watch for changes and rebuild the library automatically.
126
+
127
+ ### Available Scripts
128
+
129
+ | Script | Description |
130
+ | ------------------------- | ----------------------------------- |
131
+ | `npm run dev` | Start development mode with watch |
132
+ | `npm run build` | Build the library for production |
133
+ | `npm run storybook` | Start Storybook development server |
134
+ | `npm run build-storybook` | Build Storybook for static hosting |
135
+ | `npm run typecheck` | Run TypeScript type checking |
136
+ | `npm run lint` | Run ESLint |
137
+ | `npm run lint:fix` | Run ESLint with auto-fix |
138
+ | `npm run format` | Check code formatting with Prettier |
139
+ | `npm run format:fix` | Fix code formatting with Prettier |
140
+ | `npm run test` | Run tests |
141
+ | `npm run test:watch` | Run tests in watch mode |
142
+
143
+ ## Storybook
144
+
145
+ Storybook provides interactive documentation and a component playground where you can explore all components with different props and themes.
146
+
147
+ ### Running Storybook
148
+
149
+ ```bash
150
+ npm run storybook
151
+ ```
152
+
153
+ This starts the Storybook development server at [http://localhost:6006](http://localhost:6006).
154
+
155
+ ### Features in Storybook
156
+
157
+ - **Component Explorer**: Browse all components with live examples
158
+ - **Props Documentation**: See all available props for each component
159
+ - **Theme Switcher**: Toggle between light and dark modes
160
+ - **Brand Switcher**: Preview components with different brand themes (BlueHive, Enterprise Health, WebChart, Waggleline, MIE)
161
+ - **Accessibility Panel**: Check accessibility compliance for each component
162
+ - **Controls**: Interactively modify component props
163
+
164
+ ### Building Storybook
165
+
166
+ To build a static version of Storybook for deployment:
167
+
168
+ ```bash
169
+ npm run build-storybook
170
+ ```
171
+
172
+ The output will be in the `storybook-static` directory.
173
+
174
+ ## Using in Other Projects
175
+
176
+ ### Method 1: NPM Package (Recommended)
177
+
178
+ Once published, install the package in your project:
179
+
180
+ ```bash
181
+ npm install @mieweb/ui
182
+ ```
183
+
184
+ Then import components:
185
+
186
+ ```tsx
187
+ import { Button, Card, Input, ThemeProvider } from '@mieweb/ui';
188
+ import '@mieweb/ui/styles.css'; // or use a brand CSS file
189
+
190
+ function App() {
191
+ return (
192
+ <ThemeProvider>
193
+ <Card>
194
+ <Card.Header>
195
+ <Card.Title>Welcome</Card.Title>
196
+ </Card.Header>
197
+ <Card.Content>
198
+ <Input label="Email" type="email" placeholder="you@example.com" />
199
+ <Button className="mt-4">Submit</Button>
200
+ </Card.Content>
201
+ </Card>
202
+ </ThemeProvider>
203
+ );
204
+ }
205
+ ```
206
+
207
+ ### Method 2: Local Development (npm link)
208
+
209
+ For local development across projects:
210
+
211
+ 1. **In the @mieweb/ui directory:**
212
+
213
+ ```bash
214
+ cd /path/to/mieweb-ui
215
+ npm run build
216
+ npm link
217
+ ```
218
+
219
+ 2. **In your consuming project:**
220
+
221
+ ```bash
222
+ cd /path/to/your-project
223
+ npm link @mieweb/ui
224
+ ```
225
+
226
+ 3. **Import and use components:**
227
+
228
+ ```tsx
229
+ import { Button } from '@mieweb/ui';
230
+ import '@mieweb/ui/dist/styles.css';
231
+ ```
232
+
233
+ ### Method 3: Direct Path Import
234
+
235
+ For monorepo setups or when you want to reference the source directly:
236
+
237
+ ```tsx
238
+ // In your consuming project's package.json
239
+ {
240
+ "dependencies": {
241
+ "@mieweb/ui": "file:../mieweb-ui"
242
+ }
243
+ }
244
+ ```
245
+
246
+ Then run `npm install` and import as usual.
247
+
248
+ ### Using with Different Frameworks
249
+
250
+ #### Next.js
251
+
252
+ ```tsx
253
+ // app/layout.tsx or pages/_app.tsx
254
+ import '@mieweb/ui/brands/bluehive.css';
255
+ import { ThemeProvider } from '@mieweb/ui';
256
+
257
+ export default function RootLayout({ children }) {
258
+ return (
259
+ <html lang="en">
260
+ <body>
261
+ <ThemeProvider>{children}</ThemeProvider>
262
+ </body>
263
+ </html>
264
+ );
265
+ }
266
+ ```
267
+
268
+ #### Vite
269
+
270
+ ```tsx
271
+ // main.tsx
272
+ import React from 'react';
273
+ import ReactDOM from 'react-dom/client';
274
+ import '@mieweb/ui/brands/enterprise-health.css';
275
+ import { ThemeProvider } from '@mieweb/ui';
276
+ import App from './App';
277
+
278
+ ReactDOM.createRoot(document.getElementById('root')!).render(
279
+ <React.StrictMode>
280
+ <ThemeProvider>
281
+ <App />
282
+ </ThemeProvider>
283
+ </React.StrictMode>
284
+ );
285
+ ```
286
+
287
+ #### Meteor
288
+
289
+ ```tsx
290
+ // client/main.tsx
291
+ import { Meteor } from 'meteor/meteor';
292
+ import React from 'react';
293
+ import { createRoot } from 'react-dom/client';
294
+ import '@mieweb/ui/brands/bluehive.css';
295
+ import { ThemeProvider } from '@mieweb/ui';
296
+ import App from '/imports/ui/App';
297
+
298
+ Meteor.startup(() => {
299
+ const container = document.getElementById('react-target');
300
+ const root = createRoot(container!);
301
+ root.render(
302
+ <ThemeProvider>
303
+ <App />
304
+ </ThemeProvider>
305
+ );
306
+ });
307
+ ```
308
+
309
+ ## Brand System
310
+
311
+ The library includes pre-configured themes for multiple brands. Each brand has its own design system with unique colors, typography, border radius, and shadows.
312
+
313
+ ### Available Brands
314
+
315
+ | Brand | Primary Color | Font | Description |
316
+ | --------------------- | -------------------- | ------ | ------------------------------------------------- |
317
+ | **BlueHive** | `#27AAE1` (Blue) | Nunito | DOT Physical scheduling and healthcare compliance |
318
+ | **Enterprise Health** | `#6E2B68` (Burgundy) | Jost | Employee health and occupational medicine |
319
+ | **WebChart** | `#F5841F` (Orange) | Inter | Future-ready electronic health record system |
320
+ | **Waggleline** | `#17AEED` (Blue) | Inter | Experience visualization and orchestration |
321
+ | **MIE** | `#27AE60` (Green) | Inter | Healthcare software and services |
322
+
323
+ ### Using a Brand Theme
324
+
325
+ #### Method 1: Import the brand CSS file
326
+
327
+ ```tsx
328
+ // Import the brand's CSS file
329
+ import '@mieweb/ui/brands/enterprise-health.css';
330
+
331
+ import { Button, Card } from '@mieweb/ui';
332
+ ```
333
+
334
+ #### Method 2: Use the ThemeProvider with brand
335
+
336
+ ```tsx
337
+ import { ThemeProvider } from '@mieweb/ui';
338
+ import { enterpriseHealthBrand } from '@mieweb/ui/brands';
339
+
340
+ function App() {
341
+ return (
342
+ <ThemeProvider brand={enterpriseHealthBrand}>
343
+ <YourApp />
344
+ </ThemeProvider>
345
+ );
346
+ }
347
+ ```
348
+
349
+ #### Method 3: Tailwind CSS preset
350
+
351
+ ```js
352
+ // tailwind.config.js
353
+ const { enterpriseHealthBrand } = require('@mieweb/ui/brands');
354
+ const { createBrandPreset } = require('@mieweb/ui/brands/types');
355
+
356
+ module.exports = {
357
+ presets: [createBrandPreset(enterpriseHealthBrand)],
358
+ // ...
359
+ };
360
+ ```
361
+
362
+ ### Brand Design Tokens
363
+
364
+ Each brand defines the following design tokens:
365
+
366
+ #### Enterprise Health
367
+
368
+ Extracted from [enterprisehealth.com](https://enterprisehealth.com):
369
+
370
+ ```css
371
+ /* Primary: Burgundy/Purple */
372
+ --mieweb-primary-600: #6e2b68;
373
+
374
+ /* Secondary: Deep Teal Blue (for gradients) */
375
+ --mieweb-secondary: #00497a;
376
+
377
+ /* Accent: Gold/Yellow (logo) */
378
+ --mieweb-accent: #f8b700;
379
+
380
+ /* Brand Gradient */
381
+ --mieweb-gradient: linear-gradient(111.02deg, #00497a, #6e2b68);
382
+
383
+ /* Typography */
384
+ --mieweb-font-sans: 'Jost', ui-sans-serif, system-ui, sans-serif;
385
+
386
+ /* Border Radius (larger, more rounded) */
387
+ --mieweb-radius-sm: 0.375rem; /* 6px - badges */
388
+ --mieweb-radius-md: 0.625rem; /* 10px - buttons */
389
+ --mieweb-radius-lg: 0.75rem; /* 12px - inputs */
390
+ --mieweb-radius-2xl: 1.5rem; /* 24px - cards */
391
+
392
+ /* Shadows (subtle, layered) */
393
+ --mieweb-shadow-card:
394
+ 0 16px 32px 0 rgba(34, 35, 38, 0.05), 0 8px 16px 0 rgba(34, 35, 38, 0.05);
395
+ ```
396
+
397
+ #### BlueHive
398
+
399
+ ```css
400
+ /* Primary: Blue */
401
+ --mieweb-primary-500: #27aae1;
402
+
403
+ /* Typography */
404
+ --mieweb-font-sans: 'Nunito', ui-sans-serif, system-ui, sans-serif;
405
+ ```
406
+
407
+ ### Creating a Custom Brand
408
+
409
+ You can create your own brand configuration:
410
+
411
+ ```ts
412
+ import type { BrandConfig } from '@mieweb/ui/brands/types';
413
+
414
+ export const myBrand: BrandConfig = {
415
+ name: 'my-brand',
416
+ displayName: 'My Brand',
417
+ description: 'Custom brand for my application',
418
+
419
+ colors: {
420
+ primary: {
421
+ 50: '#f0f9ff',
422
+ // ... full color scale 50-950
423
+ 600: '#0284c7', // Main brand color
424
+ // ...
425
+ },
426
+ light: {
427
+ background: '#ffffff',
428
+ foreground: '#171717',
429
+ // ... semantic colors
430
+ },
431
+ dark: {
432
+ background: '#171717',
433
+ foreground: '#fafafa',
434
+ // ... semantic colors
435
+ },
436
+ },
437
+
438
+ typography: {
439
+ fontFamily: {
440
+ sans: ['Your Font', 'ui-sans-serif', 'system-ui', 'sans-serif'],
441
+ mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],
442
+ },
443
+ },
444
+
445
+ borderRadius: {
446
+ none: '0',
447
+ sm: '0.25rem',
448
+ md: '0.5rem',
449
+ lg: '0.75rem',
450
+ xl: '1rem',
451
+ '2xl': '1.5rem',
452
+ full: '9999px',
453
+ },
454
+
455
+ boxShadow: {
456
+ card: '0 1px 3px 0 rgb(0 0 0 / 0.1)',
457
+ dropdown: '0 4px 6px -1px rgb(0 0 0 / 0.1)',
458
+ modal: '0 10px 15px -3px rgb(0 0 0 / 0.1)',
459
+ },
460
+ };
461
+ ```
462
+
463
+ ## Theming
464
+
465
+ The library uses CSS custom properties for theming. Override these variables to customize the appearance:
466
+
467
+ ```css
468
+ :root {
469
+ /* Primary color scale */
470
+ --mieweb-primary-500: #27aae1;
471
+
472
+ /* Semantic colors */
473
+ --mieweb-background: hsl(0 0% 100%);
474
+ --mieweb-foreground: hsl(222.2 84% 4.9%);
475
+
476
+ /* Border radius */
477
+ --mieweb-radius-md: 0.5rem;
478
+
479
+ /* Font */
480
+ --mieweb-font-sans: 'Your Font', sans-serif;
481
+ }
482
+ ```
483
+
484
+ ### Dark Mode
485
+
486
+ The library supports dark mode via the `.dark` class or `data-theme="dark"` attribute on a parent element:
487
+
488
+ ```tsx
489
+ import { ThemeProvider, useThemeContext, Button } from '@mieweb/ui';
490
+
491
+ function ThemeToggle() {
492
+ const { resolvedTheme, setTheme } = useThemeContext();
493
+ return (
494
+ <Button
495
+ onClick={() => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}
496
+ >
497
+ Toggle Theme
498
+ </Button>
499
+ );
500
+ }
501
+
502
+ function App() {
503
+ return (
504
+ <ThemeProvider>
505
+ <ThemeToggle />
506
+ </ThemeProvider>
507
+ );
508
+ }
509
+ ```
510
+
511
+ ## Components
512
+
513
+ ### Primitives
514
+
515
+ - `Button` - Multi-variant button with loading state
516
+ - `Input` - Text input with label, error, and helper text
517
+ - `Card` - Container component with header, content, and footer
518
+ - `Text` - Typography component with variants
519
+ - `Badge` - Status indicators and labels
520
+ - `Alert` - Feedback messages
521
+
522
+ ### Specialized Inputs
523
+
524
+ - `PhoneInput` - US phone number formatting
525
+ - `DateInput` - Date input with validation modes (DOB, expiration, etc.)
526
+
527
+ ### Overlays
528
+
529
+ - `Tooltip` - Accessible tooltip with multiple placements
530
+ - `Dropdown` - Dropdown menu with items, separators, and labels
531
+
532
+ ### Utilities
533
+
534
+ - `VisuallyHidden` - Screen reader only content
535
+ - `ThemeProvider` - Theme context provider
536
+
537
+ ## Hooks
538
+
539
+ - `useTheme()` - Theme state management
540
+ - `useClickOutside()` - Detect clicks outside an element
541
+ - `useEscapeKey()` - Handle escape key press
542
+ - `useFocusTrap()` - Trap focus within a container
543
+ - `usePrefersReducedMotion()` - Detect reduced motion preference
544
+
545
+ ## Utilities
546
+
547
+ ### Class Names
548
+
549
+ ```tsx
550
+ import { cn } from '@mieweb/ui/utils';
551
+
552
+ // Merge classes with Tailwind conflict resolution
553
+ cn('px-4 py-2', isActive && 'bg-primary-500', className);
554
+ ```
555
+
556
+ ### Phone Utilities
557
+
558
+ ```tsx
559
+ import { formatPhoneNumber, isValidPhoneNumber } from '@mieweb/ui/utils';
560
+
561
+ formatPhoneNumber('5551234567'); // "(555) 123-4567"
562
+ isValidPhoneNumber('5551234567'); // true
563
+ ```
564
+
565
+ ### Date Utilities
566
+
567
+ ```tsx
568
+ import { formatDateValue, calculateAge, isValidDate } from '@mieweb/ui/utils';
569
+
570
+ formatDateValue('01152024'); // "01/15/2024"
571
+ calculateAge('01/15/1990'); // 34
572
+ isValidDate('01/15/2024'); // true
573
+ ```
574
+
575
+ ## Tree-Shaking
576
+
577
+ Import components directly for optimal bundle size:
578
+
579
+ ```tsx
580
+ // Import only what you need
581
+ import { Button } from '@mieweb/ui/components/Button';
582
+ import { useTheme } from '@mieweb/ui/hooks';
583
+ import { cn } from '@mieweb/ui/utils';
584
+ ```
585
+
586
+ ## TypeScript
587
+
588
+ All components are fully typed. Import types as needed:
589
+
590
+ ```tsx
591
+ import type { ButtonProps, InputProps, Theme } from '@mieweb/ui';
592
+ ```
593
+
594
+ ## Releases
595
+
596
+ This package uses automated releases via GitHub Actions. There are two release channels:
597
+
598
+ ### Release Channels
599
+
600
+ | Channel | npm Tag | Install Command | Description |
601
+ | ------- | ------- | --------------- | ----------- |
602
+ | **Stable** | `latest` | `npm install @mieweb/ui` | Production-ready releases |
603
+ | **Prerelease** | `next` | `npm install @mieweb/ui@next` | Latest from `main` branch |
604
+
605
+ ### Prerelease (Automatic)
606
+
607
+ Every push to the `main` branch automatically publishes a prerelease version to npm:
608
+
609
+ - **Version format:** `x.y.z-dev.{run_number}` (e.g., `0.1.0-dev.45`)
610
+ - **npm tag:** `next`
611
+ - **Install:** `npm install @mieweb/ui@next`
612
+
613
+ This allows consumers to test the latest changes before a stable release.
614
+
615
+ ### Stable Release (Manual)
616
+
617
+ To create a stable release:
618
+
619
+ 1. Go to the repository on GitHub
620
+ 2. Navigate to **Actions** → **Create Stable Release**
621
+ 3. Click **Run workflow**
622
+ 4. Select the version bump type:
623
+ - `patch` - Bug fixes (0.1.0 → 0.1.1)
624
+ - `minor` - New features (0.1.0 → 0.2.0)
625
+ - `major` - Breaking changes (0.1.0 → 1.0.0)
626
+ 5. Click **Run workflow**
627
+
628
+ The workflow will:
629
+ 1. Bump the version in `package.json`
630
+ 2. Commit and push the change
631
+ 3. Create a git tag (e.g., `v0.2.0`)
632
+ 4. Trigger the release workflow which publishes to npm and creates a GitHub Release
633
+
634
+ ### Manual Tag Release
635
+
636
+ You can also create a release by pushing a version tag directly:
637
+
638
+ ```bash
639
+ # Create and push a tag
640
+ git tag v1.0.0
641
+ git push origin v1.0.0
642
+ ```
643
+
644
+ The release workflow will automatically:
645
+ - Run tests and build
646
+ - Publish to npm with the appropriate tag (`latest` for stable, `next` for prereleases like `v1.0.0-beta.1`)
647
+ - Create a GitHub Release with auto-generated release notes
648
+
649
+ ### Version Guidelines
650
+
651
+ We follow [Semantic Versioning](https://semver.org/):
652
+
653
+ - **MAJOR** version for incompatible API changes
654
+ - **MINOR** version for backwards-compatible functionality additions
655
+ - **PATCH** version for backwards-compatible bug fixes
656
+
657
+ ## Contributing
658
+
659
+ We welcome contributions! Here's how to get started:
660
+
661
+ ### Development Workflow
662
+
663
+ 1. **Fork and clone the repository**
664
+ 2. **Install dependencies:** `npm install`
665
+ 3. **Create a branch:** `git checkout -b feature/your-feature`
666
+ 4. **Start Storybook:** `npm run storybook`
667
+ 5. **Make your changes**
668
+ 6. **Run checks:**
669
+ ```bash
670
+ npm run typecheck # TypeScript
671
+ npm run lint # ESLint
672
+ npm run format # Prettier
673
+ npm run test # Tests
674
+ ```
675
+ 7. **Commit your changes** following [Conventional Commits](https://www.conventionalcommits.org/)
676
+ 8. **Push and create a Pull Request**
677
+
678
+ ### Adding a New Component
679
+
680
+ 1. Create a new directory in `src/components/YourComponent/`
681
+ 2. Add the component file: `YourComponent.tsx`
682
+ 3. Add the index export: `index.ts`
683
+ 4. Add Storybook stories: `YourComponent.stories.tsx`
684
+ 5. Export from `src/components/index.ts`
685
+ 6. Add to the README components list
686
+
687
+ ### Adding a New Brand
688
+
689
+ 1. Create `src/brands/your-brand.ts` with the `BrandConfig`
690
+ 2. Create `src/brands/your-brand.css` with CSS variables
691
+ 3. Export from `src/brands/index.ts`
692
+ 4. Add to the README brands table
693
+
694
+ ## License
695
+
696
+ MIT © MIE Web Team