@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
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk6QKMMKRY_cjs = require('./chunk-6QKMMKRY.cjs');
3
+ var chunkUV2FVNWT_cjs = require('./chunk-UV2FVNWT.cjs');
4
4
  var DOMPurify = require('dompurify');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -130,7 +130,7 @@ var MermaidBlock = ({ code, id }) => {
130
130
  return () => observer.disconnect();
131
131
  }, [render]);
132
132
  return /* @__PURE__ */ jsxRuntime.jsx(
133
- chunk6QKMMKRY_cjs.FenceBlock,
133
+ chunkUV2FVNWT_cjs.FenceBlock,
134
134
  {
135
135
  code,
136
136
  language: "mermaid",
@@ -150,5 +150,5 @@ var MermaidBlock = ({ code, id }) => {
150
150
  };
151
151
 
152
152
  exports.MermaidBlock = MermaidBlock;
153
- //# sourceMappingURL=chunk-RSCA5AZW.cjs.map
154
- //# sourceMappingURL=chunk-RSCA5AZW.cjs.map
153
+ //# sourceMappingURL=chunk-5MCBWTIF.cjs.map
154
+ //# sourceMappingURL=chunk-5MCBWTIF.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Markdown/MermaidBlock.tsx"],"names":["DOMPurify","useState","useMemo","useCallback","useEffect","jsx","FenceBlock"],"mappings":"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","file":"chunk-RSCA5AZW.cjs","sourcesContent":["/**\n * MermaidBlock — Renders Mermaid diagrams.\n * Requires `mermaid` to be installed by the consumer (optional peer dependency).\n */\nimport DOMPurify from 'dompurify';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface MermaidBlockProps {\n code: string;\n id: string;\n}\n\ntype MermaidApi = {\n initialize: (config: Record<string, unknown>) => void;\n parse: (text: string) => Promise<unknown>;\n render: (id: string, text: string) => Promise<{ svg: string }>;\n};\n\nlet mermaidInstance: MermaidApi | null = null;\nlet mermaidReady: Promise<MermaidApi> | null = null;\nlet mermaidTheme: 'dark' | 'default' = 'default';\n\nfunction currentTheme(): 'dark' | 'default' {\n return document.documentElement.classList.contains('dark') ||\n document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'default';\n}\n\nfunction buildConfig(theme: 'dark' | 'default'): Record<string, unknown> {\n const base: Record<string, unknown> = {\n startOnLoad: false,\n theme,\n securityLevel: 'strict',\n };\n if (theme === 'dark') {\n base.themeVariables = {\n nodeBorder: '#6b7280',\n mainBkg: '#4a4a4a',\n nodeTextColor: '#ffffff',\n clusterBkg: '#374151',\n titleColor: '#ffffff',\n edgeLabelBackground: '#374151',\n lineColor: '#9ca3af',\n };\n }\n return base;\n}\n\nasync function getMermaid(): Promise<MermaidApi> {\n const theme = currentTheme();\n if (mermaidInstance) {\n if (theme !== mermaidTheme) {\n mermaidTheme = theme;\n mermaidInstance.initialize(buildConfig(theme));\n }\n return mermaidInstance;\n }\n if (!mermaidReady) {\n mermaidReady = import(/* @vite-ignore */ 'mermaid').then((mod) => {\n const m = (mod as { default: MermaidApi }).default;\n mermaidTheme = currentTheme();\n m.initialize(buildConfig(mermaidTheme));\n mermaidInstance = m;\n return m;\n });\n }\n return mermaidReady;\n}\n\nfunction sanitiseSvg(svg: string): string {\n return DOMPurify.sanitize(svg, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // Allow <style> so mermaid's embedded CSS applies, and <foreignObject>\n // so node label text renders (mermaid escapes its content in strict mode).\n ADD_TAGS: ['style', 'foreignObject'],\n ADD_ATTR: [\n 'style',\n 'class',\n 'dominant-baseline',\n 'text-anchor',\n 'font-size',\n 'font-family',\n 'marker-end',\n 'marker-start',\n 'marker-mid',\n 'stroke-dasharray',\n 'stroke-width',\n ],\n FORBID_TAGS: ['script'],\n FORBID_ATTR: ['onload', 'onerror', 'onclick', 'onmouseover'],\n }) as string;\n}\n\nexport const MermaidBlock: React.FC<MermaidBlockProps> = ({ code, id }) => {\n const [svg, setSvg] = useState<string>('');\n const [error, setError] = useState<string>('');\n const [loading, setLoading] = useState(true);\n\n // Derive an accessible label from the diagram's declared type (first keyword).\n const diagramLabel = useMemo(() => {\n const firstWord =\n code\n .trim()\n .split(/[\\s\\n]/)[0]\n ?.toLowerCase() ?? '';\n const typeMap: Record<string, string> = {\n graph: 'Flowchart',\n flowchart: 'Flowchart',\n sequencediagram: 'Sequence diagram',\n classdiagram: 'Class diagram',\n statediagram: 'State diagram',\n 'statediagram-v2': 'State diagram',\n erdiagram: 'Entity relationship diagram',\n gantt: 'Gantt chart',\n pie: 'Pie chart',\n journey: 'User journey diagram',\n gitgraph: 'Git graph',\n mindmap: 'Mind map',\n timeline: 'Timeline',\n quadrantchart: 'Quadrant chart',\n };\n return `${typeMap[firstWord] ?? 'Mermaid'} diagram`;\n }, [code]);\n\n const render = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const mermaid = await getMermaid();\n await mermaid.parse(code);\n const { svg: rendered } = await mermaid.render(`mermaid-${id}`, code);\n setSvg(sanitiseSvg(rendered));\n } catch (err) {\n setError((err as Error).message ?? 'Failed to render diagram');\n } finally {\n setLoading(false);\n }\n }, [code, id]);\n\n useEffect(() => {\n void render();\n }, [render]);\n\n // Re-render when the page theme changes (dark ↔ light)\n useEffect(() => {\n const observer = new MutationObserver(() => void render());\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-theme'],\n });\n return () => observer.disconnect();\n }, [render]);\n\n return (\n <FenceBlock\n code={code}\n language=\"mermaid\"\n supportsRawView\n error={error || undefined}\n >\n {loading ? (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"border-primary-500 h-6 w-6 animate-spin rounded-full border-2 border-t-transparent\" />\n </div>\n ) : (\n <div\n className=\"mermaid-svg flex justify-center p-4\"\n role=\"img\"\n aria-label={diagramLabel}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )}\n </FenceBlock>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/components/Markdown/MermaidBlock.tsx"],"names":["DOMPurify","useState","useMemo","useCallback","useEffect","jsx","FenceBlock"],"mappings":"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","file":"chunk-5MCBWTIF.cjs","sourcesContent":["/**\n * MermaidBlock — Renders Mermaid diagrams.\n * Requires `mermaid` to be installed by the consumer (optional peer dependency).\n */\nimport DOMPurify from 'dompurify';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface MermaidBlockProps {\n code: string;\n id: string;\n}\n\ntype MermaidApi = {\n initialize: (config: Record<string, unknown>) => void;\n parse: (text: string) => Promise<unknown>;\n render: (id: string, text: string) => Promise<{ svg: string }>;\n};\n\nlet mermaidInstance: MermaidApi | null = null;\nlet mermaidReady: Promise<MermaidApi> | null = null;\nlet mermaidTheme: 'dark' | 'default' = 'default';\n\nfunction currentTheme(): 'dark' | 'default' {\n return document.documentElement.classList.contains('dark') ||\n document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'default';\n}\n\nfunction buildConfig(theme: 'dark' | 'default'): Record<string, unknown> {\n const base: Record<string, unknown> = {\n startOnLoad: false,\n theme,\n securityLevel: 'strict',\n };\n if (theme === 'dark') {\n base.themeVariables = {\n nodeBorder: '#6b7280',\n mainBkg: '#4a4a4a',\n nodeTextColor: '#ffffff',\n clusterBkg: '#374151',\n titleColor: '#ffffff',\n edgeLabelBackground: '#374151',\n lineColor: '#9ca3af',\n };\n }\n return base;\n}\n\nasync function getMermaid(): Promise<MermaidApi> {\n const theme = currentTheme();\n if (mermaidInstance) {\n if (theme !== mermaidTheme) {\n mermaidTheme = theme;\n mermaidInstance.initialize(buildConfig(theme));\n }\n return mermaidInstance;\n }\n if (!mermaidReady) {\n mermaidReady = import(/* @vite-ignore */ 'mermaid').then((mod) => {\n const m = (mod as { default: MermaidApi }).default;\n mermaidTheme = currentTheme();\n m.initialize(buildConfig(mermaidTheme));\n mermaidInstance = m;\n return m;\n });\n }\n return mermaidReady;\n}\n\nfunction sanitiseSvg(svg: string): string {\n return DOMPurify.sanitize(svg, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // Allow <style> so mermaid's embedded CSS applies, and <foreignObject>\n // so node label text renders (mermaid escapes its content in strict mode).\n ADD_TAGS: ['style', 'foreignObject'],\n ADD_ATTR: [\n 'style',\n 'class',\n 'dominant-baseline',\n 'text-anchor',\n 'font-size',\n 'font-family',\n 'marker-end',\n 'marker-start',\n 'marker-mid',\n 'stroke-dasharray',\n 'stroke-width',\n ],\n FORBID_TAGS: ['script'],\n FORBID_ATTR: ['onload', 'onerror', 'onclick', 'onmouseover'],\n }) as string;\n}\n\nexport const MermaidBlock: React.FC<MermaidBlockProps> = ({ code, id }) => {\n const [svg, setSvg] = useState<string>('');\n const [error, setError] = useState<string>('');\n const [loading, setLoading] = useState(true);\n\n // Derive an accessible label from the diagram's declared type (first keyword).\n const diagramLabel = useMemo(() => {\n const firstWord =\n code\n .trim()\n .split(/[\\s\\n]/)[0]\n ?.toLowerCase() ?? '';\n const typeMap: Record<string, string> = {\n graph: 'Flowchart',\n flowchart: 'Flowchart',\n sequencediagram: 'Sequence diagram',\n classdiagram: 'Class diagram',\n statediagram: 'State diagram',\n 'statediagram-v2': 'State diagram',\n erdiagram: 'Entity relationship diagram',\n gantt: 'Gantt chart',\n pie: 'Pie chart',\n journey: 'User journey diagram',\n gitgraph: 'Git graph',\n mindmap: 'Mind map',\n timeline: 'Timeline',\n quadrantchart: 'Quadrant chart',\n };\n return `${typeMap[firstWord] ?? 'Mermaid'} diagram`;\n }, [code]);\n\n const render = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const mermaid = await getMermaid();\n await mermaid.parse(code);\n const { svg: rendered } = await mermaid.render(`mermaid-${id}`, code);\n setSvg(sanitiseSvg(rendered));\n } catch (err) {\n setError((err as Error).message ?? 'Failed to render diagram');\n } finally {\n setLoading(false);\n }\n }, [code, id]);\n\n useEffect(() => {\n void render();\n }, [render]);\n\n // Re-render when the page theme changes (dark ↔ light)\n useEffect(() => {\n const observer = new MutationObserver(() => void render());\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-theme'],\n });\n return () => observer.disconnect();\n }, [render]);\n\n return (\n <FenceBlock\n code={code}\n language=\"mermaid\"\n supportsRawView\n error={error || undefined}\n >\n {loading ? (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"border-primary-500 h-6 w-6 animate-spin rounded-full border-2 border-t-transparent\" />\n </div>\n ) : (\n <div\n className=\"mermaid-svg flex justify-center p-4\"\n role=\"img\"\n aria-label={diagramLabel}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )}\n </FenceBlock>\n );\n};\n"]}
@@ -0,0 +1,332 @@
1
+ 'use strict';
2
+
3
+ var chunk6HFFWEM3_cjs = require('./chunk-6HFFWEM3.cjs');
4
+ var chunkYVL3XATO_cjs = require('./chunk-YVL3XATO.cjs');
5
+ var chunkVNYW4C4J_cjs = require('./chunk-VNYW4C4J.cjs');
6
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
7
+ var React = require('react');
8
+ var lucideReact = require('lucide-react');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
30
+
31
+ function RadialExplorer({
32
+ spokes,
33
+ center,
34
+ eyebrow,
35
+ activeId: controlled,
36
+ defaultActiveId = null,
37
+ onActiveChange,
38
+ welcome,
39
+ attractMs = 2200,
40
+ hint = "Hover a module to preview",
41
+ radius = "clamp(118px, 17vw, 188px)",
42
+ groupLabel = "Modules",
43
+ className
44
+ }) {
45
+ const reduced = chunk6HFFWEM3_cjs.usePrefersReducedMotion();
46
+ const [inner, setInner] = React__namespace.useState(defaultActiveId);
47
+ const [engaged, setEngaged] = React__namespace.useState(false);
48
+ const activeId = controlled !== void 0 ? controlled : inner;
49
+ const id = React__namespace.useId();
50
+ const select = React__namespace.useCallback(
51
+ (next) => {
52
+ setEngaged(true);
53
+ if (controlled === void 0) setInner(next);
54
+ onActiveChange?.(next);
55
+ },
56
+ [controlled, onActiveChange]
57
+ );
58
+ React__namespace.useEffect(() => {
59
+ if (controlled !== void 0 || engaged || reduced || !attractMs || spokes.length === 0)
60
+ return;
61
+ let i = spokes.findIndex((s) => s.id === activeId);
62
+ const t = window.setInterval(() => {
63
+ i = (i + 1) % spokes.length;
64
+ setInner(spokes[i].id);
65
+ onActiveChange?.(spokes[i].id);
66
+ }, attractMs);
67
+ return () => window.clearInterval(t);
68
+ }, [engaged, reduced, attractMs, spokes.length, controlled]);
69
+ const activeIndex = spokes.findIndex((s) => s.id === activeId);
70
+ const active = activeIndex >= 0 ? spokes[activeIndex] : null;
71
+ const step = 360 / Math.max(spokes.length, 1);
72
+ const angle = (i) => `${i * step - 90}deg`;
73
+ return /* @__PURE__ */ jsxRuntime.jsxs(
74
+ "section",
75
+ {
76
+ "data-slot": "radial-explorer",
77
+ style: { "--re-r": radius },
78
+ className: chunkS5RVSXDV_cjs.cn(
79
+ "grid gap-8 lg:grid-cols-[1.1fr_minmax(300px,380px)] lg:items-center",
80
+ className
81
+ ),
82
+ "aria-labelledby": eyebrow ? `${id}-eyebrow` : void 0,
83
+ children: [
84
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-5", children: [
85
+ eyebrow && /* @__PURE__ */ jsxRuntime.jsx(
86
+ "p",
87
+ {
88
+ id: `${id}-eyebrow`,
89
+ className: "text-primary-800 dark:text-primary-300 text-[11px] font-bold tracking-[0.18em] uppercase",
90
+ children: eyebrow
91
+ }
92
+ ),
93
+ /* @__PURE__ */ jsxRuntime.jsxs(
94
+ "div",
95
+ {
96
+ role: "group",
97
+ "aria-label": groupLabel,
98
+ "data-slot": "radial-explorer-ring",
99
+ className: "relative hidden aspect-square w-[calc(var(--re-r)*2+120px)] place-items-center lg:grid",
100
+ children: [
101
+ /* @__PURE__ */ jsxRuntime.jsx(
102
+ "span",
103
+ {
104
+ "aria-hidden": true,
105
+ "data-slot": "radial-explorer-core",
106
+ className: chunkS5RVSXDV_cjs.cn(
107
+ // rtl-ignore -- physical centering paired with -translate-x-1/2 is direction-independent; start-1/2 would break it in RTL
108
+ "absolute top-1/2 left-1/2 grid h-[100px] w-[100px] -translate-x-1/2 -translate-y-1/2 place-items-center rounded-[24%] border border-white/15 text-white shadow-[0_14px_30px_rgba(0,0,0,0.3),inset_0_1px_0_rgba(255,255,255,0.08)]",
109
+ "[background:radial-gradient(90%_90%_at_24%_8%,color-mix(in_srgb,var(--mieweb-primary-400)_35%,transparent),transparent_60%),linear-gradient(145deg,var(--mieweb-primary-700)_0%,var(--mieweb-primary-900)_68%,var(--mieweb-primary-950)_100%)]",
110
+ "[&>*]:h-[54px] [&>*]:w-[54px] [&>img]:object-contain"
111
+ ),
112
+ children: center
113
+ }
114
+ ),
115
+ active && /* @__PURE__ */ jsxRuntime.jsx(
116
+ "span",
117
+ {
118
+ "aria-hidden": true,
119
+ "data-slot": "radial-explorer-ray",
120
+ style: {
121
+ width: "var(--re-r)",
122
+ transform: `translateY(-50%) rotate(${angle(activeIndex)})`
123
+ },
124
+ className: chunkS5RVSXDV_cjs.cn(
125
+ // rtl-ignore -- the ray is rotated to a computed angle from the physical center; origin/tip geometry must stay physical
126
+ "pointer-events-none absolute top-1/2 left-1/2 z-0 h-0.5 origin-left rounded-full transition-transform duration-500 [transition-timing-function:cubic-bezier(0.4,0.85,0.3,1)]",
127
+ "[filter:drop-shadow(0_0_6px_color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-300))_55%,transparent))] [background:linear-gradient(90deg,transparent_4%,var(--mieweb-accent,var(--mieweb-primary-300))_94%)]",
128
+ // rtl-ignore -- tip dot sits at the physical end of the rotated ray
129
+ 'after:absolute after:top-1/2 after:-right-[3px] after:h-[7px] after:w-[7px] after:-translate-y-1/2 after:rounded-full after:bg-[var(--mieweb-accent,var(--mieweb-primary-300))] after:shadow-[0_0_9px_2px_color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-300))_70%,transparent)] after:content-[""]'
130
+ )
131
+ }
132
+ ),
133
+ spokes.map((s, i) => {
134
+ const on = s.id === activeId;
135
+ return /* @__PURE__ */ jsxRuntime.jsxs(
136
+ "button",
137
+ {
138
+ type: "button",
139
+ "aria-pressed": on,
140
+ "data-slot": "radial-explorer-spoke",
141
+ "data-active": on || void 0,
142
+ style: {
143
+ transform: `translate(-50%,-50%) rotate(${angle(i)}) translate(var(--re-r)) rotate(calc(-1 * ${angle(i)}))`
144
+ },
145
+ onMouseEnter: () => select(s.id),
146
+ onFocus: () => select(s.id),
147
+ onClick: () => select(s.id),
148
+ className: "group/spoke absolute top-1/2 left-1/2 grid w-24 justify-items-center gap-2 focus-visible:outline-none",
149
+ children: [
150
+ /* @__PURE__ */ jsxRuntime.jsx(SpokeTile, { icon: s.icon, active: on }),
151
+ /* @__PURE__ */ jsxRuntime.jsx(
152
+ "span",
153
+ {
154
+ className: chunkS5RVSXDV_cjs.cn(
155
+ "text-muted-foreground group-hover/spoke:text-primary-800 dark:group-hover/spoke:text-primary-200 text-[13px] font-semibold transition-colors",
156
+ on && "text-primary-800 dark:text-primary-200"
157
+ ),
158
+ children: s.label
159
+ }
160
+ )
161
+ ]
162
+ },
163
+ s.id
164
+ );
165
+ })
166
+ ]
167
+ }
168
+ ),
169
+ /* @__PURE__ */ jsxRuntime.jsx(
170
+ "div",
171
+ {
172
+ role: "group",
173
+ "aria-label": groupLabel,
174
+ className: "grid w-full grid-cols-3 gap-3 lg:hidden",
175
+ children: spokes.map((s) => {
176
+ const on = s.id === activeId;
177
+ return /* @__PURE__ */ jsxRuntime.jsxs(
178
+ "button",
179
+ {
180
+ type: "button",
181
+ "aria-pressed": on,
182
+ "data-slot": "radial-explorer-chip",
183
+ onClick: () => select(s.id),
184
+ className: "group/spoke grid justify-items-center gap-1.5 focus-visible:outline-none",
185
+ children: [
186
+ /* @__PURE__ */ jsxRuntime.jsx(SpokeTile, { icon: s.icon, active: on, size: "sm" }),
187
+ /* @__PURE__ */ jsxRuntime.jsx(
188
+ "span",
189
+ {
190
+ className: chunkS5RVSXDV_cjs.cn(
191
+ "text-muted-foreground text-center text-xs font-semibold",
192
+ on && "text-primary-800 dark:text-primary-200"
193
+ ),
194
+ children: s.label
195
+ }
196
+ )
197
+ ]
198
+ },
199
+ s.id
200
+ );
201
+ })
202
+ }
203
+ ),
204
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2", children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx("div", { role: "group", "aria-label": groupLabel, className: "flex gap-2", children: spokes.map((s, i) => /* @__PURE__ */ jsxRuntime.jsx(
206
+ "button",
207
+ {
208
+ type: "button",
209
+ "aria-pressed": i === activeIndex,
210
+ "aria-label": s.label,
211
+ onClick: () => select(s.id),
212
+ className: chunkS5RVSXDV_cjs.cn(
213
+ "h-2 rounded-full transition-all",
214
+ i === activeIndex ? "w-6 bg-[var(--mieweb-accent,var(--mieweb-primary-400))]" : "bg-primary-300/60 hover:bg-primary-400 w-2"
215
+ )
216
+ },
217
+ s.id
218
+ )) }),
219
+ hint && /* @__PURE__ */ jsxRuntime.jsx(
220
+ "p",
221
+ {
222
+ className: chunkS5RVSXDV_cjs.cn(
223
+ "text-muted-foreground text-xs transition-opacity",
224
+ engaged && "opacity-0"
225
+ ),
226
+ "aria-hidden": engaged,
227
+ children: hint
228
+ }
229
+ )
230
+ ] })
231
+ ] }),
232
+ /* @__PURE__ */ jsxRuntime.jsx(
233
+ "div",
234
+ {
235
+ "data-slot": "radial-explorer-detail",
236
+ "aria-live": engaged ? "polite" : "off",
237
+ className: "border-border bg-card text-card-foreground grid content-center gap-3.5 rounded-2xl border p-5 shadow-xl",
238
+ children: active ? /* @__PURE__ */ jsxRuntime.jsx(
239
+ Detail,
240
+ {
241
+ tag: active.tag ?? active.label,
242
+ title: active.title ?? active.label,
243
+ description: active.description,
244
+ media: active.media,
245
+ caption: active.caption,
246
+ cta: active.cta,
247
+ href: active.href,
248
+ hrefLabel: active.hrefLabel ?? "Explore module"
249
+ },
250
+ active.id
251
+ ) : welcome ? /* @__PURE__ */ jsxRuntime.jsx(
252
+ Detail,
253
+ {
254
+ tag: welcome.tag,
255
+ title: welcome.title,
256
+ description: welcome.description,
257
+ media: welcome.media,
258
+ cta: welcome.cta
259
+ },
260
+ "welcome"
261
+ ) : null
262
+ }
263
+ )
264
+ ]
265
+ }
266
+ );
267
+ }
268
+ function SpokeTile({
269
+ icon,
270
+ active,
271
+ size = "md"
272
+ }) {
273
+ return /* @__PURE__ */ jsxRuntime.jsx(
274
+ "span",
275
+ {
276
+ "aria-hidden": true,
277
+ className: chunkS5RVSXDV_cjs.cn(
278
+ "mie-fx-sheen relative grid place-items-center rounded-[17px] border transition-[transform,border-color,color,box-shadow,background] duration-200",
279
+ size === "md" ? "h-[60px] w-[60px] [&>svg]:h-[22px] [&>svg]:w-[22px]" : "h-12 w-12 rounded-xl [&>svg]:h-5 [&>svg]:w-5",
280
+ "border-border bg-primary-500/10 text-primary-800 dark:text-primary-300 shadow-md backdrop-blur-sm",
281
+ "group-hover/spoke:-translate-y-0.5 group-hover/spoke:scale-[1.04] group-hover/spoke:border-transparent group-hover/spoke:text-white group-hover/spoke:shadow-xl",
282
+ "group-hover/spoke:[background:linear-gradient(150deg,var(--mieweb-primary-700),var(--mieweb-primary-900))_padding-box,linear-gradient(135deg,var(--mieweb-accent,var(--mieweb-primary-300)),var(--mieweb-primary-200)_55%,var(--mieweb-accent,var(--mieweb-primary-300)))_border-box]",
283
+ "group-focus-visible/spoke:outline-primary-500 group-focus-visible/spoke:outline group-focus-visible/spoke:outline-2 group-focus-visible/spoke:outline-offset-[3px]",
284
+ active && "-translate-y-0.5 scale-[1.04] border-transparent text-white shadow-xl [background:linear-gradient(150deg,var(--mieweb-primary-700),var(--mieweb-primary-900))_padding-box,linear-gradient(135deg,var(--mieweb-accent,var(--mieweb-primary-300)),var(--mieweb-primary-200)_55%,var(--mieweb-accent,var(--mieweb-primary-300)))_border-box]"
285
+ ),
286
+ children: icon
287
+ }
288
+ );
289
+ }
290
+ function Detail({
291
+ tag,
292
+ title,
293
+ description,
294
+ media,
295
+ caption,
296
+ cta,
297
+ href,
298
+ hrefLabel
299
+ }) {
300
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-3.5 motion-safe:animate-[mie-fade-in_0.25s_ease-out]", children: [
301
+ media && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "radial-explorer-media", children: media }),
302
+ tag && /* @__PURE__ */ jsxRuntime.jsx(
303
+ chunkYVL3XATO_cjs.Badge,
304
+ {
305
+ size: "sm",
306
+ className: "w-fit text-[10px] font-bold tracking-[0.14em] uppercase",
307
+ children: tag
308
+ }
309
+ ),
310
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-foreground text-2xl leading-tight font-semibold", children: title }),
311
+ description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-[15px] leading-snug", children: description }),
312
+ caption && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground text-sm", children: caption }),
313
+ (cta || href) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-3", children: [
314
+ cta && /* @__PURE__ */ jsxRuntime.jsxs("a", { href: cta.href, className: chunkVNYW4C4J_cjs.buttonVariants({ effect: "sheen" }), children: [
315
+ cta.label,
316
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { size: 16, "aria-hidden": true })
317
+ ] }),
318
+ href && /* @__PURE__ */ jsxRuntime.jsx(
319
+ "a",
320
+ {
321
+ href,
322
+ className: "text-primary-800 dark:text-primary-200 text-sm font-semibold underline-offset-4 hover:underline",
323
+ children: hrefLabel
324
+ }
325
+ )
326
+ ] })
327
+ ] });
328
+ }
329
+
330
+ exports.RadialExplorer = RadialExplorer;
331
+ //# sourceMappingURL=chunk-6EN3IQQI.cjs.map
332
+ //# sourceMappingURL=chunk-6EN3IQQI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/RadialExplorer/RadialExplorer.tsx"],"names":["usePrefersReducedMotion","React","jsxs","cn","jsx","Badge","buttonVariants","ArrowRight"],"mappings":"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","file":"chunk-6EN3IQQI.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { ArrowRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Badge } from '../Badge';\nimport { buttonVariants } from '../Button';\nimport { usePrefersReducedMotion } from '../../hooks/usePrefersReducedMotion';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface RadialSpoke {\n id: string;\n /** Label under the tile. */\n label: string;\n /** Tile icon (Lucide, ~22px). */\n icon: React.ReactNode;\n /** Small caps tag above the detail heading. Defaults to `label`. */\n tag?: string;\n /** Detail heading. Defaults to `label`. */\n title?: string;\n description?: string;\n /** Detail media — a `VideoCard variant=\"plate\"`, an image, a chart. */\n media?: React.ReactNode;\n /** Caption under the media, e.g. \"AI Medical Assistant · 2:44\". */\n caption?: string;\n /** Primary CTA in the detail panel. */\n cta?: { label: string; href: string };\n /** Secondary \"Explore module →\" link. */\n href?: string;\n hrefLabel?: string;\n}\n\nexport interface RadialExplorerProps {\n spokes: RadialSpoke[];\n /** Centre node — a brand mark or product tile. */\n center: React.ReactNode;\n /** Small caps label over the whole explorer. */\n eyebrow?: string;\n /** Controlled active spoke. */\n activeId?: string | null;\n defaultActiveId?: string | null;\n onActiveChange?: (id: string | null) => void;\n /** Shown in the detail panel before any spoke is chosen. */\n welcome?: {\n tag?: string;\n title: string;\n description?: string;\n media?: React.ReactNode;\n cta?: { label: string; href: string };\n };\n /**\n * Auto-advance through the spokes until the visitor interacts. Default\n * 2200ms; pass 0 to disable. Skipped under `prefers-reduced-motion`.\n */\n attractMs?: number;\n /** Hint under the ring. Default \"Hover a module to preview\". */\n hint?: string;\n /** Orbit radius. Default `clamp(118px, 17vw, 188px)`. */\n radius?: string;\n /** Accessible name for the spoke group. Default \"Modules\". */\n groupLabel?: string;\n className?: string;\n}\n\n// =============================================================================\n// RadialExplorer\n// =============================================================================\n\n/**\n * A radial product explorer: a centre mark with N icon tiles orbiting it, a\n * glowing tracer ray from the core to the active tile, tab dots, and a detail\n * panel beside the ring that shows the active spoke's media, copy and CTAs\n * (with a welcome state before any pick). Auto-advances gently until the\n * visitor engages. Below `lg` the ring becomes a chip grid above the panel.\n * Ported from the Enterprise Health hero HUD.\n *\n * @example\n * ```tsx\n * <RadialExplorer\n * eyebrow=\"Explore the platform\"\n * center={<img src=\"/mark.svg\" alt=\"\" />}\n * spokes={[{ id: 'ehr', label: 'Certified EHR', icon: <FileText />, description: '…',\n * media: <VideoCard variant=\"plate\" title=\"EHR tour\" youtubeId=\"…\" duration=\"2:44\" />,\n * cta: { label: 'Request a demo', href: '/demo/' }, href: '/platform/ehr/' }]}\n * />\n * ```\n */\nexport function RadialExplorer({\n spokes,\n center,\n eyebrow,\n activeId: controlled,\n defaultActiveId = null,\n onActiveChange,\n welcome,\n attractMs = 2200,\n hint = 'Hover a module to preview',\n radius = 'clamp(118px, 17vw, 188px)',\n groupLabel = 'Modules',\n className,\n}: RadialExplorerProps) {\n const reduced = usePrefersReducedMotion();\n const [inner, setInner] = React.useState<string | null>(defaultActiveId);\n const [engaged, setEngaged] = React.useState(false);\n const activeId = controlled !== undefined ? controlled : inner;\n const id = React.useId();\n\n const select = React.useCallback(\n (next: string | null) => {\n setEngaged(true);\n if (controlled === undefined) setInner(next);\n onActiveChange?.(next);\n },\n [controlled, onActiveChange]\n );\n\n // Attract loop until the visitor interacts. Never runs in controlled mode:\n // `activeId` is owned by the host, so cycling it (or firing unsolicited\n // `onActiveChange` ticks) would fight the controlled API contract.\n React.useEffect(() => {\n if (\n controlled !== undefined ||\n engaged ||\n reduced ||\n !attractMs ||\n spokes.length === 0\n )\n return;\n let i = spokes.findIndex((s) => s.id === activeId);\n const t = window.setInterval(() => {\n i = (i + 1) % spokes.length;\n setInner(spokes[i].id);\n onActiveChange?.(spokes[i].id);\n }, attractMs);\n return () => window.clearInterval(t);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [engaged, reduced, attractMs, spokes.length, controlled]);\n\n const activeIndex = spokes.findIndex((s) => s.id === activeId);\n const active = activeIndex >= 0 ? spokes[activeIndex] : null;\n const step = 360 / Math.max(spokes.length, 1);\n const angle = (i: number) => `${i * step - 90}deg`;\n\n return (\n <section\n data-slot=\"radial-explorer\"\n style={{ '--re-r': radius } as React.CSSProperties}\n className={cn(\n 'grid gap-8 lg:grid-cols-[1.1fr_minmax(300px,380px)] lg:items-center',\n className\n )}\n aria-labelledby={eyebrow ? `${id}-eyebrow` : undefined}\n >\n <div className=\"flex flex-col items-center gap-5\">\n {eyebrow && (\n <p\n id={`${id}-eyebrow`}\n className=\"text-primary-800 dark:text-primary-300 text-[11px] font-bold tracking-[0.18em] uppercase\"\n >\n {eyebrow}\n </p>\n )}\n\n {/* Ring (lg+) */}\n <div\n role=\"group\"\n aria-label={groupLabel}\n data-slot=\"radial-explorer-ring\"\n className=\"relative hidden aspect-square w-[calc(var(--re-r)*2+120px)] place-items-center lg:grid\"\n >\n <span\n aria-hidden\n data-slot=\"radial-explorer-core\"\n className={cn(\n // rtl-ignore -- physical centering paired with -translate-x-1/2 is direction-independent; start-1/2 would break it in RTL\n 'absolute top-1/2 left-1/2 grid h-[100px] w-[100px] -translate-x-1/2 -translate-y-1/2 place-items-center rounded-[24%] border border-white/15 text-white shadow-[0_14px_30px_rgba(0,0,0,0.3),inset_0_1px_0_rgba(255,255,255,0.08)]',\n '[background:radial-gradient(90%_90%_at_24%_8%,color-mix(in_srgb,var(--mieweb-primary-400)_35%,transparent),transparent_60%),linear-gradient(145deg,var(--mieweb-primary-700)_0%,var(--mieweb-primary-900)_68%,var(--mieweb-primary-950)_100%)]',\n '[&>*]:h-[54px] [&>*]:w-[54px] [&>img]:object-contain'\n )}\n >\n {center}\n </span>\n\n {active && (\n <span\n aria-hidden\n data-slot=\"radial-explorer-ray\"\n style={{\n width: 'var(--re-r)',\n transform: `translateY(-50%) rotate(${angle(activeIndex)})`,\n }}\n className={cn(\n // rtl-ignore -- the ray is rotated to a computed angle from the physical center; origin/tip geometry must stay physical\n 'pointer-events-none absolute top-1/2 left-1/2 z-0 h-0.5 origin-left rounded-full transition-transform duration-500 [transition-timing-function:cubic-bezier(0.4,0.85,0.3,1)]',\n '[filter:drop-shadow(0_0_6px_color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-300))_55%,transparent))] [background:linear-gradient(90deg,transparent_4%,var(--mieweb-accent,var(--mieweb-primary-300))_94%)]',\n // rtl-ignore -- tip dot sits at the physical end of the rotated ray\n 'after:absolute after:top-1/2 after:-right-[3px] after:h-[7px] after:w-[7px] after:-translate-y-1/2 after:rounded-full after:bg-[var(--mieweb-accent,var(--mieweb-primary-300))] after:shadow-[0_0_9px_2px_color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-300))_70%,transparent)] after:content-[\"\"]'\n )}\n />\n )}\n\n {spokes.map((s, i) => {\n const on = s.id === activeId;\n return (\n <button\n key={s.id}\n type=\"button\"\n aria-pressed={on}\n data-slot=\"radial-explorer-spoke\"\n data-active={on || undefined}\n style={{\n transform: `translate(-50%,-50%) rotate(${angle(i)}) translate(var(--re-r)) rotate(calc(-1 * ${angle(i)}))`,\n }}\n onMouseEnter={() => select(s.id)}\n onFocus={() => select(s.id)}\n onClick={() => select(s.id)}\n // rtl-ignore -- spokes are placed by rotate/translate trig from the physical center; the wheel is rotationally symmetric\n className=\"group/spoke absolute top-1/2 left-1/2 grid w-24 justify-items-center gap-2 focus-visible:outline-none\"\n >\n <SpokeTile icon={s.icon} active={on} />\n <span\n className={cn(\n 'text-muted-foreground group-hover/spoke:text-primary-800 dark:group-hover/spoke:text-primary-200 text-[13px] font-semibold transition-colors',\n on && 'text-primary-800 dark:text-primary-200'\n )}\n >\n {s.label}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* Chip grid (< lg) */}\n <div\n role=\"group\"\n aria-label={groupLabel}\n className=\"grid w-full grid-cols-3 gap-3 lg:hidden\"\n >\n {spokes.map((s) => {\n const on = s.id === activeId;\n return (\n <button\n key={s.id}\n type=\"button\"\n aria-pressed={on}\n data-slot=\"radial-explorer-chip\"\n onClick={() => select(s.id)}\n className=\"group/spoke grid justify-items-center gap-1.5 focus-visible:outline-none\"\n >\n <SpokeTile icon={s.icon} active={on} size=\"sm\" />\n <span\n className={cn(\n 'text-muted-foreground text-center text-xs font-semibold',\n on && 'text-primary-800 dark:text-primary-200'\n )}\n >\n {s.label}\n </span>\n </button>\n );\n })}\n </div>\n\n {/* dots + hint */}\n <div className=\"flex flex-col items-center gap-2\">\n <div role=\"group\" aria-label={groupLabel} className=\"flex gap-2\">\n {spokes.map((s, i) => (\n <button\n key={s.id}\n type=\"button\"\n aria-pressed={i === activeIndex}\n aria-label={s.label}\n onClick={() => select(s.id)}\n className={cn(\n 'h-2 rounded-full transition-all',\n i === activeIndex\n ? 'w-6 bg-[var(--mieweb-accent,var(--mieweb-primary-400))]'\n : 'bg-primary-300/60 hover:bg-primary-400 w-2'\n )}\n />\n ))}\n </div>\n {hint && (\n <p\n className={cn(\n 'text-muted-foreground text-xs transition-opacity',\n engaged && 'opacity-0'\n )}\n aria-hidden={engaged}\n >\n {hint}\n </p>\n )}\n </div>\n </div>\n\n {/* Detail */}\n <div\n data-slot=\"radial-explorer-detail\"\n aria-live={engaged ? 'polite' : 'off'}\n className=\"border-border bg-card text-card-foreground grid content-center gap-3.5 rounded-2xl border p-5 shadow-xl\"\n >\n {active ? (\n <Detail\n key={active.id}\n tag={active.tag ?? active.label}\n title={active.title ?? active.label}\n description={active.description}\n media={active.media}\n caption={active.caption}\n cta={active.cta}\n href={active.href}\n hrefLabel={active.hrefLabel ?? 'Explore module'}\n />\n ) : welcome ? (\n <Detail\n key=\"welcome\"\n tag={welcome.tag}\n title={welcome.title}\n description={welcome.description}\n media={welcome.media}\n cta={welcome.cta}\n />\n ) : null}\n </div>\n </section>\n );\n}\n\n// =============================================================================\n// Pieces\n// =============================================================================\n\nfunction SpokeTile({\n icon,\n active,\n size = 'md',\n}: {\n icon: React.ReactNode;\n active: boolean;\n size?: 'sm' | 'md';\n}) {\n return (\n <span\n aria-hidden\n className={cn(\n 'mie-fx-sheen relative grid place-items-center rounded-[17px] border transition-[transform,border-color,color,box-shadow,background] duration-200',\n size === 'md'\n ? 'h-[60px] w-[60px] [&>svg]:h-[22px] [&>svg]:w-[22px]'\n : 'h-12 w-12 rounded-xl [&>svg]:h-5 [&>svg]:w-5',\n 'border-border bg-primary-500/10 text-primary-800 dark:text-primary-300 shadow-md backdrop-blur-sm',\n 'group-hover/spoke:-translate-y-0.5 group-hover/spoke:scale-[1.04] group-hover/spoke:border-transparent group-hover/spoke:text-white group-hover/spoke:shadow-xl',\n 'group-hover/spoke:[background:linear-gradient(150deg,var(--mieweb-primary-700),var(--mieweb-primary-900))_padding-box,linear-gradient(135deg,var(--mieweb-accent,var(--mieweb-primary-300)),var(--mieweb-primary-200)_55%,var(--mieweb-accent,var(--mieweb-primary-300)))_border-box]',\n 'group-focus-visible/spoke:outline-primary-500 group-focus-visible/spoke:outline group-focus-visible/spoke:outline-2 group-focus-visible/spoke:outline-offset-[3px]',\n active &&\n '-translate-y-0.5 scale-[1.04] border-transparent text-white shadow-xl [background:linear-gradient(150deg,var(--mieweb-primary-700),var(--mieweb-primary-900))_padding-box,linear-gradient(135deg,var(--mieweb-accent,var(--mieweb-primary-300)),var(--mieweb-primary-200)_55%,var(--mieweb-accent,var(--mieweb-primary-300)))_border-box]'\n )}\n >\n {icon}\n </span>\n );\n}\n\nfunction Detail({\n tag,\n title,\n description,\n media,\n caption,\n cta,\n href,\n hrefLabel,\n}: {\n tag?: string;\n title: string;\n description?: string;\n media?: React.ReactNode;\n caption?: string;\n cta?: { label: string; href: string };\n href?: string;\n hrefLabel?: string;\n}) {\n return (\n <div className=\"grid gap-3.5 motion-safe:animate-[mie-fade-in_0.25s_ease-out]\">\n {media && <div data-slot=\"radial-explorer-media\">{media}</div>}\n {tag && (\n <Badge\n size=\"sm\"\n className=\"w-fit text-[10px] font-bold tracking-[0.14em] uppercase\"\n >\n {tag}\n </Badge>\n )}\n <h3 className=\"text-foreground text-2xl leading-tight font-semibold\">\n {title}\n </h3>\n {description && (\n <p className=\"text-muted-foreground text-[15px] leading-snug\">\n {description}\n </p>\n )}\n {caption && <p className=\"text-muted-foreground text-sm\">{caption}</p>}\n {(cta || href) && (\n <div className=\"mt-1 flex flex-wrap items-center gap-3\">\n {cta && (\n <a href={cta.href} className={buttonVariants({ effect: 'sheen' })}>\n {cta.label}\n <ArrowRight size={16} aria-hidden />\n </a>\n )}\n {href && (\n <a\n href={href}\n className=\"text-primary-800 dark:text-primary-200 text-sm font-semibold underline-offset-4 hover:underline\"\n >\n {hrefLabel}\n </a>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { formatDateValue, parseDateValue, isValidDate, isDateInFuture, isDateInPast, calculateAge } from './chunk-RC2YMOMS.js';
2
1
  import { Input, inputVariants, floatingLabelVariants, RequiredMark } from './chunk-3IMM2PM4.js';
3
- import { cn } from './chunk-TQONQSJO.js';
4
2
  import { useAnchoredPosition } from './chunk-WSNMQQ4P.js';
3
+ import { formatDateValue, parseDateValue, isValidDate, isDateInFuture, isDateInPast, calculateAge } from './chunk-RC2YMOMS.js';
4
+ import { cn } from './chunk-TQONQSJO.js';
5
5
  import * as React from 'react';
6
6
  import { createPortal } from 'react-dom';
7
7
  import { Clock, Calendar } from 'lucide-react';
@@ -840,5 +840,5 @@ function ChevronRightIcon() {
840
840
  }
841
841
 
842
842
  export { DateInput };
843
- //# sourceMappingURL=chunk-OAZUDUGX.js.map
844
- //# sourceMappingURL=chunk-OAZUDUGX.js.map
843
+ //# sourceMappingURL=chunk-7IBZA7G6.js.map
844
+ //# sourceMappingURL=chunk-7IBZA7G6.js.map