@mieweb/ui 0.10.0-dev.1 → 0.10.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/dist/CsvBlock-ROJCKJDP.cjs +16 -0
  2. package/dist/{CsvBlock-CVYA3HYS.cjs.map → CsvBlock-ROJCKJDP.cjs.map} +1 -1
  3. package/dist/CsvBlock-UWPMTLE2.js +7 -0
  4. package/dist/{CsvBlock-SM4NKSHA.js.map → CsvBlock-UWPMTLE2.js.map} +1 -1
  5. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +16 -0
  6. package/dist/{HtmlPreviewBlock-JF454L2L.cjs.map → HtmlPreviewBlock-DWFN6EUB.cjs.map} +1 -1
  7. package/dist/HtmlPreviewBlock-ME5U3XNS.js +7 -0
  8. package/dist/{HtmlPreviewBlock-FAMF4W24.js.map → HtmlPreviewBlock-ME5U3XNS.js.map} +1 -1
  9. package/dist/MermaidBlock-2B6CPD6Y.js +7 -0
  10. package/dist/{MermaidBlock-7V5G4K5A.js.map → MermaidBlock-2B6CPD6Y.js.map} +1 -1
  11. package/dist/MermaidBlock-D2UC5M55.cjs +16 -0
  12. package/dist/{MermaidBlock-FR5SQX4Q.cjs.map → MermaidBlock-D2UC5M55.cjs.map} +1 -1
  13. package/dist/SurveyBlock-4CD4AYMJ.cjs +16 -0
  14. package/dist/{SurveyBlock-MCJVWR7H.cjs.map → SurveyBlock-4CD4AYMJ.cjs.map} +1 -1
  15. package/dist/SurveyBlock-4DO62RBT.js +7 -0
  16. package/dist/{SurveyBlock-6K2POV7S.js.map → SurveyBlock-4DO62RBT.js.map} +1 -1
  17. package/dist/brands/index.cjs +13 -13
  18. package/dist/brands/index.js +4 -4
  19. package/dist/brands/types.cjs +4 -4
  20. package/dist/brands/types.d.cts +9 -0
  21. package/dist/brands/types.d.ts +9 -0
  22. package/dist/brands/types.js +1 -1
  23. package/dist/{chunk-XTHMC76F.cjs → chunk-2G75X6TS.cjs} +4 -4
  24. package/dist/{chunk-XTHMC76F.cjs.map → chunk-2G75X6TS.cjs.map} +1 -1
  25. package/dist/chunk-2IZLKPUW.js +412 -0
  26. package/dist/chunk-2IZLKPUW.js.map +1 -0
  27. package/dist/{chunk-AZP3DDBT.cjs → chunk-2QKBTPUC.cjs} +8 -8
  28. package/dist/{chunk-AZP3DDBT.cjs.map → chunk-2QKBTPUC.cjs.map} +1 -1
  29. package/dist/{chunk-7KWNY3HG.js → chunk-2YCERQWC.js} +8 -8
  30. package/dist/{chunk-7KWNY3HG.js.map → chunk-2YCERQWC.js.map} +1 -1
  31. package/dist/{chunk-VSVGMMNO.js → chunk-3M7TAXNR.js} +3 -3
  32. package/dist/{chunk-VSVGMMNO.js.map → chunk-3M7TAXNR.js.map} +1 -1
  33. package/dist/{chunk-5Z6UPVGC.cjs → chunk-3QEVGSFG.cjs} +5 -5
  34. package/dist/{chunk-5Z6UPVGC.cjs.map → chunk-3QEVGSFG.cjs.map} +1 -1
  35. package/dist/{chunk-PYHFVYVZ.js → chunk-3QGS6CXD.js} +3 -3
  36. package/dist/{chunk-PYHFVYVZ.js.map → chunk-3QGS6CXD.js.map} +1 -1
  37. package/dist/chunk-462XSCP3.cjs +199 -0
  38. package/dist/chunk-462XSCP3.cjs.map +1 -0
  39. package/dist/{chunk-WOYUQ4AT.js → chunk-5GOWFNQ6.js} +9 -3
  40. package/dist/chunk-5GOWFNQ6.js.map +1 -0
  41. package/dist/chunk-5GUOOLPR.cjs +436 -0
  42. package/dist/chunk-5GUOOLPR.cjs.map +1 -0
  43. package/dist/{chunk-WUBMDOTG.js → chunk-5JJ2DAE4.js} +4 -4
  44. package/dist/{chunk-WUBMDOTG.js.map → chunk-5JJ2DAE4.js.map} +1 -1
  45. package/dist/{chunk-RSCA5AZW.cjs → chunk-5MCBWTIF.cjs} +4 -4
  46. package/dist/{chunk-RSCA5AZW.cjs.map → chunk-5MCBWTIF.cjs.map} +1 -1
  47. package/dist/chunk-6EN3IQQI.cjs +332 -0
  48. package/dist/chunk-6EN3IQQI.cjs.map +1 -0
  49. package/dist/{chunk-OAZUDUGX.js → chunk-7IBZA7G6.js} +4 -4
  50. package/dist/{chunk-OAZUDUGX.js.map → chunk-7IBZA7G6.js.map} +1 -1
  51. package/dist/{chunk-AUOTJQGO.cjs → chunk-7ZDPD5ZX.cjs} +4 -4
  52. package/dist/{chunk-AUOTJQGO.cjs.map → chunk-7ZDPD5ZX.cjs.map} +1 -1
  53. package/dist/{chunk-IB54SKWB.cjs → chunk-7ZXAQTV4.cjs} +8 -8
  54. package/dist/{chunk-IB54SKWB.cjs.map → chunk-7ZXAQTV4.cjs.map} +1 -1
  55. package/dist/{chunk-IIFQ6BSJ.js → chunk-ACCAXVOG.js} +6 -6
  56. package/dist/{chunk-IIFQ6BSJ.js.map → chunk-ACCAXVOG.js.map} +1 -1
  57. package/dist/chunk-CR2SDI23.cjs +322 -0
  58. package/dist/chunk-CR2SDI23.cjs.map +1 -0
  59. package/dist/{chunk-OSPTA4UR.js → chunk-DEDN5HAG.js} +3 -3
  60. package/dist/{chunk-OSPTA4UR.js.map → chunk-DEDN5HAG.js.map} +1 -1
  61. package/dist/{chunk-PKD3JLS2.cjs → chunk-E4IBHYJ7.cjs} +9 -9
  62. package/dist/{chunk-PKD3JLS2.cjs.map → chunk-E4IBHYJ7.cjs.map} +1 -1
  63. package/dist/{chunk-E3KC2XLN.cjs → chunk-ELPW32ZI.cjs} +50 -50
  64. package/dist/{chunk-E3KC2XLN.cjs.map → chunk-ELPW32ZI.cjs.map} +1 -1
  65. package/dist/{chunk-QSVQABXD.js → chunk-ENKFJJZX.js} +7 -7
  66. package/dist/{chunk-QSVQABXD.js.map → chunk-ENKFJJZX.js.map} +1 -1
  67. package/dist/{chunk-MUIDWFYJ.js → chunk-FJ7YPVKV.js} +3 -3
  68. package/dist/{chunk-MUIDWFYJ.js.map → chunk-FJ7YPVKV.js.map} +1 -1
  69. package/dist/{chunk-3LHICE4I.cjs → chunk-FXO5ARBB.cjs} +5 -5
  70. package/dist/{chunk-3LHICE4I.cjs.map → chunk-FXO5ARBB.cjs.map} +1 -1
  71. package/dist/{chunk-QKAYRHWP.cjs → chunk-G3JX3UAU.cjs} +12 -12
  72. package/dist/{chunk-QKAYRHWP.cjs.map → chunk-G3JX3UAU.cjs.map} +1 -1
  73. package/dist/{chunk-OMAACCFW.cjs → chunk-GD7EBGC4.cjs} +19 -19
  74. package/dist/{chunk-OMAACCFW.cjs.map → chunk-GD7EBGC4.cjs.map} +1 -1
  75. package/dist/{chunk-KREUYVMZ.js → chunk-GOALNQZ2.js} +13 -4
  76. package/dist/chunk-GOALNQZ2.js.map +1 -0
  77. package/dist/{chunk-CK3KLRNF.js → chunk-H4ZXMQQW.js} +3 -3
  78. package/dist/{chunk-CK3KLRNF.js.map → chunk-H4ZXMQQW.js.map} +1 -1
  79. package/dist/{chunk-AHINB2TP.cjs → chunk-IX6KFB3K.cjs} +9 -9
  80. package/dist/{chunk-AHINB2TP.cjs.map → chunk-IX6KFB3K.cjs.map} +1 -1
  81. package/dist/chunk-IXFC7LK2.cjs +174 -0
  82. package/dist/chunk-IXFC7LK2.cjs.map +1 -0
  83. package/dist/{chunk-VNAREBLV.cjs → chunk-J5CSLNCN.cjs} +3 -3
  84. package/dist/{chunk-VNAREBLV.cjs.map → chunk-J5CSLNCN.cjs.map} +1 -1
  85. package/dist/{chunk-24SEAAOH.js → chunk-JHULS3EC.js} +2 -2
  86. package/dist/{chunk-24SEAAOH.js.map → chunk-JHULS3EC.js.map} +1 -1
  87. package/dist/{chunk-X5YM3KXY.js → chunk-JI244Y7C.js} +177 -3
  88. package/dist/chunk-JI244Y7C.js.map +1 -0
  89. package/dist/{chunk-MM7QKUE3.cjs → chunk-JID7AZTO.cjs} +5 -5
  90. package/dist/{chunk-MM7QKUE3.cjs.map → chunk-JID7AZTO.cjs.map} +1 -1
  91. package/dist/{chunk-ZB54MTMQ.js → chunk-KZFBQ7GY.js} +3 -3
  92. package/dist/{chunk-ZB54MTMQ.js.map → chunk-KZFBQ7GY.js.map} +1 -1
  93. package/dist/{chunk-XBXDUAIM.js → chunk-LL6IWKI3.js} +4 -4
  94. package/dist/{chunk-XBXDUAIM.js.map → chunk-LL6IWKI3.js.map} +1 -1
  95. package/dist/{chunk-ON4JULCA.js → chunk-LMBXJZLG.js} +3 -3
  96. package/dist/{chunk-ON4JULCA.js.map → chunk-LMBXJZLG.js.map} +1 -1
  97. package/dist/chunk-MWVW4APN.cjs +260 -0
  98. package/dist/chunk-MWVW4APN.cjs.map +1 -0
  99. package/dist/{chunk-BZAGP5W6.cjs → chunk-N6IY47YA.cjs} +8 -8
  100. package/dist/{chunk-BZAGP5W6.cjs.map → chunk-N6IY47YA.cjs.map} +1 -1
  101. package/dist/{chunk-OCV33S5Q.cjs → chunk-NFKX6QJP.cjs} +3 -3
  102. package/dist/{chunk-OCV33S5Q.cjs.map → chunk-NFKX6QJP.cjs.map} +1 -1
  103. package/dist/{chunk-J644FU54.cjs → chunk-NGQRS7AW.cjs} +9 -3
  104. package/dist/chunk-NGQRS7AW.cjs.map +1 -0
  105. package/dist/{chunk-QAKASRE6.js → chunk-NJ6MY6V5.js} +4 -4
  106. package/dist/{chunk-QAKASRE6.js.map → chunk-NJ6MY6V5.js.map} +1 -1
  107. package/dist/{chunk-P52GA3GJ.cjs → chunk-NM7O7RY5.cjs} +4 -2
  108. package/dist/chunk-NM7O7RY5.cjs.map +1 -0
  109. package/dist/{chunk-OFUKTVBN.cjs → chunk-OD47TTAW.cjs} +9 -9
  110. package/dist/{chunk-OFUKTVBN.cjs.map → chunk-OD47TTAW.cjs.map} +1 -1
  111. package/dist/{chunk-QKFJDQEK.js → chunk-OE5CKRUC.js} +4 -4
  112. package/dist/{chunk-QKFJDQEK.js.map → chunk-OE5CKRUC.js.map} +1 -1
  113. package/dist/{chunk-MBWF36DJ.js → chunk-P2CA3XGI.js} +3 -3
  114. package/dist/{chunk-MBWF36DJ.js.map → chunk-P2CA3XGI.js.map} +1 -1
  115. package/dist/chunk-POWS35OT.js +152 -0
  116. package/dist/chunk-POWS35OT.js.map +1 -0
  117. package/dist/chunk-PYJDVWXM.js +237 -0
  118. package/dist/chunk-PYJDVWXM.js.map +1 -0
  119. package/dist/{chunk-MTZPVOP6.js → chunk-Q77TE5DZ.js} +4 -2
  120. package/dist/chunk-Q77TE5DZ.js.map +1 -0
  121. package/dist/{chunk-L5W7TJQ5.js → chunk-RJ6NTJHC.js} +4 -4
  122. package/dist/{chunk-L5W7TJQ5.js.map → chunk-RJ6NTJHC.js.map} +1 -1
  123. package/dist/{chunk-C3DUS2VE.cjs → chunk-RS5VA6QU.cjs} +3 -3
  124. package/dist/{chunk-C3DUS2VE.cjs.map → chunk-RS5VA6QU.cjs.map} +1 -1
  125. package/dist/{chunk-IGNWT6RP.js → chunk-S7WCHDBO.js} +4 -4
  126. package/dist/{chunk-IGNWT6RP.js.map → chunk-S7WCHDBO.js.map} +1 -1
  127. package/dist/{chunk-RXPEZXAB.cjs → chunk-SGFYA22I.cjs} +5 -5
  128. package/dist/{chunk-RXPEZXAB.cjs.map → chunk-SGFYA22I.cjs.map} +1 -1
  129. package/dist/chunk-SQJFBZ42.js +297 -0
  130. package/dist/chunk-SQJFBZ42.js.map +1 -0
  131. package/dist/chunk-SUS3WFY3.js +156 -0
  132. package/dist/chunk-SUS3WFY3.js.map +1 -0
  133. package/dist/{chunk-H4AVMUOC.cjs → chunk-TAXD5ADA.cjs} +4 -4
  134. package/dist/{chunk-H4AVMUOC.cjs.map → chunk-TAXD5ADA.cjs.map} +1 -1
  135. package/dist/{chunk-NHN6A3ZO.js → chunk-TMMVIUUN.js} +4 -4
  136. package/dist/{chunk-NHN6A3ZO.js.map → chunk-TMMVIUUN.js.map} +1 -1
  137. package/dist/chunk-TPWKM7JH.js +196 -0
  138. package/dist/chunk-TPWKM7JH.js.map +1 -0
  139. package/dist/chunk-TU63764L.cjs +158 -0
  140. package/dist/chunk-TU63764L.cjs.map +1 -0
  141. package/dist/{chunk-PY7XAG4D.cjs → chunk-U42F3HLE.cjs} +177 -3
  142. package/dist/chunk-U42F3HLE.cjs.map +1 -0
  143. package/dist/{chunk-X5QRRMGB.cjs → chunk-UAMXCMST.cjs} +4 -4
  144. package/dist/{chunk-X5QRRMGB.cjs.map → chunk-UAMXCMST.cjs.map} +1 -1
  145. package/dist/{chunk-QAQOCS2J.js → chunk-UBOVDAD7.js} +3 -3
  146. package/dist/{chunk-QAQOCS2J.js.map → chunk-UBOVDAD7.js.map} +1 -1
  147. package/dist/{chunk-IGSIWNX3.cjs → chunk-UQ3VVR6A.cjs} +4 -4
  148. package/dist/{chunk-IGSIWNX3.cjs.map → chunk-UQ3VVR6A.cjs.map} +1 -1
  149. package/dist/{chunk-6QKMMKRY.cjs → chunk-UV2FVNWT.cjs} +5 -5
  150. package/dist/{chunk-6QKMMKRY.cjs.map → chunk-UV2FVNWT.cjs.map} +1 -1
  151. package/dist/{chunk-EG7XFZ3W.js → chunk-V7D3YGUV.js} +4 -4
  152. package/dist/{chunk-EG7XFZ3W.js.map → chunk-V7D3YGUV.js.map} +1 -1
  153. package/dist/{chunk-Y6DFMDMH.js → chunk-VILW53UZ.js} +3 -3
  154. package/dist/{chunk-Y6DFMDMH.js.map → chunk-VILW53UZ.js.map} +1 -1
  155. package/dist/{chunk-5WOB4UBD.js → chunk-VKELAMAZ.js} +3 -3
  156. package/dist/{chunk-5WOB4UBD.js.map → chunk-VKELAMAZ.js.map} +1 -1
  157. package/dist/{chunk-IINZWUGK.cjs → chunk-VNYW4C4J.cjs} +13 -4
  158. package/dist/chunk-VNYW4C4J.cjs.map +1 -0
  159. package/dist/{chunk-RD3JDFYJ.js → chunk-VOKVG3ER.js} +4 -4
  160. package/dist/{chunk-RD3JDFYJ.js.map → chunk-VOKVG3ER.js.map} +1 -1
  161. package/dist/{chunk-37UZHCLM.cjs → chunk-VPWJCJCX.cjs} +3 -3
  162. package/dist/{chunk-37UZHCLM.cjs.map → chunk-VPWJCJCX.cjs.map} +1 -1
  163. package/dist/{chunk-3RB35GYK.js → chunk-VU6UTJRM.js} +4 -4
  164. package/dist/{chunk-3RB35GYK.js.map → chunk-VU6UTJRM.js.map} +1 -1
  165. package/dist/{chunk-6SAYPXHX.js → chunk-WGPLUCBD.js} +4 -4
  166. package/dist/{chunk-6SAYPXHX.js.map → chunk-WGPLUCBD.js.map} +1 -1
  167. package/dist/{chunk-QO6PRHDX.cjs → chunk-WNAA6CLE.cjs} +2 -2
  168. package/dist/{chunk-QO6PRHDX.cjs.map → chunk-WNAA6CLE.cjs.map} +1 -1
  169. package/dist/{chunk-ZX2XRFE5.js → chunk-WNM7IZJ7.js} +7 -7
  170. package/dist/{chunk-ZX2XRFE5.js.map → chunk-WNM7IZJ7.js.map} +1 -1
  171. package/dist/{chunk-KLJGJJHN.cjs → chunk-WNZAYBVB.cjs} +49 -49
  172. package/dist/{chunk-KLJGJJHN.cjs.map → chunk-WNZAYBVB.cjs.map} +1 -1
  173. package/dist/{chunk-BVMABVC4.cjs → chunk-WWJIW2IH.cjs} +3 -3
  174. package/dist/{chunk-BVMABVC4.cjs.map → chunk-WWJIW2IH.cjs.map} +1 -1
  175. package/dist/{chunk-OYQ7GYAA.cjs → chunk-X4XPNTCZ.cjs} +12 -12
  176. package/dist/{chunk-OYQ7GYAA.cjs.map → chunk-X4XPNTCZ.cjs.map} +1 -1
  177. package/dist/{chunk-IFDC4TXM.cjs → chunk-XEAT7XJG.cjs} +4 -4
  178. package/dist/{chunk-IFDC4TXM.cjs.map → chunk-XEAT7XJG.cjs.map} +1 -1
  179. package/dist/{chunk-S3BCHPXT.cjs → chunk-XI34EGK5.cjs} +9 -9
  180. package/dist/{chunk-S3BCHPXT.cjs.map → chunk-XI34EGK5.cjs.map} +1 -1
  181. package/dist/chunk-Y5HFM7LO.js +310 -0
  182. package/dist/chunk-Y5HFM7LO.js.map +1 -0
  183. package/dist/{chunk-LECJMLNE.js → chunk-YQDA366U.js} +3 -3
  184. package/dist/{chunk-LECJMLNE.js.map → chunk-YQDA366U.js.map} +1 -1
  185. package/dist/{chunk-PHK4XBO5.js → chunk-Z5V7SAZ4.js} +4 -4
  186. package/dist/{chunk-PHK4XBO5.js.map → chunk-Z5V7SAZ4.js.map} +1 -1
  187. package/dist/{chunk-TZX76ZNZ.js → chunk-ZGRCSNPK.js} +5 -5
  188. package/dist/{chunk-TZX76ZNZ.js.map → chunk-ZGRCSNPK.js.map} +1 -1
  189. package/dist/{chunk-SRA2L3SQ.cjs → chunk-ZSGEGISB.cjs} +4 -4
  190. package/dist/{chunk-SRA2L3SQ.cjs.map → chunk-ZSGEGISB.cjs.map} +1 -1
  191. package/dist/components/AlertDialog/index.cjs +6 -6
  192. package/dist/components/AlertDialog/index.js +5 -5
  193. package/dist/components/Autocomplete/index.cjs +3 -3
  194. package/dist/components/Autocomplete/index.js +2 -2
  195. package/dist/components/Button/index.cjs +3 -3
  196. package/dist/components/Button/index.d.cts +3 -0
  197. package/dist/components/Button/index.d.ts +3 -0
  198. package/dist/components/Button/index.js +1 -1
  199. package/dist/components/Collapsible/index.cjs +5 -5
  200. package/dist/components/Collapsible/index.js +2 -2
  201. package/dist/components/CountryCodeDropdown/index.cjs +6 -6
  202. package/dist/components/CountryCodeDropdown/index.js +3 -3
  203. package/dist/components/CustomizableDashboard/index.cjs +11 -11
  204. package/dist/components/CustomizableDashboard/index.js +4 -4
  205. package/dist/components/DateInput/index.cjs +4 -4
  206. package/dist/components/DateInput/index.js +3 -3
  207. package/dist/components/Dropdown/index.cjs +11 -11
  208. package/dist/components/Dropdown/index.js +4 -4
  209. package/dist/components/FloatingWindow/index.cjs +4 -4
  210. package/dist/components/FloatingWindow/index.js +2 -2
  211. package/dist/components/GlossaryTooltip/index.cjs +4 -4
  212. package/dist/components/GlossaryTooltip/index.js +3 -3
  213. package/dist/components/KeyboardShortcutsOverlay/index.cjs +6 -6
  214. package/dist/components/KeyboardShortcutsOverlay/index.js +4 -4
  215. package/dist/components/Markdown/index.cjs +19 -19
  216. package/dist/components/Markdown/index.js +7 -7
  217. package/dist/components/MediaEditor/index.cjs +16 -16
  218. package/dist/components/MediaEditor/index.js +11 -11
  219. package/dist/components/MediaPlayer/index.cjs +6 -6
  220. package/dist/components/MediaPlayer/index.js +3 -3
  221. package/dist/components/MegaMenu/index.cjs +23 -0
  222. package/dist/components/MegaMenu/index.cjs.map +1 -0
  223. package/dist/components/MegaMenu/index.d.cts +106 -0
  224. package/dist/components/MegaMenu/index.d.ts +106 -0
  225. package/dist/components/MegaMenu/index.js +6 -0
  226. package/dist/components/MegaMenu/index.js.map +1 -0
  227. package/dist/components/Modal/index.cjs +11 -11
  228. package/dist/components/Modal/index.js +3 -3
  229. package/dist/components/OrbitRing/index.cjs +14 -0
  230. package/dist/components/OrbitRing/index.cjs.map +1 -0
  231. package/dist/components/OrbitRing/index.d.cts +64 -0
  232. package/dist/components/OrbitRing/index.d.ts +64 -0
  233. package/dist/components/OrbitRing/index.js +5 -0
  234. package/dist/components/OrbitRing/index.js.map +1 -0
  235. package/dist/components/RadialExplorer/index.cjs +18 -0
  236. package/dist/components/RadialExplorer/index.cjs.map +1 -0
  237. package/dist/components/RadialExplorer/index.d.cts +83 -0
  238. package/dist/components/RadialExplorer/index.d.ts +83 -0
  239. package/dist/components/RadialExplorer/index.js +9 -0
  240. package/dist/components/RadialExplorer/index.js.map +1 -0
  241. package/dist/components/RichTextEditor/index.cjs +9 -9
  242. package/dist/components/RichTextEditor/index.js +6 -6
  243. package/dist/components/SectionSpyNav/index.cjs +4 -4
  244. package/dist/components/SectionSpyNav/index.js +3 -3
  245. package/dist/components/Select/index.cjs +5 -5
  246. package/dist/components/Select/index.js +3 -3
  247. package/dist/components/Sheet/index.cjs +11 -11
  248. package/dist/components/Sheet/index.js +2 -2
  249. package/dist/components/SliderCalculator/index.cjs +20 -0
  250. package/dist/components/SliderCalculator/index.cjs.map +1 -0
  251. package/dist/components/SliderCalculator/index.d.cts +100 -0
  252. package/dist/components/SliderCalculator/index.d.ts +100 -0
  253. package/dist/components/SliderCalculator/index.js +7 -0
  254. package/dist/components/SliderCalculator/index.js.map +1 -0
  255. package/dist/components/SourceTip/index.cjs +4 -4
  256. package/dist/components/SourceTip/index.js +3 -3
  257. package/dist/components/SuperChat/index.cjs +12 -12
  258. package/dist/components/SuperChat/index.js +5 -5
  259. package/dist/components/SuperChat/plugins/index.cjs +8 -8
  260. package/dist/components/SuperChat/plugins/index.js +7 -7
  261. package/dist/components/ThemeProvider/index.cjs +9 -9
  262. package/dist/components/ThemeProvider/index.js +3 -3
  263. package/dist/components/Tooltip/index.cjs +3 -3
  264. package/dist/components/Tooltip/index.js +2 -2
  265. package/dist/components/VideoCard/index.cjs +21 -0
  266. package/dist/components/VideoCard/index.cjs.map +1 -0
  267. package/dist/components/VideoCard/index.d.cts +75 -0
  268. package/dist/components/VideoCard/index.d.ts +75 -0
  269. package/dist/components/VideoCard/index.js +8 -0
  270. package/dist/components/VideoCard/index.js.map +1 -0
  271. package/dist/components/YearTimeline/index.cjs +26 -0
  272. package/dist/components/YearTimeline/index.cjs.map +1 -0
  273. package/dist/components/YearTimeline/index.d.cts +82 -0
  274. package/dist/components/YearTimeline/index.d.ts +82 -0
  275. package/dist/components/YearTimeline/index.js +5 -0
  276. package/dist/components/YearTimeline/index.js.map +1 -0
  277. package/dist/datavis.cjs +2 -2
  278. package/dist/datavis.js +1 -1
  279. package/dist/enterprise-health-ITUNXDIW.js +4 -0
  280. package/dist/{enterprise-health-CWLUB77O.js.map → enterprise-health-ITUNXDIW.js.map} +1 -1
  281. package/dist/enterprise-health-UHHPVPU6.cjs +19 -0
  282. package/dist/{enterprise-health-75VYWAVG.cjs.map → enterprise-health-UHHPVPU6.cjs.map} +1 -1
  283. package/dist/esheet.cjs +18 -18
  284. package/dist/esheet.js +15 -15
  285. package/dist/globe.cjs +306 -0
  286. package/dist/globe.cjs.map +1 -0
  287. package/dist/globe.d.cts +99 -0
  288. package/dist/globe.d.ts +99 -0
  289. package/dist/globe.js +279 -0
  290. package/dist/globe.js.map +1 -0
  291. package/dist/hooks/index.cjs +29 -24
  292. package/dist/hooks/index.d.cts +41 -1
  293. package/dist/hooks/index.d.ts +41 -1
  294. package/dist/hooks/index.js +5 -4
  295. package/dist/index.cjs +1100 -968
  296. package/dist/index.cjs.map +1 -1
  297. package/dist/index.d.cts +22 -4
  298. package/dist/index.d.ts +22 -4
  299. package/dist/index.js +176 -99
  300. package/dist/index.js.map +1 -1
  301. package/dist/styles/effects.css +128 -0
  302. package/dist/styles/init.css +15 -0
  303. package/dist/styles.css +1 -1
  304. package/dist/tailwind-preset.cjs +4 -4
  305. package/dist/tailwind-preset.js +1 -1
  306. package/dist/utils/index.cjs +5 -5
  307. package/dist/utils/index.js +1 -1
  308. package/package.json +23 -2
  309. package/dist/CsvBlock-CVYA3HYS.cjs +0 -16
  310. package/dist/CsvBlock-SM4NKSHA.js +0 -7
  311. package/dist/HtmlPreviewBlock-FAMF4W24.js +0 -7
  312. package/dist/HtmlPreviewBlock-JF454L2L.cjs +0 -16
  313. package/dist/MermaidBlock-7V5G4K5A.js +0 -7
  314. package/dist/MermaidBlock-FR5SQX4Q.cjs +0 -16
  315. package/dist/SurveyBlock-6K2POV7S.js +0 -7
  316. package/dist/SurveyBlock-MCJVWR7H.cjs +0 -16
  317. package/dist/chunk-IINZWUGK.cjs.map +0 -1
  318. package/dist/chunk-J644FU54.cjs.map +0 -1
  319. package/dist/chunk-KREUYVMZ.js.map +0 -1
  320. package/dist/chunk-MTZPVOP6.js.map +0 -1
  321. package/dist/chunk-P52GA3GJ.cjs.map +0 -1
  322. package/dist/chunk-PY7XAG4D.cjs.map +0 -1
  323. package/dist/chunk-WOYUQ4AT.js.map +0 -1
  324. package/dist/chunk-X5YM3KXY.js.map +0 -1
  325. package/dist/enterprise-health-75VYWAVG.cjs +0 -19
  326. package/dist/enterprise-health-CWLUB77O.js +0 -4
@@ -0,0 +1,322 @@
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 MONTH_LETTERS = [
28
+ "J",
29
+ "F",
30
+ "M",
31
+ "A",
32
+ "M",
33
+ "J",
34
+ "J",
35
+ "A",
36
+ "S",
37
+ "O",
38
+ "N",
39
+ "D"
40
+ ];
41
+ var MONTH_NAMES = [
42
+ "Jan",
43
+ "Feb",
44
+ "Mar",
45
+ "Apr",
46
+ "May",
47
+ "Jun",
48
+ "Jul",
49
+ "Aug",
50
+ "Sep",
51
+ "Oct",
52
+ "Nov",
53
+ "Dec"
54
+ ];
55
+ var TONES = [
56
+ "primary",
57
+ "accent",
58
+ "info",
59
+ "success",
60
+ "warning",
61
+ "neutral"
62
+ ];
63
+ var TONE_COLORS = {
64
+ primary: ["var(--mieweb-primary-600)", "var(--mieweb-primary-400)"],
65
+ accent: [
66
+ "var(--mieweb-accent, var(--mieweb-primary-500))",
67
+ "var(--mieweb-accent-light, var(--mieweb-primary-300))"
68
+ ],
69
+ success: [
70
+ "var(--mieweb-success)",
71
+ "color-mix(in srgb, var(--mieweb-success) 60%, #fff)"
72
+ ],
73
+ warning: [
74
+ "var(--mieweb-warning)",
75
+ "color-mix(in srgb, var(--mieweb-warning) 60%, #fff)"
76
+ ],
77
+ info: [
78
+ "var(--mieweb-info, var(--mieweb-primary-400))",
79
+ "color-mix(in srgb, var(--mieweb-info, var(--mieweb-primary-400)) 60%, #fff)"
80
+ ],
81
+ neutral: ["var(--mieweb-neutral-500)", "var(--mieweb-neutral-400)"]
82
+ };
83
+ var GROUP_TEXT = {
84
+ scheduled: "text-primary-800 dark:text-primary-300",
85
+ continuous: "text-success-800 dark:text-success",
86
+ event: "text-muted-foreground"
87
+ };
88
+ function cadenceOf(item) {
89
+ return item.cadence ?? (item.months?.length ? "scheduled" : "continuous");
90
+ }
91
+ function windowOf(item) {
92
+ if (!item.months?.length) return null;
93
+ return { start: Math.min(...item.months), end: Math.max(...item.months) };
94
+ }
95
+ function formatWindow(item, names) {
96
+ const w = windowOf(item);
97
+ if (!w) return null;
98
+ return w.start === w.end ? names[w.start - 1] : `${names[w.start - 1]}\u2013${names[w.end - 1]}`;
99
+ }
100
+ function resolveCurrent(items, month) {
101
+ const live = items.find((it) => it.months?.includes(month));
102
+ if (live) return { id: live.id, live: true };
103
+ let best = null;
104
+ let bestDelta = 99;
105
+ for (const it of items) {
106
+ if (!it.months?.length) continue;
107
+ const delta = (Math.min(...it.months) - month + 12) % 12;
108
+ if (delta > 0 && delta < bestDelta) {
109
+ bestDelta = delta;
110
+ best = it;
111
+ }
112
+ }
113
+ return best ? { id: best.id, live: false } : null;
114
+ }
115
+ function toMonth(today) {
116
+ return typeof today === "number" ? today : today.getMonth() + 1;
117
+ }
118
+ function YearTimeline({
119
+ items,
120
+ today,
121
+ labelHeading = "Obligation",
122
+ monthLabels = MONTH_LETTERS,
123
+ monthNames = MONTH_NAMES,
124
+ groupLabels,
125
+ labels,
126
+ highlightCurrent = true,
127
+ labelWidth = "300px",
128
+ className
129
+ }) {
130
+ const [mountedMonth, setMountedMonth] = React__namespace.useState(null);
131
+ React__namespace.useEffect(() => {
132
+ if (today === void 0) setMountedMonth((/* @__PURE__ */ new Date()).getMonth() + 1);
133
+ }, [today]);
134
+ const month = today === null ? null : today === void 0 ? mountedMonth : toMonth(today);
135
+ const current = month != null && highlightCurrent ? resolveCurrent(items, month) : null;
136
+ const nowFraction = month != null ? (month - 0.5) / 12 : null;
137
+ const groupTitle = {
138
+ scheduled: groupLabels?.scheduled ?? "On the calendar",
139
+ continuous: groupLabels?.continuous ?? "Runs all year",
140
+ event: groupLabels?.event ?? "As it happens"
141
+ };
142
+ const text = { today: "Today", now: "Now", upNext: "Up next", ...labels };
143
+ const groups = ["scheduled", "continuous", "event"].map((key) => ({
144
+ key,
145
+ items: items.filter((it) => cadenceOf(it) === key).sort(
146
+ (a, b) => (windowOf(a)?.start ?? 13) - (windowOf(b)?.start ?? 13)
147
+ )
148
+ })).filter((g) => g.items.length > 0);
149
+ let toneIndex = 0;
150
+ return /* @__PURE__ */ jsxRuntime.jsxs(
151
+ "div",
152
+ {
153
+ "data-slot": "year-timeline",
154
+ style: {
155
+ "--yt-label": labelWidth,
156
+ "--yt-now": nowFraction ?? void 0
157
+ },
158
+ className: chunkS5RVSXDV_cjs.cn(
159
+ "border-border bg-card text-card-foreground relative overflow-hidden rounded-xl border shadow-md",
160
+ // year ribbon
161
+ 'before:absolute before:inset-x-0 before:top-0 before:z-[4] before:h-1 before:content-[""]',
162
+ "before:[background:linear-gradient(90deg,var(--mieweb-accent,var(--mieweb-primary-400))_0%,var(--mieweb-primary-500)_50%,var(--mieweb-success)_80%,var(--mieweb-accent,var(--mieweb-primary-400))_100%)]",
163
+ className
164
+ ),
165
+ children: [
166
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-border bg-muted/50 hidden border-b md:grid md:grid-cols-[var(--yt-label)_1fr]", children: [
167
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-border flex items-end border-e px-5 pt-3 pb-2.5", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground text-[10px] font-bold tracking-[0.11em] uppercase", children: labelHeading }) }),
168
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative grid grid-cols-12", children: [
169
+ monthLabels.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
170
+ "span",
171
+ {
172
+ className: chunkS5RVSXDV_cjs.cn(
173
+ "text-muted-foreground pt-3 pb-2.5 text-center text-[11px] font-bold tracking-wide",
174
+ i > 0 && "border-border/60 border-s"
175
+ ),
176
+ children: m
177
+ },
178
+ i
179
+ )),
180
+ nowFraction != null && /* @__PURE__ */ jsxRuntime.jsxs(
181
+ "span",
182
+ {
183
+ "data-slot": "year-timeline-today",
184
+ style: { left: `calc(var(--yt-now) * 100%)` },
185
+ className: "bg-primary-800 absolute top-1.5 z-[5] inline-flex -translate-x-1/2 items-center gap-1.5 rounded-full px-2 py-0.5 text-[9px] font-bold tracking-[0.09em] whitespace-nowrap text-white uppercase",
186
+ children: [
187
+ /* @__PURE__ */ jsxRuntime.jsx("i", { "aria-hidden": true, className: "h-1.5 w-1.5 rounded-full bg-white" }),
188
+ text.today
189
+ ]
190
+ }
191
+ )
192
+ ] })
193
+ ] }),
194
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
195
+ /* @__PURE__ */ jsxRuntime.jsx(
196
+ "div",
197
+ {
198
+ "aria-hidden": true,
199
+ className: "pointer-events-none absolute inset-y-0 end-0 z-0 hidden md:block",
200
+ style: {
201
+ left: "var(--yt-label)",
202
+ backgroundImage: "repeating-linear-gradient(90deg, var(--mieweb-border) 0, var(--mieweb-border) 1px, transparent 1px, transparent calc(100% / 12))",
203
+ opacity: 0.5
204
+ }
205
+ }
206
+ ),
207
+ nowFraction != null && /* @__PURE__ */ jsxRuntime.jsx(
208
+ "span",
209
+ {
210
+ "aria-hidden": true,
211
+ "data-slot": "year-timeline-playhead",
212
+ style: {
213
+ left: "calc(var(--yt-label) + (100% - var(--yt-label)) * var(--yt-now))"
214
+ },
215
+ className: chunkS5RVSXDV_cjs.cn(
216
+ "pointer-events-none absolute inset-y-0 z-[3] hidden w-0.5 -translate-x-px md:block",
217
+ "[background:linear-gradient(180deg,var(--mieweb-primary-700),color-mix(in_srgb,var(--mieweb-primary-700)_15%,transparent))]",
218
+ 'before:bg-primary-700 before:absolute before:top-0 before:left-1/2 before:h-2.5 before:w-2.5 before:-translate-x-1/2 before:rounded-full before:content-[""]'
219
+ )
220
+ }
221
+ ),
222
+ groups.map((g, gi) => /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-cadence": g.key, children: [
223
+ /* @__PURE__ */ jsxRuntime.jsx(
224
+ "div",
225
+ {
226
+ className: chunkS5RVSXDV_cjs.cn(
227
+ "bg-muted/30 relative z-[1] flex items-center gap-2 px-5 py-2.5 text-[10px] font-bold tracking-[0.12em] uppercase",
228
+ gi > 0 && "border-border border-t",
229
+ GROUP_TEXT[g.key]
230
+ ),
231
+ children: groupTitle[g.key]
232
+ }
233
+ ),
234
+ g.items.map((it) => {
235
+ const cadence = cadenceOf(it);
236
+ const w = windowOf(it);
237
+ const isCurrent = current?.id === it.id;
238
+ const [c1, c2] = it.colors ?? TONE_COLORS[it.tone ?? TONES[toneIndex++ % TONES.length]];
239
+ const caption = cadence === "scheduled" ? formatWindow(it, monthNames) : null;
240
+ const period = it.period ?? caption ?? groupTitle[cadence];
241
+ const Title = it.href ? "a" : "span";
242
+ return /* @__PURE__ */ jsxRuntime.jsxs(
243
+ "div",
244
+ {
245
+ "data-slot": "year-timeline-row",
246
+ "data-current": isCurrent ? current?.live ? "now" : "next" : void 0,
247
+ className: chunkS5RVSXDV_cjs.cn(
248
+ "border-border/60 relative z-[1] grid border-t transition-colors md:grid-cols-[var(--yt-label)_1fr]",
249
+ "hover:bg-muted/40",
250
+ isCurrent && "bg-primary-500/10 hover:bg-primary-500/10"
251
+ ),
252
+ children: [
253
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:border-border/60 px-5 pt-4 pb-2 md:border-e md:pb-4", children: [
254
+ /* @__PURE__ */ jsxRuntime.jsxs(
255
+ "div",
256
+ {
257
+ className: "mb-1.5 flex items-center gap-1.5 text-[10px] font-bold tracking-[0.09em] uppercase [&_svg]:h-3.5 [&_svg]:w-3.5",
258
+ style: { color: c1 },
259
+ children: [
260
+ it.icon,
261
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: period }),
262
+ isCurrent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-primary-800 ms-auto rounded-full px-1.5 py-0.5 text-[9px] tracking-[0.08em] text-white", children: current?.live ? text.now : text.upNext })
263
+ ]
264
+ }
265
+ ),
266
+ /* @__PURE__ */ jsxRuntime.jsx(
267
+ Title,
268
+ {
269
+ href: it.href,
270
+ className: chunkS5RVSXDV_cjs.cn(
271
+ "text-foreground block text-base font-semibold",
272
+ it.href && "hover:underline"
273
+ ),
274
+ children: it.label
275
+ }
276
+ ),
277
+ it.detail && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground mt-1 text-sm leading-relaxed", children: it.detail })
278
+ ] }),
279
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-12 items-center px-5 pb-4 md:px-0 md:py-3.5", children: /* @__PURE__ */ jsxRuntime.jsx(
280
+ "span",
281
+ {
282
+ "data-slot": "year-timeline-bar",
283
+ "data-cadence": cadence,
284
+ style: {
285
+ gridColumn: cadence === "scheduled" && w ? `${w.start} / ${w.end + 1}` : "1 / 13",
286
+ ...cadence === "scheduled" ? {
287
+ background: `linear-gradient(90deg, ${c1}, ${c2})`
288
+ } : cadence === "continuous" ? {
289
+ background: `linear-gradient(90deg, color-mix(in srgb, ${c1} 22%, transparent), color-mix(in srgb, ${c2} 22%, transparent))`,
290
+ borderColor: `color-mix(in srgb, ${c1} 45%, transparent)`
291
+ } : {
292
+ background: `repeating-linear-gradient(45deg, color-mix(in srgb, ${c1} 30%, transparent) 0 6px, transparent 6px 12px)`,
293
+ borderColor: `color-mix(in srgb, ${c1} 60%, transparent)`
294
+ }
295
+ },
296
+ className: chunkS5RVSXDV_cjs.cn(
297
+ "row-start-1 flex h-3.5 min-w-2.5 items-center justify-end rounded-full px-2 md:h-[22px]",
298
+ cadence === "scheduled" && "shadow-sm",
299
+ cadence === "continuous" && "border",
300
+ cadence === "event" && "border border-dashed"
301
+ ),
302
+ children: caption && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "hidden text-[10px] font-bold tracking-wide text-white [text-shadow:0_1px_1px_rgba(0,0,0,0.3)] md:inline", children: caption })
303
+ }
304
+ ) })
305
+ ]
306
+ },
307
+ it.id
308
+ );
309
+ })
310
+ ] }, g.key))
311
+ ] })
312
+ ]
313
+ }
314
+ );
315
+ }
316
+
317
+ exports.MONTH_LETTERS = MONTH_LETTERS;
318
+ exports.MONTH_NAMES = MONTH_NAMES;
319
+ exports.YearTimeline = YearTimeline;
320
+ exports.resolveCurrent = resolveCurrent;
321
+ //# sourceMappingURL=chunk-CR2SDI23.cjs.map
322
+ //# sourceMappingURL=chunk-CR2SDI23.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/YearTimeline/YearTimeline.tsx"],"names":["React","jsxs","cn","jsx"],"mappings":"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","file":"chunk-CR2SDI23.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../utils/cn';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/** How an item lives in the year. */\nexport type YearTimelineCadence = 'scheduled' | 'continuous' | 'event';\n\nexport type YearTimelineTone =\n | 'primary'\n | 'accent'\n | 'success'\n | 'warning'\n | 'info'\n | 'neutral';\n\nexport interface YearTimelineItem {\n id: string;\n /** Row title. */\n label: string;\n /** Supporting copy under the title. */\n detail?: string;\n /**\n * Eyebrow above the title, e.g. \"Jan–Feb\" or \"Year-round\". Defaults to the\n * formatted month window for scheduled items.\n */\n period?: string;\n /** Months (1–12) the item occupies. Drives the bar span and the live marker. */\n months?: number[];\n /**\n * `scheduled` bars span `months`; `continuous` and `event` run full-width in\n * their own lanes. Defaults to `scheduled` when `months` is set, else\n * `continuous`.\n */\n cadence?: YearTimelineCadence;\n /** Bar colour family. Default cycles through the tones. */\n tone?: YearTimelineTone;\n /** Any two CSS colours for a custom bar gradient — overrides `tone`. */\n colors?: [string, string];\n /** Small icon before the eyebrow (Lucide, 13px). */\n icon?: React.ReactNode;\n /** Makes the row title a link. */\n href?: string;\n}\n\nexport interface YearTimelineProps {\n items: YearTimelineItem[];\n /**\n * Which month (1–12) or date the playhead marks. Default: the viewer's\n * current month, resolved after mount. Pass `null` to hide the marker.\n */\n today?: Date | number | null;\n /** Column heading over the row labels. Default \"Obligation\". */\n labelHeading?: string;\n /** Twelve month tick labels. Default single letters. */\n monthLabels?: readonly string[];\n /** Twelve short month names used in period fallbacks and bar captions. */\n monthNames?: readonly string[];\n /** Lane headings by cadence. */\n groupLabels?: Partial<Record<YearTimelineCadence, string>>;\n /** Copy for the live marker and row badges. */\n labels?: { today?: string; now?: string; upNext?: string };\n /** Highlight the item happening now (or coming up next). Default true. */\n highlightCurrent?: boolean;\n /** Width of the label column. Default `300px`. */\n labelWidth?: string;\n className?: string;\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\nexport const MONTH_LETTERS = [\n 'J',\n 'F',\n 'M',\n 'A',\n 'M',\n 'J',\n 'J',\n 'A',\n 'S',\n 'O',\n 'N',\n 'D',\n] as const;\nexport const MONTH_NAMES = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n] as const;\n\nconst TONES: YearTimelineTone[] = [\n 'primary',\n 'accent',\n 'info',\n 'success',\n 'warning',\n 'neutral',\n];\n\nconst TONE_COLORS: Record<YearTimelineTone, [string, string]> = {\n primary: ['var(--mieweb-primary-600)', 'var(--mieweb-primary-400)'],\n accent: [\n 'var(--mieweb-accent, var(--mieweb-primary-500))',\n 'var(--mieweb-accent-light, var(--mieweb-primary-300))',\n ],\n success: [\n 'var(--mieweb-success)',\n 'color-mix(in srgb, var(--mieweb-success) 60%, #fff)',\n ],\n warning: [\n 'var(--mieweb-warning)',\n 'color-mix(in srgb, var(--mieweb-warning) 60%, #fff)',\n ],\n info: [\n 'var(--mieweb-info, var(--mieweb-primary-400))',\n 'color-mix(in srgb, var(--mieweb-info, var(--mieweb-primary-400)) 60%, #fff)',\n ],\n neutral: ['var(--mieweb-neutral-500)', 'var(--mieweb-neutral-400)'],\n};\n\nconst GROUP_TEXT: Record<YearTimelineCadence, string> = {\n scheduled: 'text-primary-800 dark:text-primary-300',\n continuous: 'text-success-800 dark:text-success',\n event: 'text-muted-foreground',\n};\n\nfunction cadenceOf(item: YearTimelineItem): YearTimelineCadence {\n return item.cadence ?? (item.months?.length ? 'scheduled' : 'continuous');\n}\n\nfunction windowOf(\n item: YearTimelineItem\n): { start: number; end: number } | null {\n if (!item.months?.length) return null;\n return { start: Math.min(...item.months), end: Math.max(...item.months) };\n}\n\nfunction formatWindow(\n item: YearTimelineItem,\n names: readonly string[]\n): string | null {\n const w = windowOf(item);\n if (!w) return null;\n return w.start === w.end\n ? names[w.start - 1]\n : `${names[w.start - 1]}–${names[w.end - 1]}`;\n}\n\n/** Item in `month`, else the next one coming up (wrapping the year). */\nexport function resolveCurrent(\n items: YearTimelineItem[],\n month: number\n): { id: string; live: boolean } | null {\n const live = items.find((it) => it.months?.includes(month));\n if (live) return { id: live.id, live: true };\n let best: YearTimelineItem | null = null;\n let bestDelta = 99;\n for (const it of items) {\n if (!it.months?.length) continue;\n const delta = (Math.min(...it.months) - month + 12) % 12;\n if (delta > 0 && delta < bestDelta) {\n bestDelta = delta;\n best = it;\n }\n }\n return best ? { id: best.id, live: false } : null;\n}\n\nfunction toMonth(today: Date | number): number {\n return typeof today === 'number' ? today : today.getMonth() + 1;\n}\n\n// =============================================================================\n// YearTimeline\n// =============================================================================\n\n/**\n * A year on one Gantt-style timeline: twelve month columns, rows grouped by\n * cadence (scheduled windows as gradient pill bars; continuous and\n * event-driven items in full-width lanes), month gridlines, and a live\n * playhead + \"Today\" pill marking the current month. The item happening now\n * (or up next) is highlighted. Ported from the Enterprise Health compliance\n * calendar; fits any recurring annual schedule — audits, filings, campaigns,\n * maintenance.\n *\n * Collapses to stacked rows without the month scale below `md`.\n */\nexport function YearTimeline({\n items,\n today,\n labelHeading = 'Obligation',\n monthLabels = MONTH_LETTERS,\n monthNames = MONTH_NAMES,\n groupLabels,\n labels,\n highlightCurrent = true,\n labelWidth = '300px',\n className,\n}: YearTimelineProps) {\n // The viewer's clock is only known after mount (SSR-safe).\n const [mountedMonth, setMountedMonth] = React.useState<number | null>(null);\n React.useEffect(() => {\n if (today === undefined) setMountedMonth(new Date().getMonth() + 1);\n }, [today]);\n\n const month =\n today === null ? null : today === undefined ? mountedMonth : toMonth(today);\n const current =\n month != null && highlightCurrent ? resolveCurrent(items, month) : null;\n const nowFraction = month != null ? (month - 0.5) / 12 : null;\n\n const groupTitle: Record<YearTimelineCadence, string> = {\n scheduled: groupLabels?.scheduled ?? 'On the calendar',\n continuous: groupLabels?.continuous ?? 'Runs all year',\n event: groupLabels?.event ?? 'As it happens',\n };\n const text = { today: 'Today', now: 'Now', upNext: 'Up next', ...labels };\n\n const groups = (['scheduled', 'continuous', 'event'] as const)\n .map((key) => ({\n key,\n items: items\n .filter((it) => cadenceOf(it) === key)\n .sort(\n (a, b) => (windowOf(a)?.start ?? 13) - (windowOf(b)?.start ?? 13)\n ),\n }))\n .filter((g) => g.items.length > 0);\n\n let toneIndex = 0;\n\n return (\n <div\n data-slot=\"year-timeline\"\n style={\n {\n '--yt-label': labelWidth,\n '--yt-now': nowFraction ?? undefined,\n } as React.CSSProperties\n }\n className={cn(\n 'border-border bg-card text-card-foreground relative overflow-hidden rounded-xl border shadow-md',\n // year ribbon\n 'before:absolute before:inset-x-0 before:top-0 before:z-[4] before:h-1 before:content-[\"\"]',\n 'before:[background:linear-gradient(90deg,var(--mieweb-accent,var(--mieweb-primary-400))_0%,var(--mieweb-primary-500)_50%,var(--mieweb-success)_80%,var(--mieweb-accent,var(--mieweb-primary-400))_100%)]',\n className\n )}\n >\n {/* Head: label heading + month scale */}\n <div className=\"border-border bg-muted/50 hidden border-b md:grid md:grid-cols-[var(--yt-label)_1fr]\">\n <div className=\"border-border flex items-end border-e px-5 pt-3 pb-2.5\">\n <span className=\"text-muted-foreground text-[10px] font-bold tracking-[0.11em] uppercase\">\n {labelHeading}\n </span>\n </div>\n <div className=\"relative grid grid-cols-12\">\n {monthLabels.map((m, i) => (\n <span\n key={i}\n className={cn(\n 'text-muted-foreground pt-3 pb-2.5 text-center text-[11px] font-bold tracking-wide',\n i > 0 && 'border-border/60 border-s'\n )}\n >\n {m}\n </span>\n ))}\n {nowFraction != null && (\n <span\n data-slot=\"year-timeline-today\"\n style={{ left: `calc(var(--yt-now) * 100%)` }}\n className=\"bg-primary-800 absolute top-1.5 z-[5] inline-flex -translate-x-1/2 items-center gap-1.5 rounded-full px-2 py-0.5 text-[9px] font-bold tracking-[0.09em] whitespace-nowrap text-white uppercase\"\n >\n <i aria-hidden className=\"h-1.5 w-1.5 rounded-full bg-white\" />\n {text.today}\n </span>\n )}\n </div>\n </div>\n\n {/* Body */}\n <div className=\"relative\">\n {/* month gridlines */}\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-y-0 end-0 z-0 hidden md:block\"\n style={{\n left: 'var(--yt-label)',\n backgroundImage:\n 'repeating-linear-gradient(90deg, var(--mieweb-border) 0, var(--mieweb-border) 1px, transparent 1px, transparent calc(100% / 12))',\n opacity: 0.5,\n }}\n />\n {nowFraction != null && (\n <span\n aria-hidden\n data-slot=\"year-timeline-playhead\"\n style={{\n left: 'calc(var(--yt-label) + (100% - var(--yt-label)) * var(--yt-now))',\n }}\n className={cn(\n 'pointer-events-none absolute inset-y-0 z-[3] hidden w-0.5 -translate-x-px md:block',\n '[background:linear-gradient(180deg,var(--mieweb-primary-700),color-mix(in_srgb,var(--mieweb-primary-700)_15%,transparent))]',\n 'before:bg-primary-700 before:absolute before:top-0 before:left-1/2 before:h-2.5 before:w-2.5 before:-translate-x-1/2 before:rounded-full before:content-[\"\"]'\n )}\n />\n )}\n\n {groups.map((g, gi) => (\n <div key={g.key} data-cadence={g.key}>\n <div\n className={cn(\n 'bg-muted/30 relative z-[1] flex items-center gap-2 px-5 py-2.5 text-[10px] font-bold tracking-[0.12em] uppercase',\n gi > 0 && 'border-border border-t',\n GROUP_TEXT[g.key]\n )}\n >\n {groupTitle[g.key]}\n </div>\n\n {g.items.map((it) => {\n const cadence = cadenceOf(it);\n const w = windowOf(it);\n const isCurrent = current?.id === it.id;\n const [c1, c2] =\n it.colors ??\n TONE_COLORS[it.tone ?? TONES[toneIndex++ % TONES.length]];\n const caption =\n cadence === 'scheduled' ? formatWindow(it, monthNames) : null;\n const period = it.period ?? caption ?? groupTitle[cadence];\n const Title = it.href ? 'a' : 'span';\n\n return (\n <div\n key={it.id}\n data-slot=\"year-timeline-row\"\n data-current={\n isCurrent ? (current?.live ? 'now' : 'next') : undefined\n }\n className={cn(\n 'border-border/60 relative z-[1] grid border-t transition-colors md:grid-cols-[var(--yt-label)_1fr]',\n 'hover:bg-muted/40',\n isCurrent && 'bg-primary-500/10 hover:bg-primary-500/10'\n )}\n >\n <div className=\"md:border-border/60 px-5 pt-4 pb-2 md:border-e md:pb-4\">\n <div\n className=\"mb-1.5 flex items-center gap-1.5 text-[10px] font-bold tracking-[0.09em] uppercase [&_svg]:h-3.5 [&_svg]:w-3.5\"\n style={{ color: c1 }}\n >\n {it.icon}\n <span>{period}</span>\n {isCurrent && (\n <span className=\"bg-primary-800 ms-auto rounded-full px-1.5 py-0.5 text-[9px] tracking-[0.08em] text-white\">\n {current?.live ? text.now : text.upNext}\n </span>\n )}\n </div>\n <Title\n href={it.href}\n className={cn(\n 'text-foreground block text-base font-semibold',\n it.href && 'hover:underline'\n )}\n >\n {it.label}\n </Title>\n {it.detail && (\n <p className=\"text-muted-foreground mt-1 text-sm leading-relaxed\">\n {it.detail}\n </p>\n )}\n </div>\n\n <div className=\"grid grid-cols-12 items-center px-5 pb-4 md:px-0 md:py-3.5\">\n <span\n data-slot=\"year-timeline-bar\"\n data-cadence={cadence}\n style={{\n gridColumn:\n cadence === 'scheduled' && w\n ? `${w.start} / ${w.end + 1}`\n : '1 / 13',\n ...(cadence === 'scheduled'\n ? {\n background: `linear-gradient(90deg, ${c1}, ${c2})`,\n }\n : cadence === 'continuous'\n ? {\n background: `linear-gradient(90deg, color-mix(in srgb, ${c1} 22%, transparent), color-mix(in srgb, ${c2} 22%, transparent))`,\n borderColor: `color-mix(in srgb, ${c1} 45%, transparent)`,\n }\n : {\n background: `repeating-linear-gradient(45deg, color-mix(in srgb, ${c1} 30%, transparent) 0 6px, transparent 6px 12px)`,\n borderColor: `color-mix(in srgb, ${c1} 60%, transparent)`,\n }),\n }}\n className={cn(\n 'row-start-1 flex h-3.5 min-w-2.5 items-center justify-end rounded-full px-2 md:h-[22px]',\n cadence === 'scheduled' && 'shadow-sm',\n cadence === 'continuous' && 'border',\n cadence === 'event' && 'border border-dashed'\n )}\n >\n {caption && (\n <span className=\"hidden text-[10px] font-bold tracking-wide text-white [text-shadow:0_1px_1px_rgba(0,0,0,0.3)] md:inline\">\n {caption}\n </span>\n )}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { FenceBlock } from './chunk-CK3KLRNF.js';
1
+ import { FenceBlock } from './chunk-H4ZXMQQW.js';
2
2
  import { useState, useEffect } from 'react';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
4
 
@@ -192,5 +192,5 @@ var SurveyBlock = ({ code, id }) => {
192
192
  };
193
193
 
194
194
  export { SurveyBlock };
195
- //# sourceMappingURL=chunk-OSPTA4UR.js.map
196
- //# sourceMappingURL=chunk-OSPTA4UR.js.map
195
+ //# sourceMappingURL=chunk-DEDN5HAG.js.map
196
+ //# sourceMappingURL=chunk-DEDN5HAG.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Markdown/SurveyBlock.tsx"],"names":[],"mappings":"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","file":"chunk-OSPTA4UR.js","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":[],"mappings":"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","file":"chunk-DEDN5HAG.js","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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkAUOTJQGO_cjs = require('./chunk-AUOTJQGO.cjs');
4
- var chunkIINZWUGK_cjs = require('./chunk-IINZWUGK.cjs');
3
+ var chunk7ZDPD5ZX_cjs = require('./chunk-7ZDPD5ZX.cjs');
4
+ var chunkVNYW4C4J_cjs = require('./chunk-VNYW4C4J.cjs');
5
5
  var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
@@ -28,7 +28,7 @@ function AlertDialog({
28
28
  onAction?.();
29
29
  };
30
30
  return /* @__PURE__ */ jsxRuntime.jsxs(
31
- chunkAUOTJQGO_cjs.Modal,
31
+ chunk7ZDPD5ZX_cjs.Modal,
32
32
  {
33
33
  open,
34
34
  onOpenChange,
@@ -38,7 +38,7 @@ function AlertDialog({
38
38
  className,
39
39
  "aria-label": typeof title === "string" ? title : void 0,
40
40
  children: [
41
- /* @__PURE__ */ jsxRuntime.jsxs(chunkAUOTJQGO_cjs.ModalBody, { className: "px-6 py-5", children: [
41
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk7ZDPD5ZX_cjs.ModalBody, { className: "px-6 py-5", children: [
42
42
  /* @__PURE__ */ jsxRuntime.jsx(
43
43
  "h2",
44
44
  {
@@ -57,10 +57,10 @@ function AlertDialog({
57
57
  ),
58
58
  children
59
59
  ] }),
60
- /* @__PURE__ */ jsxRuntime.jsxs(chunkAUOTJQGO_cjs.ModalFooter, { children: [
61
- !hideCancel && /* @__PURE__ */ jsxRuntime.jsx(chunkIINZWUGK_cjs.Button, { variant: "secondary", onClick: handleCancel, children: cancelLabel }),
60
+ /* @__PURE__ */ jsxRuntime.jsxs(chunk7ZDPD5ZX_cjs.ModalFooter, { children: [
61
+ !hideCancel && /* @__PURE__ */ jsxRuntime.jsx(chunkVNYW4C4J_cjs.Button, { variant: "secondary", onClick: handleCancel, children: cancelLabel }),
62
62
  /* @__PURE__ */ jsxRuntime.jsx(
63
- chunkIINZWUGK_cjs.Button,
63
+ chunkVNYW4C4J_cjs.Button,
64
64
  {
65
65
  variant: variant === "destructive" ? "danger" : "primary",
66
66
  onClick: handleAction,
@@ -76,5 +76,5 @@ function AlertDialog({
76
76
  AlertDialog.displayName = "AlertDialog";
77
77
 
78
78
  exports.AlertDialog = AlertDialog;
79
- //# sourceMappingURL=chunk-PKD3JLS2.cjs.map
80
- //# sourceMappingURL=chunk-PKD3JLS2.cjs.map
79
+ //# sourceMappingURL=chunk-E4IBHYJ7.cjs.map
80
+ //# sourceMappingURL=chunk-E4IBHYJ7.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"names":["jsxs","Modal","ModalBody","jsx","cn","ModalFooter","Button"],"mappings":";;;;;;;AAqDA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,WAAA,GAAc,UAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,cAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AACX,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AAAA,EACb,CAAA;AAEA,EAAA,uBACEA,eAAA;AAAA,IAACC,uBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA,EAAK,IAAA;AAAA,MACL,mBAAA,EAAqB,KAAA;AAAA,MACrB,aAAA,EAAe,KAAA;AAAA,MACf,SAAA;AAAA,MACA,YAAA,EAAY,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,MAEhD,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACE,2BAAA,EAAA,EAAU,WAAU,WAAA,EACnB,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,oBAAA;AAAA,cACV,SAAA,EAAU,sCAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UACC,WAAA,oBACCA,cAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,0BAAA;AAAA,cACV,SAAA,EAAWC,qBAAG,oCAAoC,CAAA;AAAA,cAEjD,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAED;AAAA,SAAA,EACH,CAAA;AAAA,wCACCC,6BAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,CAAC,8BACAF,cAAA,CAACG,wBAAA,EAAA,EAAO,SAAQ,WAAA,EAAY,OAAA,EAAS,cAClC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,0BAEFH,cAAA;AAAA,YAACG,wBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,OAAA,KAAY,aAAA,GAAgB,QAAA,GAAW,SAAA;AAAA,cAChD,OAAA,EAAS,YAAA;AAAA,cACT,QAAA,EAAU,cAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-PKD3JLS2.cjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { Modal, ModalBody, ModalFooter, type ModalProps } from '../Modal';\nimport { Button } from '../Button';\n\nexport interface AlertDialogProps extends Pick<\n ModalProps,\n 'open' | 'onOpenChange'\n> {\n /** Dialog title */\n title: React.ReactNode;\n /** Optional descriptive body text */\n description?: React.ReactNode;\n /** Custom body content (rendered below the description) */\n children?: React.ReactNode;\n /** Label for the cancel button (default \"Cancel\") */\n cancelLabel?: React.ReactNode;\n /** Label for the confirm/action button (default \"Continue\") */\n actionLabel?: React.ReactNode;\n /** Called when the action button is clicked */\n onAction?: () => void;\n /** Called when the cancel button is clicked */\n onCancel?: () => void;\n /** Visual emphasis for the action button */\n variant?: 'default' | 'destructive';\n /** Disables the action button */\n actionDisabled?: boolean;\n /** Hides the cancel button */\n hideCancel?: boolean;\n /** Additional class name for the dialog content */\n className?: string;\n}\n\n/**\n * A modal dialog that interrupts the user with important content and expects\n * a response. Built on top of {@link Modal}.\n *\n * Unlike a regular Modal, it does not close on overlay click or Escape by\n * default — the user must explicitly choose an action.\n *\n * @example\n * ```tsx\n * <AlertDialog\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Delete case?\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * actionLabel=\"Delete\"\n * onAction={handleDelete}\n * />\n * ```\n */\nfunction AlertDialog({\n open,\n onOpenChange,\n title,\n description,\n children,\n cancelLabel = 'Cancel',\n actionLabel = 'Continue',\n onAction,\n onCancel,\n variant = 'default',\n actionDisabled,\n hideCancel,\n className,\n}: AlertDialogProps) {\n const handleCancel = () => {\n onCancel?.();\n onOpenChange(false);\n };\n\n const handleAction = () => {\n onAction?.();\n };\n\n return (\n <Modal\n open={open}\n onOpenChange={onOpenChange}\n size=\"sm\"\n closeOnOverlayClick={false}\n closeOnEscape={false}\n className={className}\n aria-label={typeof title === 'string' ? title : undefined}\n >\n <ModalBody className=\"px-6 py-5\">\n <h2\n data-slot=\"alert-dialog-title\"\n className=\"text-lg font-semibold tracking-tight\"\n >\n {title}\n </h2>\n {description && (\n <p\n data-slot=\"alert-dialog-description\"\n className={cn('text-muted-foreground mt-2 text-sm')}\n >\n {description}\n </p>\n )}\n {children}\n </ModalBody>\n <ModalFooter>\n {!hideCancel && (\n <Button variant=\"secondary\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n )}\n <Button\n variant={variant === 'destructive' ? 'danger' : 'primary'}\n onClick={handleAction}\n disabled={actionDisabled}\n >\n {actionLabel}\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n\nAlertDialog.displayName = 'AlertDialog';\n\nexport { AlertDialog };\n"]}
1
+ {"version":3,"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"names":["jsxs","Modal","ModalBody","jsx","cn","ModalFooter","Button"],"mappings":";;;;;;;AAqDA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,WAAA,GAAc,UAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,cAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AACX,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AAAA,EACb,CAAA;AAEA,EAAA,uBACEA,eAAA;AAAA,IAACC,uBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA,EAAK,IAAA;AAAA,MACL,mBAAA,EAAqB,KAAA;AAAA,MACrB,aAAA,EAAe,KAAA;AAAA,MACf,SAAA;AAAA,MACA,YAAA,EAAY,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,MAEhD,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAACE,2BAAA,EAAA,EAAU,WAAU,WAAA,EACnB,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,oBAAA;AAAA,cACV,SAAA,EAAU,sCAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UACC,WAAA,oBACCA,cAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,0BAAA;AAAA,cACV,SAAA,EAAWC,qBAAG,oCAAoC,CAAA;AAAA,cAEjD,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAED;AAAA,SAAA,EACH,CAAA;AAAA,wCACCC,6BAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,CAAC,8BACAF,cAAA,CAACG,wBAAA,EAAA,EAAO,SAAQ,WAAA,EAAY,OAAA,EAAS,cAClC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,0BAEFH,cAAA;AAAA,YAACG,wBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,OAAA,KAAY,aAAA,GAAgB,QAAA,GAAW,SAAA;AAAA,cAChD,OAAA,EAAS,YAAA;AAAA,cACT,QAAA,EAAU,cAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-E4IBHYJ7.cjs","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { Modal, ModalBody, ModalFooter, type ModalProps } from '../Modal';\nimport { Button } from '../Button';\n\nexport interface AlertDialogProps extends Pick<\n ModalProps,\n 'open' | 'onOpenChange'\n> {\n /** Dialog title */\n title: React.ReactNode;\n /** Optional descriptive body text */\n description?: React.ReactNode;\n /** Custom body content (rendered below the description) */\n children?: React.ReactNode;\n /** Label for the cancel button (default \"Cancel\") */\n cancelLabel?: React.ReactNode;\n /** Label for the confirm/action button (default \"Continue\") */\n actionLabel?: React.ReactNode;\n /** Called when the action button is clicked */\n onAction?: () => void;\n /** Called when the cancel button is clicked */\n onCancel?: () => void;\n /** Visual emphasis for the action button */\n variant?: 'default' | 'destructive';\n /** Disables the action button */\n actionDisabled?: boolean;\n /** Hides the cancel button */\n hideCancel?: boolean;\n /** Additional class name for the dialog content */\n className?: string;\n}\n\n/**\n * A modal dialog that interrupts the user with important content and expects\n * a response. Built on top of {@link Modal}.\n *\n * Unlike a regular Modal, it does not close on overlay click or Escape by\n * default — the user must explicitly choose an action.\n *\n * @example\n * ```tsx\n * <AlertDialog\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Delete case?\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * actionLabel=\"Delete\"\n * onAction={handleDelete}\n * />\n * ```\n */\nfunction AlertDialog({\n open,\n onOpenChange,\n title,\n description,\n children,\n cancelLabel = 'Cancel',\n actionLabel = 'Continue',\n onAction,\n onCancel,\n variant = 'default',\n actionDisabled,\n hideCancel,\n className,\n}: AlertDialogProps) {\n const handleCancel = () => {\n onCancel?.();\n onOpenChange(false);\n };\n\n const handleAction = () => {\n onAction?.();\n };\n\n return (\n <Modal\n open={open}\n onOpenChange={onOpenChange}\n size=\"sm\"\n closeOnOverlayClick={false}\n closeOnEscape={false}\n className={className}\n aria-label={typeof title === 'string' ? title : undefined}\n >\n <ModalBody className=\"px-6 py-5\">\n <h2\n data-slot=\"alert-dialog-title\"\n className=\"text-lg font-semibold tracking-tight\"\n >\n {title}\n </h2>\n {description && (\n <p\n data-slot=\"alert-dialog-description\"\n className={cn('text-muted-foreground mt-2 text-sm')}\n >\n {description}\n </p>\n )}\n {children}\n </ModalBody>\n <ModalFooter>\n {!hideCancel && (\n <Button variant=\"secondary\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n )}\n <Button\n variant={variant === 'destructive' ? 'danger' : 'primary'}\n onClick={handleAction}\n disabled={actionDisabled}\n >\n {actionLabel}\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n\nAlertDialog.displayName = 'AlertDialog';\n\nexport { AlertDialog };\n"]}