@mieweb/ui 0.10.0-dev.3 → 0.10.0-dev.30

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 (498) hide show
  1. package/README.md +4 -4
  2. package/agent/mieweb-ui.instructions.md +90 -1
  3. package/dist/CsvBlock-FX5YNGNE.cjs +17 -0
  4. package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-FX5YNGNE.cjs.map} +1 -1
  5. package/dist/CsvBlock-VLMG7GUO.js +8 -0
  6. package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-VLMG7GUO.js.map} +1 -1
  7. package/dist/HtmlPreviewBlock-5JE7L3GR.js +8 -0
  8. package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-5JE7L3GR.js.map} +1 -1
  9. package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +17 -0
  10. package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-UO37JQ3K.cjs.map} +1 -1
  11. package/dist/Input-yN516s5_.d.cts +3 -0
  12. package/dist/Input-yN516s5_.d.ts +3 -0
  13. package/dist/MermaidBlock-3XHFBAMV.js +8 -0
  14. package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-3XHFBAMV.js.map} +1 -1
  15. package/dist/MermaidBlock-RZ75RPZA.cjs +17 -0
  16. package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-RZ75RPZA.cjs.map} +1 -1
  17. package/dist/SurveyBlock-MUVJ3JUI.js +8 -0
  18. package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-MUVJ3JUI.js.map} +1 -1
  19. package/dist/SurveyBlock-VH47YXZC.cjs +17 -0
  20. package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-VH47YXZC.cjs.map} +1 -1
  21. package/dist/ag-grid.d.cts +142 -1
  22. package/dist/ag-grid.d.ts +142 -1
  23. package/dist/brands/bluehive.cjs +3 -3
  24. package/dist/brands/bluehive.css +3 -0
  25. package/dist/brands/bluehive.js +1 -1
  26. package/dist/brands/index.cjs +14 -14
  27. package/dist/brands/index.js +4 -4
  28. package/dist/{chunk-JYZW2PZS.cjs → chunk-254QK722.cjs} +7 -7
  29. package/dist/chunk-254QK722.cjs.map +1 -0
  30. package/dist/{chunk-VKELAMAZ.js → chunk-2JICT4A2.js} +27 -11
  31. package/dist/chunk-2JICT4A2.js.map +1 -0
  32. package/dist/{chunk-VPWJCJCX.cjs → chunk-35Y4ILCU.cjs} +7 -7
  33. package/dist/{chunk-VPWJCJCX.cjs.map → chunk-35Y4ILCU.cjs.map} +1 -1
  34. package/dist/{chunk-G3JX3UAU.cjs → chunk-3KPDQG5O.cjs} +5 -5
  35. package/dist/{chunk-G3JX3UAU.cjs.map → chunk-3KPDQG5O.cjs.map} +1 -1
  36. package/dist/{chunk-Y5HFM7LO.js → chunk-3RXZWHCU.js} +4 -4
  37. package/dist/{chunk-Y5HFM7LO.js.map → chunk-3RXZWHCU.js.map} +1 -1
  38. package/dist/chunk-3YBS4WUQ.js +52 -0
  39. package/dist/chunk-3YBS4WUQ.js.map +1 -0
  40. package/dist/{chunk-WNJRS7Y7.cjs → chunk-3ZWCIPFT.cjs} +4 -2
  41. package/dist/chunk-3ZWCIPFT.cjs.map +1 -0
  42. package/dist/chunk-4HC2IBOX.js +258 -0
  43. package/dist/chunk-4HC2IBOX.js.map +1 -0
  44. package/dist/chunk-4IS3QCOQ.cjs +453 -0
  45. package/dist/chunk-4IS3QCOQ.cjs.map +1 -0
  46. package/dist/chunk-4NCDU5IG.cjs +56 -0
  47. package/dist/chunk-4NCDU5IG.cjs.map +1 -0
  48. package/dist/{chunk-E4IBHYJ7.cjs → chunk-6N6LIAUJ.cjs} +9 -9
  49. package/dist/{chunk-E4IBHYJ7.cjs.map → chunk-6N6LIAUJ.cjs.map} +1 -1
  50. package/dist/{chunk-3M7TAXNR.js → chunk-6ZPTZTKN.js} +3 -3
  51. package/dist/{chunk-3M7TAXNR.js.map → chunk-6ZPTZTKN.js.map} +1 -1
  52. package/dist/{chunk-MWVW4APN.cjs → chunk-7UTBDFFL.cjs} +4 -4
  53. package/dist/{chunk-MWVW4APN.cjs.map → chunk-7UTBDFFL.cjs.map} +1 -1
  54. package/dist/{chunk-FJ7YPVKV.js → chunk-7X6R3JIA.js} +3 -3
  55. package/dist/{chunk-FJ7YPVKV.js.map → chunk-7X6R3JIA.js.map} +1 -1
  56. package/dist/{chunk-GOALNQZ2.js → chunk-7YO7DNUV.js} +4 -83
  57. package/dist/chunk-7YO7DNUV.js.map +1 -0
  58. package/dist/{chunk-P2CA3XGI.js → chunk-7ZV67VZE.js} +4 -4
  59. package/dist/{chunk-P2CA3XGI.js.map → chunk-7ZV67VZE.js.map} +1 -1
  60. package/dist/chunk-ADW7ZYCY.cjs +2707 -0
  61. package/dist/chunk-ADW7ZYCY.cjs.map +1 -0
  62. package/dist/{chunk-2G75X6TS.cjs → chunk-AHHFFXJR.cjs} +3 -3
  63. package/dist/{chunk-2G75X6TS.cjs.map → chunk-AHHFFXJR.cjs.map} +1 -1
  64. package/dist/{chunk-VILW53UZ.js → chunk-BIQ7GSO2.js} +3 -3
  65. package/dist/{chunk-VILW53UZ.js.map → chunk-BIQ7GSO2.js.map} +1 -1
  66. package/dist/chunk-BM35CACB.js +148 -0
  67. package/dist/chunk-BM35CACB.js.map +1 -0
  68. package/dist/chunk-BNH4SXJB.js +874 -0
  69. package/dist/chunk-BNH4SXJB.js.map +1 -0
  70. package/dist/{chunk-XEAT7XJG.cjs → chunk-BUT6MF5K.cjs} +29 -13
  71. package/dist/chunk-BUT6MF5K.cjs.map +1 -0
  72. package/dist/{chunk-UAMXCMST.cjs → chunk-CFI3TQMA.cjs} +3 -3
  73. package/dist/{chunk-UAMXCMST.cjs.map → chunk-CFI3TQMA.cjs.map} +1 -1
  74. package/dist/{chunk-J5CSLNCN.cjs → chunk-COM7RNZU.cjs} +2 -2
  75. package/dist/{chunk-J5CSLNCN.cjs.map → chunk-COM7RNZU.cjs.map} +1 -1
  76. package/dist/{chunk-XI34EGK5.cjs → chunk-CPPUT74P.cjs} +9 -9
  77. package/dist/{chunk-XI34EGK5.cjs.map → chunk-CPPUT74P.cjs.map} +1 -1
  78. package/dist/{chunk-ACCAXVOG.js → chunk-CRS2CQWM.js} +134 -56
  79. package/dist/chunk-CRS2CQWM.js.map +1 -0
  80. package/dist/{chunk-OE5CKRUC.js → chunk-D22GE27K.js} +4 -4
  81. package/dist/{chunk-OE5CKRUC.js.map → chunk-D22GE27K.js.map} +1 -1
  82. package/dist/chunk-DXEPYK3I.cjs +92 -0
  83. package/dist/chunk-DXEPYK3I.cjs.map +1 -0
  84. package/dist/{chunk-ZGRCSNPK.js → chunk-E2PBPQGS.js} +4 -4
  85. package/dist/{chunk-ZGRCSNPK.js.map → chunk-E2PBPQGS.js.map} +1 -1
  86. package/dist/{chunk-5JJ2DAE4.js → chunk-ENMXHZNE.js} +3 -3
  87. package/dist/{chunk-5JJ2DAE4.js.map → chunk-ENMXHZNE.js.map} +1 -1
  88. package/dist/{chunk-XCP454Q6.js → chunk-F4N67NAF.js} +12 -3
  89. package/dist/chunk-F4N67NAF.js.map +1 -0
  90. package/dist/chunk-FBCDYTWM.js +385 -0
  91. package/dist/chunk-FBCDYTWM.js.map +1 -0
  92. package/dist/{chunk-VU6UTJRM.js → chunk-FIKO4WR6.js} +3 -3
  93. package/dist/{chunk-VU6UTJRM.js.map → chunk-FIKO4WR6.js.map} +1 -1
  94. package/dist/{chunk-DEDN5HAG.js → chunk-FZURBQJ2.js} +3 -3
  95. package/dist/{chunk-DEDN5HAG.js.map → chunk-FZURBQJ2.js.map} +1 -1
  96. package/dist/{chunk-JHULS3EC.js → chunk-GBUVIGD5.js} +89 -3
  97. package/dist/chunk-GBUVIGD5.js.map +1 -0
  98. package/dist/chunk-GU5OS7JJ.cjs +281 -0
  99. package/dist/chunk-GU5OS7JJ.cjs.map +1 -0
  100. package/dist/{chunk-V7D3YGUV.js → chunk-GVLNXPJX.js} +4 -4
  101. package/dist/{chunk-V7D3YGUV.js.map → chunk-GVLNXPJX.js.map} +1 -1
  102. package/dist/chunk-GVM6DTR5.js +90 -0
  103. package/dist/chunk-GVM6DTR5.js.map +1 -0
  104. package/dist/{chunk-SQHMGT4W.js → chunk-GW4RFJZ5.js} +7 -7
  105. package/dist/chunk-GW4RFJZ5.js.map +1 -0
  106. package/dist/{chunk-3QEVGSFG.cjs → chunk-GYXUS65N.cjs} +5 -5
  107. package/dist/{chunk-3QEVGSFG.cjs.map → chunk-GYXUS65N.cjs.map} +1 -1
  108. package/dist/{chunk-WGPLUCBD.js → chunk-H2IAMSHK.js} +3 -3
  109. package/dist/{chunk-WGPLUCBD.js.map → chunk-H2IAMSHK.js.map} +1 -1
  110. package/dist/{chunk-JID7AZTO.cjs → chunk-H3ROMJYI.cjs} +4 -4
  111. package/dist/{chunk-JID7AZTO.cjs.map → chunk-H3ROMJYI.cjs.map} +1 -1
  112. package/dist/{chunk-GD7EBGC4.cjs → chunk-HC3NAN55.cjs} +19 -19
  113. package/dist/{chunk-GD7EBGC4.cjs.map → chunk-HC3NAN55.cjs.map} +1 -1
  114. package/dist/{chunk-7ZXAQTV4.cjs → chunk-HIZWOAWY.cjs} +8 -8
  115. package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-HIZWOAWY.cjs.map} +1 -1
  116. package/dist/{chunk-NV2CWBI2.cjs → chunk-IEY3ZJIT.cjs} +12 -3
  117. package/dist/chunk-IEY3ZJIT.cjs.map +1 -0
  118. package/dist/chunk-IT775BYG.js +179 -0
  119. package/dist/chunk-IT775BYG.js.map +1 -0
  120. package/dist/chunk-IYWG72DM.js +166 -0
  121. package/dist/chunk-IYWG72DM.js.map +1 -0
  122. package/dist/{chunk-2YCERQWC.js → chunk-JBIGSP2T.js} +6 -6
  123. package/dist/{chunk-2YCERQWC.js.map → chunk-JBIGSP2T.js.map} +1 -1
  124. package/dist/{chunk-IX6KFB3K.cjs → chunk-JELTRRR5.cjs} +9 -9
  125. package/dist/{chunk-IX6KFB3K.cjs.map → chunk-JELTRRR5.cjs.map} +1 -1
  126. package/dist/{chunk-YQDA366U.js → chunk-JHG3ELS2.js} +2 -2
  127. package/dist/{chunk-YQDA366U.js.map → chunk-JHG3ELS2.js.map} +1 -1
  128. package/dist/{chunk-WWJIW2IH.cjs → chunk-JSXIB6EJ.cjs} +4 -4
  129. package/dist/{chunk-WWJIW2IH.cjs.map → chunk-JSXIB6EJ.cjs.map} +1 -1
  130. package/dist/{chunk-WNM7IZJ7.js → chunk-K34DXMLZ.js} +7 -7
  131. package/dist/{chunk-WNM7IZJ7.js.map → chunk-K34DXMLZ.js.map} +1 -1
  132. package/dist/{chunk-FXO5ARBB.cjs → chunk-KDW6BD4O.cjs} +4 -4
  133. package/dist/{chunk-FXO5ARBB.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
  134. package/dist/{chunk-Z5V7SAZ4.js → chunk-KFEN2SRZ.js} +3 -3
  135. package/dist/{chunk-Z5V7SAZ4.js.map → chunk-KFEN2SRZ.js.map} +1 -1
  136. package/dist/{chunk-2QKBTPUC.cjs → chunk-KGKBZN3T.cjs} +8 -8
  137. package/dist/{chunk-2QKBTPUC.cjs.map → chunk-KGKBZN3T.cjs.map} +1 -1
  138. package/dist/{chunk-UV2FVNWT.cjs → chunk-LFPJ3OUM.cjs} +5 -5
  139. package/dist/{chunk-UV2FVNWT.cjs.map → chunk-LFPJ3OUM.cjs.map} +1 -1
  140. package/dist/{chunk-WNAA6CLE.cjs → chunk-LHBWRMNC.cjs} +94 -2
  141. package/dist/chunk-LHBWRMNC.cjs.map +1 -0
  142. package/dist/{chunk-JI244Y7C.js → chunk-MLAWXPRY.js} +190 -5
  143. package/dist/chunk-MLAWXPRY.js.map +1 -0
  144. package/dist/chunk-N7C4OEP7.cjs +356 -0
  145. package/dist/chunk-N7C4OEP7.cjs.map +1 -0
  146. package/dist/{chunk-WNZAYBVB.cjs → chunk-NKV76R65.cjs} +48 -48
  147. package/dist/{chunk-WNZAYBVB.cjs.map → chunk-NKV76R65.cjs.map} +1 -1
  148. package/dist/{chunk-PYJDVWXM.js → chunk-NUB5HRKS.js} +3 -3
  149. package/dist/{chunk-PYJDVWXM.js.map → chunk-NUB5HRKS.js.map} +1 -1
  150. package/dist/{chunk-LL6IWKI3.js → chunk-OW3SQJ7P.js} +3 -3
  151. package/dist/{chunk-LL6IWKI3.js.map → chunk-OW3SQJ7P.js.map} +1 -1
  152. package/dist/{chunk-5GUOOLPR.cjs → chunk-P5CMZZRZ.cjs} +5 -5
  153. package/dist/{chunk-5GUOOLPR.cjs.map → chunk-P5CMZZRZ.cjs.map} +1 -1
  154. package/dist/{chunk-3T7QGLNB.js → chunk-PJEL5ZZV.js} +4 -2
  155. package/dist/chunk-PJEL5ZZV.js.map +1 -0
  156. package/dist/{chunk-H4ZXMQQW.js → chunk-QOVJ6Z6R.js} +3 -3
  157. package/dist/{chunk-H4ZXMQQW.js.map → chunk-QOVJ6Z6R.js.map} +1 -1
  158. package/dist/{chunk-U42F3HLE.cjs → chunk-QURJVPRH.cjs} +190 -5
  159. package/dist/chunk-QURJVPRH.cjs.map +1 -0
  160. package/dist/{chunk-X4XPNTCZ.cjs → chunk-R5Z7AOVU.cjs} +136 -58
  161. package/dist/chunk-R5Z7AOVU.cjs.map +1 -0
  162. package/dist/{chunk-TMMVIUUN.js → chunk-R6KPWIGO.js} +4 -4
  163. package/dist/{chunk-TMMVIUUN.js.map → chunk-R6KPWIGO.js.map} +1 -1
  164. package/dist/{chunk-22CYDCXA.js → chunk-RM2HPQIC.js} +105 -14
  165. package/dist/chunk-RM2HPQIC.js.map +1 -0
  166. package/dist/{chunk-ENKFJJZX.js → chunk-SD7ONW6S.js} +6 -6
  167. package/dist/{chunk-ENKFJJZX.js.map → chunk-SD7ONW6S.js.map} +1 -1
  168. package/dist/{chunk-RJ6NTJHC.js → chunk-SRMTRD7F.js} +3 -3
  169. package/dist/{chunk-RJ6NTJHC.js.map → chunk-SRMTRD7F.js.map} +1 -1
  170. package/dist/chunk-T4JYUICS.js +2657 -0
  171. package/dist/chunk-T4JYUICS.js.map +1 -0
  172. package/dist/{chunk-7ZDPD5ZX.cjs → chunk-T4L7Q5FA.cjs} +7 -7
  173. package/dist/{chunk-7ZDPD5ZX.cjs.map → chunk-T4L7Q5FA.cjs.map} +1 -1
  174. package/dist/{chunk-NJ6MY6V5.js → chunk-T5BBZQ66.js} +3 -3
  175. package/dist/{chunk-NJ6MY6V5.js.map → chunk-T5BBZQ66.js.map} +1 -1
  176. package/dist/{chunk-2IZLKPUW.js → chunk-THLIL6PY.js} +3 -3
  177. package/dist/{chunk-2IZLKPUW.js.map → chunk-THLIL6PY.js.map} +1 -1
  178. package/dist/{chunk-SGFYA22I.cjs → chunk-TJCX4OML.cjs} +8 -8
  179. package/dist/{chunk-SGFYA22I.cjs.map → chunk-TJCX4OML.cjs.map} +1 -1
  180. package/dist/{chunk-N6IY47YA.cjs → chunk-TTSSUOEV.cjs} +8 -8
  181. package/dist/{chunk-N6IY47YA.cjs.map → chunk-TTSSUOEV.cjs.map} +1 -1
  182. package/dist/{chunk-5MCBWTIF.cjs → chunk-TYE5K5WV.cjs} +4 -4
  183. package/dist/{chunk-5MCBWTIF.cjs.map → chunk-TYE5K5WV.cjs.map} +1 -1
  184. package/dist/{chunk-VOKVG3ER.js → chunk-UBSH27C2.js} +4 -4
  185. package/dist/{chunk-VOKVG3ER.js.map → chunk-UBSH27C2.js.map} +1 -1
  186. package/dist/{chunk-TAXD5ADA.cjs → chunk-UEDTZYGI.cjs} +3 -3
  187. package/dist/{chunk-TAXD5ADA.cjs.map → chunk-UEDTZYGI.cjs.map} +1 -1
  188. package/dist/{chunk-UQ3VVR6A.cjs → chunk-UPWIJC6I.cjs} +3 -3
  189. package/dist/{chunk-UQ3VVR6A.cjs.map → chunk-UPWIJC6I.cjs.map} +1 -1
  190. package/dist/{chunk-S7WCHDBO.js → chunk-VCI2Y7ST.js} +3 -3
  191. package/dist/{chunk-S7WCHDBO.js.map → chunk-VCI2Y7ST.js.map} +1 -1
  192. package/dist/chunk-VINZZQBD.cjs +323 -0
  193. package/dist/chunk-VINZZQBD.cjs.map +1 -0
  194. package/dist/{chunk-OD47TTAW.cjs → chunk-VOQJHSXN.cjs} +9 -9
  195. package/dist/{chunk-OD47TTAW.cjs.map → chunk-VOQJHSXN.cjs.map} +1 -1
  196. package/dist/chunk-VPTASZ2O.cjs +171 -0
  197. package/dist/chunk-VPTASZ2O.cjs.map +1 -0
  198. package/dist/chunk-WXFGHDTV.cjs +896 -0
  199. package/dist/chunk-WXFGHDTV.cjs.map +1 -0
  200. package/dist/{chunk-VNYW4C4J.cjs → chunk-X6A27RGO.cjs} +4 -84
  201. package/dist/chunk-X6A27RGO.cjs.map +1 -0
  202. package/dist/chunk-XBTKZCZF.js +333 -0
  203. package/dist/chunk-XBTKZCZF.js.map +1 -0
  204. package/dist/chunk-XDIMTPZU.cjs +202 -0
  205. package/dist/chunk-XDIMTPZU.cjs.map +1 -0
  206. package/dist/chunk-XDU65GLW.js +21 -0
  207. package/dist/chunk-XDU65GLW.js.map +1 -0
  208. package/dist/chunk-XI74P5F2.cjs +424 -0
  209. package/dist/chunk-XI74P5F2.cjs.map +1 -0
  210. package/dist/{chunk-WIAQQNFU.cjs → chunk-XRVMYT5G.cjs} +106 -13
  211. package/dist/chunk-XRVMYT5G.cjs.map +1 -0
  212. package/dist/chunk-XVW5DPPP.js +429 -0
  213. package/dist/chunk-XVW5DPPP.js.map +1 -0
  214. package/dist/chunk-Y4E2WRUR.cjs +188 -0
  215. package/dist/chunk-Y4E2WRUR.cjs.map +1 -0
  216. package/dist/chunk-Y4QNLW7W.js +300 -0
  217. package/dist/chunk-Y4QNLW7W.js.map +1 -0
  218. package/dist/{chunk-6EN3IQQI.cjs → chunk-YRHBSSQ3.cjs} +6 -6
  219. package/dist/{chunk-6EN3IQQI.cjs.map → chunk-YRHBSSQ3.cjs.map} +1 -1
  220. package/dist/{chunk-KZFBQ7GY.js → chunk-YU55JD35.js} +3 -3
  221. package/dist/{chunk-KZFBQ7GY.js.map → chunk-YU55JD35.js.map} +1 -1
  222. package/dist/chunk-YW2AKBLS.cjs +23 -0
  223. package/dist/chunk-YW2AKBLS.cjs.map +1 -0
  224. package/dist/{chunk-ELPW32ZI.cjs → chunk-ZTMYKAVU.cjs} +45 -45
  225. package/dist/{chunk-ELPW32ZI.cjs.map → chunk-ZTMYKAVU.cjs.map} +1 -1
  226. package/dist/{chunk-3QGS6CXD.js → chunk-ZYL4SNOR.js} +3 -3
  227. package/dist/{chunk-3QGS6CXD.js.map → chunk-ZYL4SNOR.js.map} +1 -1
  228. package/dist/components/Alert/index.d.cts +1 -1
  229. package/dist/components/Alert/index.d.ts +1 -1
  230. package/dist/components/AlertDialog/index.cjs +6 -5
  231. package/dist/components/AlertDialog/index.d.cts +28 -3
  232. package/dist/components/AlertDialog/index.d.ts +28 -3
  233. package/dist/components/AlertDialog/index.js +5 -4
  234. package/dist/components/AudioRecorder/index.d.cts +2 -2
  235. package/dist/components/AudioRecorder/index.d.ts +2 -2
  236. package/dist/components/Autocomplete/index.d.cts +8 -2
  237. package/dist/components/Autocomplete/index.d.ts +8 -2
  238. package/dist/components/Avatar/index.d.cts +1 -1
  239. package/dist/components/Avatar/index.d.ts +1 -1
  240. package/dist/components/Badge/index.d.cts +1 -1
  241. package/dist/components/Badge/index.d.ts +1 -1
  242. package/dist/components/BoardView/index.cjs +24 -0
  243. package/dist/components/BoardView/index.cjs.map +1 -0
  244. package/dist/components/BoardView/index.d.cts +41 -0
  245. package/dist/components/BoardView/index.d.ts +41 -0
  246. package/dist/components/BoardView/index.js +7 -0
  247. package/dist/components/BoardView/index.js.map +1 -0
  248. package/dist/components/Button/index.cjs +4 -3
  249. package/dist/components/Button/index.d.cts +2 -1
  250. package/dist/components/Button/index.d.ts +2 -1
  251. package/dist/components/Button/index.js +2 -1
  252. package/dist/components/CalendarView/index.cjs +23 -0
  253. package/dist/components/CalendarView/index.cjs.map +1 -0
  254. package/dist/components/CalendarView/index.d.cts +39 -0
  255. package/dist/components/CalendarView/index.d.ts +39 -0
  256. package/dist/components/CalendarView/index.js +10 -0
  257. package/dist/components/CalendarView/index.js.map +1 -0
  258. package/dist/components/Card/index.d.cts +3 -3
  259. package/dist/components/Card/index.d.ts +3 -3
  260. package/dist/components/Collapsible/index.cjs +6 -6
  261. package/dist/components/Collapsible/index.js +3 -3
  262. package/dist/components/CountryCodeDropdown/index.cjs +5 -5
  263. package/dist/components/CountryCodeDropdown/index.js +2 -2
  264. package/dist/components/CustomizableDashboard/index.cjs +10 -9
  265. package/dist/components/CustomizableDashboard/index.js +3 -2
  266. package/dist/components/Dropdown/index.cjs +10 -10
  267. package/dist/components/Dropdown/index.d.cts +2 -1
  268. package/dist/components/Dropdown/index.d.ts +2 -1
  269. package/dist/components/Dropdown/index.js +3 -3
  270. package/dist/components/FloatingWindow/index.cjs +5 -4
  271. package/dist/components/FloatingWindow/index.js +3 -2
  272. package/dist/components/GanttView/index.cjs +20 -0
  273. package/dist/components/GanttView/index.cjs.map +1 -0
  274. package/dist/components/GanttView/index.d.cts +36 -0
  275. package/dist/components/GanttView/index.d.ts +36 -0
  276. package/dist/components/GanttView/index.js +7 -0
  277. package/dist/components/GanttView/index.js.map +1 -0
  278. package/dist/components/GlossaryTooltip/index.cjs +3 -3
  279. package/dist/components/GlossaryTooltip/index.js +2 -2
  280. package/dist/components/KeyboardShortcutsOverlay/index.cjs +5 -5
  281. package/dist/components/KeyboardShortcutsOverlay/index.js +3 -3
  282. package/dist/components/ListView/index.cjs +23 -0
  283. package/dist/components/ListView/index.cjs.map +1 -0
  284. package/dist/components/ListView/index.d.cts +124 -0
  285. package/dist/components/ListView/index.d.ts +124 -0
  286. package/dist/components/ListView/index.js +10 -0
  287. package/dist/components/ListView/index.js.map +1 -0
  288. package/dist/components/Markdown/index.cjs +20 -19
  289. package/dist/components/Markdown/index.js +8 -7
  290. package/dist/components/MediaEditor/index.cjs +15 -14
  291. package/dist/components/MediaEditor/index.d.cts +91 -2
  292. package/dist/components/MediaEditor/index.d.ts +91 -2
  293. package/dist/components/MediaEditor/index.js +10 -9
  294. package/dist/components/MediaFeed/index.cjs +26 -0
  295. package/dist/components/MediaFeed/index.cjs.map +1 -0
  296. package/dist/components/MediaFeed/index.d.cts +104 -0
  297. package/dist/components/MediaFeed/index.d.ts +104 -0
  298. package/dist/components/MediaFeed/index.js +17 -0
  299. package/dist/components/MediaFeed/index.js.map +1 -0
  300. package/dist/components/MediaPlayer/index.cjs +7 -6
  301. package/dist/components/MediaPlayer/index.d.cts +19 -1
  302. package/dist/components/MediaPlayer/index.d.ts +19 -1
  303. package/dist/components/MediaPlayer/index.js +4 -3
  304. package/dist/components/MegaMenu/index.cjs +6 -5
  305. package/dist/components/MegaMenu/index.js +3 -2
  306. package/dist/components/Modal/index.cjs +10 -10
  307. package/dist/components/Modal/index.js +2 -2
  308. package/dist/components/Pagination/index.d.cts +1 -1
  309. package/dist/components/Pagination/index.d.ts +1 -1
  310. package/dist/components/PhoneInput/index.d.cts +36 -3
  311. package/dist/components/PhoneInput/index.d.ts +36 -3
  312. package/dist/components/Progress/index.d.cts +1 -1
  313. package/dist/components/Progress/index.d.ts +1 -1
  314. package/dist/components/Q/index.d.cts +2 -2
  315. package/dist/components/Q/index.d.ts +2 -2
  316. package/dist/components/QuickAction/index.d.cts +1 -1
  317. package/dist/components/QuickAction/index.d.ts +1 -1
  318. package/dist/components/RadialExplorer/index.cjs +5 -4
  319. package/dist/components/RadialExplorer/index.js +4 -3
  320. package/dist/components/RecordButton/index.d.cts +1 -1
  321. package/dist/components/RecordButton/index.d.ts +1 -1
  322. package/dist/components/RichTextEditor/index.cjs +9 -8
  323. package/dist/components/RichTextEditor/index.d.cts +7 -2
  324. package/dist/components/RichTextEditor/index.d.ts +7 -2
  325. package/dist/components/RichTextEditor/index.js +6 -5
  326. package/dist/components/ScrollArea/index.d.cts +1 -1
  327. package/dist/components/ScrollArea/index.d.ts +1 -1
  328. package/dist/components/SectionSpyNav/index.cjs +4 -3
  329. package/dist/components/SectionSpyNav/index.js +3 -2
  330. package/dist/components/Select/index.cjs +4 -4
  331. package/dist/components/Select/index.d.cts +1 -2
  332. package/dist/components/Select/index.d.ts +1 -2
  333. package/dist/components/Select/index.js +2 -2
  334. package/dist/components/Skeleton/index.d.cts +1 -1
  335. package/dist/components/Skeleton/index.d.ts +1 -1
  336. package/dist/components/Slider/index.d.cts +2 -2
  337. package/dist/components/Slider/index.d.ts +2 -2
  338. package/dist/components/SliderCalculator/index.cjs +4 -4
  339. package/dist/components/SliderCalculator/index.js +2 -2
  340. package/dist/components/SourceTip/index.cjs +3 -3
  341. package/dist/components/SourceTip/index.js +2 -2
  342. package/dist/components/Spinner/index.d.cts +2 -2
  343. package/dist/components/Spinner/index.d.ts +2 -2
  344. package/dist/components/SuperChat/index.cjs +1378 -819
  345. package/dist/components/SuperChat/index.cjs.map +1 -1
  346. package/dist/components/SuperChat/index.d.cts +35 -8
  347. package/dist/components/SuperChat/index.d.ts +35 -8
  348. package/dist/components/SuperChat/index.js +1370 -811
  349. package/dist/components/SuperChat/index.js.map +1 -1
  350. package/dist/components/SuperChat/plugins/index.cjs +6 -6
  351. package/dist/components/SuperChat/plugins/index.d.cts +2 -3
  352. package/dist/components/SuperChat/plugins/index.d.ts +2 -3
  353. package/dist/components/SuperChat/plugins/index.js +5 -5
  354. package/dist/components/Text/index.d.cts +3 -3
  355. package/dist/components/Text/index.d.ts +3 -3
  356. package/dist/components/Textarea/index.d.cts +1 -2
  357. package/dist/components/Textarea/index.d.ts +1 -2
  358. package/dist/components/ThemeProvider/index.cjs +9 -9
  359. package/dist/components/ThemeProvider/index.d.cts +3 -1
  360. package/dist/components/ThemeProvider/index.d.ts +3 -1
  361. package/dist/components/ThemeProvider/index.js +3 -3
  362. package/dist/components/Tooltip/index.cjs +3 -3
  363. package/dist/components/Tooltip/index.js +2 -2
  364. package/dist/components/TranscriptView/index.d.cts +85 -4
  365. package/dist/components/TranscriptView/index.d.ts +85 -4
  366. package/dist/components/ViewSet/index.cjs +24 -0
  367. package/dist/components/ViewSet/index.cjs.map +1 -0
  368. package/dist/components/ViewSet/index.d.cts +200 -0
  369. package/dist/components/ViewSet/index.d.ts +200 -0
  370. package/dist/components/ViewSet/index.js +15 -0
  371. package/dist/components/ViewSet/index.js.map +1 -0
  372. package/dist/components/ViewSwitcher/index.cjs +20 -0
  373. package/dist/components/ViewSwitcher/index.cjs.map +1 -0
  374. package/dist/components/ViewSwitcher/index.d.cts +4 -0
  375. package/dist/components/ViewSwitcher/index.d.ts +4 -0
  376. package/dist/components/ViewSwitcher/index.js +7 -0
  377. package/dist/components/ViewSwitcher/index.js.map +1 -0
  378. package/dist/datavis.cjs +3 -2
  379. package/dist/datavis.cjs.map +1 -1
  380. package/dist/datavis.d.cts +167 -13
  381. package/dist/datavis.d.ts +167 -13
  382. package/dist/datavis.js +2 -1
  383. package/dist/datavis.js.map +1 -1
  384. package/dist/deck.cjs +3360 -0
  385. package/dist/deck.cjs.map +1 -0
  386. package/dist/deck.d.cts +712 -0
  387. package/dist/deck.d.ts +712 -0
  388. package/dist/deck.js +3316 -0
  389. package/dist/deck.js.map +1 -0
  390. package/dist/esheet.cjs +14 -13
  391. package/dist/esheet.cjs.map +1 -1
  392. package/dist/esheet.d.cts +183 -1
  393. package/dist/esheet.d.ts +183 -1
  394. package/dist/esheet.js +11 -10
  395. package/dist/esheet.js.map +1 -1
  396. package/dist/globe.cjs +2 -2
  397. package/dist/globe.js +1 -1
  398. package/dist/hooks/index.cjs +60 -27
  399. package/dist/hooks/index.d.cts +590 -31
  400. package/dist/hooks/index.d.ts +590 -31
  401. package/dist/hooks/index.js +6 -5
  402. package/dist/icons-wBacj6BW.d.cts +142 -0
  403. package/dist/icons-wBacj6BW.d.ts +142 -0
  404. package/dist/index-DoYYWsNc.d.cts +127 -0
  405. package/dist/index-DoYYWsNc.d.ts +127 -0
  406. package/dist/index.cjs +1420 -1048
  407. package/dist/index.cjs.map +1 -1
  408. package/dist/index.d.cts +8796 -482
  409. package/dist/index.d.ts +8796 -482
  410. package/dist/index.js +368 -232
  411. package/dist/index.js.map +1 -1
  412. package/dist/kerebron.cjs +58 -19
  413. package/dist/kerebron.cjs.map +1 -1
  414. package/dist/kerebron.css +115 -0
  415. package/dist/kerebron.d.cts +37 -0
  416. package/dist/kerebron.d.ts +37 -0
  417. package/dist/kerebron.js +58 -19
  418. package/dist/kerebron.js.map +1 -1
  419. package/dist/maps.cjs +160 -0
  420. package/dist/maps.cjs.map +1 -0
  421. package/dist/maps.d.cts +42 -0
  422. package/dist/maps.d.ts +42 -0
  423. package/dist/maps.js +138 -0
  424. package/dist/maps.js.map +1 -0
  425. package/dist/motion.cjs +7 -7
  426. package/dist/motion.d.cts +186 -2
  427. package/dist/motion.d.ts +186 -2
  428. package/dist/motion.js +2 -2
  429. package/dist/q.d.cts +25 -3
  430. package/dist/q.d.ts +25 -3
  431. package/dist/styles/effects.css +133 -0
  432. package/dist/styles/init.css +3 -0
  433. package/dist/styles.css +1 -1
  434. package/dist/tailwind-preset.cjs +4 -4
  435. package/dist/tailwind-preset.js +1 -1
  436. package/dist/templates.cjs +156 -0
  437. package/dist/templates.cjs.map +1 -0
  438. package/dist/templates.d.cts +734 -0
  439. package/dist/templates.d.ts +734 -0
  440. package/dist/templates.js +11 -0
  441. package/dist/templates.js.map +1 -0
  442. package/dist/types-Cx1FHLq2.d.cts +548 -0
  443. package/dist/types-Cx1FHLq2.d.ts +548 -0
  444. package/dist/types-DsdZvEI1.d.cts +92 -0
  445. package/dist/types-DsdZvEI1.d.ts +92 -0
  446. package/dist/utils/index.d.cts +13 -2
  447. package/dist/utils/index.d.ts +13 -2
  448. package/package.json +62 -13
  449. package/dist/Animated-XmH6k8pZ.d.cts +0 -188
  450. package/dist/Animated-XmH6k8pZ.d.ts +0 -188
  451. package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
  452. package/dist/CsvBlock-UWPMTLE2.js +0 -7
  453. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
  454. package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
  455. package/dist/MedicationEditor-Bp4NLy7y.d.cts +0 -352
  456. package/dist/MedicationEditor-Bp4NLy7y.d.ts +0 -352
  457. package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
  458. package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
  459. package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
  460. package/dist/SurveyBlock-4DO62RBT.js +0 -7
  461. package/dist/chunk-22CYDCXA.js.map +0 -1
  462. package/dist/chunk-3T7QGLNB.js.map +0 -1
  463. package/dist/chunk-6HFFWEM3.cjs +0 -22
  464. package/dist/chunk-6HFFWEM3.cjs.map +0 -1
  465. package/dist/chunk-ACCAXVOG.js.map +0 -1
  466. package/dist/chunk-GOALNQZ2.js.map +0 -1
  467. package/dist/chunk-HB7C7NB5.js +0 -20
  468. package/dist/chunk-HB7C7NB5.js.map +0 -1
  469. package/dist/chunk-JHULS3EC.js.map +0 -1
  470. package/dist/chunk-JI244Y7C.js.map +0 -1
  471. package/dist/chunk-JYZW2PZS.cjs.map +0 -1
  472. package/dist/chunk-NV2CWBI2.cjs.map +0 -1
  473. package/dist/chunk-SQHMGT4W.js.map +0 -1
  474. package/dist/chunk-U42F3HLE.cjs.map +0 -1
  475. package/dist/chunk-VKELAMAZ.js.map +0 -1
  476. package/dist/chunk-VNYW4C4J.cjs.map +0 -1
  477. package/dist/chunk-WIAQQNFU.cjs.map +0 -1
  478. package/dist/chunk-WNAA6CLE.cjs.map +0 -1
  479. package/dist/chunk-WNJRS7Y7.cjs.map +0 -1
  480. package/dist/chunk-X4XPNTCZ.cjs.map +0 -1
  481. package/dist/chunk-XCP454Q6.js.map +0 -1
  482. package/dist/chunk-XEAT7XJG.cjs.map +0 -1
  483. package/dist/html-MdxqSzjD.d.cts +0 -13
  484. package/dist/html-MdxqSzjD.d.ts +0 -13
  485. package/dist/orderRows-BUJYgSc7.d.cts +0 -221
  486. package/dist/orderRows-BUJYgSc7.d.ts +0 -221
  487. package/dist/transcript-Cg7uSW-C.d.cts +0 -84
  488. package/dist/transcript-Cg7uSW-C.d.ts +0 -84
  489. package/dist/types-B97JNRNQ.d.cts +0 -251
  490. package/dist/types-CnPEwzlp.d.cts +0 -254
  491. package/dist/types-CnPEwzlp.d.ts +0 -254
  492. package/dist/types-gZXrfLj6.d.ts +0 -251
  493. package/dist/useAnchoredPosition-CKwLSQW8.d.cts +0 -76
  494. package/dist/useAnchoredPosition-CKwLSQW8.d.ts +0 -76
  495. package/dist/useTheme-B9SWu6ui.d.cts +0 -24
  496. package/dist/useTheme-B9SWu6ui.d.ts +0 -24
  497. package/dist/useTranscriptEdits-CGzlemHT.d.cts +0 -182
  498. package/dist/useTranscriptEdits-D32bLs0l.d.ts +0 -182
@@ -0,0 +1,2707 @@
1
+ 'use strict';
2
+
3
+ var chunkXI74P5F2_cjs = require('./chunk-XI74P5F2.cjs');
4
+ var chunkZ5S5JEJD_cjs = require('./chunk-Z5S5JEJD.cjs');
5
+ var chunkYVL3XATO_cjs = require('./chunk-YVL3XATO.cjs');
6
+ var chunkDXEPYK3I_cjs = require('./chunk-DXEPYK3I.cjs');
7
+ var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
8
+ var React5 = require('react');
9
+ var lucideReact = require('lucide-react');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
12
+ function _interopNamespace(e) {
13
+ if (e && e.__esModule) return e;
14
+ var n = Object.create(null);
15
+ if (e) {
16
+ Object.keys(e).forEach(function (k) {
17
+ if (k !== 'default') {
18
+ var d = Object.getOwnPropertyDescriptor(e, k);
19
+ Object.defineProperty(n, k, d.get ? d : {
20
+ enumerable: true,
21
+ get: function () { return e[k]; }
22
+ });
23
+ }
24
+ });
25
+ }
26
+ n.default = e;
27
+ return Object.freeze(n);
28
+ }
29
+
30
+ var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
31
+
32
+ var cellClass = "px-3 py-3 sm:px-5 sm:py-4";
33
+ var ComparisonSection = React5__namespace.forwardRef(
34
+ ({
35
+ columns,
36
+ rows,
37
+ highlightColumn,
38
+ labels,
39
+ title,
40
+ tone = "default",
41
+ align = "center",
42
+ ...rest
43
+ }, ref) => {
44
+ const renderValue = (value) => typeof value === "string" ? value : value ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
45
+ /* @__PURE__ */ jsxRuntime.jsx(
46
+ lucideReact.Check,
47
+ {
48
+ "aria-hidden": "true",
49
+ className: "text-success mx-auto size-5",
50
+ strokeWidth: 2.5
51
+ }
52
+ ),
53
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: labels?.included ?? "Included" })
54
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
55
+ /* @__PURE__ */ jsxRuntime.jsx(
56
+ lucideReact.X,
57
+ {
58
+ "aria-hidden": "true",
59
+ className: chunkS5RVSXDV_cjs.cn("mx-auto size-5", chunkXI74P5F2_cjs.mutedTextClass(tone))
60
+ }
61
+ ),
62
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: labels?.notIncluded ?? "Not included" })
63
+ ] });
64
+ return /* @__PURE__ */ jsxRuntime.jsx(
65
+ chunkXI74P5F2_cjs.SectionShell,
66
+ {
67
+ ref,
68
+ "data-slot": "comparison-section",
69
+ title,
70
+ tone,
71
+ align,
72
+ ...rest,
73
+ children: /* @__PURE__ */ jsxRuntime.jsx(
74
+ "div",
75
+ {
76
+ className: chunkS5RVSXDV_cjs.cn("mt-12 overflow-x-auto rounded-2xl", chunkXI74P5F2_cjs.cardClass(tone)),
77
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
78
+ "table",
79
+ {
80
+ className: chunkS5RVSXDV_cjs.cn(
81
+ "w-full border-collapse text-start",
82
+ // Two value columns fit a phone; more scroll sideways.
83
+ columns.length > 2 && "min-w-[36rem]"
84
+ ),
85
+ children: [
86
+ title && /* @__PURE__ */ jsxRuntime.jsx("caption", { className: "sr-only", children: title }),
87
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
88
+ /* @__PURE__ */ jsxRuntime.jsx(
89
+ "th",
90
+ {
91
+ scope: "col",
92
+ className: chunkS5RVSXDV_cjs.cn(cellClass, "text-start text-sm font-semibold"),
93
+ children: labels?.feature ?? "Feature"
94
+ }
95
+ ),
96
+ columns.map((column, i) => /* @__PURE__ */ jsxRuntime.jsx(
97
+ "th",
98
+ {
99
+ scope: "col",
100
+ className: chunkS5RVSXDV_cjs.cn(
101
+ cellClass,
102
+ "text-center text-sm font-semibold",
103
+ i === highlightColumn && "bg-primary-800 text-white"
104
+ ),
105
+ children: column
106
+ },
107
+ column
108
+ ))
109
+ ] }) }),
110
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs(
111
+ "tr",
112
+ {
113
+ className: chunkS5RVSXDV_cjs.cn(
114
+ "border-t",
115
+ tone === "brand" ? "border-white/15" : "border-border"
116
+ ),
117
+ children: [
118
+ /* @__PURE__ */ jsxRuntime.jsx(
119
+ "th",
120
+ {
121
+ scope: "row",
122
+ className: chunkS5RVSXDV_cjs.cn(cellClass, "text-start font-medium"),
123
+ children: row.feature
124
+ }
125
+ ),
126
+ columns.map((column, i) => /* @__PURE__ */ jsxRuntime.jsx(
127
+ "td",
128
+ {
129
+ className: chunkS5RVSXDV_cjs.cn(
130
+ cellClass,
131
+ "text-center text-sm",
132
+ i === highlightColumn && "bg-primary-500/10 font-semibold"
133
+ ),
134
+ children: renderValue(row.values[i] ?? "")
135
+ },
136
+ column
137
+ ))
138
+ ]
139
+ },
140
+ row.feature
141
+ )) })
142
+ ]
143
+ }
144
+ )
145
+ }
146
+ )
147
+ }
148
+ );
149
+ }
150
+ );
151
+ ComparisonSection.displayName = "ComparisonSection";
152
+ var CtaSection = React5__namespace.forwardRef(
153
+ ({
154
+ eyebrow,
155
+ title,
156
+ description,
157
+ primaryCta,
158
+ secondaryCta,
159
+ note,
160
+ tone = "brand",
161
+ align = "center",
162
+ layout = "band",
163
+ components,
164
+ className,
165
+ ...rest
166
+ }, ref) => {
167
+ const titleId = React5__namespace.useId();
168
+ const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
169
+ /* @__PURE__ */ jsxRuntime.jsx(
170
+ chunkXI74P5F2_cjs.SectionHeading,
171
+ {
172
+ eyebrow,
173
+ title,
174
+ description,
175
+ align,
176
+ tone,
177
+ titleId
178
+ }
179
+ ),
180
+ /* @__PURE__ */ jsxRuntime.jsx(
181
+ chunkXI74P5F2_cjs.CtaLinks,
182
+ {
183
+ primary: primaryCta,
184
+ secondary: secondaryCta,
185
+ tone,
186
+ align,
187
+ components,
188
+ className: "mt-8"
189
+ }
190
+ ),
191
+ note && /* @__PURE__ */ jsxRuntime.jsx(
192
+ "p",
193
+ {
194
+ className: chunkS5RVSXDV_cjs.cn(
195
+ "mt-4 text-sm",
196
+ chunkXI74P5F2_cjs.mutedTextClass(tone),
197
+ align === "center" && "text-center"
198
+ ),
199
+ children: note
200
+ }
201
+ )
202
+ ] });
203
+ return /* @__PURE__ */ jsxRuntime.jsx(
204
+ "section",
205
+ {
206
+ ref,
207
+ "data-slot": "cta-section",
208
+ "data-tone": tone,
209
+ "aria-labelledby": titleId,
210
+ className: chunkS5RVSXDV_cjs.cn(
211
+ "py-16 sm:py-24",
212
+ layout === "band" ? chunkXI74P5F2_cjs.toneClass(tone) : "bg-background",
213
+ className
214
+ ),
215
+ ...rest,
216
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkXI74P5F2_cjs.containerClass(), children: layout === "panel" ? /* @__PURE__ */ jsxRuntime.jsx(
217
+ "div",
218
+ {
219
+ className: chunkS5RVSXDV_cjs.cn(
220
+ "rounded-3xl px-6 py-12 sm:px-12 sm:py-16",
221
+ chunkXI74P5F2_cjs.toneClass(tone),
222
+ tone !== "brand" && "border-border border"
223
+ ),
224
+ children: body
225
+ }
226
+ ) : body })
227
+ }
228
+ );
229
+ }
230
+ );
231
+ CtaSection.displayName = "CtaSection";
232
+ var FaqSection = React5__namespace.forwardRef(
233
+ ({ items, tone = "default", align = "center", ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
234
+ chunkXI74P5F2_cjs.SectionShell,
235
+ {
236
+ ref,
237
+ "data-slot": "faq-section",
238
+ tone,
239
+ align,
240
+ width: "narrow",
241
+ ...rest,
242
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-10 space-y-3", children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
243
+ "details",
244
+ {
245
+ id: item.id,
246
+ className: chunkS5RVSXDV_cjs.cn("group rounded-xl", chunkXI74P5F2_cjs.cardClass(tone)),
247
+ children: [
248
+ /* @__PURE__ */ jsxRuntime.jsxs(
249
+ "summary",
250
+ {
251
+ className: chunkS5RVSXDV_cjs.cn(
252
+ "flex cursor-pointer list-none items-center justify-between gap-4 rounded-xl px-5 py-4 text-start font-semibold",
253
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
254
+ "[&::-webkit-details-marker]:hidden"
255
+ ),
256
+ children: [
257
+ item.question,
258
+ /* @__PURE__ */ jsxRuntime.jsx(
259
+ lucideReact.ChevronDown,
260
+ {
261
+ "aria-hidden": "true",
262
+ className: "size-5 shrink-0 transition-transform group-open:rotate-180 motion-reduce:transition-none"
263
+ }
264
+ )
265
+ ]
266
+ }
267
+ ),
268
+ /* @__PURE__ */ jsxRuntime.jsx(
269
+ "div",
270
+ {
271
+ className: chunkS5RVSXDV_cjs.cn(
272
+ "px-5 pb-5 whitespace-pre-line",
273
+ chunkXI74P5F2_cjs.mutedTextClass(tone)
274
+ ),
275
+ children: item.answer
276
+ }
277
+ )
278
+ ]
279
+ },
280
+ item.id ?? item.question
281
+ )) })
282
+ }
283
+ )
284
+ );
285
+ FaqSection.displayName = "FaqSection";
286
+ var columnClass = {
287
+ 2: "lg:grid-cols-2",
288
+ 3: "lg:grid-cols-3",
289
+ 4: "lg:grid-cols-4"
290
+ };
291
+ var FeatureGridSection = React5__namespace.forwardRef(
292
+ ({
293
+ features,
294
+ columns = 3,
295
+ variant = "cards",
296
+ icons,
297
+ tone = "default",
298
+ align = "start",
299
+ components,
300
+ ...rest
301
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
302
+ chunkXI74P5F2_cjs.SectionShell,
303
+ {
304
+ ref,
305
+ "data-slot": "feature-grid-section",
306
+ tone,
307
+ align,
308
+ ...rest,
309
+ children: /* @__PURE__ */ jsxRuntime.jsx(
310
+ "ul",
311
+ {
312
+ className: chunkS5RVSXDV_cjs.cn("mt-12 grid gap-6 sm:grid-cols-2", columnClass[columns]),
313
+ children: features.map((feature) => /* @__PURE__ */ jsxRuntime.jsxs(
314
+ "li",
315
+ {
316
+ className: chunkS5RVSXDV_cjs.cn(
317
+ "flex flex-col gap-3",
318
+ variant === "cards" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone))
319
+ ),
320
+ children: [
321
+ feature.icon && /* @__PURE__ */ jsxRuntime.jsx(chunkXI74P5F2_cjs.IconTile, { name: feature.icon, icons, tone }),
322
+ feature.tag && /* @__PURE__ */ jsxRuntime.jsx(
323
+ "p",
324
+ {
325
+ className: chunkS5RVSXDV_cjs.cn(
326
+ "text-xs font-semibold tracking-wider uppercase",
327
+ chunkXI74P5F2_cjs.accentTextClass(tone)
328
+ ),
329
+ children: feature.tag
330
+ }
331
+ ),
332
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: feature.title }),
333
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkXI74P5F2_cjs.mutedTextClass(tone), children: feature.description }),
334
+ feature.link && /* @__PURE__ */ jsxRuntime.jsxs(
335
+ chunkXI74P5F2_cjs.TemplateAnchor,
336
+ {
337
+ href: feature.link.href,
338
+ trackingId: feature.link.trackingId,
339
+ components,
340
+ className: chunkS5RVSXDV_cjs.cn(
341
+ "mt-auto inline-flex items-center gap-1 font-semibold hover:underline",
342
+ chunkXI74P5F2_cjs.accentTextClass(tone)
343
+ ),
344
+ children: [
345
+ feature.link.label,
346
+ /* @__PURE__ */ jsxRuntime.jsx(
347
+ lucideReact.ArrowRight,
348
+ {
349
+ "aria-hidden": "true",
350
+ className: "size-4 rtl:-scale-x-100"
351
+ }
352
+ )
353
+ ]
354
+ }
355
+ )
356
+ ]
357
+ },
358
+ feature.title
359
+ ))
360
+ }
361
+ )
362
+ }
363
+ )
364
+ );
365
+ FeatureGridSection.displayName = "FeatureGridSection";
366
+ var HeroSection = React5__namespace.forwardRef(
367
+ ({
368
+ eyebrow,
369
+ title,
370
+ description,
371
+ variant = "centered",
372
+ tone = "default",
373
+ primaryCta,
374
+ secondaryCta,
375
+ ctaNote,
376
+ highlights,
377
+ meta,
378
+ logo,
379
+ image,
380
+ breadcrumbs,
381
+ headingLevel = "h1",
382
+ labels,
383
+ components,
384
+ className,
385
+ ...rest
386
+ }, ref) => {
387
+ const titleId = React5__namespace.useId();
388
+ const split = variant === "split" && !!image;
389
+ const align = split ? "start" : "center";
390
+ return /* @__PURE__ */ jsxRuntime.jsx(
391
+ "section",
392
+ {
393
+ ref,
394
+ "data-slot": "hero-section",
395
+ "data-tone": tone,
396
+ "aria-labelledby": titleId,
397
+ className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24 lg:py-28", chunkXI74P5F2_cjs.toneClass(tone), className),
398
+ ...rest,
399
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
400
+ "div",
401
+ {
402
+ className: chunkS5RVSXDV_cjs.cn(
403
+ chunkXI74P5F2_cjs.containerClass(),
404
+ split && "grid items-center gap-12 lg:grid-cols-2"
405
+ ),
406
+ children: [
407
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(!split && "flex flex-col items-center"), children: [
408
+ breadcrumbs && breadcrumbs.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
409
+ "nav",
410
+ {
411
+ "aria-label": labels?.breadcrumb ?? "Breadcrumb",
412
+ className: "mb-6",
413
+ children: /* @__PURE__ */ jsxRuntime.jsx(
414
+ "ol",
415
+ {
416
+ className: chunkS5RVSXDV_cjs.cn(
417
+ "flex flex-wrap items-center gap-1 text-sm",
418
+ chunkXI74P5F2_cjs.mutedTextClass(tone),
419
+ !split && "justify-center"
420
+ ),
421
+ children: breadcrumbs.map((crumb, i) => {
422
+ const last = i === breadcrumbs.length - 1;
423
+ return /* @__PURE__ */ jsxRuntime.jsx("li", { className: "flex items-center gap-1", children: last ? /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-current": "page", children: crumb.label }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
424
+ /* @__PURE__ */ jsxRuntime.jsx(
425
+ chunkXI74P5F2_cjs.TemplateAnchor,
426
+ {
427
+ href: crumb.href,
428
+ trackingId: crumb.trackingId,
429
+ components,
430
+ className: "hover:underline focus-visible:underline",
431
+ children: crumb.label
432
+ }
433
+ ),
434
+ /* @__PURE__ */ jsxRuntime.jsx(
435
+ lucideReact.ChevronRight,
436
+ {
437
+ "aria-hidden": "true",
438
+ className: "size-4 rtl:-scale-x-100"
439
+ }
440
+ )
441
+ ] }) }, crumb.href);
442
+ })
443
+ }
444
+ )
445
+ }
446
+ ),
447
+ logo && /* @__PURE__ */ jsxRuntime.jsx(
448
+ chunkXI74P5F2_cjs.TemplateImg,
449
+ {
450
+ ...logo,
451
+ components,
452
+ className: "mb-6 h-12 w-auto"
453
+ }
454
+ ),
455
+ /* @__PURE__ */ jsxRuntime.jsx(
456
+ chunkXI74P5F2_cjs.SectionHeading,
457
+ {
458
+ as: headingLevel,
459
+ size: "hero",
460
+ eyebrow,
461
+ title,
462
+ description,
463
+ align,
464
+ tone,
465
+ titleId
466
+ }
467
+ ),
468
+ meta && meta.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
469
+ "p",
470
+ {
471
+ "data-slot": "hero-meta",
472
+ className: chunkS5RVSXDV_cjs.cn(
473
+ "mt-6 flex flex-wrap gap-x-2 gap-y-1 text-sm font-medium",
474
+ chunkXI74P5F2_cjs.mutedTextClass(tone),
475
+ !split && "justify-center"
476
+ ),
477
+ children: meta.map((item, i) => /* @__PURE__ */ jsxRuntime.jsxs(React5__namespace.Fragment, { children: [
478
+ i > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: "\xB7" }),
479
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: item })
480
+ ] }, item))
481
+ }
482
+ ),
483
+ /* @__PURE__ */ jsxRuntime.jsx(
484
+ chunkXI74P5F2_cjs.CtaLinks,
485
+ {
486
+ primary: primaryCta,
487
+ secondary: secondaryCta,
488
+ tone,
489
+ align,
490
+ components,
491
+ className: "mt-8"
492
+ }
493
+ ),
494
+ ctaNote && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-4 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: ctaNote }),
495
+ highlights && highlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
496
+ "ul",
497
+ {
498
+ className: chunkS5RVSXDV_cjs.cn(
499
+ "mt-8 flex flex-wrap gap-x-6 gap-y-2 text-sm font-medium",
500
+ !split && "justify-center"
501
+ ),
502
+ children: highlights.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2", children: [
503
+ /* @__PURE__ */ jsxRuntime.jsx(
504
+ lucideReact.CircleCheck,
505
+ {
506
+ "aria-hidden": "true",
507
+ className: chunkS5RVSXDV_cjs.cn("size-4 shrink-0", chunkXI74P5F2_cjs.accentTextClass(tone))
508
+ }
509
+ ),
510
+ item
511
+ ] }, item))
512
+ }
513
+ )
514
+ ] }),
515
+ image && /* @__PURE__ */ jsxRuntime.jsx(
516
+ chunkXI74P5F2_cjs.TemplateImg,
517
+ {
518
+ ...image,
519
+ priority: true,
520
+ components,
521
+ className: chunkS5RVSXDV_cjs.cn(
522
+ "h-auto w-full rounded-2xl object-cover shadow-xl",
523
+ !split && "mx-auto mt-12 max-w-5xl"
524
+ )
525
+ }
526
+ )
527
+ ]
528
+ }
529
+ )
530
+ }
531
+ );
532
+ }
533
+ );
534
+ HeroSection.displayName = "HeroSection";
535
+ var defaultLeadFormFields = [
536
+ {
537
+ name: "firstName",
538
+ label: "First name",
539
+ required: true,
540
+ autoComplete: "given-name",
541
+ width: "half"
542
+ },
543
+ {
544
+ name: "lastName",
545
+ label: "Last name",
546
+ required: true,
547
+ autoComplete: "family-name",
548
+ width: "half"
549
+ },
550
+ {
551
+ name: "email",
552
+ label: "Work email",
553
+ type: "email",
554
+ required: true,
555
+ autoComplete: "email"
556
+ },
557
+ {
558
+ name: "company",
559
+ label: "Company",
560
+ required: true,
561
+ autoComplete: "organization"
562
+ }
563
+ ];
564
+ var controlClass = chunkS5RVSXDV_cjs.cn(
565
+ // Input's field styling (single source of truth for form controls); h-auto
566
+ // and py-2.5 because this one class also sizes <textarea> and <select>.
567
+ chunkZ5S5JEJD_cjs.inputVariants({ size: "md" }),
568
+ "block h-auto py-2.5"
569
+ );
570
+ var LeadFormSection = React5__namespace.forwardRef(
571
+ ({
572
+ eyebrow,
573
+ title,
574
+ description,
575
+ action,
576
+ method = "post",
577
+ fields = defaultLeadFormFields,
578
+ hiddenFields,
579
+ submitLabel = "Submit",
580
+ note,
581
+ layout = "split",
582
+ highlights,
583
+ tone = "muted",
584
+ submitTrackingId,
585
+ components,
586
+ className,
587
+ ...rest
588
+ }, ref) => {
589
+ const baseId = React5__namespace.useId();
590
+ const titleId = `${baseId}-title`;
591
+ const split = layout === "split";
592
+ const resolvedAction = typeof action === "string" ? chunkXI74P5F2_cjs.safeHref(action) : action;
593
+ if (resolvedAction == null) return null;
594
+ return /* @__PURE__ */ jsxRuntime.jsx(
595
+ "section",
596
+ {
597
+ ref,
598
+ "data-slot": "lead-form-section",
599
+ "data-tone": tone,
600
+ "aria-labelledby": titleId,
601
+ className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24", chunkXI74P5F2_cjs.toneClass(tone), className),
602
+ ...rest,
603
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
604
+ "div",
605
+ {
606
+ className: chunkS5RVSXDV_cjs.cn(
607
+ chunkXI74P5F2_cjs.containerClass(split ? "wide" : "narrow"),
608
+ split && "grid items-start gap-12 lg:grid-cols-2"
609
+ ),
610
+ children: [
611
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
612
+ /* @__PURE__ */ jsxRuntime.jsx(
613
+ chunkXI74P5F2_cjs.SectionHeading,
614
+ {
615
+ eyebrow,
616
+ title,
617
+ description,
618
+ align: split ? "start" : "center",
619
+ tone,
620
+ titleId
621
+ }
622
+ ),
623
+ highlights && highlights.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
624
+ "ul",
625
+ {
626
+ className: chunkS5RVSXDV_cjs.cn(
627
+ "mt-6 space-y-2",
628
+ !split && "mx-auto w-fit",
629
+ chunkXI74P5F2_cjs.mutedTextClass(tone)
630
+ ),
631
+ children: highlights.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2", children: [
632
+ /* @__PURE__ */ jsxRuntime.jsx(
633
+ lucideReact.CircleCheck,
634
+ {
635
+ "aria-hidden": "true",
636
+ className: chunkS5RVSXDV_cjs.cn(
637
+ "mt-0.5 size-4 shrink-0",
638
+ chunkXI74P5F2_cjs.accentTextClass(tone)
639
+ )
640
+ }
641
+ ),
642
+ item
643
+ ] }, item))
644
+ }
645
+ )
646
+ ] }),
647
+ /* @__PURE__ */ jsxRuntime.jsxs(
648
+ "form",
649
+ {
650
+ action: resolvedAction,
651
+ method: typeof resolvedAction === "string" ? method : void 0,
652
+ "aria-labelledby": titleId,
653
+ className: chunkS5RVSXDV_cjs.cn(
654
+ "grid gap-5 rounded-2xl p-6 sm:grid-cols-2 sm:p-8",
655
+ // The form card always uses the theme surface so inputs stay legible on a brand band.
656
+ chunkXI74P5F2_cjs.cardClass("default"),
657
+ !split && "mt-10"
658
+ ),
659
+ children: [
660
+ hiddenFields && Object.entries(hiddenFields).map(([name, value]) => /* @__PURE__ */ jsxRuntime.jsx("input", { type: "hidden", name, value }, name)),
661
+ fields.map((field) => {
662
+ const id = `${baseId}-${field.name}`;
663
+ const common = {
664
+ id,
665
+ name: field.name,
666
+ required: field.required,
667
+ autoComplete: field.autoComplete,
668
+ className: controlClass
669
+ };
670
+ return /* @__PURE__ */ jsxRuntime.jsxs(
671
+ "div",
672
+ {
673
+ className: chunkS5RVSXDV_cjs.cn(field.width !== "half" && "sm:col-span-2"),
674
+ children: [
675
+ /* @__PURE__ */ jsxRuntime.jsxs(
676
+ "label",
677
+ {
678
+ htmlFor: id,
679
+ className: "mb-1.5 block text-sm font-medium",
680
+ children: [
681
+ field.label,
682
+ field.required && /* @__PURE__ */ jsxRuntime.jsx(chunkZ5S5JEJD_cjs.RequiredMark, {})
683
+ ]
684
+ }
685
+ ),
686
+ field.type === "textarea" ? /* @__PURE__ */ jsxRuntime.jsx(
687
+ "textarea",
688
+ {
689
+ ...common,
690
+ rows: 4,
691
+ placeholder: field.placeholder
692
+ }
693
+ ) : field.type === "select" ? /* @__PURE__ */ jsxRuntime.jsxs("select", { ...common, defaultValue: "", children: [
694
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", disabled: true, children: field.placeholder ?? "" }),
695
+ field.options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option, children: option }, option))
696
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
697
+ "input",
698
+ {
699
+ ...common,
700
+ type: field.type ?? "text",
701
+ placeholder: field.placeholder
702
+ }
703
+ )
704
+ ]
705
+ },
706
+ field.name
707
+ );
708
+ }),
709
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sm:col-span-2", children: [
710
+ /* @__PURE__ */ jsxRuntime.jsx(
711
+ "button",
712
+ {
713
+ type: "submit",
714
+ "data-track": submitTrackingId,
715
+ className: chunkS5RVSXDV_cjs.cn(
716
+ chunkDXEPYK3I_cjs.buttonVariants({
717
+ variant: "primary",
718
+ size: "lg",
719
+ fullWidth: true
720
+ }),
721
+ "h-auto min-h-12 py-3 whitespace-normal"
722
+ ),
723
+ children: submitLabel
724
+ }
725
+ ),
726
+ note && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-xs", chunkXI74P5F2_cjs.mutedTextClass("default")), children: note })
727
+ ] })
728
+ ]
729
+ }
730
+ )
731
+ ]
732
+ }
733
+ )
734
+ }
735
+ );
736
+ }
737
+ );
738
+ LeadFormSection.displayName = "LeadFormSection";
739
+ var duration = { slow: "60s", normal: "40s", fast: "25s" };
740
+ function Logo({
741
+ logo,
742
+ tone,
743
+ hidden,
744
+ components
745
+ }) {
746
+ const mark = logo.src ? /* @__PURE__ */ jsxRuntime.jsx(
747
+ "img",
748
+ {
749
+ src: logo.src,
750
+ alt: hidden ? "" : logo.name,
751
+ loading: "lazy",
752
+ decoding: "async",
753
+ className: chunkS5RVSXDV_cjs.cn(
754
+ "h-8 w-auto max-w-[9rem] object-contain opacity-70 grayscale transition hover:opacity-100 hover:grayscale-0",
755
+ // Logos are drawn white on dark surfaces so dark wordmarks stay visible.
756
+ tone === "brand" ? "brightness-0 invert" : "dark:brightness-0 dark:invert"
757
+ )
758
+ }
759
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
760
+ "span",
761
+ {
762
+ className: chunkS5RVSXDV_cjs.cn(
763
+ "text-lg font-semibold whitespace-nowrap",
764
+ chunkXI74P5F2_cjs.mutedTextClass(tone ?? "default")
765
+ ),
766
+ children: logo.name
767
+ }
768
+ );
769
+ return logo.href ? /* @__PURE__ */ jsxRuntime.jsx(
770
+ chunkXI74P5F2_cjs.TemplateAnchor,
771
+ {
772
+ href: logo.href,
773
+ trackingId: logo.trackingId,
774
+ components,
775
+ tabIndex: hidden ? -1 : void 0,
776
+ className: "focus-visible:ring-ring inline-flex rounded focus-visible:ring-2 focus-visible:outline-none",
777
+ children: mark
778
+ }
779
+ ) : mark;
780
+ }
781
+ var LogoCloudSection = React5__namespace.forwardRef(
782
+ ({
783
+ logos,
784
+ variant = "grid",
785
+ speed = "normal",
786
+ tone = "default",
787
+ align = "center",
788
+ components,
789
+ ...rest
790
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
791
+ chunkXI74P5F2_cjs.SectionShell,
792
+ {
793
+ ref,
794
+ "data-slot": "logo-cloud-section",
795
+ tone,
796
+ align,
797
+ spacing: "compact",
798
+ ...rest,
799
+ children: variant === "marquee" ? /* @__PURE__ */ jsxRuntime.jsx(
800
+ "div",
801
+ {
802
+ className: "mie-marquee-host mt-8 overflow-hidden [mask-image:linear-gradient(90deg,transparent,black_10%,black_90%,transparent)]",
803
+ style: { "--mie-marquee-duration": duration[speed] },
804
+ children: /* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "mie-marquee flex w-max items-center", children: [
805
+ logos.map((logo) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "shrink-0 pe-12", children: /* @__PURE__ */ jsxRuntime.jsx(Logo, { logo, tone, components }) }, logo.name)),
806
+ logos.map((logo) => /* @__PURE__ */ jsxRuntime.jsx(
807
+ "li",
808
+ {
809
+ "data-duplicate": "",
810
+ "aria-hidden": "true",
811
+ className: "shrink-0 pe-12",
812
+ children: /* @__PURE__ */ jsxRuntime.jsx(Logo, { logo, tone, components, hidden: true })
813
+ },
814
+ `${logo.name}-copy`
815
+ ))
816
+ ] })
817
+ }
818
+ ) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-8 flex flex-wrap items-center justify-center gap-x-12 gap-y-8", children: logos.map((logo) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(Logo, { logo, tone, components }) }, logo.name)) })
819
+ }
820
+ )
821
+ );
822
+ LogoCloudSection.displayName = "LogoCloudSection";
823
+ var columnClass2 = [
824
+ "",
825
+ "lg:grid-cols-1",
826
+ "lg:grid-cols-2",
827
+ "lg:grid-cols-3",
828
+ "lg:grid-cols-4"
829
+ ];
830
+ var PricingSection = React5__namespace.forwardRef(
831
+ ({ plans, note, tone = "default", align = "center", components, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
832
+ chunkXI74P5F2_cjs.SectionShell,
833
+ {
834
+ ref,
835
+ "data-slot": "pricing-section",
836
+ tone,
837
+ align,
838
+ ...rest,
839
+ children: [
840
+ /* @__PURE__ */ jsxRuntime.jsx(
841
+ "ul",
842
+ {
843
+ className: chunkS5RVSXDV_cjs.cn(
844
+ "mt-12 grid items-stretch gap-6 md:grid-cols-2",
845
+ columnClass2[Math.min(plans.length, 4)],
846
+ plans.length === 1 && "mx-auto max-w-md"
847
+ ),
848
+ children: plans.map((plan) => /* @__PURE__ */ jsxRuntime.jsxs(
849
+ "li",
850
+ {
851
+ className: chunkS5RVSXDV_cjs.cn(
852
+ "relative flex flex-col rounded-2xl p-6 sm:p-8",
853
+ chunkXI74P5F2_cjs.cardClass(tone),
854
+ plan.highlighted && "ring-primary-600 dark:ring-primary-400 ring-2"
855
+ ),
856
+ children: [
857
+ plan.highlighted && plan.badge && /* @__PURE__ */ jsxRuntime.jsx(chunkYVL3XATO_cjs.Badge, { className: "bg-primary-800 dark:bg-primary-800 absolute start-6 -top-3 px-3 py-1 text-xs font-semibold text-white dark:text-white", children: plan.badge }),
858
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: plan.name }),
859
+ plan.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: plan.description }),
860
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-6 flex flex-wrap items-baseline gap-x-2", children: [
861
+ /* @__PURE__ */ jsxRuntime.jsx(
862
+ "span",
863
+ {
864
+ className: chunkS5RVSXDV_cjs.cn(
865
+ "text-4xl font-bold tracking-tight",
866
+ chunkXI74P5F2_cjs.headingTextClass(tone)
867
+ ),
868
+ children: plan.price
869
+ }
870
+ ),
871
+ plan.period && /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkS5RVSXDV_cjs.cn("text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: plan.period })
872
+ ] }),
873
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-6 flex-1 space-y-3 text-sm", children: plan.features.map((feature) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex gap-3", children: [
874
+ /* @__PURE__ */ jsxRuntime.jsx(
875
+ lucideReact.Check,
876
+ {
877
+ "aria-hidden": "true",
878
+ className: chunkS5RVSXDV_cjs.cn(
879
+ "mt-0.5 size-4 shrink-0",
880
+ chunkXI74P5F2_cjs.accentTextClass(tone)
881
+ )
882
+ }
883
+ ),
884
+ feature
885
+ ] }, feature)) }),
886
+ plan.cta && /* @__PURE__ */ jsxRuntime.jsx(
887
+ chunkXI74P5F2_cjs.TemplateAnchor,
888
+ {
889
+ href: plan.cta.href,
890
+ trackingId: plan.cta.trackingId,
891
+ components,
892
+ className: chunkS5RVSXDV_cjs.cn(
893
+ chunkDXEPYK3I_cjs.buttonVariants({
894
+ variant: plan.highlighted ? "primary" : "outline",
895
+ size: "lg",
896
+ fullWidth: true
897
+ }),
898
+ "mt-8 h-auto min-h-12 py-3 whitespace-normal",
899
+ tone === "brand" && (plan.highlighted ? "text-primary-900 hover:bg-primary-50 bg-white" : "border-white/70 text-white hover:bg-white/10 hover:text-white dark:border-white/70 dark:text-white")
900
+ ),
901
+ children: plan.cta.label
902
+ }
903
+ )
904
+ ]
905
+ },
906
+ plan.name
907
+ ))
908
+ }
909
+ ),
910
+ note && /* @__PURE__ */ jsxRuntime.jsx(
911
+ "p",
912
+ {
913
+ className: chunkS5RVSXDV_cjs.cn(
914
+ "mt-8 text-sm",
915
+ chunkXI74P5F2_cjs.mutedTextClass(tone),
916
+ align === "center" && "text-center"
917
+ ),
918
+ children: note
919
+ }
920
+ )
921
+ ]
922
+ }
923
+ )
924
+ );
925
+ PricingSection.displayName = "PricingSection";
926
+ var columnClass3 = [
927
+ "",
928
+ "",
929
+ "lg:grid-cols-2",
930
+ "lg:grid-cols-3",
931
+ "lg:grid-cols-4"
932
+ ];
933
+ var connectorInset = [
934
+ "",
935
+ "",
936
+ "inset-x-[25%]",
937
+ "inset-x-[16.667%]",
938
+ "inset-x-[12.5%]"
939
+ ];
940
+ var ProcessStepsSection = React5__namespace.forwardRef(({ steps, icons, tone = "default", align = "center", ...rest }, ref) => {
941
+ const columns = Math.min(steps.length, 4);
942
+ return /* @__PURE__ */ jsxRuntime.jsx(
943
+ chunkXI74P5F2_cjs.SectionShell,
944
+ {
945
+ ref,
946
+ "data-slot": "process-steps-section",
947
+ tone,
948
+ align,
949
+ ...rest,
950
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative mt-12", children: [
951
+ steps.length > 1 && steps.length <= 4 && /* @__PURE__ */ jsxRuntime.jsx(
952
+ "div",
953
+ {
954
+ "aria-hidden": "true",
955
+ className: chunkS5RVSXDV_cjs.cn(
956
+ "absolute top-6 hidden h-px lg:block",
957
+ connectorInset[columns],
958
+ tone === "brand" ? "bg-white/25" : "bg-border"
959
+ )
960
+ }
961
+ ),
962
+ /* @__PURE__ */ jsxRuntime.jsx("ol", { className: chunkS5RVSXDV_cjs.cn("relative grid gap-10", columnClass3[columns]), children: steps.map((step, i) => /* @__PURE__ */ jsxRuntime.jsxs(
963
+ "li",
964
+ {
965
+ className: "flex flex-col items-center text-center",
966
+ children: [
967
+ /* @__PURE__ */ jsxRuntime.jsx(
968
+ "span",
969
+ {
970
+ "aria-hidden": "true",
971
+ className: chunkS5RVSXDV_cjs.cn(
972
+ "flex size-12 items-center justify-center rounded-full text-lg font-bold",
973
+ tone === "brand" ? "text-primary-900 bg-white" : "bg-primary-800 text-white"
974
+ ),
975
+ children: step.icon ? /* @__PURE__ */ jsxRuntime.jsx(chunkXI74P5F2_cjs.TemplateIcon, { name: step.icon, icons }) : i + 1
976
+ }
977
+ ),
978
+ /* @__PURE__ */ jsxRuntime.jsx(
979
+ "h3",
980
+ {
981
+ className: chunkS5RVSXDV_cjs.cn(
982
+ "mt-5 text-lg font-semibold",
983
+ chunkXI74P5F2_cjs.headingTextClass(tone)
984
+ ),
985
+ children: step.title
986
+ }
987
+ ),
988
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-2 max-w-xs", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: step.description })
989
+ ]
990
+ },
991
+ step.title
992
+ )) })
993
+ ] })
994
+ }
995
+ );
996
+ });
997
+ ProcessStepsSection.displayName = "ProcessStepsSection";
998
+ var columnClass4 = {
999
+ 2: "lg:grid-cols-2",
1000
+ 3: "lg:grid-cols-3",
1001
+ 4: "lg:grid-cols-4"
1002
+ };
1003
+ var ResourceCardsSection = React5__namespace.forwardRef(
1004
+ ({
1005
+ items,
1006
+ columns = 3,
1007
+ viewAll,
1008
+ tone = "default",
1009
+ align = "start",
1010
+ components,
1011
+ ...rest
1012
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
1013
+ chunkXI74P5F2_cjs.SectionShell,
1014
+ {
1015
+ ref,
1016
+ "data-slot": "resource-cards-section",
1017
+ tone,
1018
+ align,
1019
+ ...rest,
1020
+ children: [
1021
+ /* @__PURE__ */ jsxRuntime.jsx(
1022
+ "ul",
1023
+ {
1024
+ className: chunkS5RVSXDV_cjs.cn("mt-12 grid gap-6 sm:grid-cols-2", columnClass4[columns]),
1025
+ children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
1026
+ "li",
1027
+ {
1028
+ className: chunkS5RVSXDV_cjs.cn(
1029
+ "group relative flex flex-col overflow-hidden rounded-2xl",
1030
+ "focus-within:ring-ring focus-within:ring-2",
1031
+ chunkXI74P5F2_cjs.cardClass(tone)
1032
+ ),
1033
+ children: [
1034
+ item.image && /* @__PURE__ */ jsxRuntime.jsx(
1035
+ chunkXI74P5F2_cjs.TemplateImg,
1036
+ {
1037
+ ...item.image,
1038
+ components,
1039
+ className: "aspect-video w-full object-cover"
1040
+ }
1041
+ ),
1042
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col gap-2 p-6", children: [
1043
+ item.kind && /* @__PURE__ */ jsxRuntime.jsx(
1044
+ "p",
1045
+ {
1046
+ className: chunkS5RVSXDV_cjs.cn(
1047
+ "text-xs font-semibold tracking-wider uppercase",
1048
+ chunkXI74P5F2_cjs.accentTextClass(tone)
1049
+ ),
1050
+ children: item.kind
1051
+ }
1052
+ ),
1053
+ /* @__PURE__ */ jsxRuntime.jsx(
1054
+ "h3",
1055
+ {
1056
+ className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)),
1057
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1058
+ chunkXI74P5F2_cjs.TemplateAnchor,
1059
+ {
1060
+ href: item.href,
1061
+ trackingId: item.trackingId,
1062
+ components,
1063
+ className: "group-hover:underline after:absolute after:inset-0 focus-visible:outline-none",
1064
+ children: item.title
1065
+ }
1066
+ )
1067
+ }
1068
+ ),
1069
+ item.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("line-clamp-3", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: item.excerpt }),
1070
+ item.meta && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-auto pt-2 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: item.meta })
1071
+ ] })
1072
+ ]
1073
+ },
1074
+ item.href
1075
+ ))
1076
+ }
1077
+ ),
1078
+ viewAll && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-10", align === "center" && "text-center"), children: /* @__PURE__ */ jsxRuntime.jsxs(
1079
+ chunkXI74P5F2_cjs.TemplateAnchor,
1080
+ {
1081
+ href: viewAll.href,
1082
+ trackingId: viewAll.trackingId,
1083
+ components,
1084
+ className: chunkS5RVSXDV_cjs.cn(
1085
+ "inline-flex items-center gap-1 font-semibold hover:underline",
1086
+ chunkXI74P5F2_cjs.accentTextClass(tone)
1087
+ ),
1088
+ children: [
1089
+ viewAll.label,
1090
+ /* @__PURE__ */ jsxRuntime.jsx(
1091
+ lucideReact.ArrowRight,
1092
+ {
1093
+ "aria-hidden": "true",
1094
+ className: "size-4 rtl:-scale-x-100"
1095
+ }
1096
+ )
1097
+ ]
1098
+ }
1099
+ ) })
1100
+ ]
1101
+ }
1102
+ )
1103
+ );
1104
+ ResourceCardsSection.displayName = "ResourceCardsSection";
1105
+ var SplitContentSection = React5__namespace.forwardRef(
1106
+ ({
1107
+ eyebrow,
1108
+ title,
1109
+ description,
1110
+ image,
1111
+ caption,
1112
+ bullets,
1113
+ primaryCta,
1114
+ secondaryCta,
1115
+ mediaPosition = "end",
1116
+ tone = "default",
1117
+ components,
1118
+ className,
1119
+ ...rest
1120
+ }, ref) => {
1121
+ const titleId = React5__namespace.useId();
1122
+ return /* @__PURE__ */ jsxRuntime.jsx(
1123
+ "section",
1124
+ {
1125
+ ref,
1126
+ "data-slot": "split-content-section",
1127
+ "data-tone": tone,
1128
+ "aria-labelledby": titleId,
1129
+ className: chunkS5RVSXDV_cjs.cn("py-16 sm:py-24", chunkXI74P5F2_cjs.toneClass(tone), className),
1130
+ ...rest,
1131
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1132
+ "div",
1133
+ {
1134
+ className: chunkS5RVSXDV_cjs.cn(
1135
+ chunkXI74P5F2_cjs.containerClass(),
1136
+ "grid items-center gap-12 lg:grid-cols-2"
1137
+ ),
1138
+ children: [
1139
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1140
+ /* @__PURE__ */ jsxRuntime.jsx(
1141
+ chunkXI74P5F2_cjs.SectionHeading,
1142
+ {
1143
+ eyebrow,
1144
+ title,
1145
+ description,
1146
+ tone,
1147
+ titleId
1148
+ }
1149
+ ),
1150
+ bullets && bullets.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-6 space-y-3", children: bullets.map((item) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex gap-3", children: [
1151
+ /* @__PURE__ */ jsxRuntime.jsx(
1152
+ lucideReact.CircleCheck,
1153
+ {
1154
+ "aria-hidden": "true",
1155
+ className: chunkS5RVSXDV_cjs.cn(
1156
+ "mt-0.5 size-5 shrink-0",
1157
+ chunkXI74P5F2_cjs.accentTextClass(tone)
1158
+ )
1159
+ }
1160
+ ),
1161
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkXI74P5F2_cjs.mutedTextClass(tone), children: item })
1162
+ ] }, item)) }),
1163
+ /* @__PURE__ */ jsxRuntime.jsx(
1164
+ chunkXI74P5F2_cjs.CtaLinks,
1165
+ {
1166
+ primary: primaryCta,
1167
+ secondary: secondaryCta,
1168
+ tone,
1169
+ components,
1170
+ className: "mt-8"
1171
+ }
1172
+ )
1173
+ ] }),
1174
+ /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: chunkS5RVSXDV_cjs.cn(mediaPosition === "start" && "lg:order-first"), children: [
1175
+ /* @__PURE__ */ jsxRuntime.jsx(
1176
+ chunkXI74P5F2_cjs.TemplateImg,
1177
+ {
1178
+ ...image,
1179
+ components,
1180
+ className: "h-auto w-full rounded-2xl object-cover shadow-lg"
1181
+ }
1182
+ ),
1183
+ caption && /* @__PURE__ */ jsxRuntime.jsx("figcaption", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: caption })
1184
+ ] })
1185
+ ]
1186
+ }
1187
+ )
1188
+ }
1189
+ );
1190
+ }
1191
+ );
1192
+ SplitContentSection.displayName = "SplitContentSection";
1193
+ var columnClass5 = [
1194
+ "",
1195
+ "",
1196
+ "lg:grid-cols-2",
1197
+ "lg:grid-cols-3",
1198
+ "lg:grid-cols-4"
1199
+ ];
1200
+ var StatsSection = React5__namespace.forwardRef(
1201
+ ({
1202
+ stats,
1203
+ variant = "plain",
1204
+ locale,
1205
+ tone = "default",
1206
+ align = "center",
1207
+ ...rest
1208
+ }, ref) => {
1209
+ const format = new Intl.NumberFormat(locale);
1210
+ return /* @__PURE__ */ jsxRuntime.jsx(
1211
+ chunkXI74P5F2_cjs.SectionShell,
1212
+ {
1213
+ ref,
1214
+ "data-slot": "stats-section",
1215
+ tone,
1216
+ align,
1217
+ ...rest,
1218
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1219
+ "dl",
1220
+ {
1221
+ className: chunkS5RVSXDV_cjs.cn(
1222
+ "mt-12 grid gap-6 sm:grid-cols-2",
1223
+ columnClass5[Math.min(stats.length, 4)]
1224
+ ),
1225
+ children: stats.map((stat) => {
1226
+ const Trend = stat.trend === "down" ? lucideReact.TrendingDown : lucideReact.TrendingUp;
1227
+ const ruled = variant === "ruled";
1228
+ const shown = typeof stat.value === "number" ? format.format(stat.value) : stat.value;
1229
+ const long = `${stat.prefix ?? ""}${shown}${stat.suffix ?? ""}`.length > 6;
1230
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1231
+ "div",
1232
+ {
1233
+ className: chunkS5RVSXDV_cjs.cn(
1234
+ "flex flex-col-reverse gap-2",
1235
+ align === "center" && !ruled && "items-center text-center",
1236
+ variant === "cards" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone)),
1237
+ ruled && "border-accent/70 border-s-2 ps-5"
1238
+ ),
1239
+ children: [
1240
+ /* @__PURE__ */ jsxRuntime.jsxs("dt", { children: [
1241
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: stat.label }),
1242
+ stat.description && /* @__PURE__ */ jsxRuntime.jsx(
1243
+ "span",
1244
+ {
1245
+ className: chunkS5RVSXDV_cjs.cn("mt-1 block text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)),
1246
+ children: stat.description
1247
+ }
1248
+ )
1249
+ ] }),
1250
+ /* @__PURE__ */ jsxRuntime.jsxs(
1251
+ "dd",
1252
+ {
1253
+ className: chunkS5RVSXDV_cjs.cn(
1254
+ "flex items-center gap-2 font-bold tracking-tight tabular-nums",
1255
+ ruled && long ? "text-2xl sm:text-3xl" : "text-4xl sm:text-5xl",
1256
+ tone === "brand" ? "text-white" : "text-primary-800 dark:text-primary-300"
1257
+ ),
1258
+ children: [
1259
+ stat.trend && /* @__PURE__ */ jsxRuntime.jsx(Trend, { "aria-hidden": "true", className: "size-7 shrink-0" }),
1260
+ stat.prefix,
1261
+ shown,
1262
+ stat.suffix
1263
+ ]
1264
+ }
1265
+ )
1266
+ ]
1267
+ },
1268
+ stat.label
1269
+ );
1270
+ })
1271
+ }
1272
+ )
1273
+ }
1274
+ );
1275
+ }
1276
+ );
1277
+ StatsSection.displayName = "StatsSection";
1278
+ var TestimonialSection = React5__namespace.forwardRef(
1279
+ ({
1280
+ testimonials,
1281
+ variant = "cards",
1282
+ labels,
1283
+ tone = "default",
1284
+ align = "center",
1285
+ components,
1286
+ ...rest
1287
+ }, ref) => {
1288
+ const featured = variant === "featured";
1289
+ const items = featured ? testimonials.slice(0, 1) : testimonials;
1290
+ return /* @__PURE__ */ jsxRuntime.jsx(
1291
+ chunkXI74P5F2_cjs.SectionShell,
1292
+ {
1293
+ ref,
1294
+ "data-slot": "testimonial-section",
1295
+ tone,
1296
+ align,
1297
+ width: featured ? "narrow" : "wide",
1298
+ ...rest,
1299
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1300
+ "ul",
1301
+ {
1302
+ className: chunkS5RVSXDV_cjs.cn(
1303
+ "mt-12 grid gap-6",
1304
+ !featured && "md:grid-cols-2 lg:grid-cols-3"
1305
+ ),
1306
+ children: items.map(({ rating, ...t }) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
1307
+ "figure",
1308
+ {
1309
+ className: chunkS5RVSXDV_cjs.cn(
1310
+ "flex h-full flex-col gap-6",
1311
+ featured ? "items-center text-center" : chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone))
1312
+ ),
1313
+ children: [
1314
+ rating && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-warning flex gap-0.5", children: [
1315
+ Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx(
1316
+ lucideReact.Star,
1317
+ {
1318
+ "aria-hidden": "true",
1319
+ className: chunkS5RVSXDV_cjs.cn(
1320
+ "size-4",
1321
+ i < rating ? "fill-current" : "opacity-30"
1322
+ )
1323
+ },
1324
+ i
1325
+ )),
1326
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: (labels?.rating ?? "Rated {rating} out of 5").replace(
1327
+ "{rating}",
1328
+ String(rating)
1329
+ ) })
1330
+ ] }),
1331
+ /* @__PURE__ */ jsxRuntime.jsx(
1332
+ "blockquote",
1333
+ {
1334
+ className: chunkS5RVSXDV_cjs.cn(
1335
+ "text-pretty",
1336
+ featured ? chunkS5RVSXDV_cjs.cn(
1337
+ "text-2xl font-medium sm:text-3xl",
1338
+ chunkXI74P5F2_cjs.headingTextClass(tone)
1339
+ ) : "text-base"
1340
+ ),
1341
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: t.quote })
1342
+ }
1343
+ ),
1344
+ /* @__PURE__ */ jsxRuntime.jsxs("figcaption", { className: "mt-auto flex items-center gap-3", children: [
1345
+ t.avatar && /* @__PURE__ */ jsxRuntime.jsx(
1346
+ chunkXI74P5F2_cjs.TemplateImg,
1347
+ {
1348
+ src: t.avatar,
1349
+ alt: "",
1350
+ width: 44,
1351
+ height: 44,
1352
+ components,
1353
+ className: "size-11 rounded-full object-cover"
1354
+ }
1355
+ ),
1356
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkS5RVSXDV_cjs.cn(!featured && "text-start"), children: [
1357
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block font-semibold", children: t.author }),
1358
+ (t.role || t.company) && /* @__PURE__ */ jsxRuntime.jsx(
1359
+ "span",
1360
+ {
1361
+ className: chunkS5RVSXDV_cjs.cn("block text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)),
1362
+ children: [t.role, t.company].filter(Boolean).join(", ")
1363
+ }
1364
+ )
1365
+ ] })
1366
+ ] })
1367
+ ]
1368
+ }
1369
+ ) }, `${t.author}-${t.quote.slice(0, 24)}`))
1370
+ }
1371
+ )
1372
+ }
1373
+ );
1374
+ }
1375
+ );
1376
+ TestimonialSection.displayName = "TestimonialSection";
1377
+ var VideoSection = React5__namespace.forwardRef(
1378
+ ({ video, caption, tone = "default", align = "center", ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1379
+ chunkXI74P5F2_cjs.SectionShell,
1380
+ {
1381
+ ref,
1382
+ "data-slot": "video-section",
1383
+ tone,
1384
+ align,
1385
+ ...rest,
1386
+ children: /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: "mx-auto mt-12 max-w-5xl", children: [
1387
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-2xl bg-neutral-900 shadow-xl", children: "youtubeId" in video ? /* @__PURE__ */ jsxRuntime.jsx(
1388
+ "iframe",
1389
+ {
1390
+ src: `https://www.youtube-nocookie.com/embed/${encodeURIComponent(video.youtubeId)}`,
1391
+ title: video.title,
1392
+ loading: "lazy",
1393
+ allow: "accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
1394
+ allowFullScreen: true,
1395
+ referrerPolicy: "strict-origin-when-cross-origin",
1396
+ className: "size-full border-0"
1397
+ }
1398
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1399
+ "video",
1400
+ {
1401
+ src: video.src,
1402
+ poster: video.poster,
1403
+ title: video.title,
1404
+ "aria-label": video.title,
1405
+ controls: true,
1406
+ preload: "none",
1407
+ className: "size-full object-cover",
1408
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1409
+ "track",
1410
+ {
1411
+ kind: "captions",
1412
+ src: video.captions.src,
1413
+ srcLang: video.captions.srcLang,
1414
+ label: video.captions.label,
1415
+ default: true
1416
+ }
1417
+ )
1418
+ }
1419
+ ) }),
1420
+ caption && /* @__PURE__ */ jsxRuntime.jsx(
1421
+ "figcaption",
1422
+ {
1423
+ className: chunkS5RVSXDV_cjs.cn(
1424
+ "mt-3 text-sm",
1425
+ chunkXI74P5F2_cjs.mutedTextClass(tone),
1426
+ align === "center" && "text-center"
1427
+ ),
1428
+ children: caption
1429
+ }
1430
+ )
1431
+ ] })
1432
+ }
1433
+ )
1434
+ );
1435
+ VideoSection.displayName = "VideoSection";
1436
+ var BenchmarkTableSection = React5__namespace.forwardRef(
1437
+ ({
1438
+ columns,
1439
+ rows,
1440
+ rowHeader,
1441
+ caption,
1442
+ footnote,
1443
+ locale,
1444
+ tone = "default",
1445
+ components,
1446
+ title,
1447
+ ...rest
1448
+ }, ref) => {
1449
+ const formatters = columns.map(
1450
+ (col) => new Intl.NumberFormat(locale, col.format)
1451
+ );
1452
+ const maxima = columns.map(
1453
+ (col) => col.bar ? Math.max(
1454
+ 1,
1455
+ ...rows.map((r) => {
1456
+ const v = r.values[col.key];
1457
+ return typeof v === "number" ? v : 0;
1458
+ })
1459
+ ) : 1
1460
+ );
1461
+ const cellBase = "px-4 py-3 tabular-nums";
1462
+ const stickyBg = tone === "brand" ? "bg-primary-900" : "bg-card";
1463
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1464
+ chunkXI74P5F2_cjs.SectionShell,
1465
+ {
1466
+ ref,
1467
+ "data-slot": "benchmark-table-section",
1468
+ tone,
1469
+ title,
1470
+ components,
1471
+ ...rest,
1472
+ children: [
1473
+ /* @__PURE__ */ jsxRuntime.jsx(
1474
+ "div",
1475
+ {
1476
+ className: chunkS5RVSXDV_cjs.cn("mt-10 overflow-x-auto rounded-2xl", chunkXI74P5F2_cjs.cardClass(tone)),
1477
+ children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "divide-border min-w-full divide-y text-sm", children: [
1478
+ (caption ?? title) && /* @__PURE__ */ jsxRuntime.jsx("caption", { className: "sr-only", children: caption ?? title }),
1479
+ /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1480
+ /* @__PURE__ */ jsxRuntime.jsx(
1481
+ "th",
1482
+ {
1483
+ scope: "col",
1484
+ className: chunkS5RVSXDV_cjs.cn(
1485
+ "sticky start-0 z-10 px-4 py-3 text-start font-semibold",
1486
+ stickyBg
1487
+ ),
1488
+ children: rowHeader
1489
+ }
1490
+ ),
1491
+ columns.map((col) => /* @__PURE__ */ jsxRuntime.jsx(
1492
+ "th",
1493
+ {
1494
+ scope: "col",
1495
+ className: chunkS5RVSXDV_cjs.cn(
1496
+ "px-4 py-3 font-semibold whitespace-nowrap",
1497
+ col.bar ? "text-start" : "text-end",
1498
+ col.emphasis && "bg-primary-500/10"
1499
+ ),
1500
+ children: col.label
1501
+ },
1502
+ col.key
1503
+ ))
1504
+ ] }) }),
1505
+ /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-border divide-y", children: rows.map((row) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1506
+ /* @__PURE__ */ jsxRuntime.jsxs(
1507
+ "th",
1508
+ {
1509
+ scope: "row",
1510
+ className: chunkS5RVSXDV_cjs.cn(
1511
+ "sticky start-0 z-10 px-4 py-3 text-start font-medium",
1512
+ stickyBg
1513
+ ),
1514
+ children: [
1515
+ row.href ? /* @__PURE__ */ jsxRuntime.jsx(
1516
+ chunkXI74P5F2_cjs.TemplateAnchor,
1517
+ {
1518
+ href: row.href,
1519
+ components,
1520
+ className: chunkS5RVSXDV_cjs.cn(
1521
+ "underline-offset-2 hover:underline",
1522
+ chunkXI74P5F2_cjs.accentTextClass(tone)
1523
+ ),
1524
+ children: row.label
1525
+ }
1526
+ ) : row.label,
1527
+ row.sublabel && /* @__PURE__ */ jsxRuntime.jsx(
1528
+ "span",
1529
+ {
1530
+ className: chunkS5RVSXDV_cjs.cn(
1531
+ "block text-xs font-normal",
1532
+ chunkXI74P5F2_cjs.mutedTextClass(tone)
1533
+ ),
1534
+ children: row.sublabel
1535
+ }
1536
+ )
1537
+ ]
1538
+ }
1539
+ ),
1540
+ columns.map((col, c) => {
1541
+ const v = row.values[col.key];
1542
+ const shown = v == null ? "\u2014" : typeof v === "number" ? formatters[c].format(v) : v;
1543
+ return /* @__PURE__ */ jsxRuntime.jsx(
1544
+ "td",
1545
+ {
1546
+ className: chunkS5RVSXDV_cjs.cn(
1547
+ cellBase,
1548
+ col.bar ? "text-start" : "text-end whitespace-nowrap",
1549
+ col.emphasis && chunkS5RVSXDV_cjs.cn(
1550
+ "bg-primary-500/10 font-semibold",
1551
+ chunkXI74P5F2_cjs.accentTextClass(tone)
1552
+ )
1553
+ ),
1554
+ children: col.bar && typeof v === "number" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-3", children: [
1555
+ /* @__PURE__ */ jsxRuntime.jsx(
1556
+ "span",
1557
+ {
1558
+ "aria-hidden": "true",
1559
+ className: "bg-muted h-2 w-32 max-w-full flex-none overflow-hidden rounded-full",
1560
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1561
+ "span",
1562
+ {
1563
+ className: "bg-primary-600 block h-full rounded-full",
1564
+ style: {
1565
+ width: `${Math.round(v / maxima[c] * 100)}%`
1566
+ }
1567
+ }
1568
+ )
1569
+ }
1570
+ ),
1571
+ shown
1572
+ ] }) : shown
1573
+ },
1574
+ col.key
1575
+ );
1576
+ })
1577
+ ] }, row.label)) })
1578
+ ] })
1579
+ }
1580
+ ),
1581
+ footnote && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-4 max-w-3xl text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: footnote })
1582
+ ]
1583
+ }
1584
+ );
1585
+ }
1586
+ );
1587
+ BenchmarkTableSection.displayName = "BenchmarkTableSection";
1588
+ var LinkGroupsSection = React5__namespace.forwardRef(({ groups, columns = 3, tone = "muted", components, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
1589
+ chunkXI74P5F2_cjs.SectionShell,
1590
+ {
1591
+ ref,
1592
+ "data-slot": "link-groups-section",
1593
+ tone,
1594
+ components,
1595
+ ...rest,
1596
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1597
+ "div",
1598
+ {
1599
+ className: chunkS5RVSXDV_cjs.cn(
1600
+ "mt-10 grid gap-6",
1601
+ columns === 3 ? "lg:grid-cols-3" : "md:grid-cols-2"
1602
+ ),
1603
+ children: groups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(
1604
+ "div",
1605
+ {
1606
+ className: chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone)),
1607
+ children: [
1608
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: group.title }),
1609
+ group.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: group.description }),
1610
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-4 space-y-1", children: group.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
1611
+ chunkXI74P5F2_cjs.TemplateAnchor,
1612
+ {
1613
+ href: link.href,
1614
+ trackingId: link.trackingId,
1615
+ components,
1616
+ className: chunkS5RVSXDV_cjs.cn(
1617
+ "group flex items-center justify-between gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors",
1618
+ tone === "brand" ? "hover:bg-white/10" : "hover:bg-primary-500/10 hover:text-primary-800 dark:hover:text-primary-300"
1619
+ ),
1620
+ children: [
1621
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: link.label }),
1622
+ /* @__PURE__ */ jsxRuntime.jsx(
1623
+ lucideReact.ArrowRight,
1624
+ {
1625
+ "aria-hidden": "true",
1626
+ className: "size-4 flex-none opacity-50 group-hover:opacity-100 rtl:-scale-x-100"
1627
+ }
1628
+ )
1629
+ ]
1630
+ }
1631
+ ) }, link.href)) })
1632
+ ]
1633
+ },
1634
+ group.title
1635
+ ))
1636
+ }
1637
+ )
1638
+ }
1639
+ ));
1640
+ LinkGroupsSection.displayName = "LinkGroupsSection";
1641
+ var MetricListSection = React5__namespace.forwardRef(
1642
+ ({
1643
+ metrics,
1644
+ takeaway,
1645
+ positive,
1646
+ labels,
1647
+ tone = "default",
1648
+ components,
1649
+ ...rest
1650
+ }, ref) => {
1651
+ const measured = metrics.some((m) => m.value);
1652
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1653
+ chunkXI74P5F2_cjs.SectionShell,
1654
+ {
1655
+ ref,
1656
+ "data-slot": "metric-list-section",
1657
+ "data-measured": measured || void 0,
1658
+ tone,
1659
+ spacing: "compact",
1660
+ status: measured ? "live" : "maturing",
1661
+ components,
1662
+ ...rest,
1663
+ children: [
1664
+ !measured && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 text-xs font-medium", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: labels?.preview ?? "Roadmap preview" }),
1665
+ takeaway && /* @__PURE__ */ jsxRuntime.jsx(
1666
+ "p",
1667
+ {
1668
+ className: chunkS5RVSXDV_cjs.cn(
1669
+ "mt-6 max-w-3xl rounded-xl border p-4 text-sm leading-relaxed font-medium",
1670
+ tone === "brand" ? "border-white/20 bg-white/5" : "border-success/30 bg-success/10 text-foreground"
1671
+ ),
1672
+ children: takeaway
1673
+ }
1674
+ ),
1675
+ /* @__PURE__ */ jsxRuntime.jsx(
1676
+ "ul",
1677
+ {
1678
+ className: chunkS5RVSXDV_cjs.cn(
1679
+ "mt-8 grid gap-4 sm:grid-cols-2 lg:grid-cols-3",
1680
+ !measured && "border-border rounded-3xl border border-dashed p-4"
1681
+ ),
1682
+ children: metrics.map((metric) => /* @__PURE__ */ jsxRuntime.jsxs(
1683
+ "li",
1684
+ {
1685
+ className: chunkS5RVSXDV_cjs.cn(
1686
+ "rounded-xl p-5",
1687
+ chunkXI74P5F2_cjs.cardClass(tone),
1688
+ positive && metric.value && "border-s-success border-s-4"
1689
+ ),
1690
+ children: [
1691
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
1692
+ /* @__PURE__ */ jsxRuntime.jsx(
1693
+ "h3",
1694
+ {
1695
+ className: chunkS5RVSXDV_cjs.cn(
1696
+ "min-w-0 text-sm font-semibold",
1697
+ chunkXI74P5F2_cjs.headingTextClass(tone)
1698
+ ),
1699
+ children: metric.label
1700
+ }
1701
+ ),
1702
+ metric.unit && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "bg-primary-500/10 flex-none rounded-full px-2 py-0.5 text-xs font-medium", children: metric.unit })
1703
+ ] }),
1704
+ metric.value && /* @__PURE__ */ jsxRuntime.jsx(
1705
+ "p",
1706
+ {
1707
+ className: chunkS5RVSXDV_cjs.cn(
1708
+ "mt-3 text-3xl font-bold tracking-tight tabular-nums",
1709
+ chunkXI74P5F2_cjs.headingTextClass(tone)
1710
+ ),
1711
+ children: metric.value
1712
+ }
1713
+ ),
1714
+ /* @__PURE__ */ jsxRuntime.jsx(
1715
+ "p",
1716
+ {
1717
+ className: chunkS5RVSXDV_cjs.cn(
1718
+ "mt-2 text-sm leading-relaxed",
1719
+ chunkXI74P5F2_cjs.mutedTextClass(tone)
1720
+ ),
1721
+ children: metric.description
1722
+ }
1723
+ )
1724
+ ]
1725
+ },
1726
+ metric.label
1727
+ ))
1728
+ }
1729
+ )
1730
+ ]
1731
+ }
1732
+ );
1733
+ }
1734
+ );
1735
+ MetricListSection.displayName = "MetricListSection";
1736
+ var PdfEmbedSection = React5__namespace.forwardRef(
1737
+ ({
1738
+ title,
1739
+ src,
1740
+ downloadAs,
1741
+ aspectRatio = 0.5625,
1742
+ notice,
1743
+ labels,
1744
+ tone = "muted",
1745
+ align = "center",
1746
+ components,
1747
+ ...rest
1748
+ }, ref) => {
1749
+ const pdfSrc = chunkXI74P5F2_cjs.safeHref(src);
1750
+ const viewerSrc = pdfSrc && (pdfSrc.includes("#") ? pdfSrc : `${pdfSrc}#view=FitH`);
1751
+ const onBrand = tone === "brand";
1752
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1753
+ chunkXI74P5F2_cjs.SectionShell,
1754
+ {
1755
+ ref,
1756
+ "data-slot": "pdf-embed-section",
1757
+ title,
1758
+ tone,
1759
+ align,
1760
+ components,
1761
+ ...rest,
1762
+ children: [
1763
+ notice && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "border-primary-500/30 bg-primary-500/10 mx-auto mt-8 flex max-w-3xl items-start gap-3 rounded-xl border px-4 py-3 text-start text-sm", children: [
1764
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, { "aria-hidden": "true", className: "mt-0.5 size-5 flex-none" }),
1765
+ notice
1766
+ ] }),
1767
+ pdfSrc && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1768
+ /* @__PURE__ */ jsxRuntime.jsx(
1769
+ "div",
1770
+ {
1771
+ className: "border-border bg-card relative mt-10 overflow-hidden rounded-2xl border shadow-lg",
1772
+ style: { paddingTop: `${(aspectRatio * 100).toFixed(4)}%` },
1773
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1774
+ "object",
1775
+ {
1776
+ data: viewerSrc,
1777
+ type: "application/pdf",
1778
+ "aria-label": title,
1779
+ className: "absolute inset-0 size-full",
1780
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1781
+ "p",
1782
+ {
1783
+ className: chunkS5RVSXDV_cjs.cn(
1784
+ "flex size-full items-center justify-center p-6 text-center text-sm",
1785
+ chunkXI74P5F2_cjs.mutedTextClass("default")
1786
+ ),
1787
+ children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: pdfSrc, className: "underline underline-offset-2", children: labels?.fallback ?? "Open the PDF" })
1788
+ }
1789
+ )
1790
+ }
1791
+ )
1792
+ }
1793
+ ),
1794
+ /* @__PURE__ */ jsxRuntime.jsxs(
1795
+ "div",
1796
+ {
1797
+ className: chunkS5RVSXDV_cjs.cn(
1798
+ "mt-6 flex flex-wrap gap-3",
1799
+ align === "center" && "justify-center"
1800
+ ),
1801
+ children: [
1802
+ /* @__PURE__ */ jsxRuntime.jsxs(
1803
+ "a",
1804
+ {
1805
+ href: pdfSrc,
1806
+ download: downloadAs ?? true,
1807
+ className: chunkS5RVSXDV_cjs.cn(
1808
+ chunkDXEPYK3I_cjs.buttonVariants({ variant: "primary" }),
1809
+ onBrand && "text-primary-900 hover:bg-primary-50 bg-white"
1810
+ ),
1811
+ children: [
1812
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { "aria-hidden": "true", className: "size-4" }),
1813
+ labels?.download ?? "Download PDF"
1814
+ ]
1815
+ }
1816
+ ),
1817
+ /* @__PURE__ */ jsxRuntime.jsxs(
1818
+ "a",
1819
+ {
1820
+ href: pdfSrc,
1821
+ target: "_blank",
1822
+ rel: "noopener noreferrer",
1823
+ className: chunkS5RVSXDV_cjs.cn(
1824
+ chunkDXEPYK3I_cjs.buttonVariants({ variant: "outline" }),
1825
+ onBrand && "border-white/70 text-white hover:bg-white/10"
1826
+ ),
1827
+ children: [
1828
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { "aria-hidden": "true", className: "size-4" }),
1829
+ labels?.open ?? "Open in new tab"
1830
+ ]
1831
+ }
1832
+ )
1833
+ ]
1834
+ }
1835
+ )
1836
+ ] })
1837
+ ]
1838
+ }
1839
+ );
1840
+ }
1841
+ );
1842
+ PdfEmbedSection.displayName = "PdfEmbedSection";
1843
+ var barClass = {
1844
+ primary: "bg-primary-600",
1845
+ accent: "bg-accent",
1846
+ success: "bg-success"
1847
+ };
1848
+ var RankedListSection = React5__namespace.forwardRef(
1849
+ ({
1850
+ lists,
1851
+ numbered,
1852
+ layout = "stacked",
1853
+ bar = "primary",
1854
+ locale,
1855
+ tone = "default",
1856
+ components,
1857
+ ...rest
1858
+ }, ref) => {
1859
+ const format = new Intl.NumberFormat(locale);
1860
+ return /* @__PURE__ */ jsxRuntime.jsx(
1861
+ chunkXI74P5F2_cjs.SectionShell,
1862
+ {
1863
+ ref,
1864
+ "data-slot": "ranked-list-section",
1865
+ tone,
1866
+ components,
1867
+ ...rest,
1868
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1869
+ "div",
1870
+ {
1871
+ className: chunkS5RVSXDV_cjs.cn(
1872
+ "mt-10 grid gap-6",
1873
+ lists.length > 1 && "lg:grid-cols-2"
1874
+ ),
1875
+ children: lists.map((list, l) => {
1876
+ const max = Math.max(1, ...list.items.map((i) => i.value));
1877
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1878
+ "div",
1879
+ {
1880
+ className: chunkS5RVSXDV_cjs.cn(
1881
+ layout === "inline" && chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone))
1882
+ ),
1883
+ children: [
1884
+ list.title && /* @__PURE__ */ jsxRuntime.jsx(
1885
+ "h3",
1886
+ {
1887
+ className: chunkS5RVSXDV_cjs.cn(
1888
+ "mb-4 text-lg font-semibold",
1889
+ chunkXI74P5F2_cjs.headingTextClass(tone)
1890
+ ),
1891
+ children: list.title
1892
+ }
1893
+ ),
1894
+ /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "space-y-3", children: list.items.map((item, i) => {
1895
+ const label = item.href ? /* @__PURE__ */ jsxRuntime.jsx(
1896
+ chunkXI74P5F2_cjs.TemplateAnchor,
1897
+ {
1898
+ href: item.href,
1899
+ components,
1900
+ className: chunkS5RVSXDV_cjs.cn(
1901
+ "font-medium underline-offset-2 hover:underline",
1902
+ chunkXI74P5F2_cjs.accentTextClass(tone)
1903
+ ),
1904
+ children: item.label
1905
+ }
1906
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1907
+ "span",
1908
+ {
1909
+ className: chunkS5RVSXDV_cjs.cn("font-medium", chunkXI74P5F2_cjs.headingTextClass(tone)),
1910
+ children: item.label
1911
+ }
1912
+ );
1913
+ const track = /* @__PURE__ */ jsxRuntime.jsx(
1914
+ "span",
1915
+ {
1916
+ "aria-hidden": "true",
1917
+ className: chunkS5RVSXDV_cjs.cn(
1918
+ "block h-2 overflow-hidden rounded-full",
1919
+ tone === "brand" ? "bg-white/10" : "bg-muted"
1920
+ ),
1921
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1922
+ "span",
1923
+ {
1924
+ className: chunkS5RVSXDV_cjs.cn(
1925
+ "block h-full rounded-full",
1926
+ barClass[bar]
1927
+ ),
1928
+ style: {
1929
+ width: `${Math.round(item.value / max * 100)}%`
1930
+ }
1931
+ }
1932
+ )
1933
+ }
1934
+ );
1935
+ const rank = numbered && /* @__PURE__ */ jsxRuntime.jsx(
1936
+ "span",
1937
+ {
1938
+ className: chunkS5RVSXDV_cjs.cn(
1939
+ "text-sm font-semibold tabular-nums",
1940
+ chunkXI74P5F2_cjs.mutedTextClass(tone)
1941
+ ),
1942
+ children: String(i + 1).padStart(2, "0")
1943
+ }
1944
+ );
1945
+ const value = item.display ?? format.format(item.value);
1946
+ return layout === "inline" ? /* @__PURE__ */ jsxRuntime.jsxs(
1947
+ "li",
1948
+ {
1949
+ className: "flex items-center gap-3 text-sm",
1950
+ children: [
1951
+ rank,
1952
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-28 flex-none truncate sm:w-36", children: label }),
1953
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: track }),
1954
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-20 flex-none text-end font-semibold tabular-nums", children: value })
1955
+ ]
1956
+ },
1957
+ item.label
1958
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(
1959
+ "li",
1960
+ {
1961
+ className: chunkS5RVSXDV_cjs.cn("rounded-xl p-4", chunkXI74P5F2_cjs.cardClass(tone)),
1962
+ children: [
1963
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-4", children: [
1964
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-3", children: [
1965
+ rank,
1966
+ label
1967
+ ] }),
1968
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: chunkS5RVSXDV_cjs.cn("text-xs", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
1969
+ item.note ?? value,
1970
+ item.note && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
1971
+ ": ",
1972
+ value
1973
+ ] })
1974
+ ] })
1975
+ ] }),
1976
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-2 block", children: track })
1977
+ ]
1978
+ },
1979
+ item.label
1980
+ );
1981
+ }) })
1982
+ ]
1983
+ },
1984
+ list.title ?? l
1985
+ );
1986
+ })
1987
+ }
1988
+ )
1989
+ }
1990
+ );
1991
+ }
1992
+ );
1993
+ RankedListSection.displayName = "RankedListSection";
1994
+ var ReportByline = React5__namespace.forwardRef(
1995
+ ({
1996
+ authors,
1997
+ published,
1998
+ updated,
1999
+ labels,
2000
+ tone = "default",
2001
+ components,
2002
+ className,
2003
+ ...rest
2004
+ }, ref) => {
2005
+ const headingId = React5__namespace.useId();
2006
+ return /* @__PURE__ */ jsxRuntime.jsx(
2007
+ "section",
2008
+ {
2009
+ ref,
2010
+ "data-slot": "report-byline",
2011
+ "data-tone": tone,
2012
+ "aria-labelledby": headingId,
2013
+ className: chunkS5RVSXDV_cjs.cn(
2014
+ "border-border border-t py-8",
2015
+ chunkXI74P5F2_cjs.toneClass(tone),
2016
+ className
2017
+ ),
2018
+ ...rest,
2019
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkXI74P5F2_cjs.containerClass(), children: [
2020
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { id: headingId, className: "sr-only", children: labels?.heading ?? "About the author" }),
2021
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-6", children: authors.map((author) => /* @__PURE__ */ jsxRuntime.jsxs(
2022
+ "li",
2023
+ {
2024
+ className: "flex flex-wrap items-center gap-4",
2025
+ children: [
2026
+ author.avatar && /* @__PURE__ */ jsxRuntime.jsx(
2027
+ chunkXI74P5F2_cjs.TemplateImg,
2028
+ {
2029
+ ...author.avatar,
2030
+ width: author.avatar.width ?? 48,
2031
+ height: author.avatar.height ?? 48,
2032
+ components,
2033
+ className: "ring-border size-12 flex-none rounded-full object-cover ring-1"
2034
+ }
2035
+ ),
2036
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
2037
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkS5RVSXDV_cjs.cn("text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
2038
+ labels?.by ?? "By",
2039
+ " ",
2040
+ author.href ? /* @__PURE__ */ jsxRuntime.jsx(
2041
+ chunkXI74P5F2_cjs.TemplateAnchor,
2042
+ {
2043
+ href: author.href,
2044
+ components,
2045
+ className: chunkS5RVSXDV_cjs.cn(
2046
+ "font-semibold underline-offset-2 hover:underline",
2047
+ chunkXI74P5F2_cjs.headingTextClass(tone)
2048
+ ),
2049
+ children: author.name
2050
+ }
2051
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
2052
+ "span",
2053
+ {
2054
+ className: chunkS5RVSXDV_cjs.cn("font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)),
2055
+ children: author.name
2056
+ }
2057
+ ),
2058
+ author.role && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
2059
+ " \xB7 ",
2060
+ author.role
2061
+ ] })
2062
+ ] }),
2063
+ (published || updated) && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: chunkS5RVSXDV_cjs.cn("text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
2064
+ published && `${labels?.published ?? "Published"} ${published}`,
2065
+ published && updated && " \xB7 ",
2066
+ updated && `${labels?.updated ?? "Updated"} ${updated}`
2067
+ ] })
2068
+ ] }),
2069
+ author.profiles && author.profiles.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ms-auto flex flex-wrap gap-2", children: author.profiles.map((profile) => {
2070
+ const href = chunkXI74P5F2_cjs.safeHref(profile.href);
2071
+ if (!href) return null;
2072
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2073
+ "a",
2074
+ {
2075
+ href,
2076
+ target: "_blank",
2077
+ rel: "noopener noreferrer",
2078
+ "data-track": profile.trackingId,
2079
+ className: "border-border hover:border-primary-600 hover:text-primary-800 dark:hover:text-primary-300 inline-flex items-center rounded-full border px-3 py-1.5 text-sm font-medium",
2080
+ children: [
2081
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
2082
+ author.name,
2083
+ " on "
2084
+ ] }),
2085
+ profile.label
2086
+ ]
2087
+ },
2088
+ profile.href
2089
+ );
2090
+ }) })
2091
+ ]
2092
+ },
2093
+ author.name
2094
+ )) })
2095
+ ] })
2096
+ }
2097
+ );
2098
+ }
2099
+ );
2100
+ ReportByline.displayName = "ReportByline";
2101
+ var ReportLegend = React5__namespace.forwardRef(
2102
+ ({
2103
+ entries,
2104
+ title = "How to read the data",
2105
+ tone = "muted",
2106
+ components,
2107
+ ...rest
2108
+ }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
2109
+ chunkXI74P5F2_cjs.SectionShell,
2110
+ {
2111
+ ref,
2112
+ "data-slot": "report-legend",
2113
+ title,
2114
+ tone,
2115
+ spacing: "compact",
2116
+ components,
2117
+ ...rest,
2118
+ children: /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "mt-6 grid gap-3 sm:grid-cols-2 lg:grid-cols-3", children: entries.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(
2119
+ "div",
2120
+ {
2121
+ className: chunkS5RVSXDV_cjs.cn(
2122
+ "flex flex-col gap-2 rounded-xl p-4",
2123
+ chunkXI74P5F2_cjs.cardClass(tone)
2124
+ ),
2125
+ children: [
2126
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { children: /* @__PURE__ */ jsxRuntime.jsx(
2127
+ chunkXI74P5F2_cjs.MetricStatusBadge,
2128
+ {
2129
+ status: entry.status,
2130
+ label: entry.label,
2131
+ onDark: tone === "brand"
2132
+ }
2133
+ ) }),
2134
+ /* @__PURE__ */ jsxRuntime.jsx("dd", { className: chunkS5RVSXDV_cjs.cn("text-sm leading-snug", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: entry.description })
2135
+ ]
2136
+ },
2137
+ entry.status
2138
+ )) })
2139
+ }
2140
+ )
2141
+ );
2142
+ ReportLegend.displayName = "ReportLegend";
2143
+ var ReportMethodology = React5__namespace.forwardRef(
2144
+ ({
2145
+ sources,
2146
+ citation,
2147
+ notes,
2148
+ resources,
2149
+ labels,
2150
+ tone = "muted",
2151
+ components,
2152
+ ...rest
2153
+ }, ref) => {
2154
+ const card = chunkS5RVSXDV_cjs.cn("rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone));
2155
+ const subheading = chunkS5RVSXDV_cjs.cn(
2156
+ "text-sm font-semibold tracking-wide uppercase",
2157
+ chunkXI74P5F2_cjs.mutedTextClass(tone)
2158
+ );
2159
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2160
+ chunkXI74P5F2_cjs.SectionShell,
2161
+ {
2162
+ ref,
2163
+ "data-slot": "report-methodology",
2164
+ tone,
2165
+ components,
2166
+ ...rest,
2167
+ children: [
2168
+ /* @__PURE__ */ jsxRuntime.jsx("dl", { className: "mt-10 grid gap-6 sm:grid-cols-2", children: sources.map((source) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: card, children: [
2169
+ /* @__PURE__ */ jsxRuntime.jsx("dt", { className: chunkS5RVSXDV_cjs.cn("font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: source.label }),
2170
+ /* @__PURE__ */ jsxRuntime.jsxs("dd", { className: chunkS5RVSXDV_cjs.cn("mt-2 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: [
2171
+ source.description,
2172
+ chunkXI74P5F2_cjs.safeHref(source.href) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2173
+ " ",
2174
+ /* @__PURE__ */ jsxRuntime.jsxs(
2175
+ "a",
2176
+ {
2177
+ href: chunkXI74P5F2_cjs.safeHref(source.href),
2178
+ rel: "noopener noreferrer",
2179
+ className: chunkS5RVSXDV_cjs.cn(
2180
+ "font-medium underline underline-offset-2",
2181
+ chunkXI74P5F2_cjs.accentTextClass(tone)
2182
+ ),
2183
+ children: [
2184
+ labels?.sourceLink ?? "Source",
2185
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
2186
+ ": ",
2187
+ source.label
2188
+ ] })
2189
+ ]
2190
+ }
2191
+ )
2192
+ ] })
2193
+ ] })
2194
+ ] }, source.label)) }),
2195
+ citation && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(card, "mt-10 border-dashed"), children: [
2196
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: subheading, children: labels?.citation ?? "How to cite this report" }),
2197
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 font-mono text-sm break-words select-all", children: citation })
2198
+ ] }),
2199
+ notes?.map((note) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(card, "mt-6"), children: [
2200
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: subheading, children: note.title }),
2201
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 max-w-3xl text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: note.body })
2202
+ ] }, note.title)),
2203
+ resources && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn(card, "mt-6"), children: [
2204
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: subheading, children: resources.title }),
2205
+ resources.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-3 max-w-3xl text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: resources.description }),
2206
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex flex-wrap gap-3", children: resources.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
2207
+ chunkXI74P5F2_cjs.TemplateAnchor,
2208
+ {
2209
+ href: link.href,
2210
+ trackingId: link.trackingId,
2211
+ components,
2212
+ className: chunkS5RVSXDV_cjs.cn(
2213
+ "border-border hover:border-primary-600 inline-flex items-center rounded-full border px-4 py-2 text-sm font-medium",
2214
+ chunkXI74P5F2_cjs.accentTextClass(tone)
2215
+ ),
2216
+ children: link.label
2217
+ },
2218
+ link.href
2219
+ )) })
2220
+ ] })
2221
+ ]
2222
+ }
2223
+ );
2224
+ }
2225
+ );
2226
+ ReportMethodology.displayName = "ReportMethodology";
2227
+
2228
+ // src/components/TileCartogramSection/tiles.ts
2229
+ var grid = [
2230
+ ["AK", "Alaska", 0, 0],
2231
+ ["ME", "Maine", 0, 10],
2232
+ ["VT", "Vermont", 1, 9],
2233
+ ["NH", "New Hampshire", 1, 10],
2234
+ ["WA", "Washington", 2, 0],
2235
+ ["ID", "Idaho", 2, 1],
2236
+ ["MT", "Montana", 2, 2],
2237
+ ["ND", "North Dakota", 2, 3],
2238
+ ["MN", "Minnesota", 2, 4],
2239
+ ["IL", "Illinois", 2, 5],
2240
+ ["WI", "Wisconsin", 2, 6],
2241
+ ["MI", "Michigan", 2, 8],
2242
+ ["NY", "New York", 2, 9],
2243
+ ["MA", "Massachusetts", 2, 10],
2244
+ ["OR", "Oregon", 3, 0],
2245
+ ["NV", "Nevada", 3, 1],
2246
+ ["WY", "Wyoming", 3, 2],
2247
+ ["SD", "South Dakota", 3, 3],
2248
+ ["IA", "Iowa", 3, 4],
2249
+ ["IN", "Indiana", 3, 5],
2250
+ ["OH", "Ohio", 3, 6],
2251
+ ["PA", "Pennsylvania", 3, 7],
2252
+ ["NJ", "New Jersey", 3, 8],
2253
+ ["CT", "Connecticut", 3, 9],
2254
+ ["RI", "Rhode Island", 3, 10],
2255
+ ["CA", "California", 4, 0],
2256
+ ["UT", "Utah", 4, 1],
2257
+ ["CO", "Colorado", 4, 2],
2258
+ ["NE", "Nebraska", 4, 3],
2259
+ ["MO", "Missouri", 4, 4],
2260
+ ["KY", "Kentucky", 4, 5],
2261
+ ["WV", "West Virginia", 4, 6],
2262
+ ["VA", "Virginia", 4, 7],
2263
+ ["MD", "Maryland", 4, 8],
2264
+ ["DE", "Delaware", 4, 9],
2265
+ ["AZ", "Arizona", 5, 1],
2266
+ ["NM", "New Mexico", 5, 2],
2267
+ ["KS", "Kansas", 5, 3],
2268
+ ["AR", "Arkansas", 5, 4],
2269
+ ["TN", "Tennessee", 5, 5],
2270
+ ["NC", "North Carolina", 5, 6],
2271
+ ["SC", "South Carolina", 5, 7],
2272
+ ["DC", "District of Columbia", 5, 8],
2273
+ ["OK", "Oklahoma", 6, 3],
2274
+ ["LA", "Louisiana", 6, 4],
2275
+ ["MS", "Mississippi", 6, 5],
2276
+ ["AL", "Alabama", 6, 6],
2277
+ ["GA", "Georgia", 6, 7],
2278
+ ["HI", "Hawaii", 7, 0],
2279
+ ["TX", "Texas", 7, 3],
2280
+ ["FL", "Florida", 7, 7]
2281
+ ];
2282
+ var usStateTiles = grid.map(
2283
+ ([code, name, row, col]) => ({ code, name, row, col })
2284
+ );
2285
+ function quartileBuckets(values) {
2286
+ const sorted = Object.values(values).filter((v) => typeof v === "number").sort((a, b) => a - b);
2287
+ const q = (p) => sorted[Math.floor((sorted.length - 1) * p)];
2288
+ const out = {};
2289
+ for (const [code, v] of Object.entries(values)) {
2290
+ out[code] = typeof v !== "number" || sorted.length === 0 ? 0 : v <= q(0.25) ? 1 : v <= q(0.5) ? 2 : v <= q(0.75) ? 3 : 4;
2291
+ }
2292
+ return out;
2293
+ }
2294
+ var bucketClass = {
2295
+ 0: "bg-muted text-muted-foreground",
2296
+ 1: "bg-primary-600/20 text-foreground",
2297
+ 2: "bg-primary-600/40 text-foreground",
2298
+ 3: "bg-primary-800 text-white",
2299
+ 4: "bg-primary-950 text-white"
2300
+ };
2301
+ var TileCartogramSection = React5__namespace.forwardRef(
2302
+ ({
2303
+ values,
2304
+ legend,
2305
+ layout = usStateTiles,
2306
+ mapTitle,
2307
+ mapDescription,
2308
+ tone = "default",
2309
+ components,
2310
+ ...rest
2311
+ }, ref) => {
2312
+ const columns = Math.max(...layout.map((t) => t.col)) + 1;
2313
+ return /* @__PURE__ */ jsxRuntime.jsx(
2314
+ chunkXI74P5F2_cjs.SectionShell,
2315
+ {
2316
+ ref,
2317
+ "data-slot": "tile-cartogram-section",
2318
+ tone,
2319
+ components,
2320
+ ...rest,
2321
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS5RVSXDV_cjs.cn("mt-10 rounded-2xl p-6", chunkXI74P5F2_cjs.cardClass(tone)), children: [
2322
+ mapTitle && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: chunkS5RVSXDV_cjs.cn("text-lg font-semibold", chunkXI74P5F2_cjs.headingTextClass(tone)), children: mapTitle }),
2323
+ mapDescription && /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS5RVSXDV_cjs.cn("mt-1 text-sm", chunkXI74P5F2_cjs.mutedTextClass(tone)), children: mapDescription }),
2324
+ /* @__PURE__ */ jsxRuntime.jsx(
2325
+ "ul",
2326
+ {
2327
+ className: "mx-auto mt-6 grid w-full max-w-xl gap-1",
2328
+ style: {
2329
+ gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`
2330
+ },
2331
+ children: layout.map((tile) => {
2332
+ const value = values[tile.code];
2333
+ const bucket = value?.bucket ?? 0;
2334
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2335
+ "li",
2336
+ {
2337
+ title: value?.detail ? `${tile.name}: ${value.detail}` : tile.name,
2338
+ style: {
2339
+ gridColumnStart: tile.col + 1,
2340
+ gridRowStart: tile.row + 1
2341
+ },
2342
+ className: chunkS5RVSXDV_cjs.cn(
2343
+ "flex aspect-square items-center justify-center rounded-md text-[9px] font-semibold sm:text-[11px]",
2344
+ bucketClass[bucket]
2345
+ ),
2346
+ children: [
2347
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: tile.code }),
2348
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "sr-only", children: [
2349
+ tile.name,
2350
+ value?.detail ? `: ${value.detail}` : ""
2351
+ ] })
2352
+ ]
2353
+ },
2354
+ tile.code
2355
+ );
2356
+ })
2357
+ }
2358
+ ),
2359
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-6 flex flex-wrap items-center justify-center gap-x-4 gap-y-2 text-xs", children: legend.map((entry) => /* @__PURE__ */ jsxRuntime.jsxs(
2360
+ "li",
2361
+ {
2362
+ className: "inline-flex items-center gap-1.5",
2363
+ children: [
2364
+ /* @__PURE__ */ jsxRuntime.jsx(
2365
+ "span",
2366
+ {
2367
+ "aria-hidden": "true",
2368
+ className: chunkS5RVSXDV_cjs.cn(
2369
+ "ring-border size-3 rounded ring-1",
2370
+ bucketClass[entry.bucket]
2371
+ )
2372
+ }
2373
+ ),
2374
+ entry.label
2375
+ ]
2376
+ },
2377
+ entry.bucket
2378
+ )) })
2379
+ ] })
2380
+ }
2381
+ );
2382
+ }
2383
+ );
2384
+ TileCartogramSection.displayName = "TileCartogramSection";
2385
+ var sections = {
2386
+ hero: HeroSection,
2387
+ logos: LogoCloudSection,
2388
+ features: FeatureGridSection,
2389
+ split: SplitContentSection,
2390
+ process: ProcessStepsSection,
2391
+ stats: StatsSection,
2392
+ comparison: ComparisonSection,
2393
+ pricing: PricingSection,
2394
+ video: VideoSection,
2395
+ testimonials: TestimonialSection,
2396
+ resources: ResourceCardsSection,
2397
+ faq: FaqSection,
2398
+ "lead-form": LeadFormSection,
2399
+ cta: CtaSection,
2400
+ "report-legend": ReportLegend,
2401
+ "benchmark-table": BenchmarkTableSection,
2402
+ "ranked-list": RankedListSection,
2403
+ "tile-cartogram": TileCartogramSection,
2404
+ "metric-list": MetricListSection,
2405
+ methodology: ReportMethodology,
2406
+ byline: ReportByline,
2407
+ "link-groups": LinkGroupsSection,
2408
+ "pdf-embed": PdfEmbedSection
2409
+ };
2410
+ var landingBlockTypes = [
2411
+ ...Object.keys(sections),
2412
+ "custom"
2413
+ ];
2414
+ var takesIcons = /* @__PURE__ */ new Set(["features", "process"]);
2415
+ var LandingPage = React5__namespace.forwardRef(
2416
+ ({ blocks, icons, components, custom, actions, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, "data-slot": "landing-page", ...rest, children: blocks.map((block, i) => {
2417
+ const key = block.id ?? `${block.type}-${i}`;
2418
+ if (block.type === "custom") {
2419
+ const Custom = chunkXI74P5F2_cjs.ownProperty(custom, block.component);
2420
+ return Custom ? /* @__PURE__ */ jsxRuntime.jsx(Custom, { id: block.id, ...block.props }, key) : null;
2421
+ }
2422
+ const { type, ...props } = block;
2423
+ const Section = chunkXI74P5F2_cjs.ownProperty(
2424
+ sections,
2425
+ type
2426
+ );
2427
+ if (!Section) return null;
2428
+ const action = block.type === "lead-form" ? chunkXI74P5F2_cjs.ownProperty(actions, block.action) ?? chunkXI74P5F2_cjs.safeHref(block.action) : void 0;
2429
+ if (block.type === "lead-form" && action == null) return null;
2430
+ const data = { ...props };
2431
+ delete data.children;
2432
+ delete data.dangerouslySetInnerHTML;
2433
+ return /* @__PURE__ */ jsxRuntime.jsx(
2434
+ Section,
2435
+ {
2436
+ ...data,
2437
+ components,
2438
+ ...takesIcons.has(type) ? { icons } : {},
2439
+ ...block.type === "lead-form" ? { action } : {}
2440
+ },
2441
+ key
2442
+ );
2443
+ }) })
2444
+ );
2445
+ LandingPage.displayName = "LandingPage";
2446
+
2447
+ // src/components/LandingPage/presets.ts
2448
+ var landingPresets = {
2449
+ "vertical-hub": {
2450
+ label: "Industry / vertical hub",
2451
+ description: "One page per industry served: the sector problem, what the product does for it, proof, and a way in.",
2452
+ sequence: [
2453
+ "hero",
2454
+ "logos",
2455
+ "features",
2456
+ "split",
2457
+ "stats",
2458
+ "process",
2459
+ "testimonials",
2460
+ "resources",
2461
+ "faq",
2462
+ "cta"
2463
+ ],
2464
+ required: ["hero", "features", "faq", "cta"]
2465
+ },
2466
+ "service-detail": {
2467
+ label: "Service / product detail",
2468
+ description: "One offering explained: what it is, how it works, how it compares, and how to start.",
2469
+ sequence: [
2470
+ "hero",
2471
+ "features",
2472
+ "video",
2473
+ "process",
2474
+ "comparison",
2475
+ "pricing",
2476
+ "stats",
2477
+ "testimonials",
2478
+ "faq",
2479
+ "cta"
2480
+ ],
2481
+ required: ["hero", "features", "cta"]
2482
+ },
2483
+ campaign: {
2484
+ label: "Campaign / ABM landing",
2485
+ description: "A focused page for a campaign or named account that converts on the page itself.",
2486
+ sequence: [
2487
+ "hero",
2488
+ "logos",
2489
+ "features",
2490
+ "stats",
2491
+ "testimonials",
2492
+ "lead-form",
2493
+ "faq"
2494
+ ],
2495
+ required: ["hero", "lead-form"]
2496
+ },
2497
+ comparison: {
2498
+ label: "Comparison",
2499
+ description: "Your product against an alternative or the status quo, row by row.",
2500
+ sequence: ["hero", "comparison", "features", "testimonials", "faq", "cta"],
2501
+ required: ["hero", "comparison", "cta"]
2502
+ },
2503
+ resource: {
2504
+ label: "Resource / lead magnet",
2505
+ description: "A guide, report or tool offered in exchange for contact details.",
2506
+ sequence: ["hero", "split", "lead-form", "resources", "faq"],
2507
+ required: ["hero", "lead-form"]
2508
+ },
2509
+ pricing: {
2510
+ label: "Pricing",
2511
+ description: "Plans and what each includes, the proof that they are worth it, and the questions buyers ask before they pay.",
2512
+ sequence: [
2513
+ "hero",
2514
+ "pricing",
2515
+ "comparison",
2516
+ "stats",
2517
+ "testimonials",
2518
+ "faq",
2519
+ "cta"
2520
+ ],
2521
+ required: ["hero", "pricing", "faq"]
2522
+ },
2523
+ "benchmark-report": {
2524
+ label: "Benchmark report",
2525
+ description: "A published data report: headline findings, the figures with their provenance, how they were built, and who wrote it.",
2526
+ sequence: [
2527
+ "hero",
2528
+ "stats",
2529
+ "report-legend",
2530
+ "features",
2531
+ "benchmark-table",
2532
+ "tile-cartogram",
2533
+ "ranked-list",
2534
+ "metric-list",
2535
+ "methodology",
2536
+ "byline",
2537
+ "link-groups",
2538
+ "pdf-embed",
2539
+ "lead-form",
2540
+ "cta"
2541
+ ],
2542
+ required: ["hero", "methodology"]
2543
+ }
2544
+ };
2545
+ var headedItems = /* @__PURE__ */ new Set([
2546
+ "features",
2547
+ "process",
2548
+ "pricing",
2549
+ "resources",
2550
+ "metric-list",
2551
+ "link-groups"
2552
+ ]);
2553
+ var rendersH3 = (b) => headedItems.has(b.type) || b.type === "ranked-list" && b.lists.some((l) => l.title) || b.type === "tile-cartogram" && !!b.mapTitle || b.type === "methodology" && !!(b.citation || b.notes?.length || b.resources);
2554
+ function validateLandingPage(blocks, preset) {
2555
+ const issues = [];
2556
+ const types = blocks.map((b) => b.type);
2557
+ const knownTypes = new Set(landingBlockTypes);
2558
+ blocks.forEach((b, index) => {
2559
+ if (!knownTypes.has(b.type))
2560
+ issues.push({
2561
+ severity: "error",
2562
+ index,
2563
+ message: `Unknown block type "${b.type}": the renderer skips this block.`
2564
+ });
2565
+ if (b.type === "lead-form" && chunkXI74P5F2_cjs.safeHref(b.action) == null)
2566
+ issues.push({
2567
+ severity: "error",
2568
+ index,
2569
+ message: `Unsafe lead-form action "${b.action}": the renderer skips this block.`
2570
+ });
2571
+ });
2572
+ const h1Heroes = blocks.flatMap(
2573
+ (b, i) => b.type === "hero" && (b.headingLevel ?? "h1") === "h1" ? [i] : []
2574
+ );
2575
+ if (h1Heroes.length > 1)
2576
+ h1Heroes.slice(1).forEach(
2577
+ (index) => issues.push({
2578
+ severity: "error",
2579
+ index,
2580
+ message: 'A second h1 hero: a page has one h1. Set headingLevel: "h2" or remove it.'
2581
+ })
2582
+ );
2583
+ if (h1Heroes.length === 0)
2584
+ issues.push({
2585
+ severity: "warning",
2586
+ message: "No h1 hero. The page must render its own h1 outside the blocks."
2587
+ });
2588
+ const firstHero = types.indexOf("hero");
2589
+ if (firstHero > 0)
2590
+ issues.push({
2591
+ severity: "warning",
2592
+ index: firstHero,
2593
+ message: "The hero is not the first block."
2594
+ });
2595
+ if (h1Heroes.length > 0 && h1Heroes[0] !== firstHero)
2596
+ issues.push({
2597
+ severity: "warning",
2598
+ index: h1Heroes[0],
2599
+ message: "The h1 hero is not the first hero: an h2 hero precedes the page h1."
2600
+ });
2601
+ const seen = /* @__PURE__ */ new Map();
2602
+ blocks.forEach((b, index) => {
2603
+ const ids = [
2604
+ ...b.id ? [b.id] : [],
2605
+ ...b.type === "faq" ? b.items.flatMap((item) => item.id ? [item.id] : []) : []
2606
+ ];
2607
+ ids.forEach((id) => {
2608
+ if (seen.has(id))
2609
+ issues.push({
2610
+ severity: "error",
2611
+ index,
2612
+ message: `Duplicate id "${id}" (also block ${seen.get(id)}).`
2613
+ });
2614
+ else seen.set(id, index);
2615
+ });
2616
+ });
2617
+ blocks.forEach((b, index) => {
2618
+ if (rendersH3(b) && !("title" in b && b.title))
2619
+ issues.push({
2620
+ severity: "warning",
2621
+ index,
2622
+ message: `"${b.type}" has no title, so its h3 item titles skip the h2 level.`
2623
+ });
2624
+ if (b.type === "benchmark-table") {
2625
+ const keys = new Set(b.columns.map((c) => c.key));
2626
+ b.rows.forEach((row) => {
2627
+ const unknown = Object.keys(row.values).filter((k) => !keys.has(k));
2628
+ if (unknown.length)
2629
+ issues.push({
2630
+ severity: "warning",
2631
+ index,
2632
+ message: `Benchmark row "${row.label}" has values for unknown columns: ${unknown.join(", ")}.`
2633
+ });
2634
+ });
2635
+ }
2636
+ if (b.type !== "comparison") return;
2637
+ b.rows.forEach((row, r) => {
2638
+ if (row.values.length !== b.columns.length)
2639
+ issues.push({
2640
+ severity: "error",
2641
+ index,
2642
+ message: `Comparison row ${r} ("${row.feature}") has ${row.values.length} values for ${b.columns.length} columns.`
2643
+ });
2644
+ });
2645
+ if (b.highlightColumn !== void 0 && (b.highlightColumn < 0 || b.highlightColumn >= b.columns.length))
2646
+ issues.push({
2647
+ severity: "warning",
2648
+ index,
2649
+ message: `highlightColumn ${b.highlightColumn} is outside the ${b.columns.length} comparison columns.`
2650
+ });
2651
+ });
2652
+ if (!preset) return issues;
2653
+ const spec = typeof preset === "string" ? landingPresets[preset] : preset;
2654
+ for (const type of spec.required)
2655
+ if (!types.includes(type))
2656
+ issues.push({
2657
+ severity: "error",
2658
+ message: `Missing required "${type}" block for the ${spec.label} preset.`
2659
+ });
2660
+ let last = -1;
2661
+ const placed = /* @__PURE__ */ new Set();
2662
+ blocks.forEach((b, index) => {
2663
+ const rank = spec.sequence.indexOf(b.type);
2664
+ if (rank === -1 || placed.has(b.type)) return;
2665
+ placed.add(b.type);
2666
+ if (rank < last)
2667
+ issues.push({
2668
+ severity: "warning",
2669
+ index,
2670
+ message: `"${b.type}" is out of the ${spec.label} preset's recommended order.`
2671
+ });
2672
+ else last = rank;
2673
+ });
2674
+ return issues;
2675
+ }
2676
+
2677
+ exports.BenchmarkTableSection = BenchmarkTableSection;
2678
+ exports.ComparisonSection = ComparisonSection;
2679
+ exports.CtaSection = CtaSection;
2680
+ exports.FaqSection = FaqSection;
2681
+ exports.FeatureGridSection = FeatureGridSection;
2682
+ exports.HeroSection = HeroSection;
2683
+ exports.LandingPage = LandingPage;
2684
+ exports.LeadFormSection = LeadFormSection;
2685
+ exports.LinkGroupsSection = LinkGroupsSection;
2686
+ exports.LogoCloudSection = LogoCloudSection;
2687
+ exports.MetricListSection = MetricListSection;
2688
+ exports.PdfEmbedSection = PdfEmbedSection;
2689
+ exports.PricingSection = PricingSection;
2690
+ exports.ProcessStepsSection = ProcessStepsSection;
2691
+ exports.RankedListSection = RankedListSection;
2692
+ exports.ReportByline = ReportByline;
2693
+ exports.ReportLegend = ReportLegend;
2694
+ exports.ReportMethodology = ReportMethodology;
2695
+ exports.ResourceCardsSection = ResourceCardsSection;
2696
+ exports.SplitContentSection = SplitContentSection;
2697
+ exports.StatsSection = StatsSection;
2698
+ exports.TestimonialSection = TestimonialSection;
2699
+ exports.TileCartogramSection = TileCartogramSection;
2700
+ exports.VideoSection = VideoSection;
2701
+ exports.defaultLeadFormFields = defaultLeadFormFields;
2702
+ exports.landingPresets = landingPresets;
2703
+ exports.quartileBuckets = quartileBuckets;
2704
+ exports.usStateTiles = usStateTiles;
2705
+ exports.validateLandingPage = validateLandingPage;
2706
+ //# sourceMappingURL=chunk-ADW7ZYCY.cjs.map
2707
+ //# sourceMappingURL=chunk-ADW7ZYCY.cjs.map