@mieweb/ui 0.10.0-dev.9 → 0.11.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (807) hide show
  1. package/README.md +4 -4
  2. package/agent/mieweb-ui.instructions.md +77 -0
  3. package/dist/CsvBlock-CFXSDPBI.js +9 -0
  4. package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-CFXSDPBI.js.map} +1 -1
  5. package/dist/CsvBlock-RGO7JXHJ.cjs +18 -0
  6. package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-RGO7JXHJ.cjs.map} +1 -1
  7. package/dist/HtmlPreviewBlock-VBYXCXVT.cjs +18 -0
  8. package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-VBYXCXVT.cjs.map} +1 -1
  9. package/dist/HtmlPreviewBlock-Z2GCK325.js +9 -0
  10. package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-Z2GCK325.js.map} +1 -1
  11. package/dist/MermaidBlock-I2R2BQOX.cjs +18 -0
  12. package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-I2R2BQOX.cjs.map} +1 -1
  13. package/dist/MermaidBlock-XCAK7IA5.js +9 -0
  14. package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-XCAK7IA5.js.map} +1 -1
  15. package/dist/SurveyBlock-KI5JOWCL.js +9 -0
  16. package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-KI5JOWCL.js.map} +1 -1
  17. package/dist/SurveyBlock-UKSGISRT.cjs +18 -0
  18. package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-UKSGISRT.cjs.map} +1 -1
  19. package/dist/ag-grid.d.cts +142 -1
  20. package/dist/ag-grid.d.ts +142 -1
  21. package/dist/brands/bluehive.cjs +3 -3
  22. package/dist/brands/bluehive.css +3 -0
  23. package/dist/brands/bluehive.js +1 -1
  24. package/dist/brands/index.cjs +17 -17
  25. package/dist/brands/index.js +4 -4
  26. package/dist/{chunk-JYZW2PZS.cjs → chunk-254QK722.cjs} +7 -7
  27. package/dist/chunk-254QK722.cjs.map +1 -0
  28. package/dist/{chunk-4IS3QCOQ.cjs → chunk-2FZYZ4HT.cjs} +4 -3
  29. package/dist/chunk-2FZYZ4HT.cjs.map +1 -0
  30. package/dist/{chunk-VPIYTQCV.cjs → chunk-2I4IRQQG.cjs} +12 -5
  31. package/dist/chunk-2I4IRQQG.cjs.map +1 -0
  32. package/dist/{chunk-IT775BYG.js → chunk-2W73UQ3T.js} +4 -3
  33. package/dist/chunk-2W73UQ3T.js.map +1 -0
  34. package/dist/chunk-2X54ZLT6.js +874 -0
  35. package/dist/chunk-2X54ZLT6.js.map +1 -0
  36. package/dist/{chunk-5MCBWTIF.cjs → chunk-32ZCJOSR.cjs} +4 -4
  37. package/dist/{chunk-5MCBWTIF.cjs.map → chunk-32ZCJOSR.cjs.map} +1 -1
  38. package/dist/{chunk-WNJRS7Y7.cjs → chunk-3ZWCIPFT.cjs} +4 -2
  39. package/dist/chunk-3ZWCIPFT.cjs.map +1 -0
  40. package/dist/chunk-434L5RYF.js +314 -0
  41. package/dist/chunk-434L5RYF.js.map +1 -0
  42. package/dist/{chunk-TPWKM7JH.js → chunk-43K7OQ3E.js} +3 -3
  43. package/dist/{chunk-TPWKM7JH.js.map → chunk-43K7OQ3E.js.map} +1 -1
  44. package/dist/chunk-47P5QLX4.cjs +42 -0
  45. package/dist/chunk-47P5QLX4.cjs.map +1 -0
  46. package/dist/{chunk-CR2SDI23.cjs → chunk-4QYYWYFD.cjs} +8 -7
  47. package/dist/chunk-4QYYWYFD.cjs.map +1 -0
  48. package/dist/{chunk-76TBQDED.js → chunk-4RI3CQGE.js} +6 -6
  49. package/dist/{chunk-76TBQDED.js.map → chunk-4RI3CQGE.js.map} +1 -1
  50. package/dist/chunk-4ZB7RSMY.cjs +306 -0
  51. package/dist/chunk-4ZB7RSMY.cjs.map +1 -0
  52. package/dist/chunk-522WJIVI.js +99 -0
  53. package/dist/chunk-522WJIVI.js.map +1 -0
  54. package/dist/chunk-56VTM4OX.js +261 -0
  55. package/dist/chunk-56VTM4OX.js.map +1 -0
  56. package/dist/chunk-5HKZR6UG.js +248 -0
  57. package/dist/chunk-5HKZR6UG.js.map +1 -0
  58. package/dist/chunk-6BNZLN4B.cjs +548 -0
  59. package/dist/chunk-6BNZLN4B.cjs.map +1 -0
  60. package/dist/chunk-6N7NMOSV.js +233 -0
  61. package/dist/chunk-6N7NMOSV.js.map +1 -0
  62. package/dist/chunk-6TTCZY3P.cjs +4 -0
  63. package/dist/chunk-6TTCZY3P.cjs.map +1 -0
  64. package/dist/{chunk-YQDA366U.js → chunk-753ENNB6.js} +2 -2
  65. package/dist/{chunk-YQDA366U.js.map → chunk-753ENNB6.js.map} +1 -1
  66. package/dist/{chunk-N6IY47YA.cjs → chunk-7C5W744U.cjs} +8 -8
  67. package/dist/{chunk-N6IY47YA.cjs.map → chunk-7C5W744U.cjs.map} +1 -1
  68. package/dist/chunk-7E46YDOT.cjs +122 -0
  69. package/dist/chunk-7E46YDOT.cjs.map +1 -0
  70. package/dist/chunk-7HUTR6RX.js +178 -0
  71. package/dist/chunk-7HUTR6RX.js.map +1 -0
  72. package/dist/chunk-7IRTD4JT.cjs +61 -0
  73. package/dist/chunk-7IRTD4JT.cjs.map +1 -0
  74. package/dist/{chunk-KZFBQ7GY.js → chunk-7QW6TU4X.js} +3 -3
  75. package/dist/{chunk-KZFBQ7GY.js.map → chunk-7QW6TU4X.js.map} +1 -1
  76. package/dist/{chunk-MWVW4APN.cjs → chunk-7UTBDFFL.cjs} +4 -4
  77. package/dist/{chunk-MWVW4APN.cjs.map → chunk-7UTBDFFL.cjs.map} +1 -1
  78. package/dist/chunk-7WJ6MBF5.cjs +47 -0
  79. package/dist/chunk-7WJ6MBF5.cjs.map +1 -0
  80. package/dist/{chunk-FJ7YPVKV.js → chunk-7X6R3JIA.js} +3 -3
  81. package/dist/{chunk-FJ7YPVKV.js.map → chunk-7X6R3JIA.js.map} +1 -1
  82. package/dist/chunk-A4W5CSK7.cjs +216 -0
  83. package/dist/chunk-A4W5CSK7.cjs.map +1 -0
  84. package/dist/{chunk-2G75X6TS.cjs → chunk-AHHFFXJR.cjs} +3 -3
  85. package/dist/{chunk-2G75X6TS.cjs.map → chunk-AHHFFXJR.cjs.map} +1 -1
  86. package/dist/chunk-AJPFQF3H.cjs +896 -0
  87. package/dist/chunk-AJPFQF3H.cjs.map +1 -0
  88. package/dist/chunk-AMYFRY7K.js +3 -0
  89. package/dist/chunk-AMYFRY7K.js.map +1 -0
  90. package/dist/{chunk-VNYW4C4J.cjs → chunk-ANMX7YDL.cjs} +4 -84
  91. package/dist/chunk-ANMX7YDL.cjs.map +1 -0
  92. package/dist/chunk-ARIJ5OHW.cjs +139 -0
  93. package/dist/chunk-ARIJ5OHW.cjs.map +1 -0
  94. package/dist/{chunk-GD7EBGC4.cjs → chunk-ATRW3J5Z.cjs} +49 -19
  95. package/dist/chunk-ATRW3J5Z.cjs.map +1 -0
  96. package/dist/chunk-BJ6ABRSQ.cjs +256 -0
  97. package/dist/chunk-BJ6ABRSQ.cjs.map +1 -0
  98. package/dist/{chunk-G3JX3UAU.cjs → chunk-BWSZ2BHJ.cjs} +6 -6
  99. package/dist/{chunk-G3JX3UAU.cjs.map → chunk-BWSZ2BHJ.cjs.map} +1 -1
  100. package/dist/chunk-BXRQ6HEP.cjs +4 -0
  101. package/dist/chunk-BXRQ6HEP.cjs.map +1 -0
  102. package/dist/chunk-CBBKWRLG.js +213 -0
  103. package/dist/chunk-CBBKWRLG.js.map +1 -0
  104. package/dist/{chunk-UAMXCMST.cjs → chunk-CFI3TQMA.cjs} +3 -3
  105. package/dist/{chunk-UAMXCMST.cjs.map → chunk-CFI3TQMA.cjs.map} +1 -1
  106. package/dist/chunk-CLQW724U.cjs +271 -0
  107. package/dist/chunk-CLQW724U.cjs.map +1 -0
  108. package/dist/chunk-CPDNX3LS.cjs +47 -0
  109. package/dist/chunk-CPDNX3LS.cjs.map +1 -0
  110. package/dist/chunk-CVNPNZMX.js +44 -0
  111. package/dist/chunk-CVNPNZMX.js.map +1 -0
  112. package/dist/chunk-DGHS5IVD.js +305 -0
  113. package/dist/chunk-DGHS5IVD.js.map +1 -0
  114. package/dist/chunk-DHGCLPFZ.js +91 -0
  115. package/dist/chunk-DHGCLPFZ.js.map +1 -0
  116. package/dist/chunk-DO2YN46R.cjs +201 -0
  117. package/dist/chunk-DO2YN46R.cjs.map +1 -0
  118. package/dist/chunk-DVDT7TX7.js +151 -0
  119. package/dist/chunk-DVDT7TX7.js.map +1 -0
  120. package/dist/chunk-DXEPYK3I.cjs +92 -0
  121. package/dist/chunk-DXEPYK3I.cjs.map +1 -0
  122. package/dist/chunk-DXFP53KF.js +283 -0
  123. package/dist/chunk-DXFP53KF.js.map +1 -0
  124. package/dist/chunk-EACNRR3C.cjs +4 -0
  125. package/dist/chunk-EACNRR3C.cjs.map +1 -0
  126. package/dist/{chunk-TVTIGV7Q.js → chunk-EBKE4DLU.js} +18 -11
  127. package/dist/chunk-EBKE4DLU.js.map +1 -0
  128. package/dist/{chunk-ASSDGS4F.cjs → chunk-ECYIDXG6.cjs} +254 -4
  129. package/dist/chunk-ECYIDXG6.cjs.map +1 -0
  130. package/dist/chunk-EGPDT7SM.js +195 -0
  131. package/dist/chunk-EGPDT7SM.js.map +1 -0
  132. package/dist/chunk-EPCUPHEO.js +193 -0
  133. package/dist/chunk-EPCUPHEO.js.map +1 -0
  134. package/dist/{chunk-7ZXAQTV4.cjs → chunk-ERACGSDY.cjs} +8 -8
  135. package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-ERACGSDY.cjs.map} +1 -1
  136. package/dist/{chunk-XCP454Q6.js → chunk-F4N67NAF.js} +12 -3
  137. package/dist/chunk-F4N67NAF.js.map +1 -0
  138. package/dist/{chunk-WGPLUCBD.js → chunk-F6W62K4J.js} +4 -4
  139. package/dist/{chunk-WGPLUCBD.js.map → chunk-F6W62K4J.js.map} +1 -1
  140. package/dist/{chunk-XVW5DPPP.js → chunk-F7SZSOB3.js} +4 -3
  141. package/dist/chunk-F7SZSOB3.js.map +1 -0
  142. package/dist/chunk-FBCDYTWM.js +385 -0
  143. package/dist/chunk-FBCDYTWM.js.map +1 -0
  144. package/dist/{chunk-KQUI4BGS.cjs → chunk-FBN2VHUV.cjs} +68 -61
  145. package/dist/chunk-FBN2VHUV.cjs.map +1 -0
  146. package/dist/{chunk-V7D3YGUV.js → chunk-FGLIP6YR.js} +4 -4
  147. package/dist/{chunk-V7D3YGUV.js.map → chunk-FGLIP6YR.js.map} +1 -1
  148. package/dist/{chunk-VU6UTJRM.js → chunk-FIKO4WR6.js} +3 -3
  149. package/dist/{chunk-VU6UTJRM.js.map → chunk-FIKO4WR6.js.map} +1 -1
  150. package/dist/{chunk-OD47TTAW.cjs → chunk-FMEA6WAY.cjs} +9 -9
  151. package/dist/{chunk-OD47TTAW.cjs.map → chunk-FMEA6WAY.cjs.map} +1 -1
  152. package/dist/chunk-FSGJXCBG.cjs +318 -0
  153. package/dist/chunk-FSGJXCBG.cjs.map +1 -0
  154. package/dist/chunk-FSWHZY3T.cjs +328 -0
  155. package/dist/chunk-FSWHZY3T.cjs.map +1 -0
  156. package/dist/chunk-FTEZNCRI.js +29 -0
  157. package/dist/chunk-FTEZNCRI.js.map +1 -0
  158. package/dist/{chunk-YVPC65ZJ.cjs → chunk-GF2BE4FB.cjs} +91 -32
  159. package/dist/chunk-GF2BE4FB.cjs.map +1 -0
  160. package/dist/{chunk-JEIW7BSV.cjs → chunk-GKDHMNUA.cjs} +2 -52
  161. package/dist/chunk-GKDHMNUA.cjs.map +1 -0
  162. package/dist/{chunk-URAQIF67.cjs → chunk-GM32IDVL.cjs} +6 -6
  163. package/dist/{chunk-URAQIF67.cjs.map → chunk-GM32IDVL.cjs.map} +1 -1
  164. package/dist/chunk-GVM6DTR5.js +90 -0
  165. package/dist/chunk-GVM6DTR5.js.map +1 -0
  166. package/dist/{chunk-SQHMGT4W.js → chunk-GW4RFJZ5.js} +7 -7
  167. package/dist/chunk-GW4RFJZ5.js.map +1 -0
  168. package/dist/chunk-GY5SP4ST.js +3 -0
  169. package/dist/chunk-GY5SP4ST.js.map +1 -0
  170. package/dist/{chunk-OCSCBB52.cjs → chunk-GYXSF6BJ.cjs} +10 -10
  171. package/dist/{chunk-OCSCBB52.cjs.map → chunk-GYXSF6BJ.cjs.map} +1 -1
  172. package/dist/chunk-H2Y7HZV5.js +3 -0
  173. package/dist/chunk-H2Y7HZV5.js.map +1 -0
  174. package/dist/chunk-H3P7POFC.cjs +337 -0
  175. package/dist/chunk-H3P7POFC.cjs.map +1 -0
  176. package/dist/{chunk-JID7AZTO.cjs → chunk-H3ROMJYI.cjs} +4 -4
  177. package/dist/{chunk-JID7AZTO.cjs.map → chunk-H3ROMJYI.cjs.map} +1 -1
  178. package/dist/{chunk-462XSCP3.cjs → chunk-HCIXGFWR.cjs} +4 -4
  179. package/dist/{chunk-462XSCP3.cjs.map → chunk-HCIXGFWR.cjs.map} +1 -1
  180. package/dist/{chunk-H4ZXMQQW.js → chunk-HDY7YQFX.js} +3 -3
  181. package/dist/{chunk-H4ZXMQQW.js.map → chunk-HDY7YQFX.js.map} +1 -1
  182. package/dist/chunk-HNFFFFYH.cjs +114 -0
  183. package/dist/chunk-HNFFFFYH.cjs.map +1 -0
  184. package/dist/chunk-HNXLLDPN.js +25 -0
  185. package/dist/chunk-HNXLLDPN.js.map +1 -0
  186. package/dist/{chunk-NV2CWBI2.cjs → chunk-IEY3ZJIT.cjs} +12 -3
  187. package/dist/chunk-IEY3ZJIT.cjs.map +1 -0
  188. package/dist/chunk-IEZXJWHJ.cjs +306 -0
  189. package/dist/chunk-IEZXJWHJ.cjs.map +1 -0
  190. package/dist/{chunk-3QEVGSFG.cjs → chunk-IGDO62KR.cjs} +5 -5
  191. package/dist/{chunk-3QEVGSFG.cjs.map → chunk-IGDO62KR.cjs.map} +1 -1
  192. package/dist/{chunk-N5O47VGS.cjs → chunk-IVGI353O.cjs} +2 -2
  193. package/dist/{chunk-N5O47VGS.cjs.map → chunk-IVGI353O.cjs.map} +1 -1
  194. package/dist/chunk-IWRBJHO3.cjs +51 -0
  195. package/dist/chunk-IWRBJHO3.cjs.map +1 -0
  196. package/dist/{chunk-2IZLKPUW.js → chunk-J2CKXXOW.js} +27 -6
  197. package/dist/chunk-J2CKXXOW.js.map +1 -0
  198. package/dist/{chunk-VILW53UZ.js → chunk-JMAZ2GKT.js} +3 -3
  199. package/dist/{chunk-VILW53UZ.js.map → chunk-JMAZ2GKT.js.map} +1 -1
  200. package/dist/{chunk-WWJIW2IH.cjs → chunk-JSXIB6EJ.cjs} +4 -4
  201. package/dist/{chunk-WWJIW2IH.cjs.map → chunk-JSXIB6EJ.cjs.map} +1 -1
  202. package/dist/{chunk-KRU6IGV7.js → chunk-JUJGWUAN.js} +28 -6
  203. package/dist/chunk-JUJGWUAN.js.map +1 -0
  204. package/dist/{chunk-FXO5ARBB.cjs → chunk-KDW6BD4O.cjs} +4 -4
  205. package/dist/{chunk-FXO5ARBB.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
  206. package/dist/{chunk-Z5V7SAZ4.js → chunk-KFEN2SRZ.js} +3 -3
  207. package/dist/{chunk-Z5V7SAZ4.js.map → chunk-KFEN2SRZ.js.map} +1 -1
  208. package/dist/chunk-KIVEYQGA.cjs +319 -0
  209. package/dist/chunk-KIVEYQGA.cjs.map +1 -0
  210. package/dist/{chunk-XEAT7XJG.cjs → chunk-KQ6GLYFZ.cjs} +29 -13
  211. package/dist/chunk-KQ6GLYFZ.cjs.map +1 -0
  212. package/dist/{chunk-4A3W4TQF.js → chunk-KVTKSPX5.js} +254 -4
  213. package/dist/chunk-KVTKSPX5.js.map +1 -0
  214. package/dist/{chunk-6EN3IQQI.cjs → chunk-L5Y52F2E.cjs} +9 -9
  215. package/dist/chunk-L5Y52F2E.cjs.map +1 -0
  216. package/dist/chunk-L6K4PRZK.cjs +4 -0
  217. package/dist/chunk-L6K4PRZK.cjs.map +1 -0
  218. package/dist/chunk-LAN5VWGC.js +2540 -0
  219. package/dist/chunk-LAN5VWGC.js.map +1 -0
  220. package/dist/{chunk-7ZDPD5ZX.cjs → chunk-LC3JL2HB.cjs} +11 -7
  221. package/dist/chunk-LC3JL2HB.cjs.map +1 -0
  222. package/dist/chunk-LRAAJRE7.cjs +2707 -0
  223. package/dist/chunk-LRAAJRE7.cjs.map +1 -0
  224. package/dist/{chunk-OE5CKRUC.js → chunk-LX323IMT.js} +34 -4
  225. package/dist/chunk-LX323IMT.js.map +1 -0
  226. package/dist/chunk-M3VPGJMV.js +283 -0
  227. package/dist/chunk-M3VPGJMV.js.map +1 -0
  228. package/dist/{chunk-DVOQ3JNO.js → chunk-ME7EVT6F.js} +23 -9
  229. package/dist/chunk-ME7EVT6F.js.map +1 -0
  230. package/dist/{chunk-SQJFBZ42.js → chunk-MUYUFOGL.js} +8 -7
  231. package/dist/chunk-MUYUFOGL.js.map +1 -0
  232. package/dist/{chunk-VKELAMAZ.js → chunk-N54FYWG6.js} +27 -11
  233. package/dist/chunk-N54FYWG6.js.map +1 -0
  234. package/dist/chunk-N5JDL4VE.js +3 -0
  235. package/dist/chunk-N5JDL4VE.js.map +1 -0
  236. package/dist/{chunk-ZPSJ2UV6.cjs → chunk-NAH65KPK.cjs} +8 -8
  237. package/dist/{chunk-ZPSJ2UV6.cjs.map → chunk-NAH65KPK.cjs.map} +1 -1
  238. package/dist/{chunk-PYJDVWXM.js → chunk-NUB5HRKS.js} +3 -3
  239. package/dist/{chunk-PYJDVWXM.js.map → chunk-NUB5HRKS.js.map} +1 -1
  240. package/dist/{chunk-WNZAYBVB.cjs → chunk-O6BJMVGT.cjs} +48 -48
  241. package/dist/{chunk-WNZAYBVB.cjs.map → chunk-O6BJMVGT.cjs.map} +1 -1
  242. package/dist/{chunk-SVSHA7XV.js → chunk-O6XDA3SI.js} +31 -33
  243. package/dist/chunk-O6XDA3SI.js.map +1 -0
  244. package/dist/chunk-OIF34LEN.cjs +425 -0
  245. package/dist/chunk-OIF34LEN.cjs.map +1 -0
  246. package/dist/{chunk-J5CSLNCN.cjs → chunk-OODVC2UD.cjs} +2 -2
  247. package/dist/{chunk-J5CSLNCN.cjs.map → chunk-OODVC2UD.cjs.map} +1 -1
  248. package/dist/{chunk-LL6IWKI3.js → chunk-OW3SQJ7P.js} +3 -3
  249. package/dist/{chunk-LL6IWKI3.js.map → chunk-OW3SQJ7P.js.map} +1 -1
  250. package/dist/{chunk-ZGRCSNPK.js → chunk-OYUIEJPN.js} +17 -8
  251. package/dist/chunk-OYUIEJPN.js.map +1 -0
  252. package/dist/chunk-P22YCUVM.cjs +4 -0
  253. package/dist/chunk-P22YCUVM.cjs.map +1 -0
  254. package/dist/{chunk-CEQJGUAS.js → chunk-P4E3K3ND.js} +12 -5
  255. package/dist/chunk-P4E3K3ND.js.map +1 -0
  256. package/dist/{chunk-TMMVIUUN.js → chunk-P7D7BYFE.js} +4 -4
  257. package/dist/{chunk-TMMVIUUN.js.map → chunk-P7D7BYFE.js.map} +1 -1
  258. package/dist/{chunk-SGFYA22I.cjs → chunk-PINIBEIU.cjs} +21 -12
  259. package/dist/chunk-PINIBEIU.cjs.map +1 -0
  260. package/dist/{chunk-3T7QGLNB.js → chunk-PJEL5ZZV.js} +4 -2
  261. package/dist/chunk-PJEL5ZZV.js.map +1 -0
  262. package/dist/chunk-PWXDRFJL.cjs +218 -0
  263. package/dist/chunk-PWXDRFJL.cjs.map +1 -0
  264. package/dist/{chunk-XZNN3S3S.cjs → chunk-PYI2IWNX.cjs} +4 -4
  265. package/dist/{chunk-XZNN3S3S.cjs.map → chunk-PYI2IWNX.cjs.map} +1 -1
  266. package/dist/chunk-Q3YVLO52.cjs +174 -0
  267. package/dist/chunk-Q3YVLO52.cjs.map +1 -0
  268. package/dist/{chunk-MNILXWVY.js → chunk-QJ2L5RU6.js} +7 -7
  269. package/dist/{chunk-MNILXWVY.js.map → chunk-QJ2L5RU6.js.map} +1 -1
  270. package/dist/{chunk-X4LBUPJO.cjs → chunk-QX6AAVDE.cjs} +31 -33
  271. package/dist/chunk-QX6AAVDE.cjs.map +1 -0
  272. package/dist/{chunk-UV2FVNWT.cjs → chunk-RIUQP2QS.cjs} +5 -5
  273. package/dist/{chunk-UV2FVNWT.cjs.map → chunk-RIUQP2QS.cjs.map} +1 -1
  274. package/dist/chunk-RLVYWUXG.js +115 -0
  275. package/dist/chunk-RLVYWUXG.js.map +1 -0
  276. package/dist/{chunk-HACNIFO3.js → chunk-RM2HPQIC.js} +77 -14
  277. package/dist/chunk-RM2HPQIC.js.map +1 -0
  278. package/dist/{chunk-DEDN5HAG.js → chunk-RSJGTWLM.js} +3 -3
  279. package/dist/{chunk-DEDN5HAG.js.map → chunk-RSJGTWLM.js.map} +1 -1
  280. package/dist/{chunk-G4D6CLBT.js → chunk-RZSSQ7AT.js} +3 -3
  281. package/dist/{chunk-G4D6CLBT.js.map → chunk-RZSSQ7AT.js.map} +1 -1
  282. package/dist/{chunk-ENKFJJZX.js → chunk-S2JZL4JC.js} +6 -6
  283. package/dist/{chunk-ENKFJJZX.js.map → chunk-S2JZL4JC.js.map} +1 -1
  284. package/dist/{chunk-P7UMS4E6.cjs → chunk-S7AMZ4RD.cjs} +23 -9
  285. package/dist/chunk-S7AMZ4RD.cjs.map +1 -0
  286. package/dist/{chunk-VROIMIHB.cjs → chunk-SHBCUXFS.cjs} +28 -6
  287. package/dist/chunk-SHBCUXFS.cjs.map +1 -0
  288. package/dist/{chunk-RJ6NTJHC.js → chunk-SRMTRD7F.js} +3 -3
  289. package/dist/{chunk-RJ6NTJHC.js.map → chunk-SRMTRD7F.js.map} +1 -1
  290. package/dist/{chunk-IX6KFB3K.cjs → chunk-SW2E7XKY.cjs} +9 -9
  291. package/dist/{chunk-IX6KFB3K.cjs.map → chunk-SW2E7XKY.cjs.map} +1 -1
  292. package/dist/chunk-SZSRGUVO.js +402 -0
  293. package/dist/chunk-SZSRGUVO.js.map +1 -0
  294. package/dist/{chunk-NJ6MY6V5.js → chunk-T5BBZQ66.js} +3 -3
  295. package/dist/{chunk-NJ6MY6V5.js.map → chunk-T5BBZQ66.js.map} +1 -1
  296. package/dist/{chunk-HZ4MBUC3.js → chunk-TI3TQQ7F.js} +4 -53
  297. package/dist/chunk-TI3TQQ7F.js.map +1 -0
  298. package/dist/{chunk-ACCAXVOG.js → chunk-TJ4GWQPM.js} +137 -57
  299. package/dist/chunk-TJ4GWQPM.js.map +1 -0
  300. package/dist/{chunk-5JJ2DAE4.js → chunk-TWQSMUE6.js} +7 -3
  301. package/dist/chunk-TWQSMUE6.js.map +1 -0
  302. package/dist/{chunk-X4XPNTCZ.cjs → chunk-U2RS574O.cjs} +139 -59
  303. package/dist/chunk-U2RS574O.cjs.map +1 -0
  304. package/dist/{chunk-TAXD5ADA.cjs → chunk-UEDTZYGI.cjs} +3 -3
  305. package/dist/{chunk-TAXD5ADA.cjs.map → chunk-UEDTZYGI.cjs.map} +1 -1
  306. package/dist/{chunk-3QGS6CXD.js → chunk-UJDWFDKE.js} +3 -3
  307. package/dist/{chunk-3QGS6CXD.js.map → chunk-UJDWFDKE.js.map} +1 -1
  308. package/dist/{chunk-DZ5HFLRC.js → chunk-UNFDIBKJ.js} +3 -3
  309. package/dist/{chunk-DZ5HFLRC.js.map → chunk-UNFDIBKJ.js.map} +1 -1
  310. package/dist/{chunk-UQ3VVR6A.cjs → chunk-UPWIJC6I.cjs} +3 -3
  311. package/dist/{chunk-UQ3VVR6A.cjs.map → chunk-UPWIJC6I.cjs.map} +1 -1
  312. package/dist/chunk-UTIPENPW.cjs +286 -0
  313. package/dist/chunk-UTIPENPW.cjs.map +1 -0
  314. package/dist/{chunk-S7WCHDBO.js → chunk-VCI2Y7ST.js} +3 -3
  315. package/dist/{chunk-S7WCHDBO.js.map → chunk-VCI2Y7ST.js.map} +1 -1
  316. package/dist/{chunk-Y5HFM7LO.js → chunk-VOEXGDL5.js} +6 -6
  317. package/dist/chunk-VOEXGDL5.js.map +1 -0
  318. package/dist/{chunk-P2CA3XGI.js → chunk-VSRO4PAI.js} +23 -5
  319. package/dist/chunk-VSRO4PAI.js.map +1 -0
  320. package/dist/{chunk-L6MDULYB.js → chunk-VU3ZMJBN.js} +2 -2
  321. package/dist/{chunk-L6MDULYB.js.map → chunk-VU3ZMJBN.js.map} +1 -1
  322. package/dist/{chunk-XI34EGK5.cjs → chunk-VV2U36T6.cjs} +9 -9
  323. package/dist/{chunk-XI34EGK5.cjs.map → chunk-VV2U36T6.cjs.map} +1 -1
  324. package/dist/{chunk-VPWJCJCX.cjs → chunk-VXW7D5LR.cjs} +26 -8
  325. package/dist/chunk-VXW7D5LR.cjs.map +1 -0
  326. package/dist/{chunk-GOALNQZ2.js → chunk-WFBUBT54.js} +4 -83
  327. package/dist/chunk-WFBUBT54.js.map +1 -0
  328. package/dist/chunk-WQHBMZSC.js +295 -0
  329. package/dist/chunk-WQHBMZSC.js.map +1 -0
  330. package/dist/chunk-WSMBIXPU.cjs +2573 -0
  331. package/dist/chunk-WSMBIXPU.cjs.map +1 -0
  332. package/dist/chunk-X5JOEZVR.js +525 -0
  333. package/dist/chunk-X5JOEZVR.js.map +1 -0
  334. package/dist/chunk-XBAAHOCP.js +3 -0
  335. package/dist/chunk-XBAAHOCP.js.map +1 -0
  336. package/dist/chunk-XDU65GLW.js +21 -0
  337. package/dist/chunk-XDU65GLW.js.map +1 -0
  338. package/dist/{chunk-5GUOOLPR.cjs → chunk-XHK5VZ4L.cjs} +29 -8
  339. package/dist/chunk-XHK5VZ4L.cjs.map +1 -0
  340. package/dist/chunk-XI74P5F2.cjs +424 -0
  341. package/dist/chunk-XI74P5F2.cjs.map +1 -0
  342. package/dist/chunk-XNPDZANN.cjs +238 -0
  343. package/dist/chunk-XNPDZANN.cjs.map +1 -0
  344. package/dist/{chunk-XDIMTPZU.cjs → chunk-XPWFIDZM.cjs} +4 -3
  345. package/dist/chunk-XPWFIDZM.cjs.map +1 -0
  346. package/dist/{chunk-FS4VZUFV.cjs → chunk-XRVMYT5G.cjs} +77 -13
  347. package/dist/chunk-XRVMYT5G.cjs.map +1 -0
  348. package/dist/chunk-XXA4NZUC.js +3 -0
  349. package/dist/chunk-XXA4NZUC.js.map +1 -0
  350. package/dist/chunk-Y424YL55.js +59 -0
  351. package/dist/chunk-Y424YL55.js.map +1 -0
  352. package/dist/chunk-Y7ZJZLJY.js +2657 -0
  353. package/dist/chunk-Y7ZJZLJY.js.map +1 -0
  354. package/dist/chunk-YG7BR76Y.js +281 -0
  355. package/dist/chunk-YG7BR76Y.js.map +1 -0
  356. package/dist/chunk-YGS2TRMP.js +38 -0
  357. package/dist/chunk-YGS2TRMP.js.map +1 -0
  358. package/dist/chunk-YUMOM3KE.js +167 -0
  359. package/dist/chunk-YUMOM3KE.js.map +1 -0
  360. package/dist/chunk-YVKBXNPK.js +41 -0
  361. package/dist/chunk-YVKBXNPK.js.map +1 -0
  362. package/dist/chunk-YW2AKBLS.cjs +23 -0
  363. package/dist/chunk-YW2AKBLS.cjs.map +1 -0
  364. package/dist/{chunk-3M7TAXNR.js → chunk-YZCM7CXK.js} +3 -3
  365. package/dist/{chunk-3M7TAXNR.js.map → chunk-YZCM7CXK.js.map} +1 -1
  366. package/dist/chunk-Z3WMDVMR.cjs +46 -0
  367. package/dist/chunk-Z3WMDVMR.cjs.map +1 -0
  368. package/dist/chunk-ZNUMOJOI.cjs +4 -0
  369. package/dist/chunk-ZNUMOJOI.cjs.map +1 -0
  370. package/dist/components/Accordion/index.cjs +2 -2
  371. package/dist/components/Accordion/index.d.cts +6 -0
  372. package/dist/components/Accordion/index.d.ts +6 -0
  373. package/dist/components/Accordion/index.js +1 -1
  374. package/dist/components/ActionPlan/index.cjs +34 -0
  375. package/dist/components/ActionPlan/index.cjs.map +1 -0
  376. package/dist/components/ActionPlan/index.d.cts +65 -0
  377. package/dist/components/ActionPlan/index.d.ts +65 -0
  378. package/dist/components/ActionPlan/index.js +21 -0
  379. package/dist/components/ActionPlan/index.js.map +1 -0
  380. package/dist/components/ActivityFeed/index.cjs +31 -0
  381. package/dist/components/ActivityFeed/index.cjs.map +1 -0
  382. package/dist/components/ActivityFeed/index.d.cts +99 -0
  383. package/dist/components/ActivityFeed/index.d.ts +99 -0
  384. package/dist/components/ActivityFeed/index.js +18 -0
  385. package/dist/components/ActivityFeed/index.js.map +1 -0
  386. package/dist/components/Alert/index.d.cts +1 -1
  387. package/dist/components/Alert/index.d.ts +1 -1
  388. package/dist/components/AlertDialog/index.cjs +19 -5
  389. package/dist/components/AlertDialog/index.d.cts +94 -16
  390. package/dist/components/AlertDialog/index.d.ts +94 -16
  391. package/dist/components/AlertDialog/index.js +6 -4
  392. package/dist/components/AssociationList/index.cjs +29 -0
  393. package/dist/components/AssociationList/index.cjs.map +1 -0
  394. package/dist/components/AssociationList/index.d.cts +50 -0
  395. package/dist/components/AssociationList/index.d.ts +50 -0
  396. package/dist/components/AssociationList/index.js +16 -0
  397. package/dist/components/AssociationList/index.js.map +1 -0
  398. package/dist/components/AudioRecorder/index.d.cts +2 -2
  399. package/dist/components/AudioRecorder/index.d.ts +2 -2
  400. package/dist/components/Autocomplete/index.d.cts +8 -2
  401. package/dist/components/Autocomplete/index.d.ts +8 -2
  402. package/dist/components/Avatar/index.cjs +9 -7
  403. package/dist/components/Avatar/index.d.cts +46 -15
  404. package/dist/components/Avatar/index.d.ts +46 -15
  405. package/dist/components/Avatar/index.js +3 -1
  406. package/dist/components/AvatarGroup/index.cjs +20 -0
  407. package/dist/components/AvatarGroup/index.cjs.map +1 -0
  408. package/dist/components/AvatarGroup/index.d.cts +57 -0
  409. package/dist/components/AvatarGroup/index.d.ts +57 -0
  410. package/dist/components/AvatarGroup/index.js +7 -0
  411. package/dist/components/AvatarGroup/index.js.map +1 -0
  412. package/dist/components/Badge/index.cjs +3 -3
  413. package/dist/components/Badge/index.d.cts +16 -2
  414. package/dist/components/Badge/index.d.ts +16 -2
  415. package/dist/components/Badge/index.js +1 -1
  416. package/dist/components/BoardView/index.cjs +5 -4
  417. package/dist/components/BoardView/index.d.cts +2 -3
  418. package/dist/components/BoardView/index.d.ts +2 -3
  419. package/dist/components/BoardView/index.js +2 -1
  420. package/dist/components/Button/index.cjs +5 -3
  421. package/dist/components/Button/index.d.cts +2 -1
  422. package/dist/components/Button/index.d.ts +2 -1
  423. package/dist/components/Button/index.js +3 -1
  424. package/dist/components/CalendarHeatmap/index.cjs +18 -0
  425. package/dist/components/CalendarHeatmap/index.cjs.map +1 -0
  426. package/dist/components/CalendarHeatmap/index.d.cts +47 -0
  427. package/dist/components/CalendarHeatmap/index.d.ts +47 -0
  428. package/dist/components/CalendarHeatmap/index.js +5 -0
  429. package/dist/components/CalendarHeatmap/index.js.map +1 -0
  430. package/dist/components/CalendarView/index.cjs +6 -4
  431. package/dist/components/CalendarView/index.d.cts +1 -2
  432. package/dist/components/CalendarView/index.d.ts +1 -2
  433. package/dist/components/CalendarView/index.js +4 -2
  434. package/dist/components/Card/index.d.cts +3 -3
  435. package/dist/components/Card/index.d.ts +3 -3
  436. package/dist/components/ClampedText/index.cjs +3 -2
  437. package/dist/components/ClampedText/index.js +2 -1
  438. package/dist/components/CollabStatus/index.cjs +6 -4
  439. package/dist/components/CollabStatus/index.d.cts +11 -0
  440. package/dist/components/CollabStatus/index.d.ts +11 -0
  441. package/dist/components/CollabStatus/index.js +3 -1
  442. package/dist/components/Collapsible/index.cjs +6 -6
  443. package/dist/components/Collapsible/index.d.cts +6 -0
  444. package/dist/components/Collapsible/index.d.ts +6 -0
  445. package/dist/components/Collapsible/index.js +3 -3
  446. package/dist/components/CompletenessMeter/index.cjs +23 -0
  447. package/dist/components/CompletenessMeter/index.cjs.map +1 -0
  448. package/dist/components/CompletenessMeter/index.d.cts +52 -0
  449. package/dist/components/CompletenessMeter/index.d.ts +52 -0
  450. package/dist/components/CompletenessMeter/index.js +6 -0
  451. package/dist/components/CompletenessMeter/index.js.map +1 -0
  452. package/dist/components/CountryCodeDropdown/index.cjs +5 -5
  453. package/dist/components/CountryCodeDropdown/index.js +2 -2
  454. package/dist/components/CustomizableDashboard/index.cjs +12 -10
  455. package/dist/components/CustomizableDashboard/index.js +5 -3
  456. package/dist/components/DateInput/index.d.cts +36 -4
  457. package/dist/components/DateInput/index.d.ts +36 -4
  458. package/dist/components/Dropdown/index.cjs +12 -10
  459. package/dist/components/Dropdown/index.d.cts +6 -4
  460. package/dist/components/Dropdown/index.d.ts +6 -4
  461. package/dist/components/Dropdown/index.js +5 -3
  462. package/dist/components/EmailEditor/index.cjs +68 -0
  463. package/dist/components/EmailEditor/index.cjs.map +1 -0
  464. package/dist/components/EmailEditor/index.d.cts +347 -0
  465. package/dist/components/EmailEditor/index.d.ts +347 -0
  466. package/dist/components/EmailEditor/index.js +27 -0
  467. package/dist/components/EmailEditor/index.js.map +1 -0
  468. package/dist/components/FieldHistory/index.cjs +34 -0
  469. package/dist/components/FieldHistory/index.cjs.map +1 -0
  470. package/dist/components/FieldHistory/index.d.cts +66 -0
  471. package/dist/components/FieldHistory/index.d.ts +66 -0
  472. package/dist/components/FieldHistory/index.js +21 -0
  473. package/dist/components/FieldHistory/index.js.map +1 -0
  474. package/dist/components/FloatingWindow/index.cjs +6 -4
  475. package/dist/components/FloatingWindow/index.js +4 -2
  476. package/dist/components/GanttView/index.d.cts +1 -2
  477. package/dist/components/GanttView/index.d.ts +1 -2
  478. package/dist/components/GlossaryTooltip/index.cjs +3 -3
  479. package/dist/components/GlossaryTooltip/index.js +2 -2
  480. package/dist/components/InlineEdit/index.cjs +20 -0
  481. package/dist/components/InlineEdit/index.cjs.map +1 -0
  482. package/dist/components/InlineEdit/index.d.cts +56 -0
  483. package/dist/components/InlineEdit/index.d.ts +56 -0
  484. package/dist/components/InlineEdit/index.js +7 -0
  485. package/dist/components/InlineEdit/index.js.map +1 -0
  486. package/dist/components/KeyboardShortcutsOverlay/index.cjs +5 -5
  487. package/dist/components/KeyboardShortcutsOverlay/index.js +3 -3
  488. package/dist/components/ListView/index.cjs +6 -4
  489. package/dist/components/ListView/index.d.cts +91 -4
  490. package/dist/components/ListView/index.d.ts +91 -4
  491. package/dist/components/ListView/index.js +4 -2
  492. package/dist/components/LogoUploader/index.cjs +18 -0
  493. package/dist/components/LogoUploader/index.cjs.map +1 -0
  494. package/dist/components/LogoUploader/index.d.cts +49 -0
  495. package/dist/components/LogoUploader/index.d.ts +49 -0
  496. package/dist/components/LogoUploader/index.js +5 -0
  497. package/dist/components/LogoUploader/index.js.map +1 -0
  498. package/dist/components/Markdown/index.cjs +21 -19
  499. package/dist/components/Markdown/index.js +9 -7
  500. package/dist/components/MediaEditor/index.cjs +16 -14
  501. package/dist/components/MediaEditor/index.d.cts +91 -2
  502. package/dist/components/MediaEditor/index.d.ts +91 -2
  503. package/dist/components/MediaEditor/index.js +11 -9
  504. package/dist/components/MediaFeed/index.cjs +29 -0
  505. package/dist/components/MediaFeed/index.cjs.map +1 -0
  506. package/dist/components/MediaFeed/index.d.cts +104 -0
  507. package/dist/components/MediaFeed/index.d.ts +104 -0
  508. package/dist/components/MediaFeed/index.js +20 -0
  509. package/dist/components/MediaFeed/index.js.map +1 -0
  510. package/dist/components/MediaPlayer/index.cjs +8 -6
  511. package/dist/components/MediaPlayer/index.d.cts +19 -1
  512. package/dist/components/MediaPlayer/index.d.ts +19 -1
  513. package/dist/components/MediaPlayer/index.js +5 -3
  514. package/dist/components/MegaMenu/index.cjs +7 -5
  515. package/dist/components/MegaMenu/index.js +4 -2
  516. package/dist/components/Modal/index.cjs +10 -10
  517. package/dist/components/Modal/index.js +2 -2
  518. package/dist/components/Pagination/index.d.cts +1 -1
  519. package/dist/components/Pagination/index.d.ts +1 -1
  520. package/dist/components/PhiMask/index.cjs +18 -0
  521. package/dist/components/PhiMask/index.cjs.map +1 -0
  522. package/dist/components/PhiMask/index.d.cts +45 -0
  523. package/dist/components/PhiMask/index.d.ts +45 -0
  524. package/dist/components/PhiMask/index.js +5 -0
  525. package/dist/components/PhiMask/index.js.map +1 -0
  526. package/dist/components/Progress/index.cjs +6 -6
  527. package/dist/components/Progress/index.d.cts +8 -2
  528. package/dist/components/Progress/index.d.ts +8 -2
  529. package/dist/components/Progress/index.js +1 -1
  530. package/dist/components/PropertyList/index.cjs +25 -0
  531. package/dist/components/PropertyList/index.cjs.map +1 -0
  532. package/dist/components/PropertyList/index.d.cts +87 -0
  533. package/dist/components/PropertyList/index.d.ts +87 -0
  534. package/dist/components/PropertyList/index.js +12 -0
  535. package/dist/components/PropertyList/index.js.map +1 -0
  536. package/dist/components/Q/index.d.cts +2 -2
  537. package/dist/components/Q/index.d.ts +2 -2
  538. package/dist/components/QuickAction/index.d.cts +1 -1
  539. package/dist/components/QuickAction/index.d.ts +1 -1
  540. package/dist/components/RadialExplorer/index.cjs +7 -5
  541. package/dist/components/RadialExplorer/index.js +6 -4
  542. package/dist/components/Rating/index.cjs +28 -0
  543. package/dist/components/Rating/index.cjs.map +1 -0
  544. package/dist/components/Rating/index.d.cts +85 -0
  545. package/dist/components/Rating/index.d.ts +85 -0
  546. package/dist/components/Rating/index.js +7 -0
  547. package/dist/components/Rating/index.js.map +1 -0
  548. package/dist/components/RecordButton/index.d.cts +1 -1
  549. package/dist/components/RecordButton/index.d.ts +1 -1
  550. package/dist/components/RecordHeader/index.cjs +30 -0
  551. package/dist/components/RecordHeader/index.cjs.map +1 -0
  552. package/dist/components/RecordHeader/index.d.cts +96 -0
  553. package/dist/components/RecordHeader/index.d.ts +96 -0
  554. package/dist/components/RecordHeader/index.js +17 -0
  555. package/dist/components/RecordHeader/index.js.map +1 -0
  556. package/dist/components/RecordLayout/index.cjs +22 -0
  557. package/dist/components/RecordLayout/index.cjs.map +1 -0
  558. package/dist/components/RecordLayout/index.d.cts +40 -0
  559. package/dist/components/RecordLayout/index.d.ts +40 -0
  560. package/dist/components/RecordLayout/index.js +9 -0
  561. package/dist/components/RecordLayout/index.js.map +1 -0
  562. package/dist/components/RichTextEditor/index.cjs +12 -8
  563. package/dist/components/RichTextEditor/index.d.cts +12 -2
  564. package/dist/components/RichTextEditor/index.d.ts +12 -2
  565. package/dist/components/RichTextEditor/index.js +9 -5
  566. package/dist/components/ScrollArea/index.d.cts +1 -1
  567. package/dist/components/ScrollArea/index.d.ts +1 -1
  568. package/dist/components/SectionSpyNav/index.cjs +5 -3
  569. package/dist/components/SectionSpyNav/index.js +4 -2
  570. package/dist/components/Select/index.cjs +4 -4
  571. package/dist/components/Select/index.d.cts +2 -2
  572. package/dist/components/Select/index.d.ts +2 -2
  573. package/dist/components/Select/index.js +2 -2
  574. package/dist/components/Skeleton/index.d.cts +1 -1
  575. package/dist/components/Skeleton/index.d.ts +1 -1
  576. package/dist/components/Slider/index.d.cts +2 -2
  577. package/dist/components/Slider/index.d.ts +2 -2
  578. package/dist/components/SliderCalculator/index.cjs +4 -4
  579. package/dist/components/SliderCalculator/index.js +2 -2
  580. package/dist/components/SourceTip/index.cjs +3 -3
  581. package/dist/components/SourceTip/index.js +2 -2
  582. package/dist/components/Spinner/index.d.cts +2 -2
  583. package/dist/components/Spinner/index.d.ts +2 -2
  584. package/dist/components/SuperChat/index.cjs +735 -322
  585. package/dist/components/SuperChat/index.cjs.map +1 -1
  586. package/dist/components/SuperChat/index.d.cts +126 -8
  587. package/dist/components/SuperChat/index.d.ts +126 -8
  588. package/dist/components/SuperChat/index.js +721 -308
  589. package/dist/components/SuperChat/index.js.map +1 -1
  590. package/dist/components/SuperChat/plugins/index.cjs +8 -6
  591. package/dist/components/SuperChat/plugins/index.cjs.map +1 -1
  592. package/dist/components/SuperChat/plugins/index.d.cts +2 -3
  593. package/dist/components/SuperChat/plugins/index.d.ts +2 -3
  594. package/dist/components/SuperChat/plugins/index.js +7 -5
  595. package/dist/components/SuperChat/plugins/index.js.map +1 -1
  596. package/dist/components/Tabs/index.cjs +10 -7
  597. package/dist/components/Tabs/index.d.cts +12 -1
  598. package/dist/components/Tabs/index.d.ts +12 -1
  599. package/dist/components/Tabs/index.js +4 -1
  600. package/dist/components/TagEditor/index.cjs +22 -0
  601. package/dist/components/TagEditor/index.cjs.map +1 -0
  602. package/dist/components/TagEditor/index.d.cts +46 -0
  603. package/dist/components/TagEditor/index.d.ts +46 -0
  604. package/dist/components/TagEditor/index.js +9 -0
  605. package/dist/components/TagEditor/index.js.map +1 -0
  606. package/dist/components/Text/index.d.cts +3 -3
  607. package/dist/components/Text/index.d.ts +3 -3
  608. package/dist/components/Textarea/index.d.cts +2 -2
  609. package/dist/components/Textarea/index.d.ts +2 -2
  610. package/dist/components/ThemeProvider/index.cjs +9 -9
  611. package/dist/components/ThemeProvider/index.d.cts +3 -1
  612. package/dist/components/ThemeProvider/index.d.ts +3 -1
  613. package/dist/components/ThemeProvider/index.js +3 -3
  614. package/dist/components/Tooltip/index.cjs +3 -3
  615. package/dist/components/Tooltip/index.js +2 -2
  616. package/dist/components/TranscriptView/index.d.cts +85 -4
  617. package/dist/components/TranscriptView/index.d.ts +85 -4
  618. package/dist/components/UserPicker/index.cjs +24 -0
  619. package/dist/components/UserPicker/index.cjs.map +1 -0
  620. package/dist/components/UserPicker/index.d.cts +60 -0
  621. package/dist/components/UserPicker/index.d.ts +60 -0
  622. package/dist/components/UserPicker/index.js +11 -0
  623. package/dist/components/UserPicker/index.js.map +1 -0
  624. package/dist/components/VideoCard/index.cjs +4 -4
  625. package/dist/components/VideoCard/index.js +2 -2
  626. package/dist/components/ViewSet/index.cjs +10 -7
  627. package/dist/components/ViewSet/index.d.cts +120 -8
  628. package/dist/components/ViewSet/index.d.ts +120 -8
  629. package/dist/components/ViewSet/index.js +9 -6
  630. package/dist/components/ViewSwitcher/index.cjs +4 -3
  631. package/dist/components/ViewSwitcher/index.d.cts +1 -2
  632. package/dist/components/ViewSwitcher/index.d.ts +1 -2
  633. package/dist/components/ViewSwitcher/index.js +2 -1
  634. package/dist/components/YearTimeline/index.cjs +5 -5
  635. package/dist/components/YearTimeline/index.js +1 -1
  636. package/dist/datavis.cjs +6 -4
  637. package/dist/datavis.cjs.map +1 -1
  638. package/dist/datavis.d.cts +167 -13
  639. package/dist/datavis.d.ts +167 -13
  640. package/dist/datavis.js +4 -2
  641. package/dist/datavis.js.map +1 -1
  642. package/dist/deck.cjs +3374 -0
  643. package/dist/deck.cjs.map +1 -0
  644. package/dist/deck.d.cts +712 -0
  645. package/dist/deck.d.ts +712 -0
  646. package/dist/deck.js +3330 -0
  647. package/dist/deck.js.map +1 -0
  648. package/dist/esheet.cjs +20 -16
  649. package/dist/esheet.cjs.map +1 -1
  650. package/dist/esheet.d.cts +183 -1
  651. package/dist/esheet.d.ts +183 -1
  652. package/dist/esheet.js +17 -13
  653. package/dist/esheet.js.map +1 -1
  654. package/dist/globe.cjs +2 -2
  655. package/dist/globe.js +1 -1
  656. package/dist/{hey-buddy-INNUFFJJ.cjs → hey-buddy-5WOBYZRJ.cjs} +22 -11
  657. package/dist/hey-buddy-5WOBYZRJ.cjs.map +1 -0
  658. package/dist/{hey-buddy-V6FC5UKB.js → hey-buddy-AHUHCDBC.js} +22 -11
  659. package/dist/hey-buddy-AHUHCDBC.js.map +1 -0
  660. package/dist/hooks/index.cjs +88 -33
  661. package/dist/hooks/index.d.cts +592 -36
  662. package/dist/hooks/index.d.ts +592 -36
  663. package/dist/hooks/index.js +9 -6
  664. package/dist/icons-wBacj6BW.d.cts +142 -0
  665. package/dist/icons-wBacj6BW.d.ts +142 -0
  666. package/dist/index.cjs +2056 -1349
  667. package/dist/index.cjs.map +1 -1
  668. package/dist/index.d.cts +10401 -637
  669. package/dist/index.d.ts +10401 -637
  670. package/dist/index.js +674 -352
  671. package/dist/index.js.map +1 -1
  672. package/dist/kerebron.css +115 -0
  673. package/dist/maps.cjs +160 -0
  674. package/dist/maps.cjs.map +1 -0
  675. package/dist/maps.d.cts +42 -0
  676. package/dist/maps.d.ts +42 -0
  677. package/dist/maps.js +138 -0
  678. package/dist/maps.js.map +1 -0
  679. package/dist/motion.cjs +7 -7
  680. package/dist/motion.d.cts +186 -2
  681. package/dist/motion.d.ts +186 -2
  682. package/dist/motion.js +2 -2
  683. package/dist/org-chart.cjs +1303 -0
  684. package/dist/org-chart.cjs.map +1 -0
  685. package/dist/org-chart.d.cts +164 -0
  686. package/dist/org-chart.d.ts +164 -0
  687. package/dist/org-chart.js +1278 -0
  688. package/dist/org-chart.js.map +1 -0
  689. package/dist/q.d.cts +25 -3
  690. package/dist/q.d.ts +25 -3
  691. package/dist/styles/effects.css +133 -0
  692. package/dist/styles/init.css +22 -3
  693. package/dist/styles.css +1 -1
  694. package/dist/tailwind-preset.cjs +4 -4
  695. package/dist/tailwind-preset.js +1 -1
  696. package/dist/templates.cjs +156 -0
  697. package/dist/templates.cjs.map +1 -0
  698. package/dist/templates.d.cts +734 -0
  699. package/dist/templates.d.ts +734 -0
  700. package/dist/templates.js +11 -0
  701. package/dist/templates.js.map +1 -0
  702. package/dist/{types-CbWXIKbe.d.cts → types-CDeBNZiE.d.cts} +1 -28
  703. package/dist/{types-CbWXIKbe.d.ts → types-CDeBNZiE.d.ts} +1 -28
  704. package/dist/types-Cx1FHLq2.d.cts +548 -0
  705. package/dist/types-Cx1FHLq2.d.ts +548 -0
  706. package/dist/types-DsdZvEI1.d.cts +92 -0
  707. package/dist/types-DsdZvEI1.d.ts +92 -0
  708. package/dist/utils/index.cjs +9 -9
  709. package/dist/utils/index.d.cts +13 -2
  710. package/dist/utils/index.d.ts +13 -2
  711. package/dist/utils/index.js +1 -1
  712. package/package.json +79 -15
  713. package/dist/Animated-XmH6k8pZ.d.cts +0 -188
  714. package/dist/Animated-XmH6k8pZ.d.ts +0 -188
  715. package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
  716. package/dist/CsvBlock-UWPMTLE2.js +0 -7
  717. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
  718. package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
  719. package/dist/MedicationEditor-Bp4NLy7y.d.cts +0 -352
  720. package/dist/MedicationEditor-Bp4NLy7y.d.ts +0 -352
  721. package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
  722. package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
  723. package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
  724. package/dist/SurveyBlock-4DO62RBT.js +0 -7
  725. package/dist/chunk-2IZLKPUW.js.map +0 -1
  726. package/dist/chunk-3T7QGLNB.js.map +0 -1
  727. package/dist/chunk-4A3W4TQF.js.map +0 -1
  728. package/dist/chunk-4IS3QCOQ.cjs.map +0 -1
  729. package/dist/chunk-5GUOOLPR.cjs.map +0 -1
  730. package/dist/chunk-5JJ2DAE4.js.map +0 -1
  731. package/dist/chunk-6EN3IQQI.cjs.map +0 -1
  732. package/dist/chunk-6HFFWEM3.cjs +0 -22
  733. package/dist/chunk-6HFFWEM3.cjs.map +0 -1
  734. package/dist/chunk-7ZDPD5ZX.cjs.map +0 -1
  735. package/dist/chunk-7ZVTLTJF.js +0 -109
  736. package/dist/chunk-7ZVTLTJF.js.map +0 -1
  737. package/dist/chunk-ACCAXVOG.js.map +0 -1
  738. package/dist/chunk-AR7AKDM2.cjs +0 -143
  739. package/dist/chunk-AR7AKDM2.cjs.map +0 -1
  740. package/dist/chunk-ASSDGS4F.cjs.map +0 -1
  741. package/dist/chunk-AWJBOND5.js +0 -130
  742. package/dist/chunk-AWJBOND5.js.map +0 -1
  743. package/dist/chunk-BMSG4NBH.js +0 -56
  744. package/dist/chunk-BMSG4NBH.js.map +0 -1
  745. package/dist/chunk-CEQJGUAS.js.map +0 -1
  746. package/dist/chunk-CR2SDI23.cjs.map +0 -1
  747. package/dist/chunk-DVOQ3JNO.js.map +0 -1
  748. package/dist/chunk-E4IBHYJ7.cjs +0 -80
  749. package/dist/chunk-E4IBHYJ7.cjs.map +0 -1
  750. package/dist/chunk-FS4VZUFV.cjs.map +0 -1
  751. package/dist/chunk-GD7EBGC4.cjs.map +0 -1
  752. package/dist/chunk-GOALNQZ2.js.map +0 -1
  753. package/dist/chunk-HACNIFO3.js.map +0 -1
  754. package/dist/chunk-HB7C7NB5.js +0 -20
  755. package/dist/chunk-HB7C7NB5.js.map +0 -1
  756. package/dist/chunk-HZ4MBUC3.js.map +0 -1
  757. package/dist/chunk-IT775BYG.js.map +0 -1
  758. package/dist/chunk-JEIW7BSV.cjs.map +0 -1
  759. package/dist/chunk-JYZW2PZS.cjs.map +0 -1
  760. package/dist/chunk-KQUI4BGS.cjs.map +0 -1
  761. package/dist/chunk-KRU6IGV7.js.map +0 -1
  762. package/dist/chunk-NV2CWBI2.cjs.map +0 -1
  763. package/dist/chunk-OE5CKRUC.js.map +0 -1
  764. package/dist/chunk-P2CA3XGI.js.map +0 -1
  765. package/dist/chunk-P7UMS4E6.cjs.map +0 -1
  766. package/dist/chunk-SGFYA22I.cjs.map +0 -1
  767. package/dist/chunk-SQHMGT4W.js.map +0 -1
  768. package/dist/chunk-SQJFBZ42.js.map +0 -1
  769. package/dist/chunk-SVSHA7XV.js.map +0 -1
  770. package/dist/chunk-TVTIGV7Q.js.map +0 -1
  771. package/dist/chunk-VKELAMAZ.js.map +0 -1
  772. package/dist/chunk-VNYW4C4J.cjs.map +0 -1
  773. package/dist/chunk-VOKVG3ER.js +0 -78
  774. package/dist/chunk-VOKVG3ER.js.map +0 -1
  775. package/dist/chunk-VPIYTQCV.cjs.map +0 -1
  776. package/dist/chunk-VPWJCJCX.cjs.map +0 -1
  777. package/dist/chunk-VROIMIHB.cjs.map +0 -1
  778. package/dist/chunk-WNJRS7Y7.cjs.map +0 -1
  779. package/dist/chunk-X4LBUPJO.cjs.map +0 -1
  780. package/dist/chunk-X4XPNTCZ.cjs.map +0 -1
  781. package/dist/chunk-XCP454Q6.js.map +0 -1
  782. package/dist/chunk-XDIMTPZU.cjs.map +0 -1
  783. package/dist/chunk-XEAT7XJG.cjs.map +0 -1
  784. package/dist/chunk-XVW5DPPP.js.map +0 -1
  785. package/dist/chunk-Y5HFM7LO.js.map +0 -1
  786. package/dist/chunk-YVL3XATO.cjs +0 -79
  787. package/dist/chunk-YVL3XATO.cjs.map +0 -1
  788. package/dist/chunk-YVPC65ZJ.cjs.map +0 -1
  789. package/dist/chunk-ZGRCSNPK.js.map +0 -1
  790. package/dist/hey-buddy-INNUFFJJ.cjs.map +0 -1
  791. package/dist/hey-buddy-V6FC5UKB.js.map +0 -1
  792. package/dist/html-MdxqSzjD.d.cts +0 -13
  793. package/dist/html-MdxqSzjD.d.ts +0 -13
  794. package/dist/orderRows-BUJYgSc7.d.cts +0 -221
  795. package/dist/orderRows-BUJYgSc7.d.ts +0 -221
  796. package/dist/transcript-Cg7uSW-C.d.cts +0 -84
  797. package/dist/transcript-Cg7uSW-C.d.ts +0 -84
  798. package/dist/types-B97JNRNQ.d.cts +0 -251
  799. package/dist/types-CnPEwzlp.d.cts +0 -254
  800. package/dist/types-CnPEwzlp.d.ts +0 -254
  801. package/dist/types-gZXrfLj6.d.ts +0 -251
  802. package/dist/useAnchoredPosition-CKwLSQW8.d.cts +0 -76
  803. package/dist/useAnchoredPosition-CKwLSQW8.d.ts +0 -76
  804. package/dist/useTheme-B9SWu6ui.d.cts +0 -24
  805. package/dist/useTheme-B9SWu6ui.d.ts +0 -24
  806. package/dist/useTranscriptEdits-CGzlemHT.d.cts +0 -182
  807. package/dist/useTranscriptEdits-D32bLs0l.d.ts +0 -182
package/dist/deck.cjs ADDED
@@ -0,0 +1,3374 @@
1
+ 'use strict';
2
+
3
+ var chunkXI74P5F2_cjs = require('./chunk-XI74P5F2.cjs');
4
+ var chunkZ3WMDVMR_cjs = require('./chunk-Z3WMDVMR.cjs');
5
+ require('./chunk-DXEPYK3I.cjs');
6
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
7
+ require('./chunk-EUAMEVVI.cjs');
8
+ var React9 = require('react');
9
+ var reactDom = require('react-dom');
10
+ var lucideReact = require('lucide-react');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule) return e;
15
+ var n = Object.create(null);
16
+ if (e) {
17
+ Object.keys(e).forEach(function (k) {
18
+ if (k !== 'default') {
19
+ var d = Object.getOwnPropertyDescriptor(e, k);
20
+ Object.defineProperty(n, k, d.get ? d : {
21
+ enumerable: true,
22
+ get: function () { return e[k]; }
23
+ });
24
+ }
25
+ });
26
+ }
27
+ n.default = e;
28
+ return Object.freeze(n);
29
+ }
30
+
31
+ var React9__namespace = /*#__PURE__*/_interopNamespace(React9);
32
+
33
+ var chrome = "mie-deck-chrome print:hidden";
34
+ var iconButton = "flex size-9 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/70 backdrop-blur transition-colors hover:bg-white/10 hover:text-white focus-visible:ring-2 focus-visible:ring-accent focus-visible:outline-none";
35
+ var slideLabel = (s) => s.navLabel ?? ("title" in s ? s.title : void 0) ?? "";
36
+ function ProgressBar({ progress }) {
37
+ return /* @__PURE__ */ jsxRuntime.jsx(
38
+ "div",
39
+ {
40
+ className: chunkS5RVSXDV_cjs.cn(
41
+ chrome,
42
+ "pointer-events-none absolute inset-x-0 top-0 z-40 h-[3px] bg-white/5"
43
+ ),
44
+ children: /* @__PURE__ */ jsxRuntime.jsx(
45
+ "div",
46
+ {
47
+ className: "bg-accent h-full transition-[width] duration-500 ease-out",
48
+ style: { width: `${progress}%` }
49
+ }
50
+ )
51
+ }
52
+ );
53
+ }
54
+ function SlideCounter({
55
+ active,
56
+ total,
57
+ section
58
+ }) {
59
+ return /* @__PURE__ */ jsxRuntime.jsxs(
60
+ "div",
61
+ {
62
+ className: chunkS5RVSXDV_cjs.cn(
63
+ chrome,
64
+ "pointer-events-none absolute start-5 bottom-5 z-40 hidden select-none md:block"
65
+ ),
66
+ children: [
67
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-sm font-semibold text-white/80 tabular-nums", children: [
68
+ String(active + 1).padStart(2, "0"),
69
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-white/70", children: [
70
+ " ",
71
+ "/ ",
72
+ String(total).padStart(2, "0")
73
+ ] })
74
+ ] }),
75
+ section && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-accent mt-0.5 text-[0.7rem] tracking-[0.18em] uppercase", children: section })
76
+ ]
77
+ }
78
+ );
79
+ }
80
+ function DotNav({
81
+ slides,
82
+ active,
83
+ goTo,
84
+ labels
85
+ }) {
86
+ return /* @__PURE__ */ jsxRuntime.jsx(
87
+ "nav",
88
+ {
89
+ "aria-label": labels.slideNavigation,
90
+ className: chunkS5RVSXDV_cjs.cn(
91
+ chrome,
92
+ "absolute end-3 top-1/2 z-40 hidden -translate-y-1/2 flex-col items-center gap-2 md:flex"
93
+ ),
94
+ children: slides.map((s, i) => /* @__PURE__ */ jsxRuntime.jsxs(
95
+ "button",
96
+ {
97
+ type: "button",
98
+ onClick: () => goTo(i),
99
+ "aria-label": labels.goToSlide(i + 1, slideLabel(s)),
100
+ "aria-current": i === active ? "true" : void 0,
101
+ className: "group relative flex size-4 items-center justify-center",
102
+ children: [
103
+ /* @__PURE__ */ jsxRuntime.jsx(
104
+ "span",
105
+ {
106
+ className: chunkS5RVSXDV_cjs.cn(
107
+ "block rounded-full transition-all duration-300",
108
+ i === active ? "bg-accent size-2.5" : "size-1.5 bg-white/30 group-hover:bg-white/60"
109
+ )
110
+ }
111
+ ),
112
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute end-6 rounded-md border border-white/10 bg-neutral-900/95 px-2 py-1 text-xs whitespace-nowrap text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 group-focus-visible:opacity-100", children: slideLabel(s) })
113
+ ]
114
+ },
115
+ i
116
+ ))
117
+ }
118
+ );
119
+ }
120
+ function Controls({
121
+ isFullscreen,
122
+ onToggleFullscreen,
123
+ onOpenOutline,
124
+ labels
125
+ }) {
126
+ return /* @__PURE__ */ jsxRuntime.jsxs(
127
+ "div",
128
+ {
129
+ className: chunkS5RVSXDV_cjs.cn(
130
+ chrome,
131
+ "absolute end-5 bottom-5 z-40 hidden items-center gap-2 md:flex"
132
+ ),
133
+ children: [
134
+ /* @__PURE__ */ jsxRuntime.jsx(
135
+ "button",
136
+ {
137
+ type: "button",
138
+ className: iconButton,
139
+ onClick: onOpenOutline,
140
+ "aria-label": labels.openOutline,
141
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.List, { "aria-hidden": "true", className: "size-4" })
142
+ }
143
+ ),
144
+ /* @__PURE__ */ jsxRuntime.jsx(
145
+ "button",
146
+ {
147
+ type: "button",
148
+ className: iconButton,
149
+ onClick: () => window.print(),
150
+ "aria-label": labels.print,
151
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Printer, { "aria-hidden": "true", className: "size-4" })
152
+ }
153
+ ),
154
+ /* @__PURE__ */ jsxRuntime.jsx(
155
+ "button",
156
+ {
157
+ type: "button",
158
+ className: iconButton,
159
+ onClick: onToggleFullscreen,
160
+ "aria-label": isFullscreen ? labels.exitFullscreen : labels.enterFullscreen,
161
+ children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minimize2, { "aria-hidden": "true", className: "size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize2, { "aria-hidden": "true", className: "size-4" })
162
+ }
163
+ )
164
+ ]
165
+ }
166
+ );
167
+ }
168
+ function Kbd({ children }) {
169
+ return /* @__PURE__ */ jsxRuntime.jsx("kbd", { className: "inline-flex min-w-5 items-center justify-center rounded border border-white/15 bg-white/5 px-1 py-0.5 text-[0.65rem] text-white/80", children });
170
+ }
171
+ function KeyboardHints({
172
+ pulse,
173
+ labels
174
+ }) {
175
+ const [visible, setVisible] = React9__namespace.useState(true);
176
+ React9__namespace.useEffect(() => {
177
+ setVisible(true);
178
+ const t = setTimeout(() => setVisible(false), 5e3);
179
+ return () => clearTimeout(t);
180
+ }, [pulse]);
181
+ return /* @__PURE__ */ jsxRuntime.jsxs(
182
+ "div",
183
+ {
184
+ "aria-hidden": "true",
185
+ className: chunkS5RVSXDV_cjs.cn(
186
+ chrome,
187
+ "pointer-events-none absolute bottom-5 left-1/2 z-40 hidden -translate-x-1/2 items-center gap-3 rounded-full border border-white/10 bg-neutral-900/80 px-4 py-1.5 text-xs text-white/70 backdrop-blur transition-opacity duration-500 select-none md:flex",
188
+ visible ? "opacity-100" : "opacity-0"
189
+ ),
190
+ children: [
191
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-1", children: [
192
+ /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "\u2191" }),
193
+ /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "\u2193" }),
194
+ " ",
195
+ labels.navigateHint
196
+ ] }),
197
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-white/20", children: "\xB7" }),
198
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
199
+ /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "F" }),
200
+ " ",
201
+ labels.fullscreenHint
202
+ ] }),
203
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-white/20", children: "\xB7" }),
204
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "?" }),
206
+ " ",
207
+ labels.helpHint
208
+ ] })
209
+ ]
210
+ }
211
+ );
212
+ }
213
+ function MobileNav({
214
+ active,
215
+ total,
216
+ onPrev,
217
+ onNext,
218
+ onOpenOutline,
219
+ labels
220
+ }) {
221
+ const btn = "flex size-10 items-center justify-center rounded-full text-white/80 transition-colors hover:bg-white/10 disabled:opacity-30";
222
+ return /* @__PURE__ */ jsxRuntime.jsxs(
223
+ "div",
224
+ {
225
+ className: chunkS5RVSXDV_cjs.cn(
226
+ chrome,
227
+ "absolute inset-x-0 bottom-0 z-40 flex items-center justify-between border-t border-white/10 bg-neutral-950/90 px-3 py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] backdrop-blur md:hidden"
228
+ ),
229
+ children: [
230
+ /* @__PURE__ */ jsxRuntime.jsx(
231
+ "button",
232
+ {
233
+ type: "button",
234
+ className: btn,
235
+ onClick: onPrev,
236
+ disabled: active === 0,
237
+ "aria-label": labels.previous,
238
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { "aria-hidden": "true", className: "size-5" })
239
+ }
240
+ ),
241
+ /* @__PURE__ */ jsxRuntime.jsxs(
242
+ "button",
243
+ {
244
+ type: "button",
245
+ onClick: onOpenOutline,
246
+ className: "flex items-center gap-2 rounded-full px-4 py-1.5 text-sm font-semibold text-white/80 tabular-nums",
247
+ "aria-label": labels.openOutline,
248
+ children: [
249
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.List, { "aria-hidden": "true", className: "text-accent size-4" }),
250
+ active + 1,
251
+ " / ",
252
+ total
253
+ ]
254
+ }
255
+ ),
256
+ /* @__PURE__ */ jsxRuntime.jsx(
257
+ "button",
258
+ {
259
+ type: "button",
260
+ className: btn,
261
+ onClick: onNext,
262
+ disabled: active === total - 1,
263
+ "aria-label": labels.next,
264
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { "aria-hidden": "true", className: "size-5" })
265
+ }
266
+ )
267
+ ]
268
+ }
269
+ );
270
+ }
271
+ function OutlineDialog({
272
+ open,
273
+ onClose,
274
+ slides,
275
+ active,
276
+ goTo,
277
+ labels
278
+ }) {
279
+ const panelRef = React9__namespace.useRef(null);
280
+ const titleId = React9__namespace.useId();
281
+ React9__namespace.useEffect(() => {
282
+ if (!open) return;
283
+ const previous = document.activeElement;
284
+ const panel = panelRef.current;
285
+ const focusables = () => Array.from(
286
+ panel?.querySelectorAll("button:not([disabled])") ?? []
287
+ );
288
+ (focusables()[1] ?? focusables()[0])?.focus();
289
+ const onKey = (e) => {
290
+ if (e.key === "Escape") {
291
+ e.preventDefault();
292
+ onClose();
293
+ return;
294
+ }
295
+ if (e.key !== "Tab") return;
296
+ const items = focusables();
297
+ const first = items[0];
298
+ const last = items[items.length - 1];
299
+ if (e.shiftKey && document.activeElement === first) {
300
+ e.preventDefault();
301
+ last?.focus();
302
+ } else if (!e.shiftKey && document.activeElement === last) {
303
+ e.preventDefault();
304
+ first?.focus();
305
+ }
306
+ };
307
+ document.addEventListener("keydown", onKey, true);
308
+ return () => {
309
+ document.removeEventListener("keydown", onKey, true);
310
+ previous?.focus?.();
311
+ };
312
+ }, [open, onClose]);
313
+ if (!open || typeof document === "undefined") return null;
314
+ return reactDom.createPortal(
315
+ /* @__PURE__ */ jsxRuntime.jsxs(
316
+ "div",
317
+ {
318
+ ref: panelRef,
319
+ role: "dialog",
320
+ "aria-modal": "true",
321
+ "aria-labelledby": titleId,
322
+ className: "mie-deck-chrome fixed inset-0 z-[80] flex flex-col bg-neutral-950/95 text-white backdrop-blur-md",
323
+ children: [
324
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-b border-white/10 px-5 py-4", children: [
325
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { id: titleId, className: "text-lg font-bold text-white", children: labels.outline }),
326
+ /* @__PURE__ */ jsxRuntime.jsx(
327
+ "button",
328
+ {
329
+ type: "button",
330
+ onClick: onClose,
331
+ "aria-label": labels.closeOutline,
332
+ className: iconButton,
333
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": "true", className: "size-5" })
334
+ }
335
+ )
336
+ ] }),
337
+ /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex-1 overflow-y-auto px-3 py-3", children: slides.map((s, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
338
+ "button",
339
+ {
340
+ type: "button",
341
+ onClick: () => {
342
+ goTo(i);
343
+ onClose();
344
+ },
345
+ "aria-current": i === active ? "true" : void 0,
346
+ className: chunkS5RVSXDV_cjs.cn(
347
+ "flex w-full items-baseline gap-3 rounded-lg px-4 py-3 text-start transition-colors",
348
+ i === active ? "bg-accent/15" : "hover:bg-white/5"
349
+ ),
350
+ children: [
351
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-accent text-sm font-semibold tabular-nums", children: String(i + 1).padStart(2, "0") }),
352
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: i === active ? "text-white" : "text-white/75", children: slideLabel(s) })
353
+ ]
354
+ }
355
+ ) }, i)) })
356
+ ]
357
+ }
358
+ ),
359
+ document.body
360
+ );
361
+ }
362
+
363
+ // src/components/Deck/tones.ts
364
+ var dark = {
365
+ isLight: false,
366
+ text: "text-white",
367
+ muted: "text-white/70",
368
+ hairline: "border-white/10",
369
+ card: "bg-white/5"
370
+ };
371
+ var TONES = {
372
+ brand: {
373
+ ...dark,
374
+ surface: "bg-gradient-to-br from-primary-900 via-primary-950 to-primary-950"
375
+ },
376
+ deep: {
377
+ ...dark,
378
+ surface: "bg-gradient-to-b from-neutral-900 to-neutral-950"
379
+ },
380
+ ink: { ...dark, surface: "bg-neutral-950" },
381
+ glow: {
382
+ ...dark,
383
+ surface: "bg-gradient-to-br from-primary-950 via-primary-800 to-accent/70"
384
+ },
385
+ light: {
386
+ isLight: true,
387
+ surface: "bg-white",
388
+ text: "text-neutral-900",
389
+ muted: "text-neutral-600",
390
+ hairline: "border-neutral-200",
391
+ card: "bg-neutral-50"
392
+ }
393
+ };
394
+ var onDark = {
395
+ primary: {
396
+ text: "text-primary-300",
397
+ soft: "bg-primary-400/15",
398
+ border: "border-primary-400/30",
399
+ fill: "bg-primary-400",
400
+ svgFill: "fill-primary-400",
401
+ svgStroke: "stroke-primary-400"
402
+ },
403
+ secondary: {
404
+ text: "text-secondary-300",
405
+ soft: "bg-secondary-400/15",
406
+ border: "border-secondary-400/30",
407
+ fill: "bg-secondary-400",
408
+ svgFill: "fill-secondary-400",
409
+ svgStroke: "stroke-secondary-400"
410
+ },
411
+ accent: {
412
+ text: "text-accent",
413
+ soft: "bg-accent/15",
414
+ border: "border-accent/30",
415
+ fill: "bg-accent",
416
+ svgFill: "fill-accent",
417
+ svgStroke: "stroke-accent"
418
+ },
419
+ success: {
420
+ text: "text-success",
421
+ soft: "bg-success/15",
422
+ border: "border-success/30",
423
+ fill: "bg-success",
424
+ svgFill: "fill-success",
425
+ svgStroke: "stroke-success"
426
+ },
427
+ warning: {
428
+ text: "text-warning",
429
+ soft: "bg-warning/15",
430
+ border: "border-warning/30",
431
+ fill: "bg-warning",
432
+ svgFill: "fill-warning",
433
+ svgStroke: "stroke-warning"
434
+ },
435
+ danger: {
436
+ text: "text-destructive",
437
+ soft: "bg-destructive/15",
438
+ border: "border-destructive/30",
439
+ fill: "bg-destructive",
440
+ svgFill: "fill-destructive",
441
+ svgStroke: "stroke-destructive"
442
+ }
443
+ };
444
+ var lightText = {
445
+ primary: "text-primary-800",
446
+ secondary: "text-secondary-800",
447
+ accent: "text-neutral-900",
448
+ success: "text-neutral-900",
449
+ warning: "text-neutral-900",
450
+ danger: "text-destructive"
451
+ };
452
+ function accent(name = "accent", isLight = false) {
453
+ const spec = onDark[name];
454
+ return isLight ? { ...spec, text: lightText[name] } : spec;
455
+ }
456
+ var toneOf = (slide, fallback) => TONES[slide.tone ?? fallback];
457
+ var ACCENT_CYCLE = [
458
+ "accent",
459
+ "primary",
460
+ "secondary",
461
+ "success",
462
+ "warning"
463
+ ];
464
+
465
+ // src/components/Deck/DeckContext.tsx
466
+ var DeckContext = React9__namespace.createContext(null);
467
+ var DeckProvider = DeckContext.Provider;
468
+ function useDeck() {
469
+ const ctx = React9__namespace.useContext(DeckContext);
470
+ if (!ctx) throw new Error("Slide renderers must be rendered inside <Deck>.");
471
+ return ctx;
472
+ }
473
+ var ToneContext = React9__namespace.createContext(TONES.brand);
474
+ var useTone = () => React9__namespace.useContext(ToneContext);
475
+
476
+ // src/components/Deck/labels.ts
477
+ var defaultDeckLabels = {
478
+ presentation: "slide presentation",
479
+ slide: "slide",
480
+ slideNavigation: "Slide navigation",
481
+ goToSlide: (n, title) => `Go to slide ${n}${title ? `: ${title}` : ""}`,
482
+ outline: "Slides",
483
+ openOutline: "Open slide outline",
484
+ closeOutline: "Close outline",
485
+ print: "Print or save as PDF",
486
+ enterFullscreen: "Enter fullscreen",
487
+ exitFullscreen: "Exit fullscreen",
488
+ previous: "Previous slide",
489
+ next: "Next slide",
490
+ navigateHint: "Navigate",
491
+ fullscreenHint: "Fullscreen",
492
+ helpHint: "Help",
493
+ copy: "Copy link",
494
+ copied: "Copied",
495
+ statusNow: "Now",
496
+ statusNext: "Next",
497
+ statusLater: "Later",
498
+ watchVideo: "Watch the video",
499
+ lines: "Lines",
500
+ bars: "Bars",
501
+ more: (n) => `Show ${n} more`,
502
+ less: "Show less"
503
+ };
504
+ function reveal(i = 0) {
505
+ return {
506
+ className: "mie-deck-reveal",
507
+ style: { "--mie-reveal-i": i }
508
+ };
509
+ }
510
+ function Eyebrow({
511
+ children,
512
+ className
513
+ }) {
514
+ const tone = useTone();
515
+ const r = reveal(0);
516
+ return /* @__PURE__ */ jsxRuntime.jsx(
517
+ "p",
518
+ {
519
+ className: chunkS5RVSXDV_cjs.cn(
520
+ r.className,
521
+ "mb-4 text-xs font-semibold tracking-[0.2em] uppercase",
522
+ accent("accent", tone.isLight).text,
523
+ className
524
+ ),
525
+ style: r.style,
526
+ children
527
+ }
528
+ );
529
+ }
530
+ function SlideTitle({
531
+ children,
532
+ className,
533
+ size = "md"
534
+ }) {
535
+ const tone = useTone();
536
+ const r = reveal(1);
537
+ return /* @__PURE__ */ jsxRuntime.jsx(
538
+ "h2",
539
+ {
540
+ className: chunkS5RVSXDV_cjs.cn(
541
+ r.className,
542
+ "font-bold tracking-tight text-balance",
543
+ tone.text,
544
+ size === "xl" ? "text-5xl sm:text-6xl lg:text-7xl" : size === "lg" ? "text-4xl sm:text-5xl lg:text-6xl" : "text-3xl sm:text-4xl lg:text-5xl",
545
+ className
546
+ ),
547
+ style: r.style,
548
+ children
549
+ }
550
+ );
551
+ }
552
+ function Subtitle({
553
+ children,
554
+ className
555
+ }) {
556
+ const tone = useTone();
557
+ const r = reveal(2);
558
+ return /* @__PURE__ */ jsxRuntime.jsx(
559
+ "p",
560
+ {
561
+ className: chunkS5RVSXDV_cjs.cn(
562
+ r.className,
563
+ "mt-4 max-w-2xl text-base leading-relaxed text-pretty sm:text-lg",
564
+ tone.muted,
565
+ className
566
+ ),
567
+ style: r.style,
568
+ children
569
+ }
570
+ );
571
+ }
572
+ function SlideHeader({
573
+ eyebrow,
574
+ title,
575
+ subtitle,
576
+ center
577
+ }) {
578
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(center && "mx-auto text-center"), children: [
579
+ eyebrow && /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: eyebrow }),
580
+ /* @__PURE__ */ jsxRuntime.jsx(SlideTitle, { children: title }),
581
+ subtitle && /* @__PURE__ */ jsxRuntime.jsx(Subtitle, { className: chunkS5RVSXDV_cjs.cn(center && "mx-auto"), children: subtitle })
582
+ ] });
583
+ }
584
+ function splitFigure(value) {
585
+ const start = value.search(/\d/);
586
+ if (start === -1) return null;
587
+ let end = start;
588
+ while (end < value.length && /[\d,.]/.test(value[end])) end += 1;
589
+ return [value.slice(0, start), value.slice(start, end), value.slice(end)];
590
+ }
591
+ function CountUp({
592
+ value,
593
+ duration = 1400
594
+ }) {
595
+ const ref = React9__namespace.useRef(null);
596
+ const match = splitFigure(value);
597
+ React9__namespace.useEffect(() => {
598
+ const el = ref.current;
599
+ if (!el || !match) return;
600
+ if (window.matchMedia?.("(prefers-reduced-motion: reduce)").matches) return;
601
+ const [prefix, digits, suffix] = match;
602
+ const target = parseFloat(digits.replace(/,/g, ""));
603
+ if (Number.isNaN(target)) return;
604
+ const decimals = digits.split(".")[1]?.length ?? 0;
605
+ const grouped = digits.includes(",");
606
+ const render = (n) => {
607
+ let out = n.toFixed(decimals);
608
+ if (grouped) {
609
+ const [whole, frac] = out.split(".");
610
+ out = whole.replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (frac ? `.${frac}` : "");
611
+ }
612
+ el.textContent = `${prefix}${out}${suffix}`;
613
+ };
614
+ render(0);
615
+ let frame = 0;
616
+ const observer = new IntersectionObserver(
617
+ ([entry]) => {
618
+ if (!entry.isIntersecting) return;
619
+ observer.disconnect();
620
+ const start = performance.now();
621
+ const tick = (now) => {
622
+ const t = Math.min(1, (now - start) / duration);
623
+ render(target * (1 - Math.pow(1 - t, 3)));
624
+ if (t < 1) frame = requestAnimationFrame(tick);
625
+ else el.textContent = value;
626
+ };
627
+ frame = requestAnimationFrame(tick);
628
+ },
629
+ { threshold: 0.1 }
630
+ );
631
+ observer.observe(el);
632
+ return () => {
633
+ observer.disconnect();
634
+ cancelAnimationFrame(frame);
635
+ el.textContent = value;
636
+ };
637
+ }, [value, duration]);
638
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { ref, className: "tabular-nums", children: value });
639
+ }
640
+ function DeckIcon({
641
+ name,
642
+ className
643
+ }) {
644
+ const { icons } = useDeck();
645
+ if (!name) return null;
646
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXI74P5F2_cjs.TemplateIcon, { name, icons, className });
647
+ }
648
+ function IconChip({
649
+ icon,
650
+ accent: accent2 = "accent"
651
+ }) {
652
+ const tone = useTone();
653
+ if (!icon) return null;
654
+ const a = accent(accent2, tone.isLight);
655
+ return /* @__PURE__ */ jsxRuntime.jsx(
656
+ "span",
657
+ {
658
+ className: chunkS5RVSXDV_cjs.cn(
659
+ "inline-flex size-11 items-center justify-center rounded-xl border",
660
+ a.soft,
661
+ a.border,
662
+ a.text
663
+ ),
664
+ children: /* @__PURE__ */ jsxRuntime.jsx(DeckIcon, { name: icon })
665
+ }
666
+ );
667
+ }
668
+ function Bullet({
669
+ item,
670
+ depth = 0
671
+ }) {
672
+ const tone = useTone();
673
+ const a = accent("accent", tone.isLight);
674
+ const b = typeof item === "string" ? { text: item } : item;
675
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: chunkS5RVSXDV_cjs.cn("flex flex-col", depth > 0 && "ms-5 sm:ms-7"), children: [
676
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
677
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: chunkS5RVSXDV_cjs.cn("mt-2 flex-none", a.text), children: b.icon ? /* @__PURE__ */ jsxRuntime.jsx(DeckIcon, { name: b.icon, className: "size-[1.1em]" }) : /* @__PURE__ */ jsxRuntime.jsx(
678
+ "span",
679
+ {
680
+ className: chunkS5RVSXDV_cjs.cn(
681
+ "block rounded-full",
682
+ depth === 0 ? chunkS5RVSXDV_cjs.cn("size-1.5", a.fill) : "size-1 bg-current opacity-60"
683
+ )
684
+ }
685
+ ) }),
686
+ /* @__PURE__ */ jsxRuntime.jsxs(
687
+ "span",
688
+ {
689
+ className: chunkS5RVSXDV_cjs.cn(
690
+ "leading-snug",
691
+ depth === 0 ? chunkS5RVSXDV_cjs.cn("text-lg sm:text-xl", tone.text) : chunkS5RVSXDV_cjs.cn("text-base", tone.muted)
692
+ ),
693
+ children: [
694
+ b.lead && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkS5RVSXDV_cjs.cn("font-semibold", a.text), children: [
695
+ b.lead,
696
+ " "
697
+ ] }),
698
+ b.text
699
+ ]
700
+ }
701
+ )
702
+ ] }),
703
+ b.children && b.children.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-2 flex flex-col gap-2", children: b.children.map((child, i) => /* @__PURE__ */ jsxRuntime.jsx(Bullet, { item: child, depth: depth + 1 }, i)) })
704
+ ] });
705
+ }
706
+ function SourceLink({
707
+ source,
708
+ className
709
+ }) {
710
+ const tone = useTone();
711
+ const href = chunkXI74P5F2_cjs.safeHref(source.url);
712
+ if (!href)
713
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-xs", tone.muted, className), children: source.label });
714
+ return /* @__PURE__ */ jsxRuntime.jsxs(
715
+ "a",
716
+ {
717
+ href,
718
+ target: "_blank",
719
+ rel: "noopener noreferrer",
720
+ className: chunkS5RVSXDV_cjs.cn(
721
+ "inline-flex items-center gap-1 text-xs underline underline-offset-2 hover:opacity-100",
722
+ tone.muted,
723
+ className
724
+ ),
725
+ children: [
726
+ source.label,
727
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { "aria-hidden": "true", className: "size-3" })
728
+ ]
729
+ }
730
+ );
731
+ }
732
+ function HighlightFigure({
733
+ value,
734
+ label,
735
+ size = "md"
736
+ }) {
737
+ const tone = useTone();
738
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
739
+ /* @__PURE__ */ jsxRuntime.jsx(
740
+ "div",
741
+ {
742
+ className: chunkS5RVSXDV_cjs.cn(
743
+ "font-bold",
744
+ accent("accent", tone.isLight).text,
745
+ size === "lg" ? "text-4xl sm:text-5xl" : "text-3xl sm:text-4xl"
746
+ ),
747
+ children: /* @__PURE__ */ jsxRuntime.jsx(CountUp, { value })
748
+ }
749
+ ),
750
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-xs tracking-wider uppercase", tone.muted), children: label })
751
+ ] });
752
+ }
753
+ function Card({
754
+ children,
755
+ className,
756
+ i
757
+ }) {
758
+ const tone = useTone();
759
+ const r = reveal(i ?? 3);
760
+ return /* @__PURE__ */ jsxRuntime.jsx(
761
+ "div",
762
+ {
763
+ className: chunkS5RVSXDV_cjs.cn(
764
+ r.className,
765
+ "rounded-2xl border p-6",
766
+ tone.card,
767
+ tone.hairline,
768
+ className
769
+ ),
770
+ style: r.style,
771
+ children
772
+ }
773
+ );
774
+ }
775
+ function ChartTable({
776
+ caption,
777
+ headers,
778
+ rows
779
+ }) {
780
+ return /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "sr-only", children: [
781
+ /* @__PURE__ */ jsxRuntime.jsx("caption", { children: caption }),
782
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: headers.map(
783
+ (h, i) => h ? /* @__PURE__ */ jsxRuntime.jsx("th", { scope: "col", children: h }, i) : (
784
+ // The row-label corner cell has no caption of its own.
785
+ /* @__PURE__ */ jsxRuntime.jsx("td", {}, i)
786
+ )
787
+ ) }) }),
788
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row, r) => /* @__PURE__ */ jsxRuntime.jsx("tr", { children: row.map(
789
+ (cell, c) => c === 0 ? /* @__PURE__ */ jsxRuntime.jsx("th", { scope: "row", children: cell }, c) : /* @__PURE__ */ jsxRuntime.jsx("td", { children: cell }, c)
790
+ ) }, r)) })
791
+ ] });
792
+ }
793
+ function useFormat() {
794
+ const { locale } = useDeck();
795
+ return React9__namespace.useMemo(
796
+ () => new Intl.NumberFormat(locale, { notation: "compact" }),
797
+ [locale]
798
+ );
799
+ }
800
+ function BarChart({ graphic }) {
801
+ const tone = useTone();
802
+ const format = useFormat();
803
+ const max = Math.max(1, ...graphic.bars.map((b) => b.value));
804
+ const hi = accent("accent", tone.isLight);
805
+ return /* @__PURE__ */ jsxRuntime.jsxs("figure", { "data-slot": "deck-bar-chart", className: "w-full", children: [
806
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: "flex h-56 items-end gap-2 sm:h-64", children: graphic.bars.map((bar, i) => /* @__PURE__ */ jsxRuntime.jsxs(React9__namespace.Fragment, { children: [
807
+ graphic.marker?.atIndex === i && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-full w-px flex-none border-s border-dashed border-current opacity-40", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute start-1/2 -top-6 -translate-x-1/2 text-[0.65rem] font-semibold tracking-wide whitespace-nowrap uppercase opacity-100", children: graphic.marker.label }) }),
808
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-w-0 flex-1 flex-col items-center gap-1", children: [
809
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full flex-1 pt-5", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
810
+ "div",
811
+ {
812
+ className: chunkS5RVSXDV_cjs.cn(
813
+ "mie-deck-grow absolute inset-x-0 bottom-0 rounded-t-md",
814
+ bar.highlight ? hi.fill : tone.isLight ? "bg-neutral-300" : "bg-white/25"
815
+ ),
816
+ style: {
817
+ height: `${bar.value / max * 100}%`,
818
+ "--mie-reveal-i": i
819
+ },
820
+ children: /* @__PURE__ */ jsxRuntime.jsx(
821
+ "span",
822
+ {
823
+ className: chunkS5RVSXDV_cjs.cn(
824
+ "absolute inset-x-0 bottom-full mb-1 text-center text-xs font-semibold tabular-nums",
825
+ tone.muted
826
+ ),
827
+ children: format.format(bar.value)
828
+ }
829
+ )
830
+ }
831
+ ) }) }),
832
+ /* @__PURE__ */ jsxRuntime.jsx(
833
+ "span",
834
+ {
835
+ className: chunkS5RVSXDV_cjs.cn(
836
+ "w-full truncate text-center text-xs",
837
+ tone.muted
838
+ ),
839
+ children: bar.label
840
+ }
841
+ )
842
+ ] })
843
+ ] }, bar.label)) }),
844
+ graphic.yAxisLabel && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-xs", tone.muted), children: graphic.yAxisLabel }),
845
+ /* @__PURE__ */ jsxRuntime.jsx(
846
+ ChartTable,
847
+ {
848
+ caption: graphic.yAxisLabel ?? "Values",
849
+ headers: ["", graphic.yAxisLabel ?? "Value"],
850
+ rows: graphic.bars.map((b) => [b.label, b.value])
851
+ }
852
+ )
853
+ ] });
854
+ }
855
+ function HorizontalBars({ graphic }) {
856
+ const tone = useTone();
857
+ const format = useFormat();
858
+ const max = Math.max(1, ...graphic.bars.map((b) => b.value));
859
+ const a = accent("accent", tone.isLight);
860
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { "data-slot": "deck-horizontal-bars", className: "w-full space-y-3", children: graphic.bars.map((bar, i) => {
861
+ const r = reveal(3 + i);
862
+ return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: r.className, style: r.style, children: [
863
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex justify-between gap-3 text-sm", children: [
864
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: bar.label }),
865
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold tabular-nums", children: bar.display ?? format.format(bar.value) })
866
+ ] }),
867
+ /* @__PURE__ */ jsxRuntime.jsx(
868
+ "div",
869
+ {
870
+ "aria-hidden": "true",
871
+ className: chunkS5RVSXDV_cjs.cn(
872
+ "h-2 overflow-hidden rounded-full",
873
+ tone.isLight ? "bg-neutral-200" : "bg-white/10"
874
+ ),
875
+ children: /* @__PURE__ */ jsxRuntime.jsx(
876
+ "div",
877
+ {
878
+ className: chunkS5RVSXDV_cjs.cn("h-full rounded-full", a.fill),
879
+ style: { width: `${bar.value / max * 100}%` }
880
+ }
881
+ )
882
+ }
883
+ )
884
+ ] }, bar.label);
885
+ }) });
886
+ }
887
+ function KpiRow({ graphic }) {
888
+ const tone = useTone();
889
+ return /* @__PURE__ */ jsxRuntime.jsx(
890
+ "dl",
891
+ {
892
+ "data-slot": "deck-kpi-row",
893
+ className: "grid w-full grid-cols-2 gap-4 sm:grid-cols-4",
894
+ children: graphic.kpis.map((kpi, i) => {
895
+ const Trend = kpi.trend === "up" ? lucideReact.TrendingUp : kpi.trend === "down" ? lucideReact.TrendingDown : lucideReact.Minus;
896
+ const r = reveal(3 + i);
897
+ return /* @__PURE__ */ jsxRuntime.jsxs(
898
+ "div",
899
+ {
900
+ className: chunkS5RVSXDV_cjs.cn(
901
+ r.className,
902
+ "flex flex-col-reverse rounded-xl border p-4",
903
+ tone.card,
904
+ tone.hairline
905
+ ),
906
+ style: r.style,
907
+ children: [
908
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: chunkS5RVSXDV_cjs.cn("text-xs", tone.muted), children: kpi.label }),
909
+ /* @__PURE__ */ jsxRuntime.jsxs("dd", { className: "flex items-center gap-2 text-2xl font-bold tabular-nums", children: [
910
+ kpi.value,
911
+ kpi.trend && /* @__PURE__ */ jsxRuntime.jsx(
912
+ Trend,
913
+ {
914
+ "aria-hidden": "true",
915
+ className: chunkS5RVSXDV_cjs.cn(
916
+ "size-4",
917
+ kpi.trend === "up" ? "text-success" : kpi.trend === "down" ? "text-destructive" : tone.muted
918
+ )
919
+ }
920
+ )
921
+ ] })
922
+ ]
923
+ },
924
+ kpi.label
925
+ );
926
+ })
927
+ }
928
+ );
929
+ }
930
+ function points(values, w, h, y) {
931
+ const step = values.length > 1 ? w / (values.length - 1) : 0;
932
+ return values.map((v, i) => `${(i * step).toFixed(1)},${(h - y(v) * h).toFixed(1)}`).join(" ");
933
+ }
934
+ function Spark({ graphic }) {
935
+ const tone = useTone();
936
+ const a = accent("accent", tone.isLight);
937
+ const max = Math.max(1, ...graphic.values);
938
+ const last = graphic.values[graphic.values.length - 1];
939
+ return /* @__PURE__ */ jsxRuntime.jsxs("figure", { "data-slot": "deck-spark", className: "w-full", children: [
940
+ /* @__PURE__ */ jsxRuntime.jsxs(
941
+ "figcaption",
942
+ {
943
+ className: chunkS5RVSXDV_cjs.cn(
944
+ "flex items-baseline justify-between text-sm",
945
+ tone.muted
946
+ ),
947
+ children: [
948
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: graphic.label }),
949
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkS5RVSXDV_cjs.cn("text-2xl font-bold tabular-nums", a.text), children: [
950
+ last,
951
+ graphic.suffix
952
+ ] })
953
+ ]
954
+ }
955
+ ),
956
+ /* @__PURE__ */ jsxRuntime.jsx(
957
+ "svg",
958
+ {
959
+ "aria-hidden": "true",
960
+ viewBox: "0 0 100 30",
961
+ preserveAspectRatio: "none",
962
+ className: "mt-2 h-12 w-full overflow-visible",
963
+ children: /* @__PURE__ */ jsxRuntime.jsx(
964
+ "polyline",
965
+ {
966
+ points: points(graphic.values, 100, 30, (v) => v / max),
967
+ fill: "none",
968
+ strokeWidth: 2,
969
+ vectorEffect: "non-scaling-stroke",
970
+ className: a.svgStroke
971
+ }
972
+ )
973
+ }
974
+ ),
975
+ /* @__PURE__ */ jsxRuntime.jsx(
976
+ ChartTable,
977
+ {
978
+ caption: graphic.label,
979
+ headers: ["#", graphic.label],
980
+ rows: graphic.values.map((v, i) => [i + 1, v])
981
+ }
982
+ )
983
+ ] });
984
+ }
985
+ function MultiLine({ graphic }) {
986
+ const tone = useTone();
987
+ const { labels } = useDeck();
988
+ const format = useFormat();
989
+ const [view, setView] = React9__namespace.useState("lines");
990
+ const all = graphic.series.flatMap((s) => s.values);
991
+ const log = (graphic.scale ?? "log") === "log";
992
+ const tx = (v) => log ? Math.log10(Math.max(1, v)) : v;
993
+ const lo = Math.min(...all.map(tx));
994
+ const hi = Math.max(...all.map(tx));
995
+ const y = (v) => hi === lo ? 0.5 : (tx(v) - lo) / (hi - lo);
996
+ const colours = graphic.series.map(
997
+ (_, i) => accent(ACCENT_CYCLE[i % ACCENT_CYCLE.length], tone.isLight)
998
+ );
999
+ const toggle = (active) => chunkS5RVSXDV_cjs.cn(
1000
+ "rounded-full px-3 py-1 text-xs font-semibold transition-colors",
1001
+ active ? tone.isLight ? "bg-neutral-900 text-white" : "bg-white text-neutral-900" : chunkS5RVSXDV_cjs.cn(tone.muted, "hover:opacity-100")
1002
+ );
1003
+ return /* @__PURE__ */ jsxRuntime.jsxs("figure", { "data-slot": "deck-multi-line", className: "w-full", children: [
1004
+ /* @__PURE__ */ jsxRuntime.jsxs(
1005
+ "div",
1006
+ {
1007
+ role: "group",
1008
+ "aria-label": graphic.caption,
1009
+ className: "mb-3 flex gap-1",
1010
+ children: [
1011
+ /* @__PURE__ */ jsxRuntime.jsx(
1012
+ "button",
1013
+ {
1014
+ type: "button",
1015
+ "aria-pressed": view === "lines",
1016
+ className: toggle(view === "lines"),
1017
+ onClick: () => setView("lines"),
1018
+ children: labels.lines
1019
+ }
1020
+ ),
1021
+ /* @__PURE__ */ jsxRuntime.jsx(
1022
+ "button",
1023
+ {
1024
+ type: "button",
1025
+ "aria-pressed": view === "bars",
1026
+ className: toggle(view === "bars"),
1027
+ onClick: () => setView("bars"),
1028
+ children: labels.bars
1029
+ }
1030
+ )
1031
+ ]
1032
+ }
1033
+ ),
1034
+ view === "lines" ? /* @__PURE__ */ jsxRuntime.jsx(
1035
+ "svg",
1036
+ {
1037
+ "aria-hidden": "true",
1038
+ viewBox: "0 0 100 50",
1039
+ preserveAspectRatio: "none",
1040
+ className: "h-56 w-full overflow-visible",
1041
+ children: graphic.series.map((s, i) => /* @__PURE__ */ jsxRuntime.jsx(
1042
+ "polyline",
1043
+ {
1044
+ points: points(s.values, 100, 50, y),
1045
+ fill: "none",
1046
+ strokeWidth: 2.5,
1047
+ strokeLinecap: "round",
1048
+ strokeLinejoin: "round",
1049
+ vectorEffect: "non-scaling-stroke",
1050
+ className: colours[i].svgStroke
1051
+ },
1052
+ s.label
1053
+ ))
1054
+ }
1055
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: "grid gap-4 sm:grid-cols-2", children: graphic.series.map((s, i) => {
1056
+ const max = Math.max(1, ...s.values);
1057
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1058
+ /* @__PURE__ */ jsxRuntime.jsx(
1059
+ "p",
1060
+ {
1061
+ className: chunkS5RVSXDV_cjs.cn("mb-1 text-xs font-semibold", colours[i].text),
1062
+ children: s.label
1063
+ }
1064
+ ),
1065
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-20 items-end gap-1", children: s.values.map((v, j) => /* @__PURE__ */ jsxRuntime.jsx(
1066
+ "div",
1067
+ {
1068
+ className: chunkS5RVSXDV_cjs.cn("flex-1 rounded-t-sm", colours[i].fill),
1069
+ style: { height: `${v / max * 100}%` }
1070
+ },
1071
+ j
1072
+ )) })
1073
+ ] }, s.label);
1074
+ }) }),
1075
+ /* @__PURE__ */ jsxRuntime.jsx(
1076
+ "div",
1077
+ {
1078
+ "aria-hidden": "true",
1079
+ className: chunkS5RVSXDV_cjs.cn("mt-2 flex justify-between text-xs", tone.muted),
1080
+ children: graphic.xLabels.map((l) => /* @__PURE__ */ jsxRuntime.jsx("span", { children: l }, l))
1081
+ }
1082
+ ),
1083
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-4 flex flex-wrap gap-x-6 gap-y-2 text-sm", children: graphic.series.map((s, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2", children: [
1084
+ /* @__PURE__ */ jsxRuntime.jsx(
1085
+ "span",
1086
+ {
1087
+ "aria-hidden": "true",
1088
+ className: chunkS5RVSXDV_cjs.cn("size-2.5 rounded-full", colours[i].fill)
1089
+ }
1090
+ ),
1091
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: s.label }),
1092
+ s.summary && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tone.muted, children: s.summary })
1093
+ ] }, s.label)) }),
1094
+ graphic.caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-xs", tone.muted), children: graphic.caption }),
1095
+ /* @__PURE__ */ jsxRuntime.jsx(
1096
+ ChartTable,
1097
+ {
1098
+ caption: graphic.caption ?? graphic.series.map((s) => s.label).join(", "),
1099
+ headers: ["", ...graphic.series.map((s) => s.label)],
1100
+ rows: graphic.xLabels.map((x, i) => [
1101
+ x,
1102
+ ...graphic.series.map((s) => format.format(s.values[i] ?? 0))
1103
+ ])
1104
+ }
1105
+ )
1106
+ ] });
1107
+ }
1108
+ function Graphic({ graphic }) {
1109
+ const { graphics } = useDeck();
1110
+ switch (graphic.type) {
1111
+ case "bar":
1112
+ return /* @__PURE__ */ jsxRuntime.jsx(BarChart, { graphic });
1113
+ case "horizontal-bar":
1114
+ return /* @__PURE__ */ jsxRuntime.jsx(HorizontalBars, { graphic });
1115
+ case "multi-line":
1116
+ return /* @__PURE__ */ jsxRuntime.jsx(MultiLine, { graphic });
1117
+ case "kpi-row":
1118
+ return /* @__PURE__ */ jsxRuntime.jsx(KpiRow, { graphic });
1119
+ case "spark":
1120
+ return /* @__PURE__ */ jsxRuntime.jsx(Spark, { graphic });
1121
+ case "custom": {
1122
+ const Custom = graphics?.[graphic.component];
1123
+ return Custom ? /* @__PURE__ */ jsxRuntime.jsx(Custom, { ...graphic.props }) : null;
1124
+ }
1125
+ }
1126
+ }
1127
+ var slideAnchor = (slide, index) => slide.id ?? `slide-${index}`;
1128
+ var widthClass = {
1129
+ sm: "max-w-3xl",
1130
+ md: "max-w-4xl",
1131
+ lg: "max-w-5xl",
1132
+ xl: "max-w-6xl"
1133
+ };
1134
+ function SlideFrame({
1135
+ slide,
1136
+ index,
1137
+ tone: fallback,
1138
+ children,
1139
+ width = "xl",
1140
+ className
1141
+ }) {
1142
+ const { labels } = useDeck();
1143
+ const toneName = slide.tone ?? fallback;
1144
+ const tone = TONES[toneName];
1145
+ const title = "title" in slide ? slide.title : void 0;
1146
+ return /* @__PURE__ */ jsxRuntime.jsx(ToneContext.Provider, { value: tone, children: /* @__PURE__ */ jsxRuntime.jsxs(
1147
+ "section",
1148
+ {
1149
+ id: slideAnchor(slide, index),
1150
+ "data-slot": "deck-slide",
1151
+ "data-index": index,
1152
+ "data-tone": toneName,
1153
+ role: "group",
1154
+ "aria-roledescription": labels.slide,
1155
+ "aria-label": slide.navLabel ?? title ?? `${index + 1}`,
1156
+ className: chunkS5RVSXDV_cjs.cn(
1157
+ "mie-deck-slide relative isolate flex min-h-dvh w-full snap-start snap-always flex-col items-center justify-center overflow-hidden px-5 py-12 sm:px-8 sm:py-14 md:px-12 lg:px-20",
1158
+ tone.surface,
1159
+ tone.text,
1160
+ className
1161
+ ),
1162
+ children: [
1163
+ !tone.isLight && /* @__PURE__ */ jsxRuntime.jsxs(
1164
+ "div",
1165
+ {
1166
+ "aria-hidden": "true",
1167
+ className: "pointer-events-none absolute inset-0 -z-10 overflow-hidden print:hidden",
1168
+ children: [
1169
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-accent/15 absolute -end-24 -top-24 size-[28rem] rounded-full blur-3xl" }),
1170
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-primary-500/15 absolute -start-24 -bottom-32 size-[32rem] rounded-full blur-3xl" })
1171
+ ]
1172
+ }
1173
+ ),
1174
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("relative w-full", widthClass[width]), children })
1175
+ ]
1176
+ }
1177
+ ) });
1178
+ }
1179
+ var gridCols = (n) => n >= 4 ? "sm:grid-cols-2 lg:grid-cols-4" : n === 3 ? "md:grid-cols-3" : "md:grid-cols-2";
1180
+ function MetricsBody({ slide }) {
1181
+ const tone = useTone();
1182
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1183
+ /* @__PURE__ */ jsxRuntime.jsx(
1184
+ SlideHeader,
1185
+ {
1186
+ eyebrow: slide.eyebrow,
1187
+ title: slide.title,
1188
+ subtitle: slide.subtitle
1189
+ }
1190
+ ),
1191
+ /* @__PURE__ */ jsxRuntime.jsx(
1192
+ "div",
1193
+ {
1194
+ className: chunkS5RVSXDV_cjs.cn(
1195
+ "mt-10 grid grid-cols-1 gap-5",
1196
+ gridCols(slide.metrics.length)
1197
+ ),
1198
+ children: slide.metrics.map((m, i) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { i: 3 + i, children: [
1199
+ m.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(IconChip, { icon: m.icon, accent: m.accent }) }),
1200
+ /* @__PURE__ */ jsxRuntime.jsx(
1201
+ "div",
1202
+ {
1203
+ className: chunkS5RVSXDV_cjs.cn(
1204
+ "text-4xl font-bold",
1205
+ accent(m.accent, tone.isLight).text
1206
+ ),
1207
+ children: /* @__PURE__ */ jsxRuntime.jsx(CountUp, { value: m.value })
1208
+ }
1209
+ ),
1210
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2 text-sm font-semibold", children: m.label }),
1211
+ m.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm leading-snug", tone.muted), children: m.description })
1212
+ ] }, m.label))
1213
+ }
1214
+ )
1215
+ ] });
1216
+ }
1217
+ function MetricsRenderer({
1218
+ slide,
1219
+ index
1220
+ }) {
1221
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "brand", children: /* @__PURE__ */ jsxRuntime.jsx(MetricsBody, { slide }) });
1222
+ }
1223
+ function ChartBody({ slide }) {
1224
+ const tone = useTone();
1225
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1226
+ /* @__PURE__ */ jsxRuntime.jsx(
1227
+ SlideHeader,
1228
+ {
1229
+ eyebrow: slide.eyebrow,
1230
+ title: slide.title,
1231
+ subtitle: slide.subtitle
1232
+ }
1233
+ ),
1234
+ /* @__PURE__ */ jsxRuntime.jsx("div", { ...reveal(3), className: "mie-deck-reveal mt-10", children: /* @__PURE__ */ jsxRuntime.jsx(Graphic, { graphic: slide.graphic }) }),
1235
+ slide.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-6 max-w-3xl text-sm", tone.muted), children: slide.description }),
1236
+ slide.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: slide.source, className: "mt-4" })
1237
+ ] });
1238
+ }
1239
+ function ChartRenderer({
1240
+ slide,
1241
+ index
1242
+ }) {
1243
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "deep", children: /* @__PURE__ */ jsxRuntime.jsx(ChartBody, { slide }) });
1244
+ }
1245
+ function FeatureHighlightBody({
1246
+ slide
1247
+ }) {
1248
+ const tone = useTone();
1249
+ const a = accent("accent", tone.isLight);
1250
+ const hasGraphic = !!slide.graphic;
1251
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1252
+ "div",
1253
+ {
1254
+ className: chunkS5RVSXDV_cjs.cn(hasGraphic && "grid items-center gap-10 lg:grid-cols-2"),
1255
+ children: [
1256
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1257
+ /* @__PURE__ */ jsxRuntime.jsx(SlideHeader, { eyebrow: slide.eyebrow, title: slide.title }),
1258
+ /* @__PURE__ */ jsxRuntime.jsx(
1259
+ "p",
1260
+ {
1261
+ ...reveal(2),
1262
+ className: chunkS5RVSXDV_cjs.cn(
1263
+ "mie-deck-reveal mt-4 text-lg leading-relaxed",
1264
+ tone.muted
1265
+ ),
1266
+ children: slide.body
1267
+ }
1268
+ ),
1269
+ slide.stat && /* @__PURE__ */ jsxRuntime.jsxs("div", { ...reveal(3), className: "mie-deck-reveal mt-8", children: [
1270
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("text-5xl font-bold", a.text), children: /* @__PURE__ */ jsxRuntime.jsx(CountUp, { value: slide.stat.value }) }),
1271
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm", tone.muted), children: slide.stat.label })
1272
+ ] }),
1273
+ slide.bullets && slide.bullets.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { ...reveal(4), className: "mie-deck-reveal mt-6 space-y-2", children: slide.bullets.map((b) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-3", children: [
1274
+ /* @__PURE__ */ jsxRuntime.jsx(
1275
+ "span",
1276
+ {
1277
+ "aria-hidden": "true",
1278
+ className: chunkS5RVSXDV_cjs.cn("mt-2 size-1.5 flex-none rounded-full", a.fill)
1279
+ }
1280
+ ),
1281
+ b
1282
+ ] }, b)) }),
1283
+ slide.pullQuote && /* @__PURE__ */ jsxRuntime.jsx(
1284
+ "blockquote",
1285
+ {
1286
+ ...reveal(5),
1287
+ className: chunkS5RVSXDV_cjs.cn(
1288
+ "mie-deck-reveal mt-8 border-s-2 ps-4 italic",
1289
+ a.border,
1290
+ tone.muted
1291
+ ),
1292
+ children: slide.pullQuote
1293
+ }
1294
+ )
1295
+ ] }),
1296
+ hasGraphic && /* @__PURE__ */ jsxRuntime.jsxs("div", { ...reveal(3), className: "mie-deck-reveal flex flex-col gap-8", children: [
1297
+ /* @__PURE__ */ jsxRuntime.jsx(Graphic, { graphic: slide.graphic }),
1298
+ slide.secondaryGraphic && /* @__PURE__ */ jsxRuntime.jsx(Graphic, { graphic: slide.secondaryGraphic })
1299
+ ] })
1300
+ ]
1301
+ }
1302
+ );
1303
+ }
1304
+ function FeatureHighlightRenderer({
1305
+ slide,
1306
+ index
1307
+ }) {
1308
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "deep", children: /* @__PURE__ */ jsxRuntime.jsx(FeatureHighlightBody, { slide }) });
1309
+ }
1310
+ function DeckTable({
1311
+ headers,
1312
+ rows
1313
+ }) {
1314
+ const tone = useTone();
1315
+ return /* @__PURE__ */ jsxRuntime.jsx(
1316
+ "div",
1317
+ {
1318
+ ...reveal(3),
1319
+ className: chunkS5RVSXDV_cjs.cn(
1320
+ "mie-deck-reveal mt-10 overflow-x-auto rounded-2xl border",
1321
+ tone.hairline,
1322
+ tone.card
1323
+ ),
1324
+ children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "min-w-full text-start text-sm sm:text-base", children: [
1325
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: chunkS5RVSXDV_cjs.cn("border-b", tone.hairline), children: headers.map((h, i) => /* @__PURE__ */ jsxRuntime.jsx(
1326
+ "th",
1327
+ {
1328
+ scope: "col",
1329
+ className: chunkS5RVSXDV_cjs.cn(
1330
+ "px-5 py-3 font-semibold",
1331
+ i === 0 ? "text-start" : "text-end",
1332
+ tone.muted
1333
+ ),
1334
+ children: h
1335
+ },
1336
+ h
1337
+ )) }) }),
1338
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row, r) => /* @__PURE__ */ jsxRuntime.jsx("tr", { className: chunkS5RVSXDV_cjs.cn(r > 0 && "border-t", tone.hairline), children: row.map(
1339
+ (cell, c) => c === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
1340
+ "th",
1341
+ {
1342
+ scope: "row",
1343
+ className: "px-5 py-3 text-start font-medium",
1344
+ children: cell
1345
+ },
1346
+ c
1347
+ ) : /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-5 py-3 text-end tabular-nums", children: cell }, c)
1348
+ ) }, r)) })
1349
+ ] })
1350
+ }
1351
+ );
1352
+ }
1353
+ function ComparisonTableRenderer({
1354
+ slide,
1355
+ index
1356
+ }) {
1357
+ const a = accent("accent", (slide.tone ?? "deep") === "light");
1358
+ const [metric, before, after, change] = slide.headers ?? [
1359
+ "Metric",
1360
+ "Before",
1361
+ "After",
1362
+ "Change"
1363
+ ];
1364
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "deep", width: "lg", children: [
1365
+ /* @__PURE__ */ jsxRuntime.jsx(
1366
+ SlideHeader,
1367
+ {
1368
+ eyebrow: slide.eyebrow,
1369
+ title: slide.title,
1370
+ subtitle: slide.subtitle
1371
+ }
1372
+ ),
1373
+ /* @__PURE__ */ jsxRuntime.jsx(
1374
+ DeckTable,
1375
+ {
1376
+ headers: [metric, before, after, change],
1377
+ rows: slide.rows.map((r) => [
1378
+ r.label,
1379
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "opacity-70", children: r.before }, "b"),
1380
+ r.after,
1381
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("font-semibold", a.text), children: r.change }, "c")
1382
+ ])
1383
+ }
1384
+ )
1385
+ ] });
1386
+ }
1387
+ function ImpactTableRenderer({
1388
+ slide,
1389
+ index
1390
+ }) {
1391
+ const [item, impact] = slide.headers ?? ["Investment", "Impact"];
1392
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "deep", width: "lg", children: [
1393
+ /* @__PURE__ */ jsxRuntime.jsx(
1394
+ SlideHeader,
1395
+ {
1396
+ eyebrow: slide.eyebrow,
1397
+ title: slide.title,
1398
+ subtitle: slide.subtitle
1399
+ }
1400
+ ),
1401
+ /* @__PURE__ */ jsxRuntime.jsx(
1402
+ DeckTable,
1403
+ {
1404
+ headers: [item, impact],
1405
+ rows: slide.rows.map((r) => [
1406
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
1407
+ r.item,
1408
+ r.detail && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-sm font-normal opacity-70", children: r.detail })
1409
+ ] }, "i"),
1410
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-start sm:text-end", children: r.impact }, "m")
1411
+ ])
1412
+ }
1413
+ )
1414
+ ] });
1415
+ }
1416
+ function CardsBody({ slide }) {
1417
+ const tone = useTone();
1418
+ const a = accent("accent", tone.isLight);
1419
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1420
+ /* @__PURE__ */ jsxRuntime.jsx(
1421
+ SlideHeader,
1422
+ {
1423
+ eyebrow: slide.eyebrow,
1424
+ title: slide.title,
1425
+ subtitle: slide.subtitle
1426
+ }
1427
+ ),
1428
+ /* @__PURE__ */ jsxRuntime.jsx(
1429
+ "div",
1430
+ {
1431
+ className: chunkS5RVSXDV_cjs.cn(
1432
+ "mt-10 grid grid-cols-1 gap-5",
1433
+ gridCols(slide.cards.length)
1434
+ ),
1435
+ children: slide.cards.map((card, i) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { i: 3 + i, children: [
1436
+ card.icon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(IconChip, { icon: card.icon }) }),
1437
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold", children: card.title }),
1438
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 leading-relaxed", tone.muted), children: card.body }),
1439
+ card.stat && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6", children: [
1440
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("text-3xl font-bold", a.text), children: /* @__PURE__ */ jsxRuntime.jsx(CountUp, { value: card.stat }) }),
1441
+ card.statLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("text-sm", tone.muted), children: card.statLabel })
1442
+ ] })
1443
+ ] }, card.title))
1444
+ }
1445
+ ),
1446
+ slide.note && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-8 text-sm italic", tone.muted), children: slide.note })
1447
+ ] });
1448
+ }
1449
+ function CardsRenderer({
1450
+ slide,
1451
+ index
1452
+ }) {
1453
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "brand", children: /* @__PURE__ */ jsxRuntime.jsx(CardsBody, { slide }) });
1454
+ }
1455
+ function RankedListBody({ slide }) {
1456
+ const tone = useTone();
1457
+ const { locale } = useDeck();
1458
+ const a = accent("accent", tone.isLight);
1459
+ const format = new Intl.NumberFormat(locale);
1460
+ const max = Math.max(1, ...slide.entries.map((e) => e.value));
1461
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1462
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [
1463
+ /* @__PURE__ */ jsxRuntime.jsx(
1464
+ SlideHeader,
1465
+ {
1466
+ eyebrow: slide.eyebrow,
1467
+ title: slide.title,
1468
+ subtitle: slide.subtitle
1469
+ }
1470
+ ),
1471
+ slide.outOf && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("text-sm", tone.muted), children: slide.outOf })
1472
+ ] }),
1473
+ /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "mt-8 flex flex-col gap-2", children: slide.entries.map((e, i) => {
1474
+ const r = reveal(3 + i);
1475
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1476
+ "li",
1477
+ {
1478
+ className: chunkS5RVSXDV_cjs.cn(
1479
+ r.className,
1480
+ "grid grid-cols-[2rem_minmax(0,1fr)_auto] items-center gap-4 rounded-xl border px-4 py-3",
1481
+ e.highlighted ? chunkS5RVSXDV_cjs.cn(a.soft, a.border) : chunkS5RVSXDV_cjs.cn(tone.card, tone.hairline)
1482
+ ),
1483
+ style: r.style,
1484
+ children: [
1485
+ /* @__PURE__ */ jsxRuntime.jsx(
1486
+ "span",
1487
+ {
1488
+ className: chunkS5RVSXDV_cjs.cn(
1489
+ "text-sm font-bold tabular-nums",
1490
+ e.highlighted ? a.text : tone.muted
1491
+ ),
1492
+ children: i + 1
1493
+ }
1494
+ ),
1495
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0", children: [
1496
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate font-medium", children: e.label }),
1497
+ e.sublabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("block truncate text-xs", tone.muted), children: e.sublabel }),
1498
+ /* @__PURE__ */ jsxRuntime.jsx(
1499
+ "span",
1500
+ {
1501
+ "aria-hidden": "true",
1502
+ className: chunkS5RVSXDV_cjs.cn(
1503
+ "mt-2 block h-1.5 overflow-hidden rounded-full",
1504
+ tone.isLight ? "bg-neutral-200" : "bg-white/10"
1505
+ ),
1506
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1507
+ "span",
1508
+ {
1509
+ className: chunkS5RVSXDV_cjs.cn(
1510
+ "block h-full rounded-full",
1511
+ e.highlighted ? a.fill : tone.isLight ? "bg-neutral-400" : "bg-white/40"
1512
+ ),
1513
+ style: { width: `${e.value / max * 100}%` }
1514
+ }
1515
+ )
1516
+ }
1517
+ )
1518
+ ] }),
1519
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-end", children: [
1520
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-semibold tabular-nums", children: e.display ?? format.format(e.value) }),
1521
+ e.secondary && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("block text-xs", tone.muted), children: e.secondary }),
1522
+ e.change != null && e.change !== 0 && /* @__PURE__ */ jsxRuntime.jsxs(
1523
+ "span",
1524
+ {
1525
+ className: chunkS5RVSXDV_cjs.cn(
1526
+ "inline-flex items-center text-xs font-semibold",
1527
+ e.change > 0 ? "text-success" : "text-destructive"
1528
+ ),
1529
+ children: [
1530
+ e.change > 0 ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { "aria-hidden": "true", className: "size-3" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDown, { "aria-hidden": "true", className: "size-3" }),
1531
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: e.change > 0 ? "+" : "\u2212" }),
1532
+ Math.abs(e.change)
1533
+ ]
1534
+ }
1535
+ )
1536
+ ] })
1537
+ ]
1538
+ },
1539
+ e.label
1540
+ );
1541
+ }) }),
1542
+ slide.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: slide.source, className: "mt-4" })
1543
+ ] });
1544
+ }
1545
+ function RankedListRenderer({
1546
+ slide,
1547
+ index
1548
+ }) {
1549
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "deep", width: "lg", children: /* @__PURE__ */ jsxRuntime.jsx(RankedListBody, { slide }) });
1550
+ }
1551
+ function BreakdownRenderer({
1552
+ slide,
1553
+ index
1554
+ }) {
1555
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "deep", children: /* @__PURE__ */ jsxRuntime.jsx(BreakdownBody, { slide }) });
1556
+ }
1557
+ function BreakdownBody({ slide }) {
1558
+ const tone = useTone();
1559
+ const a = accent("accent", tone.isLight);
1560
+ const total = slide.breakdown?.reduce((s, b) => s + b.count, 0) || 1;
1561
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-2", children: [
1562
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1563
+ /* @__PURE__ */ jsxRuntime.jsx(SlideHeader, { eyebrow: slide.eyebrow, title: slide.title }),
1564
+ slide.body && /* @__PURE__ */ jsxRuntime.jsx(
1565
+ "p",
1566
+ {
1567
+ ...reveal(2),
1568
+ className: chunkS5RVSXDV_cjs.cn(
1569
+ "mie-deck-reveal mt-4 text-lg leading-relaxed",
1570
+ tone.muted
1571
+ ),
1572
+ children: slide.body
1573
+ }
1574
+ ),
1575
+ slide.callout && /* @__PURE__ */ jsxRuntime.jsxs(
1576
+ "div",
1577
+ {
1578
+ ...reveal(3),
1579
+ className: chunkS5RVSXDV_cjs.cn(
1580
+ "mie-deck-reveal mt-8 inline-flex items-baseline gap-3 rounded-2xl border px-5 py-3",
1581
+ a.soft,
1582
+ a.border
1583
+ ),
1584
+ children: [
1585
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-4xl font-bold", a.text), children: /* @__PURE__ */ jsxRuntime.jsx(CountUp, { value: slide.callout.value }) }),
1586
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: slide.callout.label })
1587
+ ]
1588
+ }
1589
+ ),
1590
+ slide.talkingPoint && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkS5RVSXDV_cjs.cn("mt-6 text-sm italic", tone.muted), children: [
1591
+ "\u201C",
1592
+ slide.talkingPoint,
1593
+ "\u201D"
1594
+ ] }),
1595
+ slide.pullQuote && /* @__PURE__ */ jsxRuntime.jsx(
1596
+ "blockquote",
1597
+ {
1598
+ className: chunkS5RVSXDV_cjs.cn(
1599
+ "mt-6 border-s-2 ps-4 text-lg font-semibold",
1600
+ a.border
1601
+ ),
1602
+ children: slide.pullQuote
1603
+ }
1604
+ )
1605
+ ] }),
1606
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { ...reveal(3), className: "mie-deck-reveal flex flex-col gap-8", children: [
1607
+ slide.series && /* @__PURE__ */ jsxRuntime.jsx(Graphic, { graphic: slide.series }),
1608
+ slide.breakdown && slide.breakdown.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2", children: slide.breakdown.map((b) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-3 text-sm", children: [
1609
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-36 flex-none truncate", children: b.label }),
1610
+ /* @__PURE__ */ jsxRuntime.jsx(
1611
+ "span",
1612
+ {
1613
+ "aria-hidden": "true",
1614
+ className: chunkS5RVSXDV_cjs.cn(
1615
+ "h-2 flex-1 overflow-hidden rounded-full",
1616
+ tone.isLight ? "bg-neutral-200" : "bg-white/10"
1617
+ ),
1618
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1619
+ "span",
1620
+ {
1621
+ className: chunkS5RVSXDV_cjs.cn("block h-full rounded-full", a.fill),
1622
+ style: { width: `${b.count / total * 100}%` }
1623
+ }
1624
+ )
1625
+ }
1626
+ ),
1627
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-10 flex-none text-end font-semibold tabular-nums", children: b.count })
1628
+ ] }, b.label)) }),
1629
+ slide.entries && slide.entries.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1630
+ "ul",
1631
+ {
1632
+ className: chunkS5RVSXDV_cjs.cn(
1633
+ "max-h-64 divide-y overflow-y-auto rounded-xl border",
1634
+ tone.hairline,
1635
+ tone.card
1636
+ ),
1637
+ children: slide.entries.map((e) => /* @__PURE__ */ jsxRuntime.jsxs(
1638
+ "li",
1639
+ {
1640
+ className: chunkS5RVSXDV_cjs.cn(
1641
+ "flex items-center justify-between gap-3 px-4 py-2 text-sm",
1642
+ tone.hairline
1643
+ ),
1644
+ children: [
1645
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0", children: [
1646
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate font-medium", children: e.title }),
1647
+ e.meta && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("block truncate text-xs", tone.muted), children: e.meta })
1648
+ ] }),
1649
+ e.date && /* @__PURE__ */ jsxRuntime.jsx(
1650
+ "span",
1651
+ {
1652
+ className: chunkS5RVSXDV_cjs.cn("flex-none text-xs tabular-nums", tone.muted),
1653
+ children: e.date
1654
+ }
1655
+ )
1656
+ ]
1657
+ },
1658
+ `${e.title}-${e.date ?? ""}`
1659
+ ))
1660
+ }
1661
+ )
1662
+ ] })
1663
+ ] });
1664
+ }
1665
+ function TabsRenderer({ slide, index }) {
1666
+ const [active, setActive] = React9__namespace.useState(0);
1667
+ const baseId = React9__namespace.useId();
1668
+ const tabs = React9__namespace.useRef([]);
1669
+ const current = slide.tabs[active]?.slide;
1670
+ const onKey = (e) => {
1671
+ const n = slide.tabs.length;
1672
+ let key = e.key;
1673
+ if (chunkZ3WMDVMR_cjs.isRtl(e.currentTarget)) {
1674
+ if (key === "ArrowRight") key = "ArrowLeft";
1675
+ else if (key === "ArrowLeft") key = "ArrowRight";
1676
+ }
1677
+ const next = key === "ArrowRight" ? (active + 1) % n : key === "ArrowLeft" ? (active - 1 + n) % n : key === "Home" ? 0 : key === "End" ? n - 1 : -1;
1678
+ if (next < 0) return;
1679
+ e.preventDefault();
1680
+ e.stopPropagation();
1681
+ setActive(next);
1682
+ tabs.current[next]?.focus();
1683
+ };
1684
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "deep", children: [
1685
+ /* @__PURE__ */ jsxRuntime.jsx(SlideHeader, { eyebrow: slide.eyebrow, title: slide.title }),
1686
+ /* @__PURE__ */ jsxRuntime.jsx(
1687
+ "div",
1688
+ {
1689
+ role: "tablist",
1690
+ "aria-label": slide.title,
1691
+ className: "mt-6 flex flex-wrap gap-2",
1692
+ children: slide.tabs.map((tab, i) => /* @__PURE__ */ jsxRuntime.jsx(
1693
+ TabButton,
1694
+ {
1695
+ ref: (el) => {
1696
+ tabs.current[i] = el;
1697
+ },
1698
+ id: `${baseId}-tab-${i}`,
1699
+ panelId: `${baseId}-panel`,
1700
+ selected: i === active,
1701
+ icon: tab.icon,
1702
+ onClick: () => setActive(i),
1703
+ onKeyDown: onKey,
1704
+ children: tab.label
1705
+ },
1706
+ tab.label
1707
+ ))
1708
+ }
1709
+ ),
1710
+ /* @__PURE__ */ jsxRuntime.jsxs(
1711
+ "div",
1712
+ {
1713
+ role: "tabpanel",
1714
+ id: `${baseId}-panel`,
1715
+ "aria-labelledby": `${baseId}-tab-${active}`,
1716
+ className: "mt-8",
1717
+ children: [
1718
+ current?.type === "metrics" && /* @__PURE__ */ jsxRuntime.jsx(MetricsBody, { slide: current }),
1719
+ current?.type === "chart" && /* @__PURE__ */ jsxRuntime.jsx(ChartBody, { slide: current }),
1720
+ current?.type === "feature-highlight" && /* @__PURE__ */ jsxRuntime.jsx(FeatureHighlightBody, { slide: current }),
1721
+ current?.type === "cards" && /* @__PURE__ */ jsxRuntime.jsx(CardsBody, { slide: current }),
1722
+ current?.type === "ranked-list" && /* @__PURE__ */ jsxRuntime.jsx(RankedListBody, { slide: current })
1723
+ ]
1724
+ }
1725
+ )
1726
+ ] });
1727
+ }
1728
+ var TabButton = React9__namespace.forwardRef(({ id, panelId, selected, icon, onClick, onKeyDown, children }, ref) => {
1729
+ const tone = useTone();
1730
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1731
+ "button",
1732
+ {
1733
+ ref,
1734
+ type: "button",
1735
+ role: "tab",
1736
+ id,
1737
+ "aria-selected": selected,
1738
+ "aria-controls": panelId,
1739
+ tabIndex: selected ? 0 : -1,
1740
+ onClick,
1741
+ onKeyDown,
1742
+ className: chunkS5RVSXDV_cjs.cn(
1743
+ "inline-flex items-center gap-2 rounded-full border px-4 py-1.5 text-sm font-semibold transition-colors",
1744
+ selected ? tone.isLight ? "border-neutral-900 bg-neutral-900 text-white" : "border-white bg-white text-neutral-900" : chunkS5RVSXDV_cjs.cn(
1745
+ tone.hairline,
1746
+ tone.muted,
1747
+ tone.isLight ? "hover:bg-neutral-100" : "hover:bg-white/10"
1748
+ )
1749
+ ),
1750
+ children: [
1751
+ icon && /* @__PURE__ */ jsxRuntime.jsx(DeckIcon, { name: icon, className: "size-4" }),
1752
+ children
1753
+ ]
1754
+ }
1755
+ );
1756
+ });
1757
+ TabButton.displayName = "TabButton";
1758
+ function CycleRenderer({
1759
+ slide,
1760
+ index
1761
+ }) {
1762
+ const tone = toneOf(slide, "deep");
1763
+ const n = slide.nodes.length;
1764
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "deep", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid items-center gap-10 lg:grid-cols-2", children: [
1765
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1766
+ slide.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: slide.eyebrow }),
1767
+ /* @__PURE__ */ jsxRuntime.jsx(SlideTitle, { children: slide.title }),
1768
+ slide.body && /* @__PURE__ */ jsxRuntime.jsx(
1769
+ "p",
1770
+ {
1771
+ ...reveal(2),
1772
+ className: chunkS5RVSXDV_cjs.cn(
1773
+ "mie-deck-reveal mt-6 text-lg leading-relaxed",
1774
+ tone.muted
1775
+ ),
1776
+ children: slide.body
1777
+ }
1778
+ ),
1779
+ slide.talkingPoint && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkS5RVSXDV_cjs.cn("mt-6 italic", tone.muted), children: [
1780
+ "\u201C",
1781
+ slide.talkingPoint,
1782
+ "\u201D"
1783
+ ] })
1784
+ ] }),
1785
+ /* @__PURE__ */ jsxRuntime.jsx(CycleWheel, { nodes: slide.nodes, n })
1786
+ ] }) });
1787
+ }
1788
+ function CycleWheel({ nodes, n }) {
1789
+ const tone = useTone();
1790
+ const a = accent("accent", tone.isLight);
1791
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1792
+ "ol",
1793
+ {
1794
+ ...reveal(3),
1795
+ className: "mie-deck-reveal relative mx-auto aspect-square w-64 sm:w-80 md:w-96",
1796
+ children: [
1797
+ /* @__PURE__ */ jsxRuntime.jsxs(
1798
+ "svg",
1799
+ {
1800
+ "aria-hidden": "true",
1801
+ viewBox: "0 0 400 400",
1802
+ className: "mie-deck-spin absolute inset-0 size-full",
1803
+ children: [
1804
+ /* @__PURE__ */ jsxRuntime.jsx(
1805
+ "circle",
1806
+ {
1807
+ cx: "200",
1808
+ cy: "200",
1809
+ r: "150",
1810
+ fill: "none",
1811
+ strokeWidth: "2",
1812
+ className: tone.isLight ? "stroke-neutral-200" : "stroke-white/10"
1813
+ }
1814
+ ),
1815
+ /* @__PURE__ */ jsxRuntime.jsx(
1816
+ "circle",
1817
+ {
1818
+ cx: "200",
1819
+ cy: "200",
1820
+ r: "150",
1821
+ fill: "none",
1822
+ strokeWidth: "2",
1823
+ strokeDasharray: "50 200",
1824
+ strokeLinecap: "round",
1825
+ className: a.svgStroke
1826
+ }
1827
+ ),
1828
+ nodes.map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(
1829
+ "polygon",
1830
+ {
1831
+ points: "200,47 207,60 193,60",
1832
+ transform: `rotate(${360 / n * i + 180 / n} 200 200)`,
1833
+ className: a.svgFill,
1834
+ opacity: 0.8
1835
+ },
1836
+ i
1837
+ ))
1838
+ ]
1839
+ }
1840
+ ),
1841
+ nodes.map((node, i) => {
1842
+ const angle = 2 * Math.PI * i / n - Math.PI / 2;
1843
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1844
+ "li",
1845
+ {
1846
+ className: chunkS5RVSXDV_cjs.cn(
1847
+ "absolute z-10 w-28 -translate-x-1/2 -translate-y-1/2 rounded-xl border px-3 py-2 text-center shadow-lg backdrop-blur sm:w-32",
1848
+ tone.hairline,
1849
+ tone.isLight ? "bg-white" : "bg-neutral-900/90"
1850
+ ),
1851
+ style: {
1852
+ // rtl-ignore -- orbit nodes use trig coordinates; diagram stays LTR
1853
+ left: `${50 + 37.5 * Math.cos(angle)}%`,
1854
+ top: `${50 + 37.5 * Math.sin(angle)}%`
1855
+ },
1856
+ children: [
1857
+ node.icon && /* @__PURE__ */ jsxRuntime.jsx(
1858
+ DeckIcon,
1859
+ {
1860
+ name: node.icon,
1861
+ className: chunkS5RVSXDV_cjs.cn("mx-auto mb-1 size-4", a.text)
1862
+ }
1863
+ ),
1864
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-bold sm:text-sm", children: node.label }),
1865
+ node.metric && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("text-sm font-bold sm:text-lg", a.text), children: node.metric })
1866
+ ]
1867
+ },
1868
+ node.label
1869
+ );
1870
+ })
1871
+ ]
1872
+ }
1873
+ );
1874
+ }
1875
+ function RoadmapRenderer({
1876
+ slide,
1877
+ index
1878
+ }) {
1879
+ const { labels } = useDeck();
1880
+ const tone = toneOf(slide, "ink");
1881
+ const a = accent("accent", tone.isLight);
1882
+ const status = {
1883
+ now: labels.statusNow,
1884
+ next: labels.statusNext,
1885
+ later: labels.statusLater
1886
+ };
1887
+ const statusTag = {
1888
+ now: chunkS5RVSXDV_cjs.cn(a.soft, a.border, a.text),
1889
+ next: chunkS5RVSXDV_cjs.cn(
1890
+ accent("primary", tone.isLight).soft,
1891
+ accent("primary", tone.isLight).border,
1892
+ accent("primary", tone.isLight).text
1893
+ ),
1894
+ later: chunkS5RVSXDV_cjs.cn(tone.hairline, tone.muted)
1895
+ };
1896
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "ink", children: [
1897
+ /* @__PURE__ */ jsxRuntime.jsx(
1898
+ SlideHeader,
1899
+ {
1900
+ eyebrow: slide.eyebrow,
1901
+ title: slide.title,
1902
+ subtitle: slide.subtitle
1903
+ }
1904
+ ),
1905
+ /* @__PURE__ */ jsxRuntime.jsx(
1906
+ "ol",
1907
+ {
1908
+ className: chunkS5RVSXDV_cjs.cn(
1909
+ "relative mt-10 flex flex-col gap-6 border-s ps-8",
1910
+ a.border
1911
+ ),
1912
+ children: slide.items.map((item, i) => {
1913
+ const r = reveal(3 + i);
1914
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1915
+ "li",
1916
+ {
1917
+ className: chunkS5RVSXDV_cjs.cn(r.className, "relative"),
1918
+ style: r.style,
1919
+ children: [
1920
+ /* @__PURE__ */ jsxRuntime.jsx(
1921
+ "span",
1922
+ {
1923
+ "aria-hidden": "true",
1924
+ className: chunkS5RVSXDV_cjs.cn(
1925
+ "absolute -start-[2.35rem] top-1.5 flex size-4 items-center justify-center rounded-full border-2",
1926
+ a.border,
1927
+ tone.isLight ? "bg-white" : "bg-neutral-950"
1928
+ ),
1929
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("size-1.5 rounded-full", a.fill) })
1930
+ }
1931
+ ),
1932
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
1933
+ item.icon && /* @__PURE__ */ jsxRuntime.jsx(
1934
+ IconChip,
1935
+ {
1936
+ icon: item.icon,
1937
+ accent: item.status === "later" ? "primary" : "accent"
1938
+ }
1939
+ ),
1940
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold sm:text-xl", children: item.title }),
1941
+ item.status && /* @__PURE__ */ jsxRuntime.jsx(
1942
+ "span",
1943
+ {
1944
+ className: chunkS5RVSXDV_cjs.cn(
1945
+ "rounded-full border px-2.5 py-0.5 text-[0.65rem] font-semibold tracking-wider uppercase",
1946
+ statusTag[item.status]
1947
+ ),
1948
+ children: status[item.status]
1949
+ }
1950
+ )
1951
+ ] }),
1952
+ item.children && item.children.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-2 flex flex-wrap gap-x-6 gap-y-1.5", children: item.children.map((child) => /* @__PURE__ */ jsxRuntime.jsxs(
1953
+ "li",
1954
+ {
1955
+ className: chunkS5RVSXDV_cjs.cn(
1956
+ "flex items-center gap-2 text-sm",
1957
+ tone.muted
1958
+ ),
1959
+ children: [
1960
+ /* @__PURE__ */ jsxRuntime.jsx(
1961
+ "span",
1962
+ {
1963
+ "aria-hidden": "true",
1964
+ className: "size-1 rounded-full bg-current"
1965
+ }
1966
+ ),
1967
+ child
1968
+ ]
1969
+ },
1970
+ child
1971
+ )) })
1972
+ ]
1973
+ },
1974
+ item.title
1975
+ );
1976
+ })
1977
+ }
1978
+ )
1979
+ ] });
1980
+ }
1981
+ var BASE = 50;
1982
+ var PEAK = 6;
1983
+ var SIGMA = 15;
1984
+ var gaussY = (x) => BASE - (BASE - PEAK) * Math.exp(-((x - 50) ** 2) / (2 * SIGMA * SIGMA));
1985
+ function AdoptionCurveRenderer({
1986
+ slide,
1987
+ index
1988
+ }) {
1989
+ const tone = toneOf(slide, "ink");
1990
+ const clipId = React9__namespace.useId();
1991
+ const pts = [];
1992
+ for (let x = 0; x <= 100; x += 1.5) pts.push(`${x},${gaussY(x).toFixed(2)}`);
1993
+ const area = `M 0,${BASE} L ${pts.join(" L ")} L 100,${BASE} Z`;
1994
+ const values = slide.segments.map((s) => parseFloat(s.pct) || 0);
1995
+ const sum = values.reduce((x, y) => x + y, 0) || 1;
1996
+ const widths = values.map((v) => v / sum * 100);
1997
+ const bands = slide.segments.map((s, i) => ({
1998
+ ...s,
1999
+ x0: widths.slice(0, i).reduce((x, y) => x + y, 0),
2000
+ w: widths[i],
2001
+ spec: accent(
2002
+ s.accent ?? ACCENT_CYCLE[i % ACCENT_CYCLE.length],
2003
+ tone.isLight
2004
+ )
2005
+ }));
2006
+ const hi = accent("accent", tone.isLight);
2007
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "ink", width: "lg", children: [
2008
+ /* @__PURE__ */ jsxRuntime.jsx(
2009
+ SlideHeader,
2010
+ {
2011
+ eyebrow: slide.eyebrow,
2012
+ title: slide.title,
2013
+ subtitle: slide.subtitle
2014
+ }
2015
+ ),
2016
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { ...reveal(3), className: "mie-deck-reveal relative mt-8 pb-10", children: [
2017
+ slide.annotations?.map((note) => /* @__PURE__ */ jsxRuntime.jsx(
2018
+ "span",
2019
+ {
2020
+ className: chunkS5RVSXDV_cjs.cn(
2021
+ "absolute z-20 w-40 max-w-[42vw] -translate-x-1/2 rounded-lg border px-3 py-1.5 text-center text-xs leading-snug font-semibold",
2022
+ note.emphasis ? chunkS5RVSXDV_cjs.cn(hi.soft, hi.border, hi.text) : chunkS5RVSXDV_cjs.cn(tone.hairline, tone.card)
2023
+ ),
2024
+ style: {
2025
+ // rtl-ignore -- annotation anchored to LTR timeline axis coordinates
2026
+ left: `${note.atPct}%`,
2027
+ [note.side === "bottom" ? "bottom" : "top"]: 0
2028
+ },
2029
+ children: note.text
2030
+ },
2031
+ note.text
2032
+ )),
2033
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-[clamp(180px,30vh,300px)] w-full", children: /* @__PURE__ */ jsxRuntime.jsxs(
2034
+ "svg",
2035
+ {
2036
+ viewBox: "0 0 100 56",
2037
+ preserveAspectRatio: "none",
2038
+ className: "size-full overflow-visible",
2039
+ role: "img",
2040
+ "aria-label": slide.segments.map((s) => `${s.label} ${s.pct}`).join(", "),
2041
+ children: [
2042
+ /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsx("clipPath", { id: clipId, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: area }) }) }),
2043
+ /* @__PURE__ */ jsxRuntime.jsx("g", { clipPath: `url(#${clipId})`, children: bands.map((b) => /* @__PURE__ */ jsxRuntime.jsx(
2044
+ "rect",
2045
+ {
2046
+ x: b.x0,
2047
+ y: 0,
2048
+ width: b.w,
2049
+ height: BASE,
2050
+ className: b.spec.svgFill,
2051
+ opacity: 0.8
2052
+ },
2053
+ b.label
2054
+ )) }),
2055
+ /* @__PURE__ */ jsxRuntime.jsx(
2056
+ "path",
2057
+ {
2058
+ d: `M ${pts.join(" L ")}`,
2059
+ fill: "none",
2060
+ strokeWidth: 1,
2061
+ vectorEffect: "non-scaling-stroke",
2062
+ className: tone.isLight ? "stroke-neutral-900" : "stroke-white"
2063
+ }
2064
+ ),
2065
+ /* @__PURE__ */ jsxRuntime.jsx(
2066
+ "line",
2067
+ {
2068
+ x1: 0,
2069
+ y1: BASE,
2070
+ x2: 100,
2071
+ y2: BASE,
2072
+ strokeWidth: 0.5,
2073
+ vectorEffect: "non-scaling-stroke",
2074
+ className: tone.isLight ? "stroke-neutral-400" : "stroke-white/25"
2075
+ }
2076
+ )
2077
+ ]
2078
+ }
2079
+ ) }),
2080
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", dir: "ltr", className: "mt-2 flex w-full", children: bands.map((b) => /* @__PURE__ */ jsxRuntime.jsxs(
2081
+ "div",
2082
+ {
2083
+ className: "min-w-0 px-1 text-center",
2084
+ style: { flexBasis: `${b.w}%` },
2085
+ children: [
2086
+ /* @__PURE__ */ jsxRuntime.jsx(
2087
+ "div",
2088
+ {
2089
+ className: chunkS5RVSXDV_cjs.cn("text-sm font-bold sm:text-base", b.spec.text),
2090
+ children: b.pct
2091
+ }
2092
+ ),
2093
+ /* @__PURE__ */ jsxRuntime.jsx(
2094
+ "div",
2095
+ {
2096
+ className: chunkS5RVSXDV_cjs.cn(
2097
+ "truncate text-[0.7rem] tracking-wide uppercase sm:text-xs",
2098
+ tone.muted
2099
+ ),
2100
+ children: b.label
2101
+ }
2102
+ )
2103
+ ]
2104
+ },
2105
+ b.label
2106
+ )) }),
2107
+ slide.marker && /* @__PURE__ */ jsxRuntime.jsxs(
2108
+ "div",
2109
+ {
2110
+ className: "absolute bottom-0 z-20 -translate-x-1/2 text-center",
2111
+ style: { left: `${slide.marker.atPct}%` },
2112
+ children: [
2113
+ /* @__PURE__ */ jsxRuntime.jsx(
2114
+ "div",
2115
+ {
2116
+ "aria-hidden": "true",
2117
+ className: chunkS5RVSXDV_cjs.cn("mx-auto h-4 w-px", hi.fill)
2118
+ }
2119
+ ),
2120
+ /* @__PURE__ */ jsxRuntime.jsx(
2121
+ "span",
2122
+ {
2123
+ className: chunkS5RVSXDV_cjs.cn(
2124
+ "mt-1 inline-block rounded-full border px-2.5 py-0.5 text-[0.65rem] font-semibold tracking-wide uppercase",
2125
+ hi.soft,
2126
+ hi.border,
2127
+ hi.text
2128
+ ),
2129
+ children: slide.marker.label
2130
+ }
2131
+ )
2132
+ ]
2133
+ }
2134
+ )
2135
+ ] }),
2136
+ slide.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: slide.source, className: "mt-4" })
2137
+ ] });
2138
+ }
2139
+ function DiagramRenderer({
2140
+ slide,
2141
+ index
2142
+ }) {
2143
+ const { components } = useDeck();
2144
+ const tone = toneOf(slide, "deep");
2145
+ const center = new Map(slide.nodes.map((n) => [n.id, n]));
2146
+ const left = slide.callouts?.filter((c) => c.side === "left") ?? [];
2147
+ const right = slide.callouts?.filter((c) => c.side === "right") ?? [];
2148
+ const cols = left.length && right.length ? "lg:grid-cols-[minmax(0,1fr)_minmax(0,2.4fr)_minmax(0,1fr)]" : right.length ? "lg:grid-cols-[minmax(0,2.7fr)_minmax(0,1.25fr)]" : left.length ? "lg:grid-cols-[minmax(0,1.25fr)_minmax(0,2.7fr)]" : "";
2149
+ const stageBg = tone.isLight ? "bg-white" : "bg-neutral-900";
2150
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "deep", children: [
2151
+ /* @__PURE__ */ jsxRuntime.jsx(
2152
+ SlideHeader,
2153
+ {
2154
+ eyebrow: slide.eyebrow,
2155
+ title: slide.title,
2156
+ subtitle: slide.subtitle
2157
+ }
2158
+ ),
2159
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn("mt-8", cols && chunkS5RVSXDV_cjs.cn("grid items-center gap-6", cols)), children: [
2160
+ left.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Callouts, { callouts: left, end: true }),
2161
+ /* @__PURE__ */ jsxRuntime.jsxs(
2162
+ "div",
2163
+ {
2164
+ ...reveal(3),
2165
+ className: "mie-deck-reveal relative mx-auto h-[clamp(260px,40vh,440px)] w-full max-w-3xl",
2166
+ children: [
2167
+ slide.boundaries?.map((b) => {
2168
+ const xs = b.nodes.map((id) => center.get(id)?.x ?? 50);
2169
+ const ys = b.nodes.map((id) => center.get(id)?.y ?? 50);
2170
+ const l = Math.min(...xs) - 13;
2171
+ const t = Math.min(...ys) - 17;
2172
+ const spec = accent(b.accent ?? "primary", tone.isLight);
2173
+ return /* @__PURE__ */ jsxRuntime.jsx(
2174
+ "div",
2175
+ {
2176
+ className: chunkS5RVSXDV_cjs.cn(
2177
+ "absolute rounded-2xl border border-dashed",
2178
+ tone.hairline
2179
+ ),
2180
+ style: {
2181
+ // rtl-ignore -- group outline shares the SVG edge coordinate space
2182
+ left: `${l}%`,
2183
+ top: `${t}%`,
2184
+ width: `${Math.max(...xs) + 13 - l}%`,
2185
+ height: `${Math.max(...ys) + 17 - t}%`
2186
+ },
2187
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2188
+ "span",
2189
+ {
2190
+ className: chunkS5RVSXDV_cjs.cn(
2191
+ "absolute start-4 -top-3 rounded-full border px-2.5 py-0.5 text-[0.6rem] font-semibold tracking-wide uppercase",
2192
+ stageBg,
2193
+ spec.border,
2194
+ spec.text
2195
+ ),
2196
+ children: b.label
2197
+ }
2198
+ )
2199
+ },
2200
+ b.label
2201
+ );
2202
+ }),
2203
+ /* @__PURE__ */ jsxRuntime.jsx(
2204
+ "svg",
2205
+ {
2206
+ "aria-hidden": "true",
2207
+ viewBox: "0 0 100 100",
2208
+ preserveAspectRatio: "none",
2209
+ className: "absolute inset-0 size-full",
2210
+ children: slide.edges.map((e) => {
2211
+ const a = center.get(e.from);
2212
+ const b = center.get(e.to);
2213
+ if (!a || !b) return null;
2214
+ return /* @__PURE__ */ jsxRuntime.jsx(
2215
+ "line",
2216
+ {
2217
+ x1: a.x,
2218
+ y1: a.y,
2219
+ x2: b.x,
2220
+ y2: b.y,
2221
+ strokeWidth: 1.2,
2222
+ strokeDasharray: e.dashed ? "4 3" : void 0,
2223
+ vectorEffect: "non-scaling-stroke",
2224
+ className: e.accent ? accent(e.accent, tone.isLight).svgStroke : tone.isLight ? "stroke-neutral-400" : "stroke-white/30"
2225
+ },
2226
+ `${e.from}-${e.to}`
2227
+ );
2228
+ })
2229
+ }
2230
+ ),
2231
+ slide.edges.map((e, i) => {
2232
+ const a = center.get(e.from);
2233
+ const b = center.get(e.to);
2234
+ if (!a || !b || !e.flow) return null;
2235
+ return /* @__PURE__ */ jsxRuntime.jsx(
2236
+ "span",
2237
+ {
2238
+ "aria-hidden": "true",
2239
+ className: chunkS5RVSXDV_cjs.cn(
2240
+ "mie-deck-flow absolute size-2 -translate-x-1/2 -translate-y-1/2 rounded-full",
2241
+ accent(e.accent ?? "accent", tone.isLight).fill
2242
+ ),
2243
+ style: {
2244
+ "--mie-from-x": `${a.x}%`,
2245
+ "--mie-from-y": `${a.y}%`,
2246
+ "--mie-to-x": `${b.x}%`,
2247
+ "--mie-to-y": `${b.y}%`,
2248
+ animationDelay: `${i * 0.5}s`
2249
+ }
2250
+ },
2251
+ `flow-${e.from}-${e.to}`
2252
+ );
2253
+ }),
2254
+ slide.edges.map((e) => {
2255
+ const a = center.get(e.from);
2256
+ const b = center.get(e.to);
2257
+ if (!a || !b || !e.label) return null;
2258
+ const at = e.labelAt ?? 0.5;
2259
+ return /* @__PURE__ */ jsxRuntime.jsx(
2260
+ "span",
2261
+ {
2262
+ className: chunkS5RVSXDV_cjs.cn(
2263
+ "absolute z-10 -translate-x-1/2 -translate-y-1/2 rounded-md border px-1.5 py-0.5 text-[0.6rem] font-medium whitespace-nowrap",
2264
+ stageBg,
2265
+ tone.hairline,
2266
+ tone.muted
2267
+ ),
2268
+ style: {
2269
+ // rtl-ignore -- edge label interpolated in the SVG line coordinate space
2270
+ left: `${a.x + (b.x - a.x) * at}%`,
2271
+ top: `${a.y + (b.y - a.y) * at}%`
2272
+ },
2273
+ children: e.label
2274
+ },
2275
+ `label-${e.from}-${e.to}`
2276
+ );
2277
+ }),
2278
+ slide.nodes.map((node) => {
2279
+ const spec = accent(node.accent ?? "primary", tone.isLight);
2280
+ return /* @__PURE__ */ jsxRuntime.jsx(
2281
+ "div",
2282
+ {
2283
+ className: "absolute z-[5] -translate-x-1/2 -translate-y-1/2",
2284
+ style: {
2285
+ // rtl-ignore -- node positioned in the SVG edge coordinate space
2286
+ left: `${node.x}%`,
2287
+ top: `${node.y}%`,
2288
+ width: `${node.w ?? 20}%`
2289
+ },
2290
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
2291
+ "div",
2292
+ {
2293
+ className: chunkS5RVSXDV_cjs.cn(
2294
+ "flex flex-col items-center gap-1.5 rounded-xl border px-2 py-3 text-center shadow-lg",
2295
+ stageBg,
2296
+ spec.border
2297
+ ),
2298
+ children: [
2299
+ node.image ? /* @__PURE__ */ jsxRuntime.jsx(
2300
+ chunkXI74P5F2_cjs.TemplateImg,
2301
+ {
2302
+ ...node.image,
2303
+ components,
2304
+ className: "h-7 w-auto object-contain sm:h-9"
2305
+ }
2306
+ ) : node.icon && /* @__PURE__ */ jsxRuntime.jsx(
2307
+ DeckIcon,
2308
+ {
2309
+ name: node.icon,
2310
+ className: chunkS5RVSXDV_cjs.cn("size-5 sm:size-6", spec.text)
2311
+ }
2312
+ ),
2313
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[0.62rem] leading-tight font-semibold sm:text-xs", children: node.label })
2314
+ ]
2315
+ }
2316
+ )
2317
+ },
2318
+ node.id
2319
+ );
2320
+ })
2321
+ ]
2322
+ }
2323
+ ),
2324
+ right.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Callouts, { callouts: right })
2325
+ ] })
2326
+ ] });
2327
+ }
2328
+ function Callouts({
2329
+ callouts,
2330
+ end
2331
+ }) {
2332
+ const tone = useTone();
2333
+ const a = accent("accent", tone.isLight);
2334
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("flex flex-col gap-4", end && "lg:text-end"), children: callouts.map((c, i) => /* @__PURE__ */ jsxRuntime.jsxs(Card, { i: 4 + i, className: "p-4", children: [
2335
+ c.lead && /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("text-sm font-bold", a.text), children: c.lead }),
2336
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm leading-snug", tone.muted), children: c.text })
2337
+ ] }, c.text)) });
2338
+ }
2339
+ function BadgeCard({ cert, i }) {
2340
+ const { components } = useDeck();
2341
+ const tone = useTone();
2342
+ const a = accent(cert.accent ?? "accent", tone.isLight);
2343
+ return /* @__PURE__ */ jsxRuntime.jsxs(Card, { i, className: "flex flex-col items-center p-3 text-center", children: [
2344
+ cert.image ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 flex h-11 items-center justify-center rounded-lg bg-white px-2.5", children: /* @__PURE__ */ jsxRuntime.jsx(
2345
+ chunkXI74P5F2_cjs.TemplateImg,
2346
+ {
2347
+ ...cert.image,
2348
+ components,
2349
+ className: "h-7 w-auto max-w-[72px] object-contain"
2350
+ }
2351
+ ) }) : /* @__PURE__ */ jsxRuntime.jsx(
2352
+ "div",
2353
+ {
2354
+ "aria-hidden": "true",
2355
+ className: chunkS5RVSXDV_cjs.cn(
2356
+ "mb-2 flex size-10 items-center justify-center rounded-lg border text-sm font-extrabold",
2357
+ a.soft,
2358
+ a.border,
2359
+ a.text
2360
+ ),
2361
+ children: cert.badge ?? cert.name.slice(0, 3).toUpperCase()
2362
+ }
2363
+ ),
2364
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[0.8rem] leading-tight font-bold", children: cert.name }),
2365
+ cert.issuer && /* @__PURE__ */ jsxRuntime.jsx(
2366
+ "div",
2367
+ {
2368
+ className: chunkS5RVSXDV_cjs.cn(
2369
+ "mt-0.5 text-[0.62rem] tracking-wide uppercase",
2370
+ tone.muted
2371
+ ),
2372
+ children: cert.issuer
2373
+ }
2374
+ ),
2375
+ cert.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: cert.source, className: "mt-1.5" })
2376
+ ] });
2377
+ }
2378
+ function CertificationGridRenderer({
2379
+ slide,
2380
+ index
2381
+ }) {
2382
+ const { components } = useDeck();
2383
+ const tone = toneOf(slide, "deep");
2384
+ const count = slide.certifications.length;
2385
+ const featured = slide.featured;
2386
+ const cols = featured ? "sm:grid-cols-3 lg:grid-cols-4" : count >= 5 ? "sm:grid-cols-3 lg:grid-cols-5" : count === 4 ? "sm:grid-cols-2 lg:grid-cols-4" : "sm:grid-cols-3";
2387
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "deep", children: [
2388
+ /* @__PURE__ */ jsxRuntime.jsx(
2389
+ SlideHeader,
2390
+ {
2391
+ eyebrow: slide.eyebrow,
2392
+ title: slide.title,
2393
+ subtitle: slide.subtitle
2394
+ }
2395
+ ),
2396
+ /* @__PURE__ */ jsxRuntime.jsxs(
2397
+ "div",
2398
+ {
2399
+ className: featured ? "mt-7 grid items-center gap-8 lg:grid-cols-[auto_minmax(0,1fr)] lg:gap-12" : "mt-6",
2400
+ children: [
2401
+ featured && /* @__PURE__ */ jsxRuntime.jsxs(
2402
+ "div",
2403
+ {
2404
+ ...reveal(3),
2405
+ className: "mie-deck-reveal flex flex-col items-center text-center",
2406
+ children: [
2407
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-40 items-center justify-center rounded-full bg-white p-2 shadow-2xl sm:size-48", children: featured.image ? /* @__PURE__ */ jsxRuntime.jsx(
2408
+ chunkXI74P5F2_cjs.TemplateImg,
2409
+ {
2410
+ ...featured.image,
2411
+ components,
2412
+ className: "size-full object-contain"
2413
+ }
2414
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-2xl font-extrabold text-neutral-900", children: featured.badge ?? featured.name }) }),
2415
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 font-semibold", children: featured.name }),
2416
+ featured.description && /* @__PURE__ */ jsxRuntime.jsx(
2417
+ "p",
2418
+ {
2419
+ className: chunkS5RVSXDV_cjs.cn(
2420
+ "mt-1 max-w-[15rem] text-sm leading-snug",
2421
+ tone.muted
2422
+ ),
2423
+ children: featured.description
2424
+ }
2425
+ ),
2426
+ featured.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: featured.source, className: "mt-2.5" })
2427
+ ]
2428
+ }
2429
+ ),
2430
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS5RVSXDV_cjs.cn("grid grid-cols-2 gap-3", cols), children: slide.certifications.map((cert, i) => /* @__PURE__ */ jsxRuntime.jsx(BadgeCard, { cert, i: 4 + i }, cert.name)) })
2431
+ ]
2432
+ }
2433
+ ),
2434
+ slide.footnote && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: slide.footnote, className: "mt-6" })
2435
+ ] });
2436
+ }
2437
+ var VISIBLE = 3;
2438
+ function ShowcaseCategory({
2439
+ category,
2440
+ i
2441
+ }) {
2442
+ const { labels } = useDeck();
2443
+ const tone = useTone();
2444
+ const a = accent("primary", tone.isLight);
2445
+ const [open, setOpen] = React9__namespace.useState(false);
2446
+ const listId = React9__namespace.useId();
2447
+ const hidden = category.items.length - VISIBLE;
2448
+ return /* @__PURE__ */ jsxRuntime.jsxs(Card, { i, className: "p-4", children: [
2449
+ /* @__PURE__ */ jsxRuntime.jsxs(
2450
+ "h3",
2451
+ {
2452
+ className: chunkS5RVSXDV_cjs.cn(
2453
+ "mb-3 flex items-center gap-2 text-xs font-bold tracking-wider uppercase",
2454
+ a.text
2455
+ ),
2456
+ children: [
2457
+ category.icon && /* @__PURE__ */ jsxRuntime.jsx(DeckIcon, { name: category.icon, className: "size-4" }),
2458
+ category.title,
2459
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("ms-auto tabular-nums", tone.muted), children: category.items.length })
2460
+ ]
2461
+ }
2462
+ ),
2463
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { id: listId, className: "space-y-1", children: (open ? category.items : category.items.slice(0, VISIBLE)).map(
2464
+ (item) => /* @__PURE__ */ jsxRuntime.jsxs(
2465
+ "li",
2466
+ {
2467
+ className: chunkS5RVSXDV_cjs.cn("flex gap-2 text-xs leading-relaxed", tone.muted),
2468
+ children: [
2469
+ /* @__PURE__ */ jsxRuntime.jsx(
2470
+ lucideReact.ChevronRight,
2471
+ {
2472
+ "aria-hidden": "true",
2473
+ className: "mt-0.5 size-3 flex-none rtl:-scale-x-100"
2474
+ }
2475
+ ),
2476
+ item
2477
+ ]
2478
+ },
2479
+ item
2480
+ )
2481
+ ) }),
2482
+ hidden > 0 && /* @__PURE__ */ jsxRuntime.jsx(
2483
+ "button",
2484
+ {
2485
+ type: "button",
2486
+ "aria-expanded": open,
2487
+ "aria-controls": listId,
2488
+ onClick: () => setOpen((o) => !o),
2489
+ className: chunkS5RVSXDV_cjs.cn(
2490
+ "mt-2 text-xs font-medium underline-offset-2 hover:underline",
2491
+ a.text
2492
+ ),
2493
+ children: open ? labels.less : labels.more(hidden)
2494
+ }
2495
+ )
2496
+ ] });
2497
+ }
2498
+ function ShowcaseRenderer({
2499
+ slide,
2500
+ index
2501
+ }) {
2502
+ const { components, labels } = useDeck();
2503
+ const tone = toneOf(slide, "deep");
2504
+ const a = accent("accent", tone.isLight);
2505
+ const video = slide.video;
2506
+ const videoHref = video ? chunkXI74P5F2_cjs.safeHref(video.href) : void 0;
2507
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "deep", children: [
2508
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 flex flex-col items-start gap-4 sm:flex-row sm:items-end sm:justify-between", children: [
2509
+ /* @__PURE__ */ jsxRuntime.jsx(
2510
+ SlideHeader,
2511
+ {
2512
+ eyebrow: slide.eyebrow,
2513
+ title: slide.title,
2514
+ subtitle: slide.subtitle
2515
+ }
2516
+ ),
2517
+ slide.total && /* @__PURE__ */ jsxRuntime.jsxs(
2518
+ "div",
2519
+ {
2520
+ ...reveal(2),
2521
+ className: chunkS5RVSXDV_cjs.cn(
2522
+ "mie-deck-reveal flex flex-none items-baseline gap-2 rounded-full border px-5 py-2",
2523
+ a.soft,
2524
+ a.border
2525
+ ),
2526
+ children: [
2527
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-3xl font-bold", a.text), children: /* @__PURE__ */ jsxRuntime.jsx(CountUp, { value: slide.total.value }) }),
2528
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-sm", tone.muted), children: slide.total.label })
2529
+ ]
2530
+ }
2531
+ )
2532
+ ] }),
2533
+ /* @__PURE__ */ jsxRuntime.jsxs(
2534
+ "div",
2535
+ {
2536
+ className: chunkS5RVSXDV_cjs.cn("grid gap-6", videoHref && "lg:grid-cols-[1fr_300px]"),
2537
+ children: [
2538
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3", children: slide.categories.map((cat, i) => /* @__PURE__ */ jsxRuntime.jsx(ShowcaseCategory, { category: cat, i: 3 + i }, cat.title)) }),
2539
+ video && videoHref && /* @__PURE__ */ jsxRuntime.jsxs(
2540
+ "a",
2541
+ {
2542
+ href: videoHref,
2543
+ target: "_blank",
2544
+ rel: "noopener noreferrer",
2545
+ ...reveal(5),
2546
+ className: chunkS5RVSXDV_cjs.cn(
2547
+ "mie-deck-reveal group flex flex-col overflow-hidden rounded-xl border lg:self-start",
2548
+ tone.hairline,
2549
+ tone.card
2550
+ ),
2551
+ children: [
2552
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex aspect-video items-center justify-center overflow-hidden bg-neutral-900", children: [
2553
+ video.thumbnail && /* @__PURE__ */ jsxRuntime.jsx(
2554
+ chunkXI74P5F2_cjs.TemplateImg,
2555
+ {
2556
+ ...video.thumbnail,
2557
+ components,
2558
+ className: "absolute inset-0 size-full object-cover transition-transform duration-300 group-hover:scale-105"
2559
+ }
2560
+ ),
2561
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-black/30" }),
2562
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-primary-600 relative flex size-14 items-center justify-center rounded-full border-2 border-white/30 shadow-xl transition-transform group-hover:scale-110", children: /* @__PURE__ */ jsxRuntime.jsx(
2563
+ lucideReact.Play,
2564
+ {
2565
+ "aria-hidden": "true",
2566
+ className: "ms-1 size-6 fill-white text-white"
2567
+ }
2568
+ ) }),
2569
+ video.duration && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute end-2 bottom-2 rounded bg-black/60 px-2 py-0.5 font-mono text-xs text-white tabular-nums", children: video.duration })
2570
+ ] }),
2571
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4", children: [
2572
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-sm font-semibold", children: video.title }),
2573
+ video.speaker && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mb-2 text-xs", tone.muted), children: video.speaker }),
2574
+ /* @__PURE__ */ jsxRuntime.jsxs(
2575
+ "span",
2576
+ {
2577
+ className: chunkS5RVSXDV_cjs.cn(
2578
+ "inline-flex items-center gap-1 text-xs font-medium",
2579
+ a.text
2580
+ ),
2581
+ children: [
2582
+ video.cta ?? labels.watchVideo,
2583
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { "aria-hidden": "true", className: "size-3" })
2584
+ ]
2585
+ }
2586
+ )
2587
+ ] })
2588
+ ]
2589
+ }
2590
+ )
2591
+ ]
2592
+ }
2593
+ )
2594
+ ] });
2595
+ }
2596
+ function Highlights({
2597
+ items
2598
+ }) {
2599
+ const r = reveal(3);
2600
+ return /* @__PURE__ */ jsxRuntime.jsx(
2601
+ "div",
2602
+ {
2603
+ className: chunkS5RVSXDV_cjs.cn(
2604
+ r.className,
2605
+ "mt-10 flex flex-wrap items-center justify-center gap-x-10 gap-y-6"
2606
+ ),
2607
+ style: r.style,
2608
+ children: items.map((h) => /* @__PURE__ */ jsxRuntime.jsx(HighlightFigure, { value: h.value, label: h.label }, h.label))
2609
+ }
2610
+ );
2611
+ }
2612
+ function CoverRenderer({
2613
+ slide,
2614
+ index
2615
+ }) {
2616
+ const { components } = useDeck();
2617
+ const tone = toneOf(slide, "brand");
2618
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "brand", width: "md", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center text-center", children: [
2619
+ slide.image && /* @__PURE__ */ jsxRuntime.jsx(
2620
+ chunkXI74P5F2_cjs.TemplateImg,
2621
+ {
2622
+ ...slide.image,
2623
+ priority: index === 0,
2624
+ components,
2625
+ className: "mb-8 h-32 w-auto object-contain sm:h-40"
2626
+ }
2627
+ ),
2628
+ slide.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: slide.eyebrow }),
2629
+ /* @__PURE__ */ jsxRuntime.jsx(SlideTitle, { size: "xl", children: slide.title }),
2630
+ slide.subtitle && /* @__PURE__ */ jsxRuntime.jsx(Subtitle, { className: "mx-auto sm:text-xl", children: slide.subtitle }),
2631
+ slide.highlights && slide.highlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Highlights, { items: slide.highlights }),
2632
+ (slide.dateline || slide.preparedBy) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-10 text-sm", tone.muted), children: [slide.preparedBy, slide.dateline].filter(Boolean).join(" \xB7 ") })
2633
+ ] }) });
2634
+ }
2635
+ function SectionDividerRenderer({
2636
+ slide,
2637
+ index
2638
+ }) {
2639
+ const { components } = useDeck();
2640
+ const tone = toneOf(slide, "glow");
2641
+ const a = accent("accent", tone.isLight);
2642
+ const hasImage = !!slide.image;
2643
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "glow", children: /* @__PURE__ */ jsxRuntime.jsxs(
2644
+ "div",
2645
+ {
2646
+ className: hasImage ? "grid items-center gap-10 md:grid-cols-2 lg:gap-16" : "flex flex-col items-center text-center",
2647
+ children: [
2648
+ slide.image && /* @__PURE__ */ jsxRuntime.jsx("div", { ...reveal(0), className: "mie-deck-reveal order-2 md:order-1", children: /* @__PURE__ */ jsxRuntime.jsx(
2649
+ chunkXI74P5F2_cjs.TemplateImg,
2650
+ {
2651
+ ...slide.image,
2652
+ components,
2653
+ className: "mx-auto aspect-[3/4] w-full max-w-sm rounded-2xl object-cover"
2654
+ }
2655
+ ) }),
2656
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: hasImage ? "order-1 md:order-2" : "max-w-4xl", children: [
2657
+ slide.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: slide.eyebrow }),
2658
+ slide.statement && /* @__PURE__ */ jsxRuntime.jsx(
2659
+ "p",
2660
+ {
2661
+ ...reveal(1),
2662
+ className: "mie-deck-reveal text-6xl font-extrabold tracking-tight text-balance sm:text-7xl lg:text-8xl",
2663
+ children: slide.statement
2664
+ }
2665
+ ),
2666
+ /* @__PURE__ */ jsxRuntime.jsx(
2667
+ SlideTitle,
2668
+ {
2669
+ size: slide.statement ? "md" : "lg",
2670
+ className: chunkS5RVSXDV_cjs.cn(slide.statement && "mt-3 font-semibold opacity-80"),
2671
+ children: slide.title
2672
+ }
2673
+ ),
2674
+ slide.description && /* @__PURE__ */ jsxRuntime.jsx(Subtitle, { className: chunkS5RVSXDV_cjs.cn(!hasImage && "mx-auto"), children: slide.description }),
2675
+ /* @__PURE__ */ jsxRuntime.jsx(
2676
+ "div",
2677
+ {
2678
+ "aria-hidden": "true",
2679
+ className: chunkS5RVSXDV_cjs.cn(
2680
+ "mt-8 h-1 w-24 rounded-full",
2681
+ a.fill,
2682
+ !hasImage && "mx-auto"
2683
+ )
2684
+ }
2685
+ )
2686
+ ] })
2687
+ ]
2688
+ }
2689
+ ) });
2690
+ }
2691
+ function TableOfContentsRenderer({
2692
+ slide,
2693
+ index
2694
+ }) {
2695
+ const { slides, activeSlide, goTo, labels } = useDeck();
2696
+ const tone = toneOf(slide, "brand");
2697
+ const a = accent("accent", tone.isLight);
2698
+ const sections = slide.sections ?? Object.entries(
2699
+ slides.reduce((acc, s, i) => {
2700
+ if (i === index || !("title" in s) || !s.title) return acc;
2701
+ (acc[s.section ?? ""] ??= []).push({
2702
+ number: i + 1,
2703
+ title: s.navLabel ?? s.title
2704
+ });
2705
+ return acc;
2706
+ }, {})
2707
+ ).map(([heading, items]) => ({ heading: heading || void 0, items }));
2708
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "brand", children: [
2709
+ /* @__PURE__ */ jsxRuntime.jsx(
2710
+ SlideHeader,
2711
+ {
2712
+ eyebrow: slide.eyebrow,
2713
+ title: slide.title,
2714
+ subtitle: slide.description
2715
+ }
2716
+ ),
2717
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": labels.outline, className: "mt-6 md:columns-2 md:gap-12", children: sections.map((section, s) => /* @__PURE__ */ jsxRuntime.jsxs(
2718
+ "div",
2719
+ {
2720
+ ...reveal(3 + s),
2721
+ className: "mie-deck-reveal mb-5 break-inside-avoid",
2722
+ children: [
2723
+ section.heading && /* @__PURE__ */ jsxRuntime.jsx(
2724
+ "h3",
2725
+ {
2726
+ className: chunkS5RVSXDV_cjs.cn(
2727
+ "mb-1.5 text-xs font-semibold tracking-[0.2em] uppercase",
2728
+ a.text
2729
+ ),
2730
+ children: section.heading
2731
+ }
2732
+ ),
2733
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-0.5", children: section.items.map((entry) => {
2734
+ const target = entry.number - 1;
2735
+ const current = target === activeSlide;
2736
+ return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
2737
+ "button",
2738
+ {
2739
+ type: "button",
2740
+ onClick: () => goTo(target),
2741
+ "aria-current": current ? "true" : void 0,
2742
+ className: chunkS5RVSXDV_cjs.cn(
2743
+ "flex w-full items-baseline gap-3 rounded-lg px-3 py-1 text-start transition-colors",
2744
+ current ? a.soft : tone.isLight ? "hover:bg-neutral-100" : "hover:bg-white/5"
2745
+ ),
2746
+ children: [
2747
+ /* @__PURE__ */ jsxRuntime.jsx(
2748
+ "span",
2749
+ {
2750
+ className: chunkS5RVSXDV_cjs.cn(
2751
+ "text-sm font-semibold tabular-nums",
2752
+ a.text
2753
+ ),
2754
+ children: String(entry.number).padStart(2, "0")
2755
+ }
2756
+ ),
2757
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2758
+ entry.title,
2759
+ entry.subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("block text-xs", tone.muted), children: entry.subtitle })
2760
+ ] })
2761
+ ]
2762
+ }
2763
+ ) }, entry.number);
2764
+ }) })
2765
+ ]
2766
+ },
2767
+ section.heading ?? s
2768
+ )) })
2769
+ ] });
2770
+ }
2771
+ function BulletListRenderer({
2772
+ slide,
2773
+ index
2774
+ }) {
2775
+ const tone = toneOf(slide, "brand");
2776
+ const r = reveal(3);
2777
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "brand", width: "lg", children: [
2778
+ /* @__PURE__ */ jsxRuntime.jsx(
2779
+ SlideHeader,
2780
+ {
2781
+ eyebrow: slide.eyebrow,
2782
+ title: slide.title,
2783
+ subtitle: slide.subtitle
2784
+ }
2785
+ ),
2786
+ /* @__PURE__ */ jsxRuntime.jsx(
2787
+ "ul",
2788
+ {
2789
+ className: chunkS5RVSXDV_cjs.cn(r.className, "mt-10 flex flex-col gap-4"),
2790
+ style: r.style,
2791
+ children: slide.items.map((item, i) => /* @__PURE__ */ jsxRuntime.jsx(Bullet, { item }, i))
2792
+ }
2793
+ ),
2794
+ slide.note && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-8 text-sm italic", tone.muted), children: slide.note })
2795
+ ] });
2796
+ }
2797
+ function QuoteRenderer({
2798
+ slide,
2799
+ index
2800
+ }) {
2801
+ const tone = toneOf(slide, "brand");
2802
+ const a = accent("accent", tone.isLight);
2803
+ return /* @__PURE__ */ jsxRuntime.jsx(
2804
+ SlideFrame,
2805
+ {
2806
+ slide: {
2807
+ ...slide,
2808
+ navLabel: slide.navLabel ?? slide.title ?? slide.attribution
2809
+ },
2810
+ index,
2811
+ tone: "brand",
2812
+ width: "md",
2813
+ children: /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: "flex flex-col items-center text-center", children: [
2814
+ slide.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: slide.eyebrow }),
2815
+ slide.title && /* @__PURE__ */ jsxRuntime.jsx(SlideTitle, { size: "md", className: "mb-6", children: slide.title }),
2816
+ /* @__PURE__ */ jsxRuntime.jsx(
2817
+ "span",
2818
+ {
2819
+ "aria-hidden": "true",
2820
+ className: chunkS5RVSXDV_cjs.cn("text-7xl leading-none sm:text-8xl", a.text),
2821
+ children: "\u201C"
2822
+ }
2823
+ ),
2824
+ /* @__PURE__ */ jsxRuntime.jsx(
2825
+ "blockquote",
2826
+ {
2827
+ ...reveal(2),
2828
+ className: "mie-deck-reveal -mt-4 text-2xl leading-snug font-semibold text-balance sm:text-3xl lg:text-4xl",
2829
+ children: slide.quote
2830
+ }
2831
+ ),
2832
+ (slide.attribution || slide.role) && /* @__PURE__ */ jsxRuntime.jsxs("figcaption", { ...reveal(3), className: "mie-deck-reveal mt-8", children: [
2833
+ slide.attribution && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", a.text), children: slide.attribution }),
2834
+ slide.role && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("block text-sm", tone.muted), children: slide.role })
2835
+ ] }),
2836
+ slide.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: slide.source, className: "mt-5" })
2837
+ ] })
2838
+ }
2839
+ );
2840
+ }
2841
+ function ImageRenderer({
2842
+ slide,
2843
+ index
2844
+ }) {
2845
+ const { components } = useDeck();
2846
+ const tone = toneOf(slide, "ink");
2847
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "ink", children: [
2848
+ /* @__PURE__ */ jsxRuntime.jsx(SlideTitle, { className: "mb-8 text-center", children: slide.title }),
2849
+ /* @__PURE__ */ jsxRuntime.jsxs("figure", { ...reveal(2), className: "mie-deck-reveal", children: [
2850
+ /* @__PURE__ */ jsxRuntime.jsx(
2851
+ chunkXI74P5F2_cjs.TemplateImg,
2852
+ {
2853
+ ...slide.image,
2854
+ components,
2855
+ className: "mx-auto max-h-[65dvh] w-auto rounded-2xl object-contain shadow-2xl"
2856
+ }
2857
+ ),
2858
+ slide.caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: chunkS5RVSXDV_cjs.cn("mt-4 text-center text-sm", tone.muted), children: slide.caption })
2859
+ ] })
2860
+ ] });
2861
+ }
2862
+ function DefinitionListRenderer({
2863
+ slide,
2864
+ index
2865
+ }) {
2866
+ const tone = toneOf(slide, "brand");
2867
+ const a = accent("accent", tone.isLight);
2868
+ return /* @__PURE__ */ jsxRuntime.jsxs(SlideFrame, { slide, index, tone: "brand", children: [
2869
+ /* @__PURE__ */ jsxRuntime.jsx(
2870
+ SlideHeader,
2871
+ {
2872
+ eyebrow: slide.eyebrow,
2873
+ title: slide.title,
2874
+ subtitle: slide.subtitle
2875
+ }
2876
+ ),
2877
+ /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "mt-6 flex flex-col gap-2", children: slide.terms.map((term, i) => {
2878
+ const initial = term.term.charAt(0);
2879
+ const r = reveal(3 + i);
2880
+ return (
2881
+ // A <dl> group div may contain only <dt>/<dd> (axe dlitem).
2882
+ /* @__PURE__ */ jsxRuntime.jsxs(
2883
+ "div",
2884
+ {
2885
+ className: chunkS5RVSXDV_cjs.cn(
2886
+ r.className,
2887
+ "rounded-xl border p-3",
2888
+ tone.card,
2889
+ tone.hairline
2890
+ ),
2891
+ style: r.style,
2892
+ children: [
2893
+ /* @__PURE__ */ jsxRuntime.jsxs("dt", { className: "flex items-center gap-4 text-base font-bold sm:text-lg", children: [
2894
+ /* @__PURE__ */ jsxRuntime.jsx(
2895
+ "span",
2896
+ {
2897
+ "aria-hidden": "true",
2898
+ className: chunkS5RVSXDV_cjs.cn(
2899
+ "flex size-10 flex-none items-center justify-center rounded-lg border text-xl font-extrabold",
2900
+ a.soft,
2901
+ a.border,
2902
+ a.text
2903
+ ),
2904
+ children: initial
2905
+ }
2906
+ ),
2907
+ term.term
2908
+ ] }),
2909
+ /* @__PURE__ */ jsxRuntime.jsxs(
2910
+ "dd",
2911
+ {
2912
+ className: chunkS5RVSXDV_cjs.cn(
2913
+ "ms-14 mt-0.5 text-sm leading-relaxed",
2914
+ tone.muted
2915
+ ),
2916
+ children: [
2917
+ term.lead && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkS5RVSXDV_cjs.cn("font-semibold", tone.text), children: [
2918
+ term.lead,
2919
+ " "
2920
+ ] }),
2921
+ term.definition
2922
+ ]
2923
+ }
2924
+ )
2925
+ ]
2926
+ },
2927
+ term.term
2928
+ )
2929
+ );
2930
+ }) }),
2931
+ slide.source && /* @__PURE__ */ jsxRuntime.jsx(SourceLink, { source: slide.source, className: "mt-4" })
2932
+ ] });
2933
+ }
2934
+ function CopyLink({ url }) {
2935
+ const { labels } = useDeck();
2936
+ const tone = useTone();
2937
+ const [copied, setCopied] = React9__namespace.useState(false);
2938
+ React9__namespace.useEffect(() => {
2939
+ if (!copied) return;
2940
+ const t = setTimeout(() => setCopied(false), 2e3);
2941
+ return () => clearTimeout(t);
2942
+ }, [copied]);
2943
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2944
+ "div",
2945
+ {
2946
+ className: chunkS5RVSXDV_cjs.cn(
2947
+ "mt-8 flex w-full max-w-xl items-center gap-2 rounded-xl border p-2",
2948
+ tone.card,
2949
+ tone.hairline
2950
+ ),
2951
+ children: [
2952
+ /* @__PURE__ */ jsxRuntime.jsx("code", { className: "min-w-0 flex-1 truncate px-2 text-start text-sm", children: url }),
2953
+ /* @__PURE__ */ jsxRuntime.jsxs(
2954
+ "button",
2955
+ {
2956
+ type: "button",
2957
+ onClick: () => navigator.clipboard?.writeText(url).then(
2958
+ () => setCopied(true),
2959
+ () => {
2960
+ }
2961
+ ),
2962
+ className: chunkS5RVSXDV_cjs.cn(
2963
+ "inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm font-semibold",
2964
+ tone.isLight ? "bg-neutral-900 text-white" : "bg-white text-neutral-900"
2965
+ ),
2966
+ children: [
2967
+ copied ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { "aria-hidden": "true", className: "size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, { "aria-hidden": "true", className: "size-4" }),
2968
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-live": "polite", children: copied ? labels.copied : labels.copy })
2969
+ ]
2970
+ }
2971
+ )
2972
+ ]
2973
+ }
2974
+ );
2975
+ }
2976
+ function CtaButton({ link, primary }) {
2977
+ const { components } = useDeck();
2978
+ const tone = useTone();
2979
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2980
+ chunkXI74P5F2_cjs.TemplateAnchor,
2981
+ {
2982
+ href: link.href,
2983
+ trackingId: link.trackingId,
2984
+ components,
2985
+ className: chunkS5RVSXDV_cjs.cn(
2986
+ "inline-flex items-center gap-2 rounded-full px-6 py-3 text-sm font-semibold transition-colors",
2987
+ primary ? "bg-accent text-neutral-950 hover:opacity-90" : chunkS5RVSXDV_cjs.cn(
2988
+ "border",
2989
+ tone.hairline,
2990
+ tone.isLight ? "hover:bg-neutral-100" : "hover:bg-white/10"
2991
+ )
2992
+ ),
2993
+ children: [
2994
+ link.label,
2995
+ primary && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, { "aria-hidden": "true", className: "size-4 rtl:-scale-x-100" })
2996
+ ]
2997
+ }
2998
+ );
2999
+ }
3000
+ function ConclusionRenderer({
3001
+ slide,
3002
+ index
3003
+ }) {
3004
+ const tone = toneOf(slide, "brand");
3005
+ return /* @__PURE__ */ jsxRuntime.jsx(SlideFrame, { slide, index, tone: "brand", width: "sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center text-center", children: [
3006
+ slide.eyebrow && /* @__PURE__ */ jsxRuntime.jsx(Eyebrow, { children: slide.eyebrow }),
3007
+ /* @__PURE__ */ jsxRuntime.jsx(SlideTitle, { children: slide.title }),
3008
+ slide.body && /* @__PURE__ */ jsxRuntime.jsx(Subtitle, { className: "mx-auto", children: slide.body }),
3009
+ slide.highlights && slide.highlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(Highlights, { items: slide.highlights }),
3010
+ slide.takeaways && slide.takeaways.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
3011
+ "ul",
3012
+ {
3013
+ ...reveal(4),
3014
+ className: "mie-deck-reveal mt-10 flex flex-col gap-3 text-start",
3015
+ children: slide.takeaways.map((t) => /* @__PURE__ */ jsxRuntime.jsx(Bullet, { item: t }, t))
3016
+ }
3017
+ ),
3018
+ slide.share && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3019
+ slide.share.instructions && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-10 text-sm", tone.muted), children: slide.share.instructions }),
3020
+ /* @__PURE__ */ jsxRuntime.jsx(CopyLink, { url: slide.share.url })
3021
+ ] }),
3022
+ (slide.cta || slide.secondaryCta) && /* @__PURE__ */ jsxRuntime.jsxs(
3023
+ "div",
3024
+ {
3025
+ ...reveal(5),
3026
+ className: "mie-deck-reveal mt-12 flex flex-wrap items-center justify-center gap-4",
3027
+ children: [
3028
+ slide.cta && /* @__PURE__ */ jsxRuntime.jsx(CtaButton, { link: slide.cta, primary: true }),
3029
+ slide.secondaryCta && /* @__PURE__ */ jsxRuntime.jsx(CtaButton, { link: slide.secondaryCta })
3030
+ ]
3031
+ }
3032
+ ),
3033
+ (slide.preparedBy || slide.dateline) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-10 text-sm", tone.muted), children: [slide.preparedBy, slide.dateline].filter(Boolean).join(" \xB7 ") }),
3034
+ slide.confidentiality && /* @__PURE__ */ jsxRuntime.jsx(
3035
+ "p",
3036
+ {
3037
+ className: chunkS5RVSXDV_cjs.cn("mt-3 text-xs tracking-wider uppercase", tone.muted),
3038
+ children: slide.confidentiality
3039
+ }
3040
+ )
3041
+ ] }) });
3042
+ }
3043
+
3044
+ // src/components/Deck/registry.tsx
3045
+ var slideRenderers = {
3046
+ cover: CoverRenderer,
3047
+ "section-divider": SectionDividerRenderer,
3048
+ "table-of-contents": TableOfContentsRenderer,
3049
+ "bullet-list": BulletListRenderer,
3050
+ quote: QuoteRenderer,
3051
+ image: ImageRenderer,
3052
+ "definition-list": DefinitionListRenderer,
3053
+ conclusion: ConclusionRenderer,
3054
+ metrics: MetricsRenderer,
3055
+ chart: ChartRenderer,
3056
+ "feature-highlight": FeatureHighlightRenderer,
3057
+ "comparison-table": ComparisonTableRenderer,
3058
+ "impact-table": ImpactTableRenderer,
3059
+ cards: CardsRenderer,
3060
+ "ranked-list": RankedListRenderer,
3061
+ breakdown: BreakdownRenderer,
3062
+ cycle: CycleRenderer,
3063
+ roadmap: RoadmapRenderer,
3064
+ "adoption-curve": AdoptionCurveRenderer,
3065
+ diagram: DiagramRenderer,
3066
+ "certification-grid": CertificationGridRenderer,
3067
+ showcase: ShowcaseRenderer,
3068
+ tabs: TabsRenderer
3069
+ };
3070
+ var typingTarget = (el) => el instanceof HTMLElement && (["INPUT", "TEXTAREA", "SELECT"].includes(el.tagName) || el.isContentEditable || el.getAttribute("role") === "tab");
3071
+ var spaceActivates = (el) => el instanceof HTMLElement && (el.tagName === "BUTTON" || el.getAttribute("role") === "button");
3072
+ var Deck = React9__namespace.forwardRef(
3073
+ ({
3074
+ slides,
3075
+ meta,
3076
+ home,
3077
+ onSlideChange,
3078
+ renderers,
3079
+ graphics,
3080
+ components,
3081
+ icons,
3082
+ labels: labelOverrides,
3083
+ locale,
3084
+ syncHash = true,
3085
+ className,
3086
+ ...rest
3087
+ }, ref) => {
3088
+ const rootRef = React9__namespace.useRef(null);
3089
+ const scrollRef = React9__namespace.useRef(null);
3090
+ const touchStart = React9__namespace.useRef(null);
3091
+ const [active, setActive] = React9__namespace.useState(0);
3092
+ const [ready, setReady] = React9__namespace.useState(false);
3093
+ const [outline, setOutline] = React9__namespace.useState(false);
3094
+ const [fullscreen, setFullscreen] = React9__namespace.useState(false);
3095
+ const [hintPulse, setHintPulse] = React9__namespace.useState(0);
3096
+ const labels = React9__namespace.useMemo(
3097
+ () => ({ ...defaultDeckLabels, ...labelOverrides }),
3098
+ [labelOverrides]
3099
+ );
3100
+ const total = slides.length;
3101
+ React9__namespace.useImperativeHandle(ref, () => rootRef.current);
3102
+ const slideEl = React9__namespace.useCallback(
3103
+ (i) => scrollRef.current?.querySelector(
3104
+ `[data-slot="deck-slide"][data-index="${i}"]`
3105
+ ),
3106
+ []
3107
+ );
3108
+ const goTo = React9__namespace.useCallback(
3109
+ (i) => {
3110
+ const clamped = Math.max(0, Math.min(i, total - 1));
3111
+ const reduce = window.matchMedia?.(
3112
+ "(prefers-reduced-motion: reduce)"
3113
+ ).matches;
3114
+ slideEl(clamped)?.scrollIntoView({
3115
+ behavior: reduce ? "auto" : "smooth"
3116
+ });
3117
+ },
3118
+ [slideEl, total]
3119
+ );
3120
+ React9__namespace.useEffect(() => {
3121
+ const root = scrollRef.current;
3122
+ if (!root) return;
3123
+ const observer = new IntersectionObserver(
3124
+ (entries) => {
3125
+ for (const entry of entries) {
3126
+ if (!entry.isIntersecting) continue;
3127
+ const rootHeight = root.clientHeight || window.innerHeight;
3128
+ if (entry.intersectionRatio < 0.5 && entry.intersectionRect.height < rootHeight / 2)
3129
+ continue;
3130
+ const el = entry.target;
3131
+ el.dataset.seen = "";
3132
+ setActive(Number(el.dataset.index));
3133
+ }
3134
+ },
3135
+ { root, threshold: [0.1, 0.25, 0.5] }
3136
+ );
3137
+ root.querySelectorAll('[data-slot="deck-slide"]').forEach((el) => observer.observe(el));
3138
+ setReady(true);
3139
+ return () => observer.disconnect();
3140
+ }, [total]);
3141
+ React9__namespace.useEffect(() => {
3142
+ const raw = window.location.hash.slice(1);
3143
+ let hash = raw;
3144
+ try {
3145
+ hash = decodeURIComponent(raw);
3146
+ } catch {
3147
+ }
3148
+ if (!hash) return;
3149
+ const i = slides.findIndex((s, n) => slideAnchor(s, n) === hash);
3150
+ if (i > 0) requestAnimationFrame(() => slideEl(i)?.scrollIntoView());
3151
+ }, []);
3152
+ const reportedSlide = React9__namespace.useRef(-1);
3153
+ React9__namespace.useEffect(() => {
3154
+ const slide = slides[active];
3155
+ if (!slide) return;
3156
+ if (syncHash && ready) {
3157
+ const hash = `#${slideAnchor(slide, active)}`;
3158
+ if (window.location.hash !== hash)
3159
+ window.history.replaceState(window.history.state, "", hash);
3160
+ }
3161
+ if (reportedSlide.current !== active) {
3162
+ reportedSlide.current = active;
3163
+ onSlideChange?.(slide, active);
3164
+ }
3165
+ }, [active, slides, syncHash, ready]);
3166
+ const toggleFullscreen = React9__namespace.useCallback(() => {
3167
+ if (!document.fullscreenElement)
3168
+ rootRef.current?.requestFullscreen?.().catch(() => {
3169
+ });
3170
+ else document.exitFullscreen?.().catch(() => {
3171
+ });
3172
+ }, []);
3173
+ React9__namespace.useEffect(() => {
3174
+ const onChange = () => setFullscreen(!!document.fullscreenElement);
3175
+ document.addEventListener("fullscreenchange", onChange);
3176
+ return () => document.removeEventListener("fullscreenchange", onChange);
3177
+ }, []);
3178
+ React9__namespace.useEffect(() => {
3179
+ const onKey = (e) => {
3180
+ if (outline || e.defaultPrevented || e.metaKey || e.ctrlKey || e.altKey)
3181
+ return;
3182
+ if (typingTarget(e.target)) return;
3183
+ const key = e.key;
3184
+ if (key === " " && spaceActivates(e.target)) return;
3185
+ const rtl = chunkZ3WMDVMR_cjs.isRtl(rootRef.current);
3186
+ const nextKey = rtl ? "ArrowLeft" : "ArrowRight";
3187
+ const prevKey = rtl ? "ArrowRight" : "ArrowLeft";
3188
+ if (["ArrowDown", nextKey, "PageDown", " "].includes(key)) {
3189
+ e.preventDefault();
3190
+ goTo(active + 1);
3191
+ } else if (["ArrowUp", prevKey, "PageUp"].includes(key)) {
3192
+ e.preventDefault();
3193
+ goTo(active - 1);
3194
+ } else if (key === "Home") {
3195
+ e.preventDefault();
3196
+ goTo(0);
3197
+ } else if (key === "End") {
3198
+ e.preventDefault();
3199
+ goTo(total - 1);
3200
+ } else if (/^[1-9]$/.test(key)) {
3201
+ goTo(Number(key) - 1);
3202
+ } else if (key.toLowerCase() === "f") {
3203
+ toggleFullscreen();
3204
+ } else if (key === "?") {
3205
+ setHintPulse((p) => p + 1);
3206
+ }
3207
+ };
3208
+ window.addEventListener("keydown", onKey);
3209
+ return () => window.removeEventListener("keydown", onKey);
3210
+ }, [active, goTo, outline, toggleFullscreen, total]);
3211
+ const onTouchEnd = (e) => {
3212
+ if (touchStart.current === null) return;
3213
+ const delta = touchStart.current - e.changedTouches[0].clientY;
3214
+ touchStart.current = null;
3215
+ const el = slideEl(active);
3216
+ if (el && scrollRef.current && el.scrollHeight > scrollRef.current.clientHeight + 20)
3217
+ return;
3218
+ if (Math.abs(delta) > 120) goTo(active + (delta > 0 ? 1 : -1));
3219
+ };
3220
+ const context = React9__namespace.useMemo(
3221
+ () => ({
3222
+ slides,
3223
+ activeSlide: active,
3224
+ goTo,
3225
+ labels,
3226
+ components,
3227
+ icons,
3228
+ graphics,
3229
+ renderers,
3230
+ locale
3231
+ }),
3232
+ [
3233
+ slides,
3234
+ active,
3235
+ goTo,
3236
+ labels,
3237
+ components,
3238
+ icons,
3239
+ graphics,
3240
+ renderers,
3241
+ locale
3242
+ ]
3243
+ );
3244
+ const closeOutline = React9__namespace.useCallback(() => setOutline(false), []);
3245
+ const progress = total > 1 ? active / (total - 1) * 100 : 0;
3246
+ return /* @__PURE__ */ jsxRuntime.jsx(DeckProvider, { value: context, children: /* @__PURE__ */ jsxRuntime.jsxs(
3247
+ "div",
3248
+ {
3249
+ ref: rootRef,
3250
+ role: "region",
3251
+ "aria-roledescription": labels.presentation,
3252
+ "aria-label": meta.title,
3253
+ "data-slot": "deck",
3254
+ "data-ready": ready || void 0,
3255
+ className: chunkS5RVSXDV_cjs.cn(
3256
+ "mie-deck relative h-dvh w-full overflow-hidden bg-neutral-950 text-white",
3257
+ className
3258
+ ),
3259
+ ...rest,
3260
+ children: [
3261
+ /* @__PURE__ */ jsxRuntime.jsxs("h1", { className: "sr-only", children: [
3262
+ meta.title,
3263
+ meta.period ? ` \u2014 ${meta.period}` : ""
3264
+ ] }),
3265
+ home && /* @__PURE__ */ jsxRuntime.jsxs(
3266
+ chunkXI74P5F2_cjs.TemplateAnchor,
3267
+ {
3268
+ href: home.href,
3269
+ trackingId: home.trackingId,
3270
+ components,
3271
+ className: "mie-deck-chrome absolute start-3 top-3 z-50 inline-flex items-center gap-2 rounded-full border border-white/10 bg-black/25 py-1.5 ps-2 pe-3 text-xs font-semibold text-white/80 backdrop-blur transition-colors hover:bg-white/10 hover:text-white print:hidden",
3272
+ children: [
3273
+ home.logo && /* @__PURE__ */ jsxRuntime.jsx(
3274
+ chunkXI74P5F2_cjs.TemplateImg,
3275
+ {
3276
+ ...home.logo,
3277
+ alt: "",
3278
+ components,
3279
+ className: "size-[18px] object-contain"
3280
+ }
3281
+ ),
3282
+ home.label
3283
+ ]
3284
+ }
3285
+ ),
3286
+ /* @__PURE__ */ jsxRuntime.jsx(ProgressBar, { progress }),
3287
+ /* @__PURE__ */ jsxRuntime.jsx(DotNav, { slides, active, goTo, labels }),
3288
+ /* @__PURE__ */ jsxRuntime.jsx(
3289
+ SlideCounter,
3290
+ {
3291
+ active,
3292
+ total,
3293
+ section: slides[active]?.section
3294
+ }
3295
+ ),
3296
+ /* @__PURE__ */ jsxRuntime.jsx(KeyboardHints, { pulse: hintPulse, labels }),
3297
+ /* @__PURE__ */ jsxRuntime.jsx(
3298
+ Controls,
3299
+ {
3300
+ isFullscreen: fullscreen,
3301
+ onToggleFullscreen: toggleFullscreen,
3302
+ onOpenOutline: () => setOutline(true),
3303
+ labels
3304
+ }
3305
+ ),
3306
+ /* @__PURE__ */ jsxRuntime.jsx(
3307
+ "div",
3308
+ {
3309
+ ref: scrollRef,
3310
+ onTouchStart: (e) => {
3311
+ touchStart.current = e.touches[0].clientY;
3312
+ },
3313
+ onTouchEnd,
3314
+ className: "mie-deck-scroll size-full snap-y snap-mandatory overflow-y-auto",
3315
+ children: slides.map((slide, i) => {
3316
+ const Renderer = slide.type === "custom" ? renderers?.[slide.component] : renderers?.[slide.type] ?? slideRenderers[slide.type];
3317
+ return Renderer ? /* @__PURE__ */ jsxRuntime.jsx(Renderer, { slide, index: i }, slideAnchor(slide, i)) : null;
3318
+ })
3319
+ }
3320
+ ),
3321
+ /* @__PURE__ */ jsxRuntime.jsx(
3322
+ MobileNav,
3323
+ {
3324
+ active,
3325
+ total,
3326
+ onPrev: () => goTo(active - 1),
3327
+ onNext: () => goTo(active + 1),
3328
+ onOpenOutline: () => setOutline(true),
3329
+ labels
3330
+ }
3331
+ ),
3332
+ /* @__PURE__ */ jsxRuntime.jsx(
3333
+ OutlineDialog,
3334
+ {
3335
+ open: outline,
3336
+ onClose: closeOutline,
3337
+ slides,
3338
+ active,
3339
+ goTo,
3340
+ labels
3341
+ }
3342
+ )
3343
+ ]
3344
+ }
3345
+ ) });
3346
+ }
3347
+ );
3348
+ Deck.displayName = "Deck";
3349
+
3350
+ exports.Bullet = Bullet;
3351
+ exports.CountUp = CountUp;
3352
+ exports.Deck = Deck;
3353
+ exports.DeckIcon = DeckIcon;
3354
+ exports.Graphic = Graphic;
3355
+ exports.HighlightFigure = HighlightFigure;
3356
+ exports.IconChip = IconChip;
3357
+ exports.SlideCard = Card;
3358
+ exports.SlideEyebrow = Eyebrow;
3359
+ exports.SlideFrame = SlideFrame;
3360
+ exports.SlideHeader = SlideHeader;
3361
+ exports.SlideSubtitle = Subtitle;
3362
+ exports.SlideTitle = SlideTitle;
3363
+ exports.SourceLink = SourceLink;
3364
+ exports.defaultDeckLabels = defaultDeckLabels;
3365
+ exports.reveal = reveal;
3366
+ exports.slideAccent = accent;
3367
+ exports.slideAnchor = slideAnchor;
3368
+ exports.slideRenderers = slideRenderers;
3369
+ exports.slideTones = TONES;
3370
+ exports.toneOf = toneOf;
3371
+ exports.useDeck = useDeck;
3372
+ exports.useTone = useTone;
3373
+ //# sourceMappingURL=deck.cjs.map
3374
+ //# sourceMappingURL=deck.cjs.map