@mieweb/ui 0.10.0-dev.31 → 0.10.0-dev.32

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 (479) hide show
  1. package/dist/CsvBlock-CFXSDPBI.js +9 -0
  2. package/dist/{CsvBlock-VLMG7GUO.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
  3. package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
  4. package/dist/{CsvBlock-FX5YNGNE.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
  5. package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
  6. package/dist/{HtmlPreviewBlock-UO37JQ3K.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
  7. package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
  8. package/dist/{HtmlPreviewBlock-5JE7L3GR.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
  9. package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
  10. package/dist/{MermaidBlock-RZ75RPZA.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
  11. package/dist/MermaidBlock-XCAK7IA5.js +9 -0
  12. package/dist/{MermaidBlock-3XHFBAMV.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
  13. package/dist/SurveyBlock-KI5JOWCL.js +9 -0
  14. package/dist/{SurveyBlock-MUVJ3JUI.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
  15. package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
  16. package/dist/{SurveyBlock-VH47YXZC.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
  17. package/dist/brands/index.cjs +7 -7
  18. package/dist/brands/index.js +2 -2
  19. package/dist/{chunk-6ZPTZTKN.js → chunk-24AFHH4J.js} +3 -3
  20. package/dist/{chunk-6ZPTZTKN.js.map → chunk-24AFHH4J.js.map} +1 -1
  21. package/dist/{chunk-TYE5K5WV.cjs → chunk-32ZCJOSR.cjs} +4 -4
  22. package/dist/{chunk-TYE5K5WV.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
  23. package/dist/{chunk-SD7ONW6S.js → chunk-3DLLTITK.js} +4 -4
  24. package/dist/{chunk-SD7ONW6S.js.map → chunk-3DLLTITK.js.map} +1 -1
  25. package/dist/chunk-47P5QLX4.cjs +42 -0
  26. package/dist/chunk-47P5QLX4.cjs.map +1 -0
  27. package/dist/chunk-4ZB7RSMY.cjs +306 -0
  28. package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
  29. package/dist/{chunk-WXFGHDTV.cjs → chunk-57G3O552.cjs} +13 -13
  30. package/dist/{chunk-WXFGHDTV.cjs.map → chunk-57G3O552.cjs.map} +1 -1
  31. package/dist/{chunk-D22GE27K.js → chunk-5A4SL436.js} +4 -4
  32. package/dist/{chunk-D22GE27K.js.map → chunk-5A4SL436.js.map} +1 -1
  33. package/dist/chunk-6BNZLN4B.cjs +548 -0
  34. package/dist/chunk-6BNZLN4B.cjs.map +1 -0
  35. package/dist/chunk-6JSFT2J5.js +130 -0
  36. package/dist/chunk-6JSFT2J5.js.map +1 -0
  37. package/dist/{chunk-NKV76R65.cjs → chunk-6M63CM7X.cjs} +26 -26
  38. package/dist/{chunk-NKV76R65.cjs.map → chunk-6M63CM7X.cjs.map} +1 -1
  39. package/dist/chunk-6N7NMOSV.js +233 -0
  40. package/dist/chunk-6N7NMOSV.js.map +1 -0
  41. package/dist/chunk-6TTCZY3P.cjs +4 -0
  42. package/dist/chunk-6TTCZY3P.cjs.map +1 -0
  43. package/dist/{chunk-TTSSUOEV.cjs → chunk-7C5W744U.cjs} +8 -8
  44. package/dist/{chunk-TTSSUOEV.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
  45. package/dist/chunk-7HUTR6RX.js +178 -0
  46. package/dist/chunk-7HUTR6RX.js.map +1 -0
  47. package/dist/chunk-7IRTD4JT.cjs +61 -0
  48. package/dist/chunk-7IRTD4JT.cjs.map +1 -0
  49. package/dist/{chunk-YU55JD35.js → chunk-7QW6TU4X.js} +3 -3
  50. package/dist/{chunk-YU55JD35.js.map → chunk-7QW6TU4X.js.map} +1 -1
  51. package/dist/chunk-7WJ6MBF5.cjs +47 -0
  52. package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
  53. package/dist/chunk-A4W5CSK7.cjs +216 -0
  54. package/dist/chunk-A4W5CSK7.cjs.map +1 -0
  55. package/dist/chunk-AMYFRY7K.js +3 -0
  56. package/dist/chunk-AMYFRY7K.js.map +1 -0
  57. package/dist/{chunk-X6A27RGO.cjs → chunk-ANMX7YDL.cjs} +2 -2
  58. package/dist/{chunk-X6A27RGO.cjs.map → chunk-ANMX7YDL.cjs.map} +1 -1
  59. package/dist/{chunk-DVOQ3JNO.js → chunk-B4CKCNWD.js} +16 -8
  60. package/dist/chunk-B4CKCNWD.js.map +1 -0
  61. package/dist/chunk-BJ6ABRSQ.cjs +256 -0
  62. package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
  63. package/dist/chunk-BXRQ6HEP.cjs +4 -0
  64. package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
  65. package/dist/{chunk-TJCX4OML.cjs → chunk-C77FAR3F.cjs} +2 -2
  66. package/dist/{chunk-TJCX4OML.cjs.map → chunk-C77FAR3F.cjs.map} +1 -1
  67. package/dist/chunk-CBBKWRLG.js +213 -0
  68. package/dist/chunk-CBBKWRLG.js.map +1 -0
  69. package/dist/{chunk-BNH4SXJB.js → chunk-CMF7VCGP.js} +5 -5
  70. package/dist/{chunk-BNH4SXJB.js.map → chunk-CMF7VCGP.js.map} +1 -1
  71. package/dist/chunk-CPDNX3LS.cjs +47 -0
  72. package/dist/chunk-CPDNX3LS.cjs.map +1 -0
  73. package/dist/chunk-CVNPNZMX.js +44 -0
  74. package/dist/chunk-CVNPNZMX.js.map +1 -0
  75. package/dist/chunk-DHGCLPFZ.js +91 -0
  76. package/dist/chunk-DHGCLPFZ.js.map +1 -0
  77. package/dist/chunk-DO2YN46R.cjs +201 -0
  78. package/dist/chunk-DO2YN46R.cjs.map +1 -0
  79. package/dist/chunk-DVDT7TX7.js +151 -0
  80. package/dist/chunk-DVDT7TX7.js.map +1 -0
  81. package/dist/{chunk-R5Z7AOVU.cjs → chunk-DZ3JTMKM.cjs} +9 -9
  82. package/dist/{chunk-R5Z7AOVU.cjs.map → chunk-DZ3JTMKM.cjs.map} +1 -1
  83. package/dist/chunk-EACNRR3C.cjs +4 -0
  84. package/dist/chunk-EACNRR3C.cjs.map +1 -0
  85. package/dist/{chunk-E2PBPQGS.js → chunk-EEOGIGIA.js} +2 -2
  86. package/dist/{chunk-E2PBPQGS.js.map → chunk-EEOGIGIA.js.map} +1 -1
  87. package/dist/{chunk-QURJVPRH.cjs → chunk-EMRWTCCN.cjs} +41 -2
  88. package/dist/chunk-EMRWTCCN.cjs.map +1 -0
  89. package/dist/chunk-EPCUPHEO.js +193 -0
  90. package/dist/chunk-EPCUPHEO.js.map +1 -0
  91. package/dist/chunk-EPTP3VKT.js +283 -0
  92. package/dist/chunk-EPTP3VKT.js.map +1 -0
  93. package/dist/{chunk-HIZWOAWY.cjs → chunk-ERACGSDY.cjs} +8 -8
  94. package/dist/{chunk-HIZWOAWY.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
  95. package/dist/{chunk-VOQJHSXN.cjs → chunk-F2FOG4EG.cjs} +9 -9
  96. package/dist/{chunk-VOQJHSXN.cjs.map → chunk-F2FOG4EG.cjs.map} +1 -1
  97. package/dist/{chunk-GBUVIGD5.js → chunk-F3EWRDIT.js} +99 -3
  98. package/dist/chunk-F3EWRDIT.js.map +1 -0
  99. package/dist/{chunk-ZTMYKAVU.cjs → chunk-FCV7GBNQ.cjs} +24 -23
  100. package/dist/chunk-FCV7GBNQ.cjs.map +1 -0
  101. package/dist/{chunk-GVLNXPJX.js → chunk-FGLIP6YR.js} +4 -4
  102. package/dist/{chunk-GVLNXPJX.js.map → chunk-FGLIP6YR.js.map} +1 -1
  103. package/dist/chunk-FKGFOBC2.js +314 -0
  104. package/dist/chunk-FKGFOBC2.js.map +1 -0
  105. package/dist/chunk-FSGJXCBG.cjs +318 -0
  106. package/dist/chunk-FSGJXCBG.cjs.map +1 -0
  107. package/dist/chunk-FTEZNCRI.js +29 -0
  108. package/dist/chunk-FTEZNCRI.js.map +1 -0
  109. package/dist/{chunk-COM7RNZU.cjs → chunk-FYQZWLAM.cjs} +2 -2
  110. package/dist/{chunk-COM7RNZU.cjs.map → chunk-FYQZWLAM.cjs.map} +1 -1
  111. package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
  112. package/dist/chunk-GF2BE4FB.cjs.map +1 -0
  113. package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
  114. package/dist/chunk-GKDHMNUA.cjs.map +1 -0
  115. package/dist/{chunk-N7C4OEP7.cjs → chunk-GM32IDVL.cjs} +6 -6
  116. package/dist/{chunk-N7C4OEP7.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
  117. package/dist/chunk-GNOQFTLL.cjs +286 -0
  118. package/dist/chunk-GNOQFTLL.cjs.map +1 -0
  119. package/dist/chunk-GY5SP4ST.js +3 -0
  120. package/dist/chunk-GY5SP4ST.js.map +1 -0
  121. package/dist/chunk-H2Y7HZV5.js +3 -0
  122. package/dist/chunk-H2Y7HZV5.js.map +1 -0
  123. package/dist/chunk-H3QPREIJ.js +195 -0
  124. package/dist/chunk-H3QPREIJ.js.map +1 -0
  125. package/dist/{chunk-QOVJ6Z6R.js → chunk-HDY7YQFX.js} +3 -3
  126. package/dist/{chunk-QOVJ6Z6R.js.map → chunk-HDY7YQFX.js.map} +1 -1
  127. package/dist/chunk-HNFFFFYH.cjs +114 -0
  128. package/dist/chunk-HNFFFFYH.cjs.map +1 -0
  129. package/dist/chunk-HNXLLDPN.js +25 -0
  130. package/dist/chunk-HNXLLDPN.js.map +1 -0
  131. package/dist/chunk-I2MMUFCN.cjs +154 -0
  132. package/dist/chunk-I2MMUFCN.cjs.map +1 -0
  133. package/dist/{chunk-GYXUS65N.cjs → chunk-IGDO62KR.cjs} +5 -5
  134. package/dist/{chunk-GYXUS65N.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
  135. package/dist/{chunk-JBIGSP2T.js → chunk-ILDLYRTP.js} +5 -4
  136. package/dist/chunk-ILDLYRTP.js.map +1 -0
  137. package/dist/{chunk-HC3NAN55.cjs → chunk-IPL2O2OL.cjs} +19 -19
  138. package/dist/{chunk-HC3NAN55.cjs.map → chunk-IPL2O2OL.cjs.map} +1 -1
  139. package/dist/chunk-ISUIKUX7.cjs +337 -0
  140. package/dist/chunk-ISUIKUX7.cjs.map +1 -0
  141. package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
  142. package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
  143. package/dist/chunk-IWRBJHO3.cjs +51 -0
  144. package/dist/chunk-IWRBJHO3.cjs.map +1 -0
  145. package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
  146. package/dist/chunk-JUJGWUAN.js.map +1 -0
  147. package/dist/{chunk-BUT6MF5K.cjs → chunk-KQ6GLYFZ.cjs} +4 -4
  148. package/dist/{chunk-BUT6MF5K.cjs.map → chunk-KQ6GLYFZ.cjs.map} +1 -1
  149. package/dist/chunk-L6K4PRZK.cjs +4 -0
  150. package/dist/chunk-L6K4PRZK.cjs.map +1 -0
  151. package/dist/{chunk-P7UMS4E6.cjs → chunk-LC7PVBXH.cjs} +16 -8
  152. package/dist/chunk-LC7PVBXH.cjs.map +1 -0
  153. package/dist/chunk-LRRSD7LR.js +248 -0
  154. package/dist/chunk-LRRSD7LR.js.map +1 -0
  155. package/dist/chunk-LSMS6DY7.cjs +331 -0
  156. package/dist/chunk-LSMS6DY7.cjs.map +1 -0
  157. package/dist/chunk-M3VPGJMV.js +283 -0
  158. package/dist/chunk-M3VPGJMV.js.map +1 -0
  159. package/dist/{chunk-2JICT4A2.js → chunk-N54FYWG6.js} +3 -3
  160. package/dist/{chunk-2JICT4A2.js.map → chunk-N54FYWG6.js.map} +1 -1
  161. package/dist/chunk-N5JDL4VE.js +3 -0
  162. package/dist/chunk-N5JDL4VE.js.map +1 -0
  163. package/dist/{chunk-KGKBZN3T.cjs → chunk-NAH65KPK.cjs} +8 -8
  164. package/dist/{chunk-KGKBZN3T.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
  165. package/dist/chunk-O4WGSOJI.js +261 -0
  166. package/dist/chunk-O4WGSOJI.js.map +1 -0
  167. package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
  168. package/dist/chunk-O6XDA3SI.js.map +1 -0
  169. package/dist/chunk-OIF34LEN.cjs +425 -0
  170. package/dist/chunk-OIF34LEN.cjs.map +1 -0
  171. package/dist/chunk-ORCCJ5VY.cjs +218 -0
  172. package/dist/chunk-ORCCJ5VY.cjs.map +1 -0
  173. package/dist/{chunk-CRS2CQWM.js → chunk-OSTSZDQC.js} +3 -3
  174. package/dist/{chunk-CRS2CQWM.js.map → chunk-OSTSZDQC.js.map} +1 -1
  175. package/dist/{chunk-MLAWXPRY.js → chunk-OZ5CKVQN.js} +41 -2
  176. package/dist/chunk-OZ5CKVQN.js.map +1 -0
  177. package/dist/chunk-P22YCUVM.cjs +4 -0
  178. package/dist/chunk-P22YCUVM.cjs.map +1 -0
  179. package/dist/chunk-P55LNEDH.cjs +306 -0
  180. package/dist/chunk-P55LNEDH.cjs.map +1 -0
  181. package/dist/{chunk-R6KPWIGO.js → chunk-P7D7BYFE.js} +4 -4
  182. package/dist/{chunk-R6KPWIGO.js.map → chunk-P7D7BYFE.js.map} +1 -1
  183. package/dist/{chunk-GU5OS7JJ.cjs → chunk-PYI2IWNX.cjs} +4 -4
  184. package/dist/{chunk-GU5OS7JJ.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
  185. package/dist/chunk-Q3YVLO52.cjs +174 -0
  186. package/dist/chunk-Q3YVLO52.cjs.map +1 -0
  187. package/dist/{chunk-K34DXMLZ.js → chunk-QJ2L5RU6.js} +7 -7
  188. package/dist/{chunk-K34DXMLZ.js.map → chunk-QJ2L5RU6.js.map} +1 -1
  189. package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
  190. package/dist/chunk-QX6AAVDE.cjs.map +1 -0
  191. package/dist/{chunk-LFPJ3OUM.cjs → chunk-RIUQP2QS.cjs} +5 -5
  192. package/dist/{chunk-LFPJ3OUM.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
  193. package/dist/{chunk-JHG3ELS2.js → chunk-RPFATYUI.js} +2 -2
  194. package/dist/{chunk-JHG3ELS2.js.map → chunk-RPFATYUI.js.map} +1 -1
  195. package/dist/{chunk-FZURBQJ2.js → chunk-RSJGTWLM.js} +3 -3
  196. package/dist/{chunk-FZURBQJ2.js.map → chunk-RSJGTWLM.js.map} +1 -1
  197. package/dist/{chunk-XBTKZCZF.js → chunk-RZSSQ7AT.js} +3 -3
  198. package/dist/{chunk-XBTKZCZF.js.map → chunk-RZSSQ7AT.js.map} +1 -1
  199. package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
  200. package/dist/chunk-SHBCUXFS.cjs.map +1 -0
  201. package/dist/{chunk-JELTRRR5.cjs → chunk-SW2E7XKY.cjs} +9 -9
  202. package/dist/{chunk-JELTRRR5.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
  203. package/dist/chunk-SZSRGUVO.js +402 -0
  204. package/dist/chunk-SZSRGUVO.js.map +1 -0
  205. package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
  206. package/dist/chunk-TI3TQQ7F.js.map +1 -0
  207. package/dist/{chunk-H2IAMSHK.js → chunk-TVEJKKIM.js} +3 -3
  208. package/dist/{chunk-H2IAMSHK.js.map → chunk-TVEJKKIM.js.map} +1 -1
  209. package/dist/{chunk-LHBWRMNC.cjs → chunk-TVU4KB27.cjs} +130 -12
  210. package/dist/chunk-TVU4KB27.cjs.map +1 -0
  211. package/dist/{chunk-ZYL4SNOR.js → chunk-UJDWFDKE.js} +3 -3
  212. package/dist/{chunk-ZYL4SNOR.js.map → chunk-UJDWFDKE.js.map} +1 -1
  213. package/dist/{chunk-4HC2IBOX.js → chunk-UNFDIBKJ.js} +3 -3
  214. package/dist/{chunk-4HC2IBOX.js.map → chunk-UNFDIBKJ.js.map} +1 -1
  215. package/dist/{chunk-IYWG72DM.js → chunk-VEE46VTX.js} +4 -4
  216. package/dist/{chunk-IYWG72DM.js.map → chunk-VEE46VTX.js.map} +1 -1
  217. package/dist/{chunk-Y4E2WRUR.cjs → chunk-VFFV7EMT.cjs} +6 -6
  218. package/dist/{chunk-Y4E2WRUR.cjs.map → chunk-VFFV7EMT.cjs.map} +1 -1
  219. package/dist/chunk-VNEAQCY2.js +308 -0
  220. package/dist/chunk-VNEAQCY2.js.map +1 -0
  221. package/dist/chunk-VOYLX32A.cjs +271 -0
  222. package/dist/chunk-VOYLX32A.cjs.map +1 -0
  223. package/dist/{chunk-7ZV67VZE.js → chunk-VSRO4PAI.js} +21 -3
  224. package/dist/chunk-VSRO4PAI.js.map +1 -0
  225. package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
  226. package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
  227. package/dist/{chunk-35Y4ILCU.cjs → chunk-VXW7D5LR.cjs} +21 -3
  228. package/dist/chunk-VXW7D5LR.cjs.map +1 -0
  229. package/dist/{chunk-7YO7DNUV.js → chunk-WFBUBT54.js} +2 -2
  230. package/dist/{chunk-7YO7DNUV.js.map → chunk-WFBUBT54.js.map} +1 -1
  231. package/dist/chunk-WQHBMZSC.js +295 -0
  232. package/dist/chunk-WQHBMZSC.js.map +1 -0
  233. package/dist/chunk-X5JOEZVR.js +525 -0
  234. package/dist/chunk-X5JOEZVR.js.map +1 -0
  235. package/dist/chunk-XBAAHOCP.js +3 -0
  236. package/dist/chunk-XBAAHOCP.js.map +1 -0
  237. package/dist/chunk-XNPDZANN.cjs +238 -0
  238. package/dist/chunk-XNPDZANN.cjs.map +1 -0
  239. package/dist/chunk-XXA4NZUC.js +3 -0
  240. package/dist/chunk-XXA4NZUC.js.map +1 -0
  241. package/dist/chunk-Y424YL55.js +59 -0
  242. package/dist/chunk-Y424YL55.js.map +1 -0
  243. package/dist/chunk-YGS2TRMP.js +38 -0
  244. package/dist/chunk-YGS2TRMP.js.map +1 -0
  245. package/dist/chunk-YUMOM3KE.js +167 -0
  246. package/dist/chunk-YUMOM3KE.js.map +1 -0
  247. package/dist/{chunk-3KPDQG5O.cjs → chunk-ZG6FXMDX.cjs} +5 -5
  248. package/dist/{chunk-3KPDQG5O.cjs.map → chunk-ZG6FXMDX.cjs.map} +1 -1
  249. package/dist/chunk-ZNUMOJOI.cjs +4 -0
  250. package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
  251. package/dist/components/Accordion/index.cjs +2 -2
  252. package/dist/components/Accordion/index.d.cts +6 -0
  253. package/dist/components/Accordion/index.d.ts +6 -0
  254. package/dist/components/Accordion/index.js +1 -1
  255. package/dist/components/ActionPlan/index.cjs +34 -0
  256. package/dist/components/ActionPlan/index.cjs.map +1 -0
  257. package/dist/components/ActionPlan/index.d.cts +65 -0
  258. package/dist/components/ActionPlan/index.d.ts +65 -0
  259. package/dist/components/ActionPlan/index.js +21 -0
  260. package/dist/components/ActionPlan/index.js.map +1 -0
  261. package/dist/components/ActivityFeed/index.cjs +31 -0
  262. package/dist/components/ActivityFeed/index.cjs.map +1 -0
  263. package/dist/components/ActivityFeed/index.d.cts +99 -0
  264. package/dist/components/ActivityFeed/index.d.ts +99 -0
  265. package/dist/components/ActivityFeed/index.js +18 -0
  266. package/dist/components/ActivityFeed/index.js.map +1 -0
  267. package/dist/components/AlertDialog/index.cjs +16 -3
  268. package/dist/components/AlertDialog/index.d.cts +66 -13
  269. package/dist/components/AlertDialog/index.d.ts +66 -13
  270. package/dist/components/AlertDialog/index.js +3 -2
  271. package/dist/components/AssociationList/index.cjs +29 -0
  272. package/dist/components/AssociationList/index.cjs.map +1 -0
  273. package/dist/components/AssociationList/index.d.cts +50 -0
  274. package/dist/components/AssociationList/index.d.ts +50 -0
  275. package/dist/components/AssociationList/index.js +16 -0
  276. package/dist/components/AssociationList/index.js.map +1 -0
  277. package/dist/components/Avatar/index.cjs +9 -7
  278. package/dist/components/Avatar/index.d.cts +45 -14
  279. package/dist/components/Avatar/index.d.ts +45 -14
  280. package/dist/components/Avatar/index.js +3 -1
  281. package/dist/components/AvatarGroup/index.cjs +20 -0
  282. package/dist/components/AvatarGroup/index.cjs.map +1 -0
  283. package/dist/components/AvatarGroup/index.d.cts +57 -0
  284. package/dist/components/AvatarGroup/index.d.ts +57 -0
  285. package/dist/components/AvatarGroup/index.js +7 -0
  286. package/dist/components/AvatarGroup/index.js.map +1 -0
  287. package/dist/components/Button/index.cjs +3 -2
  288. package/dist/components/Button/index.js +2 -1
  289. package/dist/components/CalendarHeatmap/index.cjs +18 -0
  290. package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
  291. package/dist/components/CalendarHeatmap/index.d.cts +47 -0
  292. package/dist/components/CalendarHeatmap/index.d.ts +47 -0
  293. package/dist/components/CalendarHeatmap/index.js +5 -0
  294. package/dist/components/CalendarHeatmap/index.js.map +1 -0
  295. package/dist/components/CalendarView/index.cjs +5 -4
  296. package/dist/components/CalendarView/index.js +3 -2
  297. package/dist/components/ClampedText/index.cjs +3 -2
  298. package/dist/components/ClampedText/index.js +2 -1
  299. package/dist/components/CollabStatus/index.cjs +6 -4
  300. package/dist/components/CollabStatus/index.d.cts +11 -0
  301. package/dist/components/CollabStatus/index.d.ts +11 -0
  302. package/dist/components/CollabStatus/index.js +3 -1
  303. package/dist/components/Collapsible/index.cjs +4 -4
  304. package/dist/components/Collapsible/index.d.cts +6 -0
  305. package/dist/components/Collapsible/index.d.ts +6 -0
  306. package/dist/components/Collapsible/index.js +1 -1
  307. package/dist/components/CompletenessMeter/index.cjs +22 -0
  308. package/dist/components/CompletenessMeter/index.cjs.map +1 -0
  309. package/dist/components/CompletenessMeter/index.d.cts +52 -0
  310. package/dist/components/CompletenessMeter/index.d.ts +52 -0
  311. package/dist/components/CompletenessMeter/index.js +5 -0
  312. package/dist/components/CompletenessMeter/index.js.map +1 -0
  313. package/dist/components/CustomizableDashboard/index.cjs +10 -9
  314. package/dist/components/CustomizableDashboard/index.js +3 -2
  315. package/dist/components/DateInput/index.d.cts +36 -4
  316. package/dist/components/DateInput/index.d.ts +36 -4
  317. package/dist/components/Dropdown/index.cjs +9 -8
  318. package/dist/components/Dropdown/index.js +2 -1
  319. package/dist/components/FieldHistory/index.cjs +34 -0
  320. package/dist/components/FieldHistory/index.cjs.map +1 -0
  321. package/dist/components/FieldHistory/index.d.cts +66 -0
  322. package/dist/components/FieldHistory/index.d.ts +66 -0
  323. package/dist/components/FieldHistory/index.js +21 -0
  324. package/dist/components/FieldHistory/index.js.map +1 -0
  325. package/dist/components/FloatingWindow/index.cjs +5 -4
  326. package/dist/components/FloatingWindow/index.js +3 -2
  327. package/dist/components/InlineEdit/index.cjs +20 -0
  328. package/dist/components/InlineEdit/index.cjs.map +1 -0
  329. package/dist/components/InlineEdit/index.d.cts +56 -0
  330. package/dist/components/InlineEdit/index.d.ts +56 -0
  331. package/dist/components/InlineEdit/index.js +7 -0
  332. package/dist/components/InlineEdit/index.js.map +1 -0
  333. package/dist/components/ListView/index.cjs +5 -4
  334. package/dist/components/ListView/index.js +3 -2
  335. package/dist/components/LogoUploader/index.cjs +18 -0
  336. package/dist/components/LogoUploader/index.cjs.map +1 -0
  337. package/dist/components/LogoUploader/index.d.cts +49 -0
  338. package/dist/components/LogoUploader/index.d.ts +49 -0
  339. package/dist/components/LogoUploader/index.js +5 -0
  340. package/dist/components/LogoUploader/index.js.map +1 -0
  341. package/dist/components/Markdown/index.cjs +17 -16
  342. package/dist/components/Markdown/index.js +8 -7
  343. package/dist/components/MediaEditor/index.cjs +9 -8
  344. package/dist/components/MediaEditor/index.js +4 -3
  345. package/dist/components/MediaFeed/index.cjs +8 -5
  346. package/dist/components/MediaFeed/index.js +7 -4
  347. package/dist/components/MediaPlayer/index.cjs +6 -5
  348. package/dist/components/MediaPlayer/index.js +3 -2
  349. package/dist/components/MegaMenu/index.cjs +2 -1
  350. package/dist/components/MegaMenu/index.js +2 -1
  351. package/dist/components/PhiMask/index.cjs +18 -0
  352. package/dist/components/PhiMask/index.cjs.map +1 -0
  353. package/dist/components/PhiMask/index.d.cts +45 -0
  354. package/dist/components/PhiMask/index.d.ts +45 -0
  355. package/dist/components/PhiMask/index.js +5 -0
  356. package/dist/components/PhiMask/index.js.map +1 -0
  357. package/dist/components/PhoneInput/index.d.cts +3 -36
  358. package/dist/components/PhoneInput/index.d.ts +3 -36
  359. package/dist/components/PropertyList/index.cjs +25 -0
  360. package/dist/components/PropertyList/index.cjs.map +1 -0
  361. package/dist/components/PropertyList/index.d.cts +71 -0
  362. package/dist/components/PropertyList/index.d.ts +71 -0
  363. package/dist/components/PropertyList/index.js +12 -0
  364. package/dist/components/PropertyList/index.js.map +1 -0
  365. package/dist/components/RadialExplorer/index.cjs +2 -1
  366. package/dist/components/RadialExplorer/index.js +2 -1
  367. package/dist/components/Rating/index.cjs +28 -0
  368. package/dist/components/Rating/index.cjs.map +1 -0
  369. package/dist/components/Rating/index.d.cts +85 -0
  370. package/dist/components/Rating/index.d.ts +85 -0
  371. package/dist/components/Rating/index.js +7 -0
  372. package/dist/components/Rating/index.js.map +1 -0
  373. package/dist/components/RecordHeader/index.cjs +29 -0
  374. package/dist/components/RecordHeader/index.cjs.map +1 -0
  375. package/dist/components/RecordHeader/index.d.cts +86 -0
  376. package/dist/components/RecordHeader/index.d.ts +86 -0
  377. package/dist/components/RecordHeader/index.js +16 -0
  378. package/dist/components/RecordHeader/index.js.map +1 -0
  379. package/dist/components/RecordLayout/index.cjs +21 -0
  380. package/dist/components/RecordLayout/index.cjs.map +1 -0
  381. package/dist/components/RecordLayout/index.d.cts +40 -0
  382. package/dist/components/RecordLayout/index.d.ts +40 -0
  383. package/dist/components/RecordLayout/index.js +8 -0
  384. package/dist/components/RecordLayout/index.js.map +1 -0
  385. package/dist/components/RichTextEditor/index.cjs +8 -6
  386. package/dist/components/RichTextEditor/index.js +5 -3
  387. package/dist/components/SectionSpyNav/index.cjs +2 -1
  388. package/dist/components/SectionSpyNav/index.js +2 -1
  389. package/dist/components/SuperChat/index.cjs +22 -18
  390. package/dist/components/SuperChat/index.cjs.map +1 -1
  391. package/dist/components/SuperChat/index.js +10 -6
  392. package/dist/components/SuperChat/index.js.map +1 -1
  393. package/dist/components/SuperChat/plugins/index.cjs +5 -4
  394. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  395. package/dist/components/SuperChat/plugins/index.js +4 -3
  396. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  397. package/dist/components/Tabs/index.cjs +9 -7
  398. package/dist/components/Tabs/index.d.cts +12 -1
  399. package/dist/components/Tabs/index.d.ts +12 -1
  400. package/dist/components/Tabs/index.js +3 -1
  401. package/dist/components/TagEditor/index.cjs +20 -0
  402. package/dist/components/TagEditor/index.cjs.map +1 -0
  403. package/dist/components/TagEditor/index.d.cts +46 -0
  404. package/dist/components/TagEditor/index.d.ts +46 -0
  405. package/dist/components/TagEditor/index.js +7 -0
  406. package/dist/components/TagEditor/index.js.map +1 -0
  407. package/dist/components/UserPicker/index.cjs +24 -0
  408. package/dist/components/UserPicker/index.cjs.map +1 -0
  409. package/dist/components/UserPicker/index.d.cts +60 -0
  410. package/dist/components/UserPicker/index.d.ts +60 -0
  411. package/dist/components/UserPicker/index.js +11 -0
  412. package/dist/components/UserPicker/index.js.map +1 -0
  413. package/dist/components/ViewSet/index.cjs +6 -5
  414. package/dist/components/ViewSet/index.d.cts +2 -1
  415. package/dist/components/ViewSet/index.d.ts +2 -1
  416. package/dist/components/ViewSet/index.js +5 -4
  417. package/dist/components/ViewSwitcher/index.d.cts +39 -4
  418. package/dist/components/ViewSwitcher/index.d.ts +39 -4
  419. package/dist/datavis.cjs +3 -2
  420. package/dist/datavis.cjs.map +1 -1
  421. package/dist/datavis.js +2 -1
  422. package/dist/datavis.js.map +1 -1
  423. package/dist/esheet.cjs +8 -6
  424. package/dist/esheet.cjs.map +1 -1
  425. package/dist/esheet.js +5 -3
  426. package/dist/esheet.js.map +1 -1
  427. package/dist/hooks/index.cjs +53 -27
  428. package/dist/hooks/index.d.cts +91 -6
  429. package/dist/hooks/index.d.ts +91 -6
  430. package/dist/hooks/index.js +5 -3
  431. package/dist/index.cjs +1258 -714
  432. package/dist/index.cjs.map +1 -1
  433. package/dist/index.d.cts +1253 -168
  434. package/dist/index.d.ts +1253 -168
  435. package/dist/index.js +536 -168
  436. package/dist/index.js.map +1 -1
  437. package/dist/org-chart.cjs +1302 -0
  438. package/dist/org-chart.cjs.map +1 -0
  439. package/dist/org-chart.d.cts +164 -0
  440. package/dist/org-chart.d.ts +164 -0
  441. package/dist/org-chart.js +1277 -0
  442. package/dist/org-chart.js.map +1 -0
  443. package/dist/styles.css +1 -1
  444. package/dist/tailwind-preset.cjs +4 -4
  445. package/dist/tailwind-preset.js +1 -1
  446. package/dist/{index-DoYYWsNc.d.cts → types-CDeBNZiE.d.cts} +1 -36
  447. package/dist/{index-DoYYWsNc.d.ts → types-CDeBNZiE.d.ts} +1 -36
  448. package/package.json +22 -2
  449. package/dist/CsvBlock-FX5YNGNE.cjs +0 -17
  450. package/dist/CsvBlock-VLMG7GUO.js +0 -8
  451. package/dist/HtmlPreviewBlock-5JE7L3GR.js +0 -8
  452. package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +0 -17
  453. package/dist/MermaidBlock-3XHFBAMV.js +0 -8
  454. package/dist/MermaidBlock-RZ75RPZA.cjs +0 -17
  455. package/dist/SurveyBlock-MUVJ3JUI.js +0 -8
  456. package/dist/SurveyBlock-VH47YXZC.cjs +0 -17
  457. package/dist/chunk-35Y4ILCU.cjs.map +0 -1
  458. package/dist/chunk-6N6LIAUJ.cjs +0 -80
  459. package/dist/chunk-6N6LIAUJ.cjs.map +0 -1
  460. package/dist/chunk-7ZV67VZE.js.map +0 -1
  461. package/dist/chunk-7ZVTLTJF.js +0 -109
  462. package/dist/chunk-7ZVTLTJF.js.map +0 -1
  463. package/dist/chunk-DVOQ3JNO.js.map +0 -1
  464. package/dist/chunk-GBUVIGD5.js.map +0 -1
  465. package/dist/chunk-HZ4MBUC3.js.map +0 -1
  466. package/dist/chunk-JBIGSP2T.js.map +0 -1
  467. package/dist/chunk-JEIW7BSV.cjs.map +0 -1
  468. package/dist/chunk-KRU6IGV7.js.map +0 -1
  469. package/dist/chunk-LHBWRMNC.cjs.map +0 -1
  470. package/dist/chunk-MLAWXPRY.js.map +0 -1
  471. package/dist/chunk-P7UMS4E6.cjs.map +0 -1
  472. package/dist/chunk-QURJVPRH.cjs.map +0 -1
  473. package/dist/chunk-SVSHA7XV.js.map +0 -1
  474. package/dist/chunk-UBSH27C2.js +0 -78
  475. package/dist/chunk-UBSH27C2.js.map +0 -1
  476. package/dist/chunk-VROIMIHB.cjs.map +0 -1
  477. package/dist/chunk-X4LBUPJO.cjs.map +0 -1
  478. package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
  479. package/dist/chunk-ZTMYKAVU.cjs.map +0 -1
@@ -0,0 +1,114 @@
1
+ 'use strict';
2
+
3
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
4
+ var React = require('react');
5
+ var lucideReact = require('lucide-react');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ var defaultPhiMaskLabels = {
29
+ masked: "Hidden sensitive value",
30
+ maskedEnding: (visible) => `Hidden sensitive value ending in ${visible}`,
31
+ reveal: "Show value",
32
+ hide: "Hide value"
33
+ };
34
+ var BULLETS = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
35
+ var PhiMask = React__namespace.forwardRef(
36
+ function PhiMask2({
37
+ value,
38
+ keepLast = 0,
39
+ revealed: revealedProp,
40
+ defaultRevealed = false,
41
+ onRevealedChange,
42
+ onReveal,
43
+ canReveal = true,
44
+ autoHideMs,
45
+ labels: labelOverrides,
46
+ className,
47
+ ...props
48
+ }, ref) {
49
+ const labels = { ...defaultPhiMaskLabels, ...labelOverrides };
50
+ const [internal, setInternal] = React__namespace.useState(defaultRevealed);
51
+ const revealed = revealedProp ?? internal;
52
+ const setRevealed = React__namespace.useCallback(
53
+ (next) => {
54
+ if (revealedProp === void 0) setInternal(next);
55
+ onRevealedChange?.(next);
56
+ },
57
+ [revealedProp, onRevealedChange]
58
+ );
59
+ React__namespace.useEffect(() => {
60
+ if (!revealed || !autoHideMs) return;
61
+ const timer = window.setTimeout(() => setRevealed(false), autoHideMs);
62
+ return () => window.clearTimeout(timer);
63
+ }, [revealed, autoHideMs, setRevealed]);
64
+ const suffix = Math.min(keepLast, value.length - 1);
65
+ const visible = suffix > 0 ? value.slice(-suffix) : "";
66
+ const shown = revealed && canReveal;
67
+ return /* @__PURE__ */ jsxRuntime.jsxs(
68
+ "span",
69
+ {
70
+ ref,
71
+ "data-slot": "phi-mask",
72
+ "data-revealed": shown || void 0,
73
+ className: chunkS5RVSXDV_cjs.cn(
74
+ "inline-flex items-center gap-1 align-baseline",
75
+ className
76
+ ),
77
+ ...props,
78
+ children: [
79
+ shown ? /* @__PURE__ */ jsxRuntime.jsx("span", { "data-slot": "phi-mask-value", children: value }) : /* @__PURE__ */ jsxRuntime.jsxs("span", { "data-slot": "phi-mask-value", className: "tabular-nums", children: [
80
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { "aria-hidden": "true", className: "text-muted-foreground", children: [
81
+ BULLETS,
82
+ visible && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground", children: visible })
83
+ ] }),
84
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: visible ? labels.maskedEnding(visible) : labels.masked })
85
+ ] }),
86
+ canReveal && /* @__PURE__ */ jsxRuntime.jsx(
87
+ "button",
88
+ {
89
+ type: "button",
90
+ "aria-pressed": shown,
91
+ "aria-label": shown ? labels.hide : labels.reveal,
92
+ title: shown ? labels.hide : labels.reveal,
93
+ "data-slot": "phi-mask-toggle",
94
+ onClick: () => {
95
+ setRevealed(!shown);
96
+ if (!shown) onReveal?.();
97
+ },
98
+ className: chunkS5RVSXDV_cjs.cn(
99
+ "text-muted-foreground hover:text-foreground inline-flex rounded p-0.5",
100
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none"
101
+ ),
102
+ children: shown ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.EyeOff, { className: "h-3.5 w-3.5", "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
103
+ }
104
+ )
105
+ ]
106
+ }
107
+ );
108
+ }
109
+ );
110
+
111
+ exports.PhiMask = PhiMask;
112
+ exports.defaultPhiMaskLabels = defaultPhiMaskLabels;
113
+ //# sourceMappingURL=chunk-HNFFFFYH.cjs.map
114
+ //# sourceMappingURL=chunk-HNFFFFYH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/PhiMask/PhiMask.tsx"],"names":["React","PhiMask","jsxs","cn","jsx","EyeOff","Eye"],"mappings":"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","file":"chunk-HNFFFFYH.cjs","sourcesContent":["import * as React from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { cn } from '../../utils/cn';\n\nexport interface PhiMaskLabels {\n /** Accessible text while fully masked. */\n masked: string;\n /** Accessible text while masked with `keepLast`. */\n maskedEnding: (visible: string) => string;\n /** Toggle name while masked. */\n reveal: string;\n /** Toggle name while revealed. */\n hide: string;\n}\n\nexport const defaultPhiMaskLabels: PhiMaskLabels = {\n masked: 'Hidden sensitive value',\n maskedEnding: (visible) => `Hidden sensitive value ending in ${visible}`,\n reveal: 'Show value',\n hide: 'Hide value',\n};\n\nexport interface PhiMaskProps extends Omit<\n React.HTMLAttributes<HTMLSpanElement>,\n 'children'\n> {\n /** The sensitive text. */\n value: string;\n /** Characters left visible at the end while masked, e.g. 4 for an SSN. */\n keepLast?: number;\n /** Controlled revealed state. */\n revealed?: boolean;\n /** Initial revealed state when uncontrolled. */\n defaultRevealed?: boolean;\n /** Called whenever the revealed state changes (toggle or auto-hide). */\n onRevealedChange?: (revealed: boolean) => void;\n /** Called each time the user reveals the value — hook audit logging here. */\n onReveal?: () => void;\n /** Set false to hide the toggle; the value then stays masked. */\n canReveal?: boolean;\n /** Re-mask this many milliseconds after a reveal. */\n autoHideMs?: number;\n /** Overrides for any user-facing string. */\n labels?: Partial<PhiMaskLabels>;\n}\n\nconst BULLETS = '••••••••';\n\n/**\n * Masks a sensitive value (PHI/PII) behind bullets with an optional reveal\n * toggle. While masked, the value is absent from the DOM and accessible name.\n *\n * @example\n * ```tsx\n * <PhiMask value=\"123-45-6789\" keepLast={4} autoHideMs={10000} onReveal={audit} />\n * ```\n */\nexport const PhiMask = React.forwardRef<HTMLSpanElement, PhiMaskProps>(\n function PhiMask(\n {\n value,\n keepLast = 0,\n revealed: revealedProp,\n defaultRevealed = false,\n onRevealedChange,\n onReveal,\n canReveal = true,\n autoHideMs,\n labels: labelOverrides,\n className,\n ...props\n },\n ref\n ) {\n const labels = { ...defaultPhiMaskLabels, ...labelOverrides };\n const [internal, setInternal] = React.useState(defaultRevealed);\n const revealed = revealedProp ?? internal;\n\n const setRevealed = React.useCallback(\n (next: boolean) => {\n if (revealedProp === undefined) setInternal(next);\n onRevealedChange?.(next);\n },\n [revealedProp, onRevealedChange]\n );\n\n React.useEffect(() => {\n if (!revealed || !autoHideMs) return;\n const timer = window.setTimeout(() => setRevealed(false), autoHideMs);\n return () => window.clearTimeout(timer);\n }, [revealed, autoHideMs, setRevealed]);\n\n // At least one character always stays hidden, however large keepLast is.\n const suffix = Math.min(keepLast, value.length - 1);\n const visible = suffix > 0 ? value.slice(-suffix) : '';\n const shown = revealed && canReveal;\n\n return (\n <span\n ref={ref}\n data-slot=\"phi-mask\"\n data-revealed={shown || undefined}\n className={cn(\n 'inline-flex items-center gap-1 align-baseline',\n className\n )}\n {...props}\n >\n {shown ? (\n <span data-slot=\"phi-mask-value\">{value}</span>\n ) : (\n <span data-slot=\"phi-mask-value\" className=\"tabular-nums\">\n <span aria-hidden=\"true\" className=\"text-muted-foreground\">\n {BULLETS}\n {visible && <span className=\"text-foreground\">{visible}</span>}\n </span>\n <span className=\"sr-only\">\n {visible ? labels.maskedEnding(visible) : labels.masked}\n </span>\n </span>\n )}\n {canReveal && (\n <button\n type=\"button\"\n aria-pressed={shown}\n aria-label={shown ? labels.hide : labels.reveal}\n title={shown ? labels.hide : labels.reveal}\n data-slot=\"phi-mask-toggle\"\n onClick={() => {\n setRevealed(!shown);\n if (!shown) onReveal?.();\n }}\n className={cn(\n 'text-muted-foreground hover:text-foreground inline-flex rounded p-0.5',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none'\n )}\n >\n {shown ? (\n <EyeOff className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n ) : (\n <Eye className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n )}\n </button>\n )}\n </span>\n );\n }\n);\n"]}
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+
3
+ // src/hooks/useLiveAnnouncement.ts
4
+ function useLiveAnnouncement() {
5
+ const [message, setMessage] = React.useState("");
6
+ const timerRef = React.useRef(
7
+ void 0
8
+ );
9
+ const announce = React.useCallback((next) => {
10
+ setMessage("");
11
+ if (timerRef.current !== void 0) clearTimeout(timerRef.current);
12
+ timerRef.current = setTimeout(() => setMessage(next), 50);
13
+ }, []);
14
+ React.useEffect(
15
+ () => () => {
16
+ if (timerRef.current !== void 0) clearTimeout(timerRef.current);
17
+ },
18
+ []
19
+ );
20
+ return [message, announce];
21
+ }
22
+
23
+ export { useLiveAnnouncement };
24
+ //# sourceMappingURL=chunk-HNXLLDPN.js.map
25
+ //# sourceMappingURL=chunk-HNXLLDPN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useLiveAnnouncement.ts"],"names":[],"mappings":";;;AAkBO,SAAS,mBAAA,GAA2D;AACzE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAU,eAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,QAAA,GAAiB,KAAA,CAAA,MAAA;AAAA,IACrB;AAAA,GACF;AAEA,EAAA,MAAM,QAAA,GAAiB,KAAA,CAAA,WAAA,CAAY,CAAC,IAAA,KAAiB;AACnD,IAAA,UAAA,CAAW,EAAE,CAAA;AACb,IAAA,IAAI,QAAA,CAAS,OAAA,KAAY,MAAA,EAAW,YAAA,CAAa,SAAS,OAAO,CAAA;AACjE,IAAA,QAAA,CAAS,UAAU,UAAA,CAAW,MAAM,UAAA,CAAW,IAAI,GAAG,EAAE,CAAA;AAAA,EAC1D,CAAA,EAAG,EAAE,CAAA;AAEL,EAAM,KAAA,CAAA,SAAA;AAAA,IACJ,MAAM,MAAM;AACV,MAAA,IAAI,QAAA,CAAS,OAAA,KAAY,MAAA,EAAW,YAAA,CAAa,SAAS,OAAO,CAAA;AAAA,IACnE,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,OAAO,CAAC,SAAS,QAAQ,CAAA;AAC3B","file":"chunk-HNXLLDPN.js","sourcesContent":["'use client';\n\nimport * as React from 'react';\n\n/**\n * State for an `aria-live` region that re-announces even when the same\n * message is emitted twice in a row. Setting identical React state bails out\n * (and identical DOM text isn't a mutation), so screen readers would stay\n * silent for repeated actions like \"moved down\" — this clears the region\n * first, then sets the message a tick later.\n *\n * @example\n * ```tsx\n * const [announcement, announce] = useLiveAnnouncement();\n * // announce('Item moved down');\n * // <div aria-live=\"polite\" className=\"sr-only\">{announcement}</div>\n * ```\n */\nexport function useLiveAnnouncement(): [string, (message: string) => void] {\n const [message, setMessage] = React.useState('');\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n );\n\n const announce = React.useCallback((next: string) => {\n setMessage('');\n if (timerRef.current !== undefined) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => setMessage(next), 50);\n }, []);\n\n React.useEffect(\n () => () => {\n if (timerRef.current !== undefined) clearTimeout(timerRef.current);\n },\n []\n );\n\n return [message, announce];\n}\n"]}
@@ -0,0 +1,154 @@
1
+ 'use strict';
2
+
3
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
4
+ var React = require('react');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
+
27
+ var defaultCompletenessMeterLabels = {
28
+ title: "Data completeness",
29
+ progress: "Data completeness",
30
+ percent: (percent) => `${percent}%`,
31
+ missing: (count) => `Missing (${count})`,
32
+ allComplete: "All fields complete"
33
+ };
34
+ function getCompleteness(fields) {
35
+ let total = 0;
36
+ let done = 0;
37
+ for (const f of fields) {
38
+ const w = f.weight === void 0 ? 1 : Number.isFinite(f.weight) ? Math.max(0, f.weight) : 0;
39
+ total += w;
40
+ if (f.complete) done += w;
41
+ }
42
+ return {
43
+ percent: total > 0 ? Math.round(done / total * 100) : 100,
44
+ missing: fields.filter((f) => !f.complete)
45
+ };
46
+ }
47
+ function tone(percent) {
48
+ if (percent >= 80) return "bg-success-500";
49
+ if (percent >= 50) return "bg-warning-500";
50
+ return "bg-destructive-500";
51
+ }
52
+ var CompletenessMeter = React__namespace.forwardRef(function CompletenessMeter2({
53
+ fields,
54
+ variant = "default",
55
+ onFieldClick,
56
+ labels: labelOverrides,
57
+ className,
58
+ ...props
59
+ }, ref) {
60
+ const labels = { ...defaultCompletenessMeterLabels, ...labelOverrides };
61
+ const { percent, missing } = getCompleteness(fields);
62
+ const titleId = React__namespace.useId();
63
+ const compact = variant === "compact";
64
+ const bar = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
65
+ /* @__PURE__ */ jsxRuntime.jsx(
66
+ "div",
67
+ {
68
+ role: "progressbar",
69
+ "aria-valuenow": percent,
70
+ "aria-valuemin": 0,
71
+ "aria-valuemax": 100,
72
+ "aria-valuetext": labels.percent(percent),
73
+ "aria-label": labels.progress,
74
+ "data-slot": "completeness-meter-bar",
75
+ className: chunkS5RVSXDV_cjs.cn(
76
+ "bg-muted h-2 overflow-hidden rounded-full",
77
+ compact ? "w-24" : "flex-1"
78
+ ),
79
+ children: /* @__PURE__ */ jsxRuntime.jsx(
80
+ "div",
81
+ {
82
+ className: chunkS5RVSXDV_cjs.cn(
83
+ "h-full rounded-full motion-safe:transition-[width] motion-safe:duration-300",
84
+ tone(percent)
85
+ ),
86
+ style: { width: `${percent}%` }
87
+ }
88
+ )
89
+ }
90
+ ),
91
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-xs font-medium tabular-nums", children: labels.percent(percent) })
92
+ ] });
93
+ if (compact) {
94
+ return /* @__PURE__ */ jsxRuntime.jsx(
95
+ "div",
96
+ {
97
+ ref,
98
+ "data-slot": "completeness-meter",
99
+ className: chunkS5RVSXDV_cjs.cn("inline-flex", className),
100
+ ...props,
101
+ children: bar
102
+ }
103
+ );
104
+ }
105
+ return /* @__PURE__ */ jsxRuntime.jsxs(
106
+ "div",
107
+ {
108
+ ref,
109
+ role: "group",
110
+ "aria-labelledby": titleId,
111
+ "data-slot": "completeness-meter",
112
+ className: chunkS5RVSXDV_cjs.cn("flex flex-col gap-2 text-sm", className),
113
+ ...props,
114
+ children: [
115
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { id: titleId, className: "text-foreground text-sm font-semibold", children: labels.title }),
116
+ bar,
117
+ missing.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-success-700 dark:text-success-400 text-xs", children: labels.allComplete }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
118
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mb-1 text-xs", children: labels.missing(missing.length) }),
119
+ /* @__PURE__ */ jsxRuntime.jsx(
120
+ "ul",
121
+ {
122
+ className: "flex flex-col gap-1",
123
+ "data-slot": "completeness-meter-missing",
124
+ children: missing.map((f) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-1.5 text-xs", children: [
125
+ /* @__PURE__ */ jsxRuntime.jsx(
126
+ "span",
127
+ {
128
+ "aria-hidden": "true",
129
+ className: "bg-destructive-500 h-1.5 w-1.5 shrink-0 rounded-full"
130
+ }
131
+ ),
132
+ onFieldClick ? /* @__PURE__ */ jsxRuntime.jsx(
133
+ "button",
134
+ {
135
+ type: "button",
136
+ onClick: () => onFieldClick(f.key),
137
+ className: "text-foreground decoration-primary-500 focus-visible:ring-ring rounded-sm text-start underline underline-offset-2 hover:decoration-2 focus-visible:ring-2 focus-visible:outline-none",
138
+ children: f.label
139
+ }
140
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground", children: f.label })
141
+ ] }, f.key))
142
+ }
143
+ )
144
+ ] })
145
+ ]
146
+ }
147
+ );
148
+ });
149
+
150
+ exports.CompletenessMeter = CompletenessMeter;
151
+ exports.defaultCompletenessMeterLabels = defaultCompletenessMeterLabels;
152
+ exports.getCompleteness = getCompleteness;
153
+ //# sourceMappingURL=chunk-I2MMUFCN.cjs.map
154
+ //# sourceMappingURL=chunk-I2MMUFCN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CompletenessMeter/CompletenessMeter.tsx"],"names":["React","CompletenessMeter","jsxs","jsx","cn"],"mappings":"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","file":"chunk-I2MMUFCN.cjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CompletenessField {\n /** Stable key, passed back to `onFieldClick`. */\n key: string;\n /** Display name of the field. */\n label: string;\n /** Whether the field has a value. */\n complete: boolean;\n /** Relative importance; defaults to 1. */\n weight?: number;\n}\n\nexport interface CompletenessMeterLabels {\n /** Heading of the full variant. */\n title: string;\n /** Accessible name of the progress bar. */\n progress: string;\n /** Visible percentage and `aria-valuetext`. */\n percent: (percent: number) => string;\n /** Heading of the missing-fields list. */\n missing: (count: number) => string;\n /** Shown when nothing is missing. */\n allComplete: string;\n}\n\nexport const defaultCompletenessMeterLabels: CompletenessMeterLabels = {\n title: 'Data completeness',\n progress: 'Data completeness',\n percent: (percent) => `${percent}%`,\n missing: (count) => `Missing (${count})`,\n allComplete: 'All fields complete',\n};\n\n/** Weighted completion percentage (0–100) and the incomplete fields. */\nexport function getCompleteness(fields: CompletenessField[]) {\n let total = 0;\n let done = 0;\n for (const f of fields) {\n const w =\n f.weight === undefined\n ? 1\n : Number.isFinite(f.weight)\n ? Math.max(0, f.weight)\n : 0;\n total += w;\n if (f.complete) done += w;\n }\n return {\n percent: total > 0 ? Math.round((done / total) * 100) : 100,\n missing: fields.filter((f) => !f.complete),\n };\n}\n\nfunction tone(percent: number) {\n if (percent >= 80) return 'bg-success-500';\n if (percent >= 50) return 'bg-warning-500';\n return 'bg-destructive-500';\n}\n\nexport interface CompletenessMeterProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Fields that make up the record. */\n fields: CompletenessField[];\n /** `compact` shows the bar and percentage only. */\n variant?: 'default' | 'compact';\n /** Makes each missing field a button, e.g. to focus its input. */\n onFieldClick?: (key: string) => void;\n /** Overrides for any user-facing string. */\n labels?: Partial<CompletenessMeterLabels>;\n}\n\n/**\n * How complete a record is: a weighted percentage, a progress bar and the\n * list of missing fields.\n *\n * @example\n * ```tsx\n * <CompletenessMeter fields={fields} onFieldClick={(key) => focusField(key)} />\n * ```\n */\nexport const CompletenessMeter = React.forwardRef<\n HTMLDivElement,\n CompletenessMeterProps\n>(function CompletenessMeter(\n {\n fields,\n variant = 'default',\n onFieldClick,\n labels: labelOverrides,\n className,\n ...props\n },\n ref\n) {\n const labels = { ...defaultCompletenessMeterLabels, ...labelOverrides };\n const { percent, missing } = getCompleteness(fields);\n const titleId = React.useId();\n const compact = variant === 'compact';\n\n const bar = (\n <div className=\"flex items-center gap-2\">\n <div\n role=\"progressbar\"\n aria-valuenow={percent}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuetext={labels.percent(percent)}\n aria-label={labels.progress}\n data-slot=\"completeness-meter-bar\"\n className={cn(\n 'bg-muted h-2 overflow-hidden rounded-full',\n compact ? 'w-24' : 'flex-1'\n )}\n >\n <div\n className={cn(\n 'h-full rounded-full motion-safe:transition-[width] motion-safe:duration-300',\n tone(percent)\n )}\n style={{ width: `${percent}%` }}\n />\n </div>\n <span className=\"text-muted-foreground text-xs font-medium tabular-nums\">\n {labels.percent(percent)}\n </span>\n </div>\n );\n\n if (compact) {\n return (\n <div\n ref={ref}\n data-slot=\"completeness-meter\"\n className={cn('inline-flex', className)}\n {...props}\n >\n {bar}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-labelledby={titleId}\n data-slot=\"completeness-meter\"\n className={cn('flex flex-col gap-2 text-sm', className)}\n {...props}\n >\n <h3 id={titleId} className=\"text-foreground text-sm font-semibold\">\n {labels.title}\n </h3>\n {bar}\n {missing.length === 0 ? (\n <p className=\"text-success-700 dark:text-success-400 text-xs\">\n {labels.allComplete}\n </p>\n ) : (\n <div>\n <p className=\"text-muted-foreground mb-1 text-xs\">\n {labels.missing(missing.length)}\n </p>\n <ul\n className=\"flex flex-col gap-1\"\n data-slot=\"completeness-meter-missing\"\n >\n {missing.map((f) => (\n <li key={f.key} className=\"flex items-center gap-1.5 text-xs\">\n <span\n aria-hidden=\"true\"\n className=\"bg-destructive-500 h-1.5 w-1.5 shrink-0 rounded-full\"\n />\n {onFieldClick ? (\n <button\n type=\"button\"\n onClick={() => onFieldClick(f.key)}\n className=\"text-foreground decoration-primary-500 focus-visible:ring-ring rounded-sm text-start underline underline-offset-2 hover:decoration-2 focus-visible:ring-2 focus-visible:outline-none\"\n >\n {f.label}\n </button>\n ) : (\n <span className=\"text-foreground\">{f.label}</span>\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n );\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkLFPJ3OUM_cjs = require('./chunk-LFPJ3OUM.cjs');
3
+ var chunkRIUQP2QS_cjs = require('./chunk-RIUQP2QS.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -85,11 +85,11 @@ var SurveyBlock = ({ code, id }) => {
85
85
  };
86
86
  }, [code]);
87
87
  if (!parsed) {
88
- return /* @__PURE__ */ jsxRuntime.jsx(chunkLFPJ3OUM_cjs.FenceBlock, { code, language: "survey", supportsRawView: true, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-6 text-sm text-neutral-500", children: "Loading survey\u2026" }) });
88
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkRIUQP2QS_cjs.FenceBlock, { code, language: "survey", supportsRawView: true, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center p-6 text-sm text-neutral-500", children: "Loading survey\u2026" }) });
89
89
  }
90
90
  const { fields, error } = parsed;
91
91
  return /* @__PURE__ */ jsxRuntime.jsx(
92
- chunkLFPJ3OUM_cjs.FenceBlock,
92
+ chunkRIUQP2QS_cjs.FenceBlock,
93
93
  {
94
94
  code,
95
95
  language: "survey",
@@ -194,5 +194,5 @@ var SurveyBlock = ({ code, id }) => {
194
194
  };
195
195
 
196
196
  exports.SurveyBlock = SurveyBlock;
197
- //# sourceMappingURL=chunk-GYXUS65N.cjs.map
198
- //# sourceMappingURL=chunk-GYXUS65N.cjs.map
197
+ //# sourceMappingURL=chunk-IGDO62KR.cjs.map
198
+ //# sourceMappingURL=chunk-IGDO62KR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Markdown/SurveyBlock.tsx"],"names":["useState","useEffect","jsx","FenceBlock","jsxs"],"mappings":"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","file":"chunk-GYXUS65N.cjs","sourcesContent":["/** Survey/questionnaire preview from JSON or YAML. Requires `js-yaml` for YAML input. */\nimport React, { useEffect, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface SurveyBlockProps {\n code: string;\n id: string;\n}\n\ninterface SurveyField {\n type: string;\n name: string;\n title?: string;\n label?: string;\n choices?: Array<string | { value: string; text: string }>;\n isRequired?: boolean;\n}\n\ninterface ParsedSurvey {\n fields: SurveyField[];\n error: string | null;\n}\n\ntype YamlLoadFn = (input: string) => unknown;\nlet yamlPromise: Promise<YamlLoadFn> | null = null;\nfunction loadYaml(): Promise<YamlLoadFn> {\n if (!yamlPromise) {\n yamlPromise = import(/* @vite-ignore */ 'js-yaml')\n .then((mod) => {\n const api =\n (mod as { default?: { load?: YamlLoadFn }; load?: YamlLoadFn })\n .default ?? mod;\n const load = (api as { load?: YamlLoadFn }).load;\n if (typeof load !== 'function')\n throw new Error('js-yaml load not found');\n return load;\n })\n .catch((err) => {\n yamlPromise = null;\n throw err;\n });\n }\n return yamlPromise;\n}\n\nfunction tryParseJson(\n code: string\n): { ok: true; data: unknown } | { ok: false } {\n try {\n return { ok: true, data: JSON.parse(code) };\n } catch {\n return { ok: false };\n }\n}\n\nfunction elementsToParsed(data: unknown): ParsedSurvey {\n if (!data || typeof data !== 'object') {\n return { fields: [], error: 'Invalid survey data format' };\n }\n const obj = data as Record<string, unknown>;\n\n let elements: unknown[] = [];\n if (Array.isArray(obj.pages)) {\n for (const page of obj.pages as Array<Record<string, unknown>>) {\n if (Array.isArray(page.elements)) {\n elements = elements.concat(page.elements);\n }\n }\n } else if (Array.isArray(obj.elements)) {\n elements = obj.elements;\n } else if (Array.isArray(obj.questions)) {\n elements = obj.questions;\n } else if (Array.isArray(obj.fields)) {\n elements = obj.fields;\n } else {\n return { fields: [], error: 'No survey questions found in data' };\n }\n\n return { fields: elements as SurveyField[], error: null };\n}\n\nexport const SurveyBlock: React.FC<SurveyBlockProps> = ({ code, id }) => {\n const [parsed, setParsed] = useState<ParsedSurvey | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n\n const jsonResult = tryParseJson(code);\n if (jsonResult.ok) {\n setParsed(elementsToParsed(jsonResult.data));\n return;\n }\n\n loadYaml()\n .then((load) => {\n try {\n const data = load(code);\n if (!cancelled) setParsed(elementsToParsed(data));\n } catch (err) {\n if (!cancelled)\n setParsed({\n fields: [],\n error: `Failed to parse survey data: ${(err as Error).message}`,\n });\n }\n })\n .catch(() => {\n if (!cancelled)\n setParsed({\n fields: [],\n error:\n 'Survey preview requires the `js-yaml` package for YAML input. Install it with `npm install js-yaml`.',\n });\n });\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n if (!parsed) {\n return (\n <FenceBlock code={code} language=\"survey\" supportsRawView>\n <div className=\"flex items-center justify-center p-6 text-sm text-neutral-500\">\n Loading survey…\n </div>\n </FenceBlock>\n );\n }\n\n const { fields, error } = parsed;\n\n return (\n <FenceBlock\n code={code}\n language=\"survey\"\n supportsRawView\n error={error ?? undefined}\n >\n <div className=\"space-y-4 p-4\">\n <h4 className=\"text-sm font-medium text-neutral-700 dark:text-neutral-300\">\n Survey Preview\n </h4>\n {fields.map((field, i) => {\n const fieldId = `${id}-field-${field.name ?? i}`;\n return (\n <div key={field.name ?? i} className=\"space-y-1.5\">\n <label\n htmlFor={fieldId}\n className=\"block text-sm font-medium text-neutral-700 dark:text-neutral-300\"\n >\n {field.title ?? field.label ?? field.name}\n {field.isRequired && (\n <span className=\"ms-1 text-red-500\">*</span>\n )}\n </label>\n\n {(field.type === 'radiogroup' || field.type === 'radio') &&\n field.choices && (\n <div className=\"space-y-1\">\n {field.choices.map((choice, ci) => {\n const value =\n typeof choice === 'string' ? choice : choice.value;\n const text =\n typeof choice === 'string' ? choice : choice.text;\n return (\n <label\n key={ci}\n className=\"flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400\"\n >\n <input\n type=\"radio\"\n name={`${id}-${field.name}`}\n value={value}\n disabled\n className=\"accent-primary-500\"\n />\n {text}\n </label>\n );\n })}\n </div>\n )}\n\n {(field.type === 'checkbox' || field.type === 'boolean') && (\n <input\n id={fieldId}\n type=\"checkbox\"\n disabled\n className=\"accent-primary-500\"\n />\n )}\n\n {(field.type === 'text' || field.type === 'comment') && (\n <input\n id={fieldId}\n type=\"text\"\n disabled\n placeholder={field.title ?? field.name}\n className=\"w-full rounded-md border border-neutral-300 bg-neutral-100 px-3 py-1.5 text-sm dark:border-neutral-600 dark:bg-neutral-800\"\n />\n )}\n\n {field.type === 'rating' && (\n <div\n role=\"img\"\n className=\"flex gap-1\"\n aria-label=\"Rating: 0 out of 5\"\n >\n {[1, 2, 3, 4, 5].map((n) => (\n <span\n key={n}\n aria-hidden=\"true\"\n className=\"text-lg text-neutral-500 dark:text-neutral-500\"\n >\n ★\n </span>\n ))}\n </div>\n )}\n\n {field.type === 'dropdown' && field.choices && (\n <select\n id={fieldId}\n name={fieldId}\n disabled\n className=\"w-full rounded-md border border-neutral-300 bg-neutral-100 px-3 py-1.5 text-sm dark:border-neutral-600 dark:bg-neutral-800\"\n >\n {field.choices.map((choice, ci) => {\n const value =\n typeof choice === 'string' ? choice : choice.value;\n const text =\n typeof choice === 'string' ? choice : choice.text;\n return (\n <option key={ci} value={value}>\n {text}\n </option>\n );\n })}\n </select>\n )}\n </div>\n );\n })}\n <p className=\"text-xs text-neutral-600 dark:text-neutral-400\">\n This is a preview. Interactive survey support coming soon.\n </p>\n </div>\n </FenceBlock>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Markdown/SurveyBlock.tsx"],"names":["useState","useEffect","jsx","FenceBlock","jsxs"],"mappings":"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","file":"chunk-IGDO62KR.cjs","sourcesContent":["/** Survey/questionnaire preview from JSON or YAML. Requires `js-yaml` for YAML input. */\nimport React, { useEffect, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface SurveyBlockProps {\n code: string;\n id: string;\n}\n\ninterface SurveyField {\n type: string;\n name: string;\n title?: string;\n label?: string;\n choices?: Array<string | { value: string; text: string }>;\n isRequired?: boolean;\n}\n\ninterface ParsedSurvey {\n fields: SurveyField[];\n error: string | null;\n}\n\ntype YamlLoadFn = (input: string) => unknown;\nlet yamlPromise: Promise<YamlLoadFn> | null = null;\nfunction loadYaml(): Promise<YamlLoadFn> {\n if (!yamlPromise) {\n yamlPromise = import(/* @vite-ignore */ 'js-yaml')\n .then((mod) => {\n const api =\n (mod as { default?: { load?: YamlLoadFn }; load?: YamlLoadFn })\n .default ?? mod;\n const load = (api as { load?: YamlLoadFn }).load;\n if (typeof load !== 'function')\n throw new Error('js-yaml load not found');\n return load;\n })\n .catch((err) => {\n yamlPromise = null;\n throw err;\n });\n }\n return yamlPromise;\n}\n\nfunction tryParseJson(\n code: string\n): { ok: true; data: unknown } | { ok: false } {\n try {\n return { ok: true, data: JSON.parse(code) };\n } catch {\n return { ok: false };\n }\n}\n\nfunction elementsToParsed(data: unknown): ParsedSurvey {\n if (!data || typeof data !== 'object') {\n return { fields: [], error: 'Invalid survey data format' };\n }\n const obj = data as Record<string, unknown>;\n\n let elements: unknown[] = [];\n if (Array.isArray(obj.pages)) {\n for (const page of obj.pages as Array<Record<string, unknown>>) {\n if (Array.isArray(page.elements)) {\n elements = elements.concat(page.elements);\n }\n }\n } else if (Array.isArray(obj.elements)) {\n elements = obj.elements;\n } else if (Array.isArray(obj.questions)) {\n elements = obj.questions;\n } else if (Array.isArray(obj.fields)) {\n elements = obj.fields;\n } else {\n return { fields: [], error: 'No survey questions found in data' };\n }\n\n return { fields: elements as SurveyField[], error: null };\n}\n\nexport const SurveyBlock: React.FC<SurveyBlockProps> = ({ code, id }) => {\n const [parsed, setParsed] = useState<ParsedSurvey | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n\n const jsonResult = tryParseJson(code);\n if (jsonResult.ok) {\n setParsed(elementsToParsed(jsonResult.data));\n return;\n }\n\n loadYaml()\n .then((load) => {\n try {\n const data = load(code);\n if (!cancelled) setParsed(elementsToParsed(data));\n } catch (err) {\n if (!cancelled)\n setParsed({\n fields: [],\n error: `Failed to parse survey data: ${(err as Error).message}`,\n });\n }\n })\n .catch(() => {\n if (!cancelled)\n setParsed({\n fields: [],\n error:\n 'Survey preview requires the `js-yaml` package for YAML input. Install it with `npm install js-yaml`.',\n });\n });\n return () => {\n cancelled = true;\n };\n }, [code]);\n\n if (!parsed) {\n return (\n <FenceBlock code={code} language=\"survey\" supportsRawView>\n <div className=\"flex items-center justify-center p-6 text-sm text-neutral-500\">\n Loading survey…\n </div>\n </FenceBlock>\n );\n }\n\n const { fields, error } = parsed;\n\n return (\n <FenceBlock\n code={code}\n language=\"survey\"\n supportsRawView\n error={error ?? undefined}\n >\n <div className=\"space-y-4 p-4\">\n <h4 className=\"text-sm font-medium text-neutral-700 dark:text-neutral-300\">\n Survey Preview\n </h4>\n {fields.map((field, i) => {\n const fieldId = `${id}-field-${field.name ?? i}`;\n return (\n <div key={field.name ?? i} className=\"space-y-1.5\">\n <label\n htmlFor={fieldId}\n className=\"block text-sm font-medium text-neutral-700 dark:text-neutral-300\"\n >\n {field.title ?? field.label ?? field.name}\n {field.isRequired && (\n <span className=\"ms-1 text-red-500\">*</span>\n )}\n </label>\n\n {(field.type === 'radiogroup' || field.type === 'radio') &&\n field.choices && (\n <div className=\"space-y-1\">\n {field.choices.map((choice, ci) => {\n const value =\n typeof choice === 'string' ? choice : choice.value;\n const text =\n typeof choice === 'string' ? choice : choice.text;\n return (\n <label\n key={ci}\n className=\"flex items-center gap-2 text-sm text-neutral-600 dark:text-neutral-400\"\n >\n <input\n type=\"radio\"\n name={`${id}-${field.name}`}\n value={value}\n disabled\n className=\"accent-primary-500\"\n />\n {text}\n </label>\n );\n })}\n </div>\n )}\n\n {(field.type === 'checkbox' || field.type === 'boolean') && (\n <input\n id={fieldId}\n type=\"checkbox\"\n disabled\n className=\"accent-primary-500\"\n />\n )}\n\n {(field.type === 'text' || field.type === 'comment') && (\n <input\n id={fieldId}\n type=\"text\"\n disabled\n placeholder={field.title ?? field.name}\n className=\"w-full rounded-md border border-neutral-300 bg-neutral-100 px-3 py-1.5 text-sm dark:border-neutral-600 dark:bg-neutral-800\"\n />\n )}\n\n {field.type === 'rating' && (\n <div\n role=\"img\"\n className=\"flex gap-1\"\n aria-label=\"Rating: 0 out of 5\"\n >\n {[1, 2, 3, 4, 5].map((n) => (\n <span\n key={n}\n aria-hidden=\"true\"\n className=\"text-lg text-neutral-500 dark:text-neutral-500\"\n >\n ★\n </span>\n ))}\n </div>\n )}\n\n {field.type === 'dropdown' && field.choices && (\n <select\n id={fieldId}\n name={fieldId}\n disabled\n className=\"w-full rounded-md border border-neutral-300 bg-neutral-100 px-3 py-1.5 text-sm dark:border-neutral-600 dark:bg-neutral-800\"\n >\n {field.choices.map((choice, ci) => {\n const value =\n typeof choice === 'string' ? choice : choice.value;\n const text =\n typeof choice === 'string' ? choice : choice.text;\n return (\n <option key={ci} value={value}>\n {text}\n </option>\n );\n })}\n </select>\n )}\n </div>\n );\n })}\n <p className=\"text-xs text-neutral-600 dark:text-neutral-400\">\n This is a preview. Interactive survey support coming soon.\n </p>\n </div>\n </FenceBlock>\n );\n};\n"]}
@@ -7,10 +7,11 @@ import { DateInput } from './chunk-7IBZA7G6.js';
7
7
  import { Card, CardHeader, CardContent } from './chunk-QYSUYB3S.js';
8
8
  import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-ENMXHZNE.js';
9
9
  import { Input } from './chunk-3IMM2PM4.js';
10
- import { useLiveAnnouncement, useDragReorder, dragIndicatorClasses } from './chunk-7ZVTLTJF.js';
10
+ import { useDragReorder, dragIndicatorClasses } from './chunk-YUMOM3KE.js';
11
+ import { useLiveAnnouncement } from './chunk-HNXLLDPN.js';
11
12
  import { AlertCircle, Plus, GripVertical, StickyNote, Ban, Pencil, CalendarCheck, ExternalLink, ThumbsUp, HandMetal, ThumbsDown, HelpCircle, ChevronDown, ChevronUp, RefreshCw } from './chunk-BKSPDTX4.js';
12
- import { Button } from './chunk-7YO7DNUV.js';
13
13
  import { Badge } from './chunk-BMSG4NBH.js';
14
+ import { Button } from './chunk-WFBUBT54.js';
14
15
  import { cn } from './chunk-TQONQSJO.js';
15
16
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
16
17
  import * as React3 from 'react';
@@ -1585,5 +1586,5 @@ function MedicationReconciliation({
1585
1586
  }
1586
1587
 
1587
1588
  export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig };
1588
- //# sourceMappingURL=chunk-JBIGSP2T.js.map
1589
- //# sourceMappingURL=chunk-JBIGSP2T.js.map
1589
+ //# sourceMappingURL=chunk-ILDLYRTP.js.map
1590
+ //# sourceMappingURL=chunk-ILDLYRTP.js.map