@mieweb/ui 0.8.0 → 0.9.0-dev.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 (380) hide show
  1. package/README.md +162 -739
  2. package/agent/mieweb-ui.instructions.md +34 -16
  3. package/dist/Animated-Cs-naa2g.d.cts +175 -0
  4. package/dist/Animated-Cs-naa2g.d.ts +175 -0
  5. package/dist/CsvBlock-D7Z6ZCRP.js +6 -0
  6. package/dist/{CsvBlock-PUSTBQ5B.js.map → CsvBlock-D7Z6ZCRP.js.map} +1 -1
  7. package/dist/CsvBlock-QXXZ7ZUM.cjs +15 -0
  8. package/dist/{CsvBlock-OTFG3PYZ.cjs.map → CsvBlock-QXXZ7ZUM.cjs.map} +1 -1
  9. package/dist/HtmlPreviewBlock-AADG7MVB.cjs +15 -0
  10. package/dist/{HtmlPreviewBlock-QHLSIMWJ.cjs.map → HtmlPreviewBlock-AADG7MVB.cjs.map} +1 -1
  11. package/dist/HtmlPreviewBlock-F5VDM2EN.js +6 -0
  12. package/dist/{HtmlPreviewBlock-YF2YVKKX.js.map → HtmlPreviewBlock-F5VDM2EN.js.map} +1 -1
  13. package/dist/MermaidBlock-6PLITRBZ.js +6 -0
  14. package/dist/{MermaidBlock-H3TWNC4D.js.map → MermaidBlock-6PLITRBZ.js.map} +1 -1
  15. package/dist/MermaidBlock-TQ2O5CLV.cjs +15 -0
  16. package/dist/{MermaidBlock-ZLLBO3VY.cjs.map → MermaidBlock-TQ2O5CLV.cjs.map} +1 -1
  17. package/dist/SurveyBlock-OYL3VNU5.cjs +15 -0
  18. package/dist/{SurveyBlock-M2ZRTGVJ.cjs.map → SurveyBlock-OYL3VNU5.cjs.map} +1 -1
  19. package/dist/SurveyBlock-W5PSQ62F.js +6 -0
  20. package/dist/{SurveyBlock-JLHS3YQD.js.map → SurveyBlock-W5PSQ62F.js.map} +1 -1
  21. package/dist/ag-grid.cjs +5 -5
  22. package/dist/ag-grid.js +1 -1
  23. package/dist/brands/index.cjs +7 -7
  24. package/dist/brands/index.js +2 -2
  25. package/dist/{chunk-RZJXCI53.js → chunk-22CYDCXA.js} +3 -3
  26. package/dist/{chunk-RZJXCI53.js.map → chunk-22CYDCXA.js.map} +1 -1
  27. package/dist/{chunk-OTQ72WX3.js → chunk-2BPIVWAK.js} +3 -3
  28. package/dist/{chunk-OTQ72WX3.js.map → chunk-2BPIVWAK.js.map} +1 -1
  29. package/dist/{chunk-6EWJGRC3.js → chunk-3JWAABYI.js} +6 -6
  30. package/dist/chunk-3JWAABYI.js.map +1 -0
  31. package/dist/{chunk-5JZIDILK.cjs → chunk-3LHICE4I.cjs} +6 -6
  32. package/dist/chunk-3LHICE4I.cjs.map +1 -0
  33. package/dist/{chunk-JHZW3Y62.js → chunk-3RB35GYK.js} +5 -5
  34. package/dist/chunk-3RB35GYK.js.map +1 -0
  35. package/dist/{chunk-BOW7ZGI2.cjs → chunk-4SM3I7WE.cjs} +170 -10
  36. package/dist/chunk-4SM3I7WE.cjs.map +1 -0
  37. package/dist/{chunk-26DPQUSB.cjs → chunk-5BVFVXHN.cjs} +224 -157
  38. package/dist/chunk-5BVFVXHN.cjs.map +1 -0
  39. package/dist/{chunk-QHTDWIED.js → chunk-5H7SAEQO.js} +5 -5
  40. package/dist/{chunk-QHTDWIED.js.map → chunk-5H7SAEQO.js.map} +1 -1
  41. package/dist/{chunk-EMMYFHOT.js → chunk-5WOB4UBD.js} +3 -3
  42. package/dist/{chunk-EMMYFHOT.js.map → chunk-5WOB4UBD.js.map} +1 -1
  43. package/dist/{chunk-4CUFXCC5.cjs → chunk-5Z6UPVGC.cjs} +6 -6
  44. package/dist/{chunk-4CUFXCC5.cjs.map → chunk-5Z6UPVGC.cjs.map} +1 -1
  45. package/dist/{chunk-YIXTGWT4.cjs → chunk-6QKMMKRY.cjs} +5 -5
  46. package/dist/{chunk-YIXTGWT4.cjs.map → chunk-6QKMMKRY.cjs.map} +1 -1
  47. package/dist/{chunk-F57VRLKP.js → chunk-6SAYPXHX.js} +4 -4
  48. package/dist/{chunk-F57VRLKP.js.map → chunk-6SAYPXHX.js.map} +1 -1
  49. package/dist/{chunk-SK7H3Z67.cjs → chunk-6XDPJWSC.cjs} +99 -83
  50. package/dist/chunk-6XDPJWSC.cjs.map +1 -0
  51. package/dist/{chunk-4AE2L6AO.cjs → chunk-7FTBPLA6.cjs} +8 -8
  52. package/dist/chunk-7FTBPLA6.cjs.map +1 -0
  53. package/dist/{chunk-KVE7PQ5P.cjs → chunk-7KN6J7XV.cjs} +20 -20
  54. package/dist/{chunk-KVE7PQ5P.cjs.map → chunk-7KN6J7XV.cjs.map} +1 -1
  55. package/dist/{chunk-K4S4FAYX.cjs → chunk-AHINB2TP.cjs} +11 -11
  56. package/dist/{chunk-K4S4FAYX.cjs.map → chunk-AHINB2TP.cjs.map} +1 -1
  57. package/dist/{chunk-MYFZYUPR.cjs → chunk-AOHJILLU.cjs} +38 -3
  58. package/dist/chunk-AOHJILLU.cjs.map +1 -0
  59. package/dist/chunk-BKSPDTX4.js +3 -0
  60. package/dist/{chunk-3PXOIAF6.js.map → chunk-BKSPDTX4.js.map} +1 -1
  61. package/dist/chunk-BN75TLUN.cjs +163 -0
  62. package/dist/chunk-BN75TLUN.cjs.map +1 -0
  63. package/dist/{chunk-WWJIW2IH.cjs → chunk-BVMABVC4.cjs} +3 -3
  64. package/dist/{chunk-WWJIW2IH.cjs.map → chunk-BVMABVC4.cjs.map} +1 -1
  65. package/dist/{chunk-H7QSGFMZ.cjs → chunk-BZAGP5W6.cjs} +17 -10
  66. package/dist/chunk-BZAGP5W6.cjs.map +1 -0
  67. package/dist/{chunk-RS5VA6QU.cjs → chunk-C3DUS2VE.cjs} +3 -3
  68. package/dist/{chunk-RS5VA6QU.cjs.map → chunk-C3DUS2VE.cjs.map} +1 -1
  69. package/dist/{chunk-NLBT5O2X.js → chunk-CK3KLRNF.js} +3 -3
  70. package/dist/{chunk-NLBT5O2X.js.map → chunk-CK3KLRNF.js.map} +1 -1
  71. package/dist/{chunk-L6D4CKLV.cjs → chunk-CXDMZT45.cjs} +135 -4
  72. package/dist/chunk-CXDMZT45.cjs.map +1 -0
  73. package/dist/{chunk-TXRQQMG5.js → chunk-CYMZ2QS5.js} +2 -2
  74. package/dist/{chunk-TXRQQMG5.js.map → chunk-CYMZ2QS5.js.map} +1 -1
  75. package/dist/{chunk-DX64KLSN.js → chunk-D25WH7MH.js} +7 -7
  76. package/dist/{chunk-DX64KLSN.js.map → chunk-D25WH7MH.js.map} +1 -1
  77. package/dist/{chunk-XBKOZRDO.js → chunk-DFYMIRMW.js} +4 -4
  78. package/dist/{chunk-XBKOZRDO.js.map → chunk-DFYMIRMW.js.map} +1 -1
  79. package/dist/{chunk-AESFOMSH.js → chunk-DGRXAIWK.js} +135 -4
  80. package/dist/chunk-DGRXAIWK.js.map +1 -0
  81. package/dist/{chunk-UZ5NGGMI.js → chunk-EG7XFZ3W.js} +4 -4
  82. package/dist/{chunk-UZ5NGGMI.js.map → chunk-EG7XFZ3W.js.map} +1 -1
  83. package/dist/{chunk-RYQ3S3KO.cjs → chunk-FQBTGS3E.cjs} +23 -20
  84. package/dist/chunk-FQBTGS3E.cjs.map +1 -0
  85. package/dist/{chunk-LQHI44OZ.cjs → chunk-FUFBRKOG.cjs} +59 -59
  86. package/dist/{chunk-LQHI44OZ.cjs.map → chunk-FUFBRKOG.cjs.map} +1 -1
  87. package/dist/{chunk-DG7KE4YJ.cjs → chunk-FYAKUU2A.cjs} +38 -21
  88. package/dist/chunk-FYAKUU2A.cjs.map +1 -0
  89. package/dist/{chunk-7L7OPISJ.cjs → chunk-H4AVMUOC.cjs} +12 -6
  90. package/dist/chunk-H4AVMUOC.cjs.map +1 -0
  91. package/dist/{chunk-I2ECTLON.cjs → chunk-HXSA6QC5.cjs} +3 -3
  92. package/dist/{chunk-I2ECTLON.cjs.map → chunk-HXSA6QC5.cjs.map} +1 -1
  93. package/dist/{chunk-DCBMTFLE.js → chunk-HZ4MBUC3.js} +3 -3
  94. package/dist/{chunk-DCBMTFLE.js.map → chunk-HZ4MBUC3.js.map} +1 -1
  95. package/dist/{chunk-X5ZPYYMS.js → chunk-I3DQXUSC.js} +3 -3
  96. package/dist/{chunk-X5ZPYYMS.js.map → chunk-I3DQXUSC.js.map} +1 -1
  97. package/dist/{chunk-FN6VHMLM.cjs → chunk-IB54SKWB.cjs} +8 -8
  98. package/dist/{chunk-FN6VHMLM.cjs.map → chunk-IB54SKWB.cjs.map} +1 -1
  99. package/dist/{chunk-JP5SGIXA.cjs → chunk-IFDC4TXM.cjs} +4 -4
  100. package/dist/{chunk-JP5SGIXA.cjs.map → chunk-IFDC4TXM.cjs.map} +1 -1
  101. package/dist/{chunk-RDGRKYQ5.cjs → chunk-IINZWUGK.cjs} +58 -6
  102. package/dist/chunk-IINZWUGK.cjs.map +1 -0
  103. package/dist/{chunk-U3JU6BI5.cjs → chunk-JEIW7BSV.cjs} +3 -3
  104. package/dist/{chunk-U3JU6BI5.cjs.map → chunk-JEIW7BSV.cjs.map} +1 -1
  105. package/dist/{chunk-D2GID3YK.js → chunk-KREUYVMZ.js} +58 -6
  106. package/dist/chunk-KREUYVMZ.js.map +1 -0
  107. package/dist/{chunk-Y6YSJPVC.js → chunk-KRU6IGV7.js} +11 -3
  108. package/dist/chunk-KRU6IGV7.js.map +1 -0
  109. package/dist/{chunk-LZU7YBXG.js → chunk-KU3XRHWA.js} +169 -10
  110. package/dist/chunk-KU3XRHWA.js.map +1 -0
  111. package/dist/{chunk-P2VTQ5AR.cjs → chunk-L52N6BEN.cjs} +39 -23
  112. package/dist/chunk-L52N6BEN.cjs.map +1 -0
  113. package/dist/{chunk-XWYKLEKG.js → chunk-L5W7TJQ5.js} +11 -5
  114. package/dist/chunk-L5W7TJQ5.js.map +1 -0
  115. package/dist/{chunk-PAM5UUBL.cjs → chunk-L7L5S2HO.cjs} +18 -2
  116. package/dist/{chunk-PAM5UUBL.cjs.map → chunk-L7L5S2HO.cjs.map} +1 -1
  117. package/dist/{chunk-SEPYBAML.js → chunk-LAEIVOIY.js} +38 -21
  118. package/dist/chunk-LAEIVOIY.js.map +1 -0
  119. package/dist/{chunk-Z5KFXHDP.cjs → chunk-MM7QKUE3.cjs} +5 -5
  120. package/dist/{chunk-Z5KFXHDP.cjs.map → chunk-MM7QKUE3.cjs.map} +1 -1
  121. package/dist/{chunk-FJ7YPVKV.js → chunk-MUIDWFYJ.js} +3 -3
  122. package/dist/{chunk-FJ7YPVKV.js.map → chunk-MUIDWFYJ.js.map} +1 -1
  123. package/dist/{chunk-FDV7EQWH.js → chunk-MXQ7J4BB.js} +21 -18
  124. package/dist/chunk-MXQ7J4BB.js.map +1 -0
  125. package/dist/{chunk-YMHOF6WA.cjs → chunk-MYAU2ZUC.cjs} +3 -3
  126. package/dist/{chunk-YMHOF6WA.cjs.map → chunk-MYAU2ZUC.cjs.map} +1 -1
  127. package/dist/{chunk-5J5PEUUA.js → chunk-NHN6A3ZO.js} +6 -6
  128. package/dist/{chunk-5J5PEUUA.js.map → chunk-NHN6A3ZO.js.map} +1 -1
  129. package/dist/{chunk-EPQPUFS6.cjs → chunk-NYJIXR4Y.cjs} +6 -6
  130. package/dist/chunk-NYJIXR4Y.cjs.map +1 -0
  131. package/dist/{chunk-EKRT7K2K.js → chunk-O6GJ4IYS.js} +222 -157
  132. package/dist/chunk-O6GJ4IYS.js.map +1 -0
  133. package/dist/{chunk-WIYQI35R.cjs → chunk-O7XHHTTP.cjs} +8 -8
  134. package/dist/{chunk-WIYQI35R.cjs.map → chunk-O7XHHTTP.cjs.map} +1 -1
  135. package/dist/{chunk-IILJGFI5.js → chunk-OAZUDUGX.js} +8 -6
  136. package/dist/chunk-OAZUDUGX.js.map +1 -0
  137. package/dist/{chunk-JHGMZX4I.cjs → chunk-OCV33S5Q.cjs} +6 -6
  138. package/dist/{chunk-JHGMZX4I.cjs.map → chunk-OCV33S5Q.cjs.map} +1 -1
  139. package/dist/{chunk-IYXCFIMP.js → chunk-ODYQYLO2.js} +33 -17
  140. package/dist/chunk-ODYQYLO2.js.map +1 -0
  141. package/dist/{chunk-FPVRQCCL.js → chunk-OHDIJOGG.js} +4 -4
  142. package/dist/{chunk-FPVRQCCL.js.map → chunk-OHDIJOGG.js.map} +1 -1
  143. package/dist/{chunk-GQVL2JKQ.cjs → chunk-OHKO5THF.cjs} +3 -3
  144. package/dist/{chunk-GQVL2JKQ.cjs.map → chunk-OHKO5THF.cjs.map} +1 -1
  145. package/dist/{chunk-LMBXJZLG.js → chunk-ON4JULCA.js} +3 -3
  146. package/dist/{chunk-LMBXJZLG.js.map → chunk-ON4JULCA.js.map} +1 -1
  147. package/dist/{chunk-A5YOIJKL.js → chunk-ONNY7UO4.js} +15 -15
  148. package/dist/{chunk-A5YOIJKL.js.map → chunk-ONNY7UO4.js.map} +1 -1
  149. package/dist/{chunk-DWCYEPTT.js → chunk-OSPTA4UR.js} +4 -4
  150. package/dist/{chunk-DWCYEPTT.js.map → chunk-OSPTA4UR.js.map} +1 -1
  151. package/dist/{chunk-FDUA6OGN.js → chunk-PFKRHNYV.js} +8 -8
  152. package/dist/chunk-PFKRHNYV.js.map +1 -0
  153. package/dist/{chunk-XMECP2MD.js → chunk-PHK4XBO5.js} +4 -4
  154. package/dist/{chunk-XMECP2MD.js.map → chunk-PHK4XBO5.js.map} +1 -1
  155. package/dist/{chunk-ZZJ4ZVYR.cjs → chunk-PJ6CC53R.cjs} +3 -3
  156. package/dist/{chunk-ZZJ4ZVYR.cjs.map → chunk-PJ6CC53R.cjs.map} +1 -1
  157. package/dist/{chunk-N3Y43KOB.js → chunk-PYHFVYVZ.js} +12 -5
  158. package/dist/chunk-PYHFVYVZ.js.map +1 -0
  159. package/dist/{chunk-XMCIXHGH.js → chunk-Q7G56ZIO.js} +39 -23
  160. package/dist/chunk-Q7G56ZIO.js.map +1 -0
  161. package/dist/{chunk-4PIW3Y5M.js → chunk-QAKASRE6.js} +34 -26
  162. package/dist/chunk-QAKASRE6.js.map +1 -0
  163. package/dist/{chunk-QGZC43L7.js → chunk-QAQOCS2J.js} +5 -5
  164. package/dist/{chunk-QGZC43L7.js.map → chunk-QAQOCS2J.js.map} +1 -1
  165. package/dist/{chunk-YVIH26FG.cjs → chunk-QKAYRHWP.cjs} +12 -12
  166. package/dist/{chunk-YVIH26FG.cjs.map → chunk-QKAYRHWP.cjs.map} +1 -1
  167. package/dist/{chunk-P3JEMF6E.cjs → chunk-RSCA5AZW.cjs} +4 -4
  168. package/dist/{chunk-P3JEMF6E.cjs.map → chunk-RSCA5AZW.cjs.map} +1 -1
  169. package/dist/{chunk-5Y5FSR4N.js → chunk-SCXELRRZ.js} +3 -3
  170. package/dist/{chunk-5Y5FSR4N.js.map → chunk-SCXELRRZ.js.map} +1 -1
  171. package/dist/{chunk-JWTCEWQ4.cjs → chunk-SNEQXSC5.cjs} +2 -2
  172. package/dist/{chunk-JWTCEWQ4.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
  173. package/dist/{chunk-U5TTXN45.cjs → chunk-SRA2L3SQ.cjs} +9 -7
  174. package/dist/chunk-SRA2L3SQ.cjs.map +1 -0
  175. package/dist/{chunk-5U6GETAW.js → chunk-TQDZLRIE.js} +3 -3
  176. package/dist/chunk-TQDZLRIE.js.map +1 -0
  177. package/dist/{chunk-HK3AMH3Q.cjs → chunk-VROIMIHB.cjs} +11 -3
  178. package/dist/chunk-VROIMIHB.cjs.map +1 -0
  179. package/dist/{chunk-3SHLOF4V.cjs → chunk-VTR2KGLY.cjs} +9 -9
  180. package/dist/{chunk-3SHLOF4V.cjs.map → chunk-VTR2KGLY.cjs.map} +1 -1
  181. package/dist/{chunk-XO3WLK65.js → chunk-VVDE4CHU.js} +3 -3
  182. package/dist/{chunk-XO3WLK65.js.map → chunk-VVDE4CHU.js.map} +1 -1
  183. package/dist/{chunk-XS35KPBZ.cjs → chunk-WIAQQNFU.cjs} +4 -4
  184. package/dist/{chunk-XS35KPBZ.cjs.map → chunk-WIAQQNFU.cjs.map} +1 -1
  185. package/dist/{chunk-BOOJDRJO.js → chunk-WSNMQQ4P.js} +38 -3
  186. package/dist/chunk-WSNMQQ4P.js.map +1 -0
  187. package/dist/chunk-WYMO3IIK.js +136 -0
  188. package/dist/chunk-WYMO3IIK.js.map +1 -0
  189. package/dist/{chunk-SPWVKDGC.cjs → chunk-X5QRRMGB.cjs} +35 -27
  190. package/dist/chunk-X5QRRMGB.cjs.map +1 -0
  191. package/dist/{chunk-SH6B4MG5.js → chunk-XBXDUAIM.js} +4 -4
  192. package/dist/{chunk-SH6B4MG5.js.map → chunk-XBXDUAIM.js.map} +1 -1
  193. package/dist/{chunk-56QJHQ5C.cjs → chunk-XEEVDZDK.cjs} +5 -5
  194. package/dist/{chunk-56QJHQ5C.cjs.map → chunk-XEEVDZDK.cjs.map} +1 -1
  195. package/dist/{chunk-GXODR6V4.js → chunk-XOIIUO6O.js} +3 -3
  196. package/dist/{chunk-GXODR6V4.js.map → chunk-XOIIUO6O.js.map} +1 -1
  197. package/dist/{chunk-ELYGV32O.cjs → chunk-XTHMC76F.cjs} +5 -5
  198. package/dist/{chunk-ELYGV32O.cjs.map → chunk-XTHMC76F.cjs.map} +1 -1
  199. package/dist/{chunk-FF235PKY.cjs → chunk-XWZEECEX.cjs} +3 -3
  200. package/dist/chunk-XWZEECEX.cjs.map +1 -0
  201. package/dist/{chunk-TVLZZI5Q.cjs → chunk-YJP6DUFO.cjs} +9 -9
  202. package/dist/{chunk-TVLZZI5Q.cjs.map → chunk-YJP6DUFO.cjs.map} +1 -1
  203. package/dist/{chunk-EHQ77LL5.js → chunk-ZB54MTMQ.js} +3 -3
  204. package/dist/{chunk-EHQ77LL5.js.map → chunk-ZB54MTMQ.js.map} +1 -1
  205. package/dist/components/Accordion/index.cjs +2 -2
  206. package/dist/components/Accordion/index.js +1 -1
  207. package/dist/components/Alert/index.cjs +5 -5
  208. package/dist/components/Alert/index.d.cts +1 -1
  209. package/dist/components/Alert/index.d.ts +1 -1
  210. package/dist/components/Alert/index.js +1 -1
  211. package/dist/components/AlertDialog/index.cjs +6 -5
  212. package/dist/components/AlertDialog/index.js +5 -4
  213. package/dist/components/AudioPlayer/index.cjs +6 -6
  214. package/dist/components/AudioPlayer/index.js +1 -1
  215. package/dist/components/Autocomplete/index.cjs +4 -4
  216. package/dist/components/Autocomplete/index.js +3 -3
  217. package/dist/components/Avatar/index.cjs +5 -5
  218. package/dist/components/Avatar/index.js +1 -1
  219. package/dist/components/Badge/index.d.cts +1 -1
  220. package/dist/components/Badge/index.d.ts +1 -1
  221. package/dist/components/Breadcrumb/index.cjs +3 -3
  222. package/dist/components/Breadcrumb/index.js +1 -1
  223. package/dist/components/Button/index.cjs +3 -3
  224. package/dist/components/Button/index.js +1 -1
  225. package/dist/components/Card/index.d.cts +2 -2
  226. package/dist/components/Card/index.d.ts +2 -2
  227. package/dist/components/CountryCodeDropdown/index.cjs +6 -6
  228. package/dist/components/CountryCodeDropdown/index.d.cts +11 -1
  229. package/dist/components/CountryCodeDropdown/index.d.ts +11 -1
  230. package/dist/components/CountryCodeDropdown/index.js +3 -3
  231. package/dist/components/CustomizableDashboard/index.cjs +11 -11
  232. package/dist/components/CustomizableDashboard/index.js +4 -4
  233. package/dist/components/DateInput/index.cjs +4 -4
  234. package/dist/components/DateInput/index.js +3 -3
  235. package/dist/components/Dropdown/index.cjs +13 -9
  236. package/dist/components/Dropdown/index.d.cts +38 -2
  237. package/dist/components/Dropdown/index.d.ts +38 -2
  238. package/dist/components/Dropdown/index.js +3 -3
  239. package/dist/components/FloatingWindow/index.cjs +4 -4
  240. package/dist/components/FloatingWindow/index.js +2 -2
  241. package/dist/components/GlossaryTooltip/index.cjs +4 -4
  242. package/dist/components/GlossaryTooltip/index.js +3 -3
  243. package/dist/components/KeyboardShortcutsOverlay/index.cjs +6 -5
  244. package/dist/components/KeyboardShortcutsOverlay/index.js +4 -3
  245. package/dist/components/Markdown/index.cjs +19 -19
  246. package/dist/components/Markdown/index.js +7 -7
  247. package/dist/components/MediaEditor/index.cjs +15 -14
  248. package/dist/components/MediaEditor/index.js +10 -9
  249. package/dist/components/MediaPlayer/index.cjs +6 -6
  250. package/dist/components/MediaPlayer/index.js +3 -3
  251. package/dist/components/Modal/index.cjs +11 -10
  252. package/dist/components/Modal/index.d.cts +1 -1
  253. package/dist/components/Modal/index.d.ts +1 -1
  254. package/dist/components/Modal/index.js +3 -2
  255. package/dist/components/Pagination/index.cjs +4 -4
  256. package/dist/components/Pagination/index.d.cts +1 -1
  257. package/dist/components/Pagination/index.d.ts +1 -1
  258. package/dist/components/Pagination/index.js +1 -1
  259. package/dist/components/PhoneInput/index.cjs +4 -4
  260. package/dist/components/PhoneInput/index.js +2 -2
  261. package/dist/components/Progress/index.d.cts +1 -1
  262. package/dist/components/Progress/index.d.ts +1 -1
  263. package/dist/components/QuickAction/index.cjs +6 -6
  264. package/dist/components/QuickAction/index.js +1 -1
  265. package/dist/components/RecordButton/index.d.cts +1 -1
  266. package/dist/components/RecordButton/index.d.ts +1 -1
  267. package/dist/components/RichTextEditor/index.cjs +9 -9
  268. package/dist/components/RichTextEditor/index.js +6 -6
  269. package/dist/components/SectionSpyNav/index.cjs +4 -4
  270. package/dist/components/SectionSpyNav/index.js +3 -3
  271. package/dist/components/Select/index.cjs +5 -5
  272. package/dist/components/Select/index.js +3 -3
  273. package/dist/components/Sheet/index.cjs +11 -11
  274. package/dist/components/Sheet/index.js +2 -2
  275. package/dist/components/Slider/index.cjs +5 -5
  276. package/dist/components/Slider/index.d.cts +2 -2
  277. package/dist/components/Slider/index.d.ts +2 -2
  278. package/dist/components/Slider/index.js +1 -1
  279. package/dist/components/SourceTip/index.cjs +4 -4
  280. package/dist/components/SourceTip/index.js +3 -3
  281. package/dist/components/SuperChat/index.cjs +264 -106
  282. package/dist/components/SuperChat/index.cjs.map +1 -1
  283. package/dist/components/SuperChat/index.d.cts +13 -5
  284. package/dist/components/SuperChat/index.d.ts +13 -5
  285. package/dist/components/SuperChat/index.js +255 -97
  286. package/dist/components/SuperChat/index.js.map +1 -1
  287. package/dist/components/SuperChat/plugins/index.cjs +7 -7
  288. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  289. package/dist/components/SuperChat/plugins/index.d.cts +2 -2
  290. package/dist/components/SuperChat/plugins/index.d.ts +2 -2
  291. package/dist/components/SuperChat/plugins/index.js +6 -6
  292. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  293. package/dist/components/Text/index.d.cts +1 -1
  294. package/dist/components/Text/index.d.ts +1 -1
  295. package/dist/components/ThemeProvider/index.cjs +9 -9
  296. package/dist/components/ThemeProvider/index.d.cts +1 -1
  297. package/dist/components/ThemeProvider/index.d.ts +1 -1
  298. package/dist/components/ThemeProvider/index.js +3 -3
  299. package/dist/components/Toggle/index.d.cts +1 -1
  300. package/dist/components/Toggle/index.d.ts +1 -1
  301. package/dist/components/Tooltip/index.cjs +3 -3
  302. package/dist/components/Tooltip/index.js +2 -2
  303. package/dist/components/TranscriptView/index.cjs +3 -3
  304. package/dist/components/TranscriptView/index.js +1 -1
  305. package/dist/datavis.cjs +2 -2
  306. package/dist/datavis.js +1 -1
  307. package/dist/esheet.cjs +15 -14
  308. package/dist/esheet.cjs.map +1 -1
  309. package/dist/esheet.js +12 -11
  310. package/dist/esheet.js.map +1 -1
  311. package/dist/hooks/index.cjs +3 -3
  312. package/dist/hooks/index.d.cts +1 -1
  313. package/dist/hooks/index.d.ts +1 -1
  314. package/dist/hooks/index.js +2 -2
  315. package/dist/index.cjs +2399 -1640
  316. package/dist/index.cjs.map +1 -1
  317. package/dist/index.d.cts +278 -43
  318. package/dist/index.d.ts +278 -43
  319. package/dist/index.js +1296 -574
  320. package/dist/index.js.map +1 -1
  321. package/dist/motion.cjs +87 -0
  322. package/dist/motion.cjs.map +1 -0
  323. package/dist/motion.d.cts +52 -0
  324. package/dist/motion.d.ts +52 -0
  325. package/dist/motion.js +50 -0
  326. package/dist/motion.js.map +1 -0
  327. package/dist/styles/init.css +25 -0
  328. package/dist/styles.css +1 -1
  329. package/dist/tailwind-preset.cjs +4 -4
  330. package/dist/tailwind-preset.js +1 -1
  331. package/dist/{types-BoTeTPdH.d.ts → types-9vK_YdEb.d.ts} +12 -1
  332. package/dist/{types-DyIB9HYT.d.cts → types-DZDroUW8.d.cts} +12 -1
  333. package/dist/{useAnchoredPosition-C7PNglzD.d.ts → useAnchoredPosition-CKwLSQW8.d.cts} +10 -3
  334. package/dist/{useAnchoredPosition-C7PNglzD.d.cts → useAnchoredPosition-CKwLSQW8.d.ts} +10 -3
  335. package/package.json +21 -2
  336. package/dist/CsvBlock-OTFG3PYZ.cjs +0 -15
  337. package/dist/CsvBlock-PUSTBQ5B.js +0 -6
  338. package/dist/HtmlPreviewBlock-QHLSIMWJ.cjs +0 -15
  339. package/dist/HtmlPreviewBlock-YF2YVKKX.js +0 -6
  340. package/dist/MermaidBlock-H3TWNC4D.js +0 -6
  341. package/dist/MermaidBlock-ZLLBO3VY.cjs +0 -15
  342. package/dist/SurveyBlock-JLHS3YQD.js +0 -6
  343. package/dist/SurveyBlock-M2ZRTGVJ.cjs +0 -15
  344. package/dist/chunk-26DPQUSB.cjs.map +0 -1
  345. package/dist/chunk-3PXOIAF6.js +0 -3
  346. package/dist/chunk-4AE2L6AO.cjs.map +0 -1
  347. package/dist/chunk-4PIW3Y5M.js.map +0 -1
  348. package/dist/chunk-5JZIDILK.cjs.map +0 -1
  349. package/dist/chunk-5U6GETAW.js.map +0 -1
  350. package/dist/chunk-6EWJGRC3.js.map +0 -1
  351. package/dist/chunk-7L7OPISJ.cjs.map +0 -1
  352. package/dist/chunk-AESFOMSH.js.map +0 -1
  353. package/dist/chunk-BOOJDRJO.js.map +0 -1
  354. package/dist/chunk-BOW7ZGI2.cjs.map +0 -1
  355. package/dist/chunk-D2GID3YK.js.map +0 -1
  356. package/dist/chunk-DG7KE4YJ.cjs.map +0 -1
  357. package/dist/chunk-EKRT7K2K.js.map +0 -1
  358. package/dist/chunk-EPQPUFS6.cjs.map +0 -1
  359. package/dist/chunk-FDUA6OGN.js.map +0 -1
  360. package/dist/chunk-FDV7EQWH.js.map +0 -1
  361. package/dist/chunk-FF235PKY.cjs.map +0 -1
  362. package/dist/chunk-H7QSGFMZ.cjs.map +0 -1
  363. package/dist/chunk-HK3AMH3Q.cjs.map +0 -1
  364. package/dist/chunk-IILJGFI5.js.map +0 -1
  365. package/dist/chunk-IYXCFIMP.js.map +0 -1
  366. package/dist/chunk-JHZW3Y62.js.map +0 -1
  367. package/dist/chunk-L6D4CKLV.cjs.map +0 -1
  368. package/dist/chunk-LZU7YBXG.js.map +0 -1
  369. package/dist/chunk-MYFZYUPR.cjs.map +0 -1
  370. package/dist/chunk-N3Y43KOB.js.map +0 -1
  371. package/dist/chunk-P2VTQ5AR.cjs.map +0 -1
  372. package/dist/chunk-RDGRKYQ5.cjs.map +0 -1
  373. package/dist/chunk-RYQ3S3KO.cjs.map +0 -1
  374. package/dist/chunk-SEPYBAML.js.map +0 -1
  375. package/dist/chunk-SK7H3Z67.cjs.map +0 -1
  376. package/dist/chunk-SPWVKDGC.cjs.map +0 -1
  377. package/dist/chunk-U5TTXN45.cjs.map +0 -1
  378. package/dist/chunk-XMCIXHGH.js.map +0 -1
  379. package/dist/chunk-XWYKLEKG.js.map +0 -1
  380. package/dist/chunk-Y6YSJPVC.js.map +0 -1
package/README.md CHANGED
@@ -1,619 +1,136 @@
1
1
  # @mieweb/ui
2
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
- - [Date & Time Standard](#date--time-standard)
22
- - [Storybook](#storybook)
23
- - [Using in Other Projects](#using-in-other-projects)
24
- - [Brand System](#brand-system)
25
- - [Theming](#theming)
26
- - [Components](#components)
27
- - [Hooks](#hooks)
28
- - [Utilities](#utilities)
29
- - [Releases](#releases)
30
- - [Contributing](#contributing)
31
-
32
- ## Installation
3
+ **Build applications that feel familiar from the first interaction.**
33
4
 
34
- ```bash
35
- npm install @mieweb/ui
36
- # or
37
- yarn add @mieweb/ui
38
- # or
39
- pnpm add @mieweb/ui
40
- ```
41
-
42
- ### Peer Dependencies
43
-
44
- This library requires React 18+ and React DOM 18+:
45
-
46
- ```bash
47
- npm install react react-dom
48
- ```
49
-
50
- ### Optional Add-ons
51
-
52
- Heavy or specialized dependencies are kept in separate entry points so they don't bloat the core bundle. Install the peer dependencies for the add-ons you need:
53
-
54
- | Entry point | Install | Import path |
55
- | ------------------------ | --------------------------------------------- | -------------------- |
56
- | **AG Grid** (deprecated) | `npm install ag-grid-community ag-grid-react` | `@mieweb/ui/ag-grid` |
57
- | **DataVis** | `npm install @mieweb/datavis datavis-ace` | `@mieweb/ui/datavis` |
58
-
59
- > ⚠️ **AGGrid is deprecated.** Use DataVis NITRO (`@mieweb/ui/datavis`) for all
60
- > tables. The `@mieweb/ui/ag-grid` entry remains available for existing
61
- > consumers but will be removed in a future major release.
62
-
63
- ### AI Agent Rules
64
-
65
- Working with AI coding agents (Copilot, Claude Code, Cursor, …)? Install
66
- @mieweb/ui's agent rules into your repo so agents use library components
67
- (DataVis NITRO for tables, `Button`/`Badge`/`Modal`/… instead of raw HTML):
68
-
69
- ```bash
70
- npx @mieweb/ui init-agent
71
- ```
72
-
73
- This writes `.github/instructions/mieweb-ui.instructions.md` (auto-applied by
74
- VS Code Copilot) and a marked block in `AGENTS.md` (the cross-tool convention).
75
- Idempotent — rerun after upgrading to refresh the rules. See [agent/](agent/).
76
-
77
- ## Quick Start
78
-
79
- ### Option 1: With Tailwind CSS (Recommended)
80
-
81
- If your project uses Tailwind CSS 4, you can use the library's Tailwind preset for the best experience:
82
-
83
- 1. Add the preset to your `tailwind.config.js`:
84
-
85
- ```js
86
- // tailwind.config.js
87
- module.exports = {
88
- presets: [require('@mieweb/ui/tailwind-preset')],
89
- content: [
90
- // ... your content
91
- './node_modules/@mieweb/ui/dist/**/*.js',
92
- ],
93
- // Override theme values to match your brand
94
- theme: {
95
- extend: {
96
- colors: {
97
- primary: {
98
- 500: '#your-brand-color',
99
- },
100
- },
101
- },
102
- },
103
- };
104
- ```
5
+ People should not have to relearn how to navigate, fill out a form, or recover
6
+ from an error every time they open another application. Clean, consistent
7
+ interfaces let users carry what they already know from one task to the next.
8
+ Predictable controls and clear feedback reduce hesitation and leave more
9
+ attention for the work that matters.
105
10
 
106
- 2. Import and use components:
11
+ That consistency should extend beyond appearance. A coherent experience adapts
12
+ from mobile to desktop, remains legible in light and dark mode, accommodates
13
+ different languages and right-to-left layouts, and supports keyboard and
14
+ assistive-technology users. Responsive design, internationalization (i18n), and
15
+ accessibility (a11y) belong in the foundation, not on a finishing checklist.
107
16
 
108
- ```tsx
109
- import { Button, Card, Input } from '@mieweb/ui';
17
+ `@mieweb/ui` brings that approach to your browser interface through reusable
18
+ controls, navigation, forms, feedback, and data displays. Shared interaction
19
+ patterns provide familiarity; theme and brand tokens give you room to make the
20
+ application your own. Developed at MIE, the library is available for applications
21
+ in any domain under its [license terms](#license), not just MIE products.
110
22
 
111
- function App() {
112
- return (
113
- <Card>
114
- <Input label="Email" type="email" />
115
- <Button>Submit</Button>
116
- </Card>
117
- );
118
- }
119
- ```
23
+ The components are built with React, but your application does not have to be.
24
+ Use them throughout a React application or embed them in selected areas of
25
+ Bootstrap-based, server-rendered, or other non-React pages. Adopt a component or
26
+ a workflow at a time without rewriting the rest of your interface.
120
27
 
121
- ### Option 2: Pre-compiled CSS
28
+ Start with a common foundation and spend more time on what makes your application
29
+ valuable. The components support inclusive design; they do not automatically
30
+ translate your content or guarantee accessibility. Validate their composition,
31
+ language, and behavior with the people and devices your application serves.
122
32
 
123
- If you're not using Tailwind CSS, you can import the pre-compiled stylesheet:
33
+ **The library is `@mieweb/ui`. Storybook is its documentation and experimentation
34
+ environment**, where you can explore those components without building an app
35
+ first. This introduction is shared by GitHub, npm, and Storybook.
124
36
 
125
- ```tsx
126
- import '@mieweb/ui/styles.css';
127
- import { Button } from '@mieweb/ui';
128
- ```
37
+ - [See it in action](#see-it-in-action), no installation needed.
38
+ - [Get started](#get-started), with or without an AI coding agent.
39
+ - [Explore and compose components](#explore-and-compose-components).
40
+ - [Contribute or run locally](#contribute-or-run-locally).
129
41
 
130
- ## Development
42
+ ## See It In Action
131
43
 
132
- ### Getting Started
44
+ [![Open the interactive dashboard demo: navigation, summary cards, recent orders, and activity](https://ui.mieweb.org/dashboard-preview.png)](https://ui.mieweb.org/?path=/story/dashboards-dashboard-demo--dashboard)
133
45
 
134
- 1. **Clone the repository (including submodules):**
46
+ **[Open the interactive dashboard](https://ui.mieweb.org/?path=/story/dashboards-dashboard-demo--dashboard)**
47
+ to see navigation, headers, cards, and data displays working together in an
48
+ application layout. Try the brand and theme switchers to see how the same
49
+ components adapt. No installation required.
135
50
 
136
- ```bash
137
- git clone --recurse-submodules https://github.com/mieweb/ui.git
138
- cd ui
139
- ```
51
+ ## Get Started
140
52
 
141
- > `--recurse-submodules` is strongly recommended for first clone so the `packages/esheet` and `packages/ychart` submodules are populated immediately. Without them, the eSheet and YChart stories will not work. DataVis NITRO is not a submodule — it ships as the published `@mieweb/datavis` npm package.
53
+ ### Install in Your Application
142
54
 
143
- If you already cloned without submodules, run:
144
-
145
- ```bash
146
- git submodule update --init --recursive
147
- ```
148
-
149
- 2. **Install dependencies:**
150
-
151
- ```bash
152
- npm install
153
- ```
154
-
155
- Use one package manager consistently per clone. The commands below use npm.
156
-
157
- 3. **eSheet packages build automatically.** A `prestorybook` hook runs `npm run build:esheet` before Storybook starts, so the `@esheet/*` packages are compiled on first run with no manual step. It's a near-instant no-op on later runs once the artifacts exist.
158
-
159
- If `packages/esheet` is updated later (submodule update, branch switch, or pull) and you need to force a fresh rebuild, remove the built artifacts and run the build again:
160
-
161
- ```bash
162
- rm -f packages/esheet/packages/core/dist/index.d.ts packages/esheet/packages/renderer/src/index.output.css
163
- npm run build:esheet
164
- ```
165
-
166
- 4. **Start Storybook:**
167
-
168
- ```bash
169
- npm run storybook
170
- ```
171
-
172
- This starts the Storybook development server at [http://localhost:6006](http://localhost:6006) with all components, including eSheet, DataVis NITRO, and YChart.
173
-
174
- ### How the Sub-Packages Are Wired
175
-
176
- Storybook integrates three sibling MIE projects, each sourced differently:
177
-
178
- - **DataVis NITRO** — npm package `@mieweb/datavis`. No build step; consumed as a published package (no submodule needed).
179
- - **eSheet** — git submodule `packages/esheet`. Built automatically by the `prestorybook` hook; rebuilds only when its artifacts are missing.
180
- - **YChart** — git submodule `packages/ychart`. No build step; the story imports it directly from source via a relative dynamic import, and Storybook's Vite config adds a `virtual:git-info` plugin, a `__YCHART_VERSION__` define, and dependency pre-bundling (`optimizeDeps`).
181
-
182
- ### Library Development (watch mode)
183
-
184
- To rebuild the library on file changes (for consumers that link this repo locally):
185
-
186
- ```bash
187
- npm run dev
188
- ```
189
-
190
- This watches for source changes and rebuilds automatically. It does **not** start Storybook.
191
-
192
- ### Available Scripts
193
-
194
- | Script | Description |
195
- | ------------------------- | ------------------------------------------------------------------------------------------------- |
196
- | `npm run dev` | Watch & rebuild the library (for local consumers, not Storybook) |
197
- | `npm run build:esheet` | Build eSheet submodule packages (auto-run by `prestorybook`/`prebuild`; skips when already built) |
198
- | `npm run build` | Build the library for production |
199
- | `npm run storybook` | Start Storybook development server |
200
- | `npm run build-storybook` | Build Storybook for static hosting |
201
- | `npm run typecheck` | Run TypeScript type checking |
202
- | `npm run lint` | Run ESLint |
203
- | `npm run lint:fix` | Run ESLint with auto-fix |
204
- | `npm run format` | Check code formatting with Prettier |
205
- | `npm run format:fix` | Fix code formatting with Prettier |
206
- | `npm run test` | Run tests |
207
- | `npm run test:watch` | Run tests in watch mode |
208
-
209
- ## Date & Time Standard
210
-
211
- For UI/UX date and time behavior, this project uses **Luxon** as the preferred library.
212
-
213
- ### Guidelines
214
-
215
- - Use `DateTime` from `luxon` for all new date/time parsing, formatting, and comparisons.
216
- - Keep timezone explicit when logic depends on business rules (for example: office hours, “open now”, appointment windows).
217
- - Use IANA timezone identifiers (for example: `America/New_York`) instead of abbreviations.
218
- - Prefer storing/transmitting ISO-8601 values and convert for display at the component edge.
219
- - Avoid adding new date logic with raw `Date` math unless there is a clear performance or compatibility reason.
220
-
221
- ### Examples
222
-
223
- ```ts
224
- import { DateTime } from 'luxon';
225
-
226
- const localDisplay = DateTime.fromISO(timestamp).toFormat('LLL d, yyyy h:mm a');
227
-
228
- const inProviderZone = DateTime.fromISO(timestamp, {
229
- zone: 'America/New_York',
230
- });
231
-
232
- const isOpen =
233
- DateTime.now().setZone('America/New_York') <
234
- inProviderZone.plus({ hours: 1 });
235
- ```
236
-
237
- ## Storybook
238
-
239
- Storybook provides interactive documentation and a component playground where you can explore all components with different props and themes.
240
-
241
- ### Running Storybook
242
-
243
- ```bash
244
- npm run storybook
245
- ```
246
-
247
- This starts the Storybook development server at [http://localhost:6006](http://localhost:6006).
248
-
249
- ### Features in Storybook
250
-
251
- - **Component Explorer**: Browse all components with live examples
252
- - **Props Documentation**: See all available props for each component
253
- - **Theme Switcher**: Toggle between light and dark modes
254
- - **Brand Switcher**: Preview components with different brand themes (BlueHive, Enterprise Health, WebChart, Waggleline, MIE)
255
- - **Accessibility Panel**: Check accessibility compliance for each component
256
- - **Controls**: Interactively modify component props
257
-
258
- ### Building Storybook
259
-
260
- To build a static version of Storybook for deployment:
261
-
262
- ```bash
263
- npm run build-storybook
264
- ```
265
-
266
- The output will be in the `storybook-static` directory.
267
-
268
- ### Configuring the Ozwell API (AI stories)
269
-
270
- The AI stories (AIChat, Hands-Free Chat, and the DataVis NITRO **Ozwell Assistant**
271
- story) call the real Ozwell backend when a key is configured and fall back to a
272
- canned reply when it isn't. Set the key and endpoint from the browser console:
273
-
274
- ```js
275
- // Recommended — survives reloads and is shared with the story iframe:
276
- localStorage.setItem(
277
- 'ozwellConfig',
278
- JSON.stringify({ apiKey: 'YOUR_KEY', baseURL: 'https://your-ozwell-host' })
279
- );
280
- ```
281
-
282
- `baseURL` is optional (defaults to `https://api.ozwell.ai`); other optional keys are
283
- `model`, `system`, and `temperature`. Never commit a key — see
284
- [src/components/AI/OZWELL-BACKEND.md](src/components/AI/OZWELL-BACKEND.md) for full
285
- details, including why `window.__ozwell` is unreliable inside Storybook iframes and
286
- how to proxy the key for public deploys.
287
-
288
- ## Using in Other Projects
289
-
290
- ### Method 1: NPM Package (Recommended)
291
-
292
- Once published, install the package in your project:
55
+ The components require React 18+ and React DOM 18+ to render, including when
56
+ embedded in a non-React page. If your project already has those dependencies:
293
57
 
294
58
  ```bash
295
59
  npm install @mieweb/ui
296
60
  ```
297
61
 
298
- Then import components:
299
-
300
- ```tsx
301
- import { Button, Card, Input, ThemeProvider } from '@mieweb/ui';
302
- import '@mieweb/ui/styles.css'; // or use a brand CSS file
303
-
304
- function App() {
305
- return (
306
- <ThemeProvider>
307
- <Card>
308
- <Card.Header>
309
- <Card.Title>Welcome</Card.Title>
310
- </Card.Header>
311
- <Card.Content>
312
- <Input label="Email" type="email" placeholder="you@example.com" />
313
- <Button className="mt-4">Submit</Button>
314
- </Card.Content>
315
- </Card>
316
- </ThemeProvider>
317
- );
318
- }
319
- ```
320
-
321
- ### Method 2: Local Development (npm link)
322
-
323
- For local development across projects:
62
+ Use `pnpm add @mieweb/ui` or `yarn add @mieweb/ui` if that is your project's
63
+ package manager. You do not need to clone this repository or run Storybook to use
64
+ the library.
324
65
 
325
- 1. **In the @mieweb/ui directory:**
66
+ For a project without React, install the rendering dependencies:
326
67
 
327
68
  ```bash
328
- cd /path/to/mieweb-ui
329
- npm run build
330
- npm link
69
+ npm install react react-dom
331
70
  ```
332
71
 
333
- 2. **In your consuming project:**
334
-
335
- ```bash
336
- cd /path/to/your-project
337
- npm link @mieweb/ui
338
- ```
72
+ Using an AI coding agent? [Set up its instructions](#set-up-your-ai-coding-agent)
73
+ and [read the component-selection and integration rules](https://github.com/mieweb/ui/blob/main/agent/mieweb-ui.instructions.md)
74
+ before asking it to add components to your application.
339
75
 
340
- 3. **Import and use components:**
76
+ Mount components into a dedicated DOM element with React DOM's `createRoot`, leaving the rest of
77
+ the page under its existing framework's control. Unmount the React root when the
78
+ host removes that area. This requires a JavaScript build that supports React;
79
+ the components are not framework-free HTML widgets.
341
80
 
342
- ```tsx
343
- import { Button } from '@mieweb/ui';
344
- import '@mieweb/ui/dist/styles.css';
345
- ```
81
+ When embedding alongside Bootstrap or other stylesheets, check CSS resets,
82
+ global selectors, and theme styles for conflicts. Mounting into a separate DOM
83
+ element does not isolate CSS.
346
84
 
347
- ### Method 3: Direct Path Import
85
+ ### Set Up Your AI Coding Agent
348
86
 
349
- For monorepo setups or when you want to reference the source directly:
87
+ From your application's repository root, run:
350
88
 
351
- ```tsx
352
- // In your consuming project's package.json
353
- {
354
- "dependencies": {
355
- "@mieweb/ui": "file:../mieweb-ui"
356
- }
357
- }
89
+ ```bash
90
+ npx @mieweb/ui init-agent
358
91
  ```
359
92
 
360
- Then run `npm install` and import as usual.
93
+ This installs component-selection, composition, theming, and accessibility rules
94
+ so your agent can start with existing library components. It writes
95
+ `mieweb-ui.instructions.md` in `.github/instructions/` for VS Code Copilot and
96
+ updates a managed block in `AGENTS.md` for agents that read that file. Rerun after upgrading
97
+ `@mieweb/ui` to refresh the rules.
361
98
 
362
- ### Using with Different Frameworks
363
-
364
- #### Next.js
365
-
366
- ```tsx
367
- // app/layout.tsx or pages/_app.tsx
368
- import '@mieweb/ui/brands/bluehive.css';
369
- import { ThemeProvider } from '@mieweb/ui';
99
+ Read the [agent setup guide and rules](https://github.com/mieweb/ui/tree/main/agent).
100
+ These are instructions for coding agents, not an automatic PR reviewer or merge
101
+ gate. Agent-assisted and manual development use the same library and setup below.
370
102
 
371
- export default function RootLayout({ children }) {
372
- return (
373
- <html lang="en">
374
- <body>
375
- <ThemeProvider>{children}</ThemeProvider>
376
- </body>
377
- </html>
378
- );
379
- }
380
- ```
381
-
382
- #### Vite
383
-
384
- ```tsx
385
- // main.tsx
386
- import React from 'react';
387
- import ReactDOM from 'react-dom/client';
388
- import '@mieweb/ui/brands/enterprise-health.css';
389
- import { ThemeProvider } from '@mieweb/ui';
390
- import App from './App';
391
-
392
- ReactDOM.createRoot(document.getElementById('root')!).render(
393
- <React.StrictMode>
394
- <ThemeProvider>
395
- <App />
396
- </ThemeProvider>
397
- </React.StrictMode>
398
- );
399
- ```
103
+ ### Render Your First Component
400
104
 
401
- #### Meteor
105
+ Import the precompiled stylesheet once in your application's entry point or root
106
+ layout. Import a brand stylesheet after it when you want that brand's tokens:
402
107
 
403
108
  ```tsx
404
- // client/main.tsx
405
- import { Meteor } from 'meteor/meteor';
406
- import React from 'react';
407
- import { createRoot } from 'react-dom/client';
109
+ import '@mieweb/ui/styles.css';
408
110
  import '@mieweb/ui/brands/bluehive.css';
409
- import { ThemeProvider } from '@mieweb/ui';
410
- import App from '/imports/ui/App';
411
-
412
- Meteor.startup(() => {
413
- const container = document.getElementById('react-target');
414
- const root = createRoot(container!);
415
- root.render(
416
- <ThemeProvider>
417
- <App />
418
- </ThemeProvider>
419
- );
420
- });
421
- ```
422
-
423
- ## Brand System
424
-
425
- The library includes pre-configured themes for multiple brands. Each brand has its own design system with unique colors, typography, border radius, and shadows.
426
-
427
- ### Available Brands
428
-
429
- | Brand | Primary Color | Font | Description |
430
- | --------------------- | -------------------- | ------ | ------------------------------------------------- |
431
- | **BlueHive** | `#27AAE1` (Blue) | Nunito | DOT Physical scheduling and healthcare compliance |
432
- | **Enterprise Health** | `#6E2B68` (Burgundy) | Jost | Employee health and occupational medicine |
433
- | **WebChart** | `#F5841F` (Orange) | Inter | Future-ready electronic health record system |
434
- | **Waggleline** | `#17AEED` (Blue) | Inter | Experience visualization and orchestration |
435
- | **MIE** | `#27AE60` (Green) | Inter | Healthcare software and services |
436
-
437
- ### Using a Brand Theme
438
-
439
- #### Method 1: Import the brand CSS file
440
-
441
- ```tsx
442
- // Import the brand's CSS file
443
- import '@mieweb/ui/brands/enterprise-health.css';
444
-
445
- import { Button, Card } from '@mieweb/ui';
446
111
  ```
447
112
 
448
- #### Method 2: Use the ThemeProvider with brand
113
+ This CSS path does not require Tailwind in your application. For a first interactive
114
+ example, render a theme switcher inside the provider:
449
115
 
450
116
  ```tsx
451
- import { ThemeProvider } from '@mieweb/ui';
452
- import { enterpriseHealthBrand } from '@mieweb/ui/brands';
453
-
454
- function App() {
455
- return (
456
- <ThemeProvider brand={enterpriseHealthBrand}>
457
- <YourApp />
458
- </ThemeProvider>
459
- );
460
- }
461
- ```
462
-
463
- #### Method 3: Tailwind CSS preset
464
-
465
- ```js
466
- // tailwind.config.js
467
- const { enterpriseHealthBrand } = require('@mieweb/ui/brands');
468
- const { createBrandPreset } = require('@mieweb/ui/brands/types');
469
-
470
- module.exports = {
471
- presets: [createBrandPreset(enterpriseHealthBrand)],
472
- // ...
473
- };
474
- ```
475
-
476
- ### Brand Design Tokens
477
-
478
- Each brand defines the following design tokens:
479
-
480
- #### Enterprise Health
481
-
482
- Extracted from [enterprisehealth.com](https://enterprisehealth.com):
483
-
484
- ```css
485
- /* Primary: Burgundy/Purple */
486
- --mieweb-primary-600: #6e2b68;
487
-
488
- /* Secondary: Deep Teal Blue (for gradients) */
489
- --mieweb-secondary: #00497a;
490
-
491
- /* Accent: Gold/Yellow (logo) */
492
- --mieweb-accent: #f8b700;
493
-
494
- /* Brand Gradient */
495
- --mieweb-gradient: linear-gradient(111.02deg, #00497a, #6e2b68);
496
-
497
- /* Typography */
498
- --mieweb-font-sans: 'Jost', ui-sans-serif, system-ui, sans-serif;
499
-
500
- /* Border Radius (larger, more rounded) */
501
- --mieweb-radius-sm: 0.375rem; /* 6px - badges */
502
- --mieweb-radius-md: 0.625rem; /* 10px - buttons */
503
- --mieweb-radius-lg: 0.75rem; /* 12px - inputs */
504
- --mieweb-radius-2xl: 1.5rem; /* 24px - cards */
505
-
506
- /* Shadows (subtle, layered) */
507
- --mieweb-shadow-card:
508
- 0 16px 32px 0 rgba(34, 35, 38, 0.05), 0 8px 16px 0 rgba(34, 35, 38, 0.05);
509
- ```
510
-
511
- #### BlueHive
512
-
513
- ```css
514
- /* Primary: Blue */
515
- --mieweb-primary-500: #27aae1;
516
-
517
- /* Typography */
518
- --mieweb-font-sans: 'Nunito', ui-sans-serif, system-ui, sans-serif;
519
- ```
520
-
521
- ### Creating a Custom Brand
522
-
523
- You can create your own brand configuration:
524
-
525
- ```ts
526
- import type { BrandConfig } from '@mieweb/ui/brands/types';
527
-
528
- export const myBrand: BrandConfig = {
529
- name: 'my-brand',
530
- displayName: 'My Brand',
531
- description: 'Custom brand for my application',
532
-
533
- colors: {
534
- primary: {
535
- 50: '#f0f9ff',
536
- // ... full color scale 50-950
537
- 600: '#0284c7', // Main brand color
538
- // ...
539
- },
540
- light: {
541
- background: '#ffffff',
542
- foreground: '#171717',
543
- // ... semantic colors
544
- },
545
- dark: {
546
- background: '#171717',
547
- foreground: '#fafafa',
548
- // ... semantic colors
549
- },
550
- },
551
-
552
- typography: {
553
- fontFamily: {
554
- sans: ['Your Font', 'ui-sans-serif', 'system-ui', 'sans-serif'],
555
- mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'monospace'],
556
- },
557
- },
558
-
559
- borderRadius: {
560
- none: '0',
561
- sm: '0.25rem',
562
- md: '0.5rem',
563
- lg: '0.75rem',
564
- xl: '1rem',
565
- '2xl': '1.5rem',
566
- full: '9999px',
567
- },
568
-
569
- boxShadow: {
570
- card: '0 1px 3px 0 rgb(0 0 0 / 0.1)',
571
- dropdown: '0 4px 6px -1px rgb(0 0 0 / 0.1)',
572
- modal: '0 10px 15px -3px rgb(0 0 0 / 0.1)',
573
- },
574
- };
575
- ```
576
-
577
- ## Theming
578
-
579
- The library uses CSS custom properties for theming. Override these variables to customize the appearance:
580
-
581
- ```css
582
- :root {
583
- /* Primary color scale */
584
- --mieweb-primary-500: #27aae1;
585
-
586
- /* Semantic colors */
587
- --mieweb-background: hsl(0 0% 100%);
588
- --mieweb-foreground: hsl(222.2 84% 4.9%);
589
-
590
- /* Border radius */
591
- --mieweb-radius-md: 0.5rem;
592
-
593
- /* Font */
594
- --mieweb-font-sans: 'Your Font', sans-serif;
595
- }
596
- ```
597
-
598
- ### Dark Mode
599
-
600
- The library supports dark mode via the `.dark` class or `data-theme="dark"` attribute on a parent element:
601
-
602
- ```tsx
603
- import { ThemeProvider, useThemeContext, Button } from '@mieweb/ui';
117
+ import { Button, ThemeProvider, useThemeContext } from '@mieweb/ui';
604
118
 
605
119
  function ThemeToggle() {
606
120
  const { resolvedTheme, setTheme } = useThemeContext();
121
+
607
122
  return (
608
123
  <Button
124
+ aria-label="Dark mode"
125
+ aria-pressed={resolvedTheme === 'dark'}
609
126
  onClick={() => setTheme(resolvedTheme === 'dark' ? 'light' : 'dark')}
610
127
  >
611
- Toggle Theme
128
+ Dark mode
612
129
  </Button>
613
130
  );
614
131
  }
615
132
 
616
- function App() {
133
+ export default function App() {
617
134
  return (
618
135
  <ThemeProvider>
619
136
  <ThemeToggle />
@@ -622,186 +139,92 @@ function App() {
622
139
  }
623
140
  ```
624
141
 
625
- ## Components
626
-
627
- ### Primitives
628
-
629
- - `Button` - Multi-variant button with loading state
630
- - `Input` - Text input with label, error, and helper text
631
- - `Card` - Container component with header, content, and footer
632
- - `Text` - Typography component with variants
633
- - `Badge` - Status indicators and labels
634
- - `Alert` - Feedback messages
635
-
636
- ### Specialized Inputs
637
-
638
- - `PhoneInput` - US phone number formatting
639
- - `DateInput` - Date input with validation modes (DOB, expiration, etc.)
640
-
641
- ### Overlays
642
-
643
- - `Tooltip` - Accessible tooltip with multiple placements
644
- - `Dropdown` - Dropdown menu with items, separators, and labels
645
-
646
- ### Utilities
647
-
648
- - `VisuallyHidden` - Screen reader only content
649
- - `ThemeProvider` - Theme context provider
650
-
651
- ## Hooks
652
-
653
- - `useTheme()` - Theme state management
654
- - `useClickOutside()` - Detect clicks outside an element
655
- - `useEscapeKey()` - Handle escape key press
656
- - `useFocusTrap()` - Trap focus within a container
657
- - `usePrefersReducedMotion()` - Detect reduced motion preference
658
-
659
- ## Utilities
660
-
661
- ### Class Names
662
-
663
- ```tsx
664
- import { cn } from '@mieweb/ui/utils';
665
-
666
- // Merge classes with Tailwind conflict resolution
667
- cn('px-4 py-2', isActive && 'bg-primary-500', className);
668
- ```
669
-
670
- ### Phone Utilities
671
-
672
- ```tsx
673
- import { formatPhoneNumber, isValidPhoneNumber } from '@mieweb/ui/utils';
674
-
675
- formatPhoneNumber('5551234567'); // "(555) 123-4567"
676
- isValidPhoneNumber('5551234567'); // true
677
- ```
678
-
679
- ### Date Utilities
680
-
681
- ```tsx
682
- import { formatDateValue, calculateAge, isValidDate } from '@mieweb/ui/utils';
683
-
684
- formatDateValue('01152024'); // "01/15/2024"
685
- calculateAge('01/15/1990'); // 34
686
- isValidDate('01/15/2024'); // true
687
- ```
688
-
689
- ## Tree-Shaking
690
-
691
- Import components directly for optimal bundle size:
692
-
693
- ```tsx
694
- // Import only what you need
695
- import { Button } from '@mieweb/ui/components/Button';
696
- import { useTheme } from '@mieweb/ui/hooks';
697
- import { cn } from '@mieweb/ui/utils';
698
- ```
699
-
700
- ## TypeScript
701
-
702
- All components are fully typed. Import types as needed:
703
-
704
- ```tsx
705
- import type { ButtonProps, InputProps, Theme } from '@mieweb/ui';
706
- ```
707
-
708
- ## Releases
709
-
710
- This package uses automated releases via GitHub Actions. There are two release channels:
711
-
712
- ### Release Channels
713
-
714
- | Channel | npm Tag | Install Command | Description |
715
- | -------------- | -------- | ----------------------------- | ------------------------- |
716
- | **Stable** | `latest` | `npm install @mieweb/ui` | Production-ready releases |
717
- | **Prerelease** | `next` | `npm install @mieweb/ui@next` | Latest from `main` branch |
718
-
719
- ### Prerelease (Automatic)
720
-
721
- Every push to the `main` branch automatically publishes a prerelease version to npm:
722
-
723
- - **Version format:** `x.y.z-dev.{run_number}` (e.g., `0.1.0-dev.45`)
724
- - **npm tag:** `next`
725
- - **Install:** `npm install @mieweb/ui@next`
726
-
727
- This allows consumers to test the latest changes before a stable release.
728
-
729
- ### Stable Release (Manual)
730
-
731
- To create a stable release:
732
-
733
- 1. Go to the repository on GitHub
734
- 2. Navigate to **Actions** → **Create Stable Release**
735
- 3. Click **Run workflow**
736
- 4. Select the version bump type:
737
- - `patch` - Bug fixes (0.1.0 → 0.1.1)
738
- - `minor` - New features (0.1.0 → 0.2.0)
739
- - `major` - Breaking changes (0.1.0 → 1.0.0)
740
- 5. Click **Run workflow**
741
-
742
- The workflow will:
743
-
744
- 1. Bump the version in `package.json`
745
- 2. Commit and push the change
746
- 3. Create a git tag (e.g., `v0.2.0`)
747
- 4. Trigger the release workflow which publishes to npm and creates a GitHub Release
748
-
749
- ### Manual Tag Release
750
-
751
- You can also create a release by pushing a version tag directly:
752
-
753
- ```bash
754
- # Create and push a tag
755
- git tag v1.0.0
756
- git push origin v1.0.0
757
- ```
758
-
759
- The release workflow will automatically:
760
-
761
- - Run tests and build
762
- - Publish to npm with the appropriate tag (`latest` for stable, `next` for prereleases like `v1.0.0-beta.1`)
763
- - Create a GitHub Release with auto-generated release notes
764
-
765
- ### Version Guidelines
766
-
767
- We follow [Semantic Versioning](https://semver.org/):
768
-
769
- - **MAJOR** version for incompatible API changes
770
- - **MINOR** version for backwards-compatible functionality additions
771
- - **PATCH** version for backwards-compatible bug fixes
772
-
773
- ## Contributing
774
-
775
- We welcome contributions! This README and the [Storybook](https://ui.mieweb.org)
776
- are the **consumer** docs (how to _use_ the library). If you want to _build or
777
- change_ the library itself, the **provider / maintainer** guide is
778
- **[CONTRIBUTING.md](CONTRIBUTING.md)** — it covers repo layout, the component
779
- anatomy and conventions, the autodocs story pattern, exports & tree-shaking,
780
- build, testing (unit + visual baselines), submodules, brands, and the release
781
- process.
782
-
783
- Quick start for contributors:
784
-
785
- ```bash
786
- git clone --recurse-submodules https://github.com/mieweb/ui.git
787
- cd ui && pnpm install
788
- pnpm storybook # http://localhost:6006
789
- # before opening a PR:
790
- pnpm typecheck && pnpm lint && pnpm format && pnpm test
791
- ```
792
-
793
- Non-trivial modules also carry a `MAINTAINERS.md` next to the code with internals,
794
- invariants, and gotchas for that module — see the table in
795
- [CONTRIBUTING.md](CONTRIBUTING.md#per-component-maintainer-notes).
142
+ In production, supply translated labels through your application's i18n system.
143
+ In Next.js App Router, put this interactive example in a client component and
144
+ import global styles from the root layout.
145
+
146
+ Already using Tailwind? Follow the
147
+ [Tailwind 4 integration guide](https://github.com/mieweb/ui/blob/main/lessons/tailwind4-integration.md)
148
+ for CSS-first configuration, `@source`, and theme tokens. Tailwind 3 consumers can
149
+ use `@mieweb/ui/tailwind-preset`. Do not apply a Tailwind 3 configuration as a
150
+ Tailwind 4 setup.
151
+
152
+ ### Add Specialized Capabilities When Needed
153
+
154
+ Heavy integrations use separate entry points and optional peer dependencies so
155
+ you only install what you need:
156
+
157
+ - **Data grids:** [DataVis NITRO](https://ui.mieweb.org/?path=/docs/grids-datavis-nitro--docs), imported from `@mieweb/ui/datavis`.
158
+ - **Form authoring and rendering:** [eSheet integration](https://github.com/mieweb/ui/blob/main/src/components/ESheet/MAINTAINERS.md), imported from `@mieweb/ui/esheet`.
159
+ - **Rich text and code editing:** [Kerebron editor setup](https://github.com/mieweb/ui/tree/main/src/components/RichEditor), imported from `@mieweb/ui/kerebron`.
160
+
161
+ Check the selected integration's dependencies before importing its entry point.
162
+ AGGrid is deprecated for new work; start with DataVis NITRO for tabular data.
163
+
164
+ ## Explore and Compose Components
165
+
166
+ Open [the component explorer](https://ui.mieweb.org/). Storybook is the wrapper
167
+ around the examples: its sidebar selects components, a **story** demonstrates a
168
+ particular configuration, and **Docs** presents guidance and the API. **Controls**
169
+ change example props; theme and brand tools let you inspect different appearances.
170
+ Those tools belong to Storybook, not to the component you install.
171
+
172
+ Start with the user's task, then compare components before choosing an API:
173
+
174
+ - **Browse and work with records:** start with [DataVis NITRO](https://ui.mieweb.org/?path=/docs/grids-datavis-nitro--docs)
175
+ and compare [Table](https://ui.mieweb.org/?path=/docs/grids-table--docs).
176
+ NITRO provides integrated data tooling; Table provides lower-level markup.
177
+ Consider the behavior your application would need to supply and consult the
178
+ selection rules before choosing an exception.
179
+ - **Navigate a long document:** compare [TableOfContents](https://ui.mieweb.org/?path=/docs/navigation-tableofcontents--docs)
180
+ and [ReadingProgressBar](https://ui.mieweb.org/?path=/docs/navigation-readingprogressbar--docs).
181
+ A TOC provides named destinations and navigation. A reading bar is a decorative
182
+ document-scroll cue, not navigation or proof of reading. They can complement
183
+ each other; neither may be needed for short content.
184
+ - **Assemble an application view:** explore the [Dashboard example](https://ui.mieweb.org/?path=/story/dashboards-dashboard-demo--dashboard).
185
+ Inspect how navigation, headers, and content fit together, then adapt the
186
+ composition to your workflow rather than copying the layout indiscriminately.
187
+
188
+ For each choice, ask why it fits, when an alternative would be better, what state
189
+ your application owns, and how it behaves alongside neighboring components.
190
+ Exercise loading, empty, error, keyboard, and narrow-screen states in the actual
191
+ application, not only the isolated story.
192
+
193
+ The catalog is still being improved: not every component has comparison or
194
+ composition guidance yet. Do not treat an isolated example as evidence that no
195
+ related component exists. Use the
196
+ [component policy](https://github.com/mieweb/ui/blob/main/lessons/component-policy.md)
197
+ and flag missing or conflicting guidance in a
198
+ [documentation issue](https://github.com/mieweb/ui/issues/new).
199
+
200
+ ### Go Deeper
201
+
202
+ - [Branding](https://ui.mieweb.org/?path=/docs/branding--docs): the brand system and visual tokens.
203
+ - [Adoption guides](https://github.com/mieweb/ui/blob/main/lessons/README.md): integration pitfalls and migration paths for existing applications.
204
+ - [AI-assisted migration plan](https://github.com/mieweb/ui/blob/main/lessons/execution-plan.md): an ordered approach to adopting the library.
205
+ - [Meteor migration](https://github.com/mieweb/ui/blob/main/lessons/migration-meteor-blaze-to-react.md): framework-specific migration guidance.
206
+
207
+ ## Contribute or Run Locally
208
+
209
+ To change the library, improve its guidance, or run your own Storybook, follow
210
+ [CONTRIBUTING.md](https://github.com/mieweb/ui/blob/main/CONTRIBUTING.md). It covers
211
+ repository setup, local development, tests, component conventions, and releases.
212
+ Those steps are not required to consume the npm package.
213
+
214
+ Found unclear selection advice or an undocumented relationship? Documentation
215
+ contributions are welcome alongside component fixes.
216
+ [Edit this introduction](https://github.com/mieweb/ui/edit/main/README.md) to
217
+ improve the shared GitHub, npm, and Storybook content. Published copies update
218
+ when the package is released or the documentation site is deployed.
796
219
 
797
220
  ## License
798
221
 
799
222
  Copyright © 2026 Medical Informatics Engineering, Inc. All rights reserved.
800
223
 
801
- This software is **source available** with the following terms:
224
+ This software is **source available**:
802
225
 
803
- - ✅ **Free for open source projects** - Use, modify, and distribute freely in open source projects with attribution
804
- - ✅ **Free for non-commercial use** - Personal projects, education, research
805
- - 💼 **Commercial license required** - For proprietary products or commercial use, contact [licensing@mieweb.com](mailto:licensing@mieweb.com)
226
+ - **Free for open source projects:** use, modify, and distribute in open source projects with attribution.
227
+ - **Free for non-commercial use:** personal projects, education, and research.
228
+ - **Commercial license required:** for proprietary products or commercial use, contact [licensing@mieweb.com](mailto:licensing@mieweb.com).
806
229
 
807
- See the [LICENSE](LICENSE) file for full details.
230
+ See the [LICENSE](https://github.com/mieweb/ui/blob/main/LICENSE) for full terms.