@mieweb/ui 0.10.0-dev.14 → 0.10.0-dev.16

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 (215) hide show
  1. package/dist/CsvBlock-FVOKKWIY.cjs +17 -0
  2. package/dist/{CsvBlock-ROJCKJDP.cjs.map → CsvBlock-FVOKKWIY.cjs.map} +1 -1
  3. package/dist/CsvBlock-MXZO4W3N.js +8 -0
  4. package/dist/{CsvBlock-UWPMTLE2.js.map → CsvBlock-MXZO4W3N.js.map} +1 -1
  5. package/dist/HtmlPreviewBlock-2UGW33SQ.js +8 -0
  6. package/dist/{HtmlPreviewBlock-ME5U3XNS.js.map → HtmlPreviewBlock-2UGW33SQ.js.map} +1 -1
  7. package/dist/HtmlPreviewBlock-CZKTQUCL.cjs +17 -0
  8. package/dist/{HtmlPreviewBlock-DWFN6EUB.cjs.map → HtmlPreviewBlock-CZKTQUCL.cjs.map} +1 -1
  9. package/dist/MermaidBlock-NLDOJZUJ.cjs +17 -0
  10. package/dist/{MermaidBlock-D2UC5M55.cjs.map → MermaidBlock-NLDOJZUJ.cjs.map} +1 -1
  11. package/dist/MermaidBlock-QXAEMOAA.js +8 -0
  12. package/dist/{MermaidBlock-2B6CPD6Y.js.map → MermaidBlock-QXAEMOAA.js.map} +1 -1
  13. package/dist/SurveyBlock-GSHYZMTW.cjs +17 -0
  14. package/dist/{SurveyBlock-4CD4AYMJ.cjs.map → SurveyBlock-GSHYZMTW.cjs.map} +1 -1
  15. package/dist/SurveyBlock-M5BEFZGT.js +8 -0
  16. package/dist/{SurveyBlock-4DO62RBT.js.map → SurveyBlock-M5BEFZGT.js.map} +1 -1
  17. package/dist/brands/index.cjs +13 -13
  18. package/dist/brands/index.js +1 -1
  19. package/dist/{chunk-VNYW4C4J.cjs → chunk-2BGS7RFM.cjs} +4 -84
  20. package/dist/chunk-2BGS7RFM.cjs.map +1 -0
  21. package/dist/{chunk-TMMVIUUN.js → chunk-4IETGCMD.js} +4 -4
  22. package/dist/{chunk-TMMVIUUN.js.map → chunk-4IETGCMD.js.map} +1 -1
  23. package/dist/{chunk-76TBQDED.js → chunk-4LPGJ3ZO.js} +4 -4
  24. package/dist/{chunk-76TBQDED.js.map → chunk-4LPGJ3ZO.js.map} +1 -1
  25. package/dist/{chunk-V43ZFGCE.cjs → chunk-5FU7LVZF.cjs} +9 -9
  26. package/dist/{chunk-V43ZFGCE.cjs.map → chunk-5FU7LVZF.cjs.map} +1 -1
  27. package/dist/{chunk-6EN3IQQI.cjs → chunk-6GZKQR7P.cjs} +4 -4
  28. package/dist/{chunk-6EN3IQQI.cjs.map → chunk-6GZKQR7P.cjs.map} +1 -1
  29. package/dist/{chunk-Y5HFM7LO.js → chunk-77PNQILS.js} +3 -3
  30. package/dist/{chunk-Y5HFM7LO.js.map → chunk-77PNQILS.js.map} +1 -1
  31. package/dist/{chunk-G4D6CLBT.js → chunk-7U5QYH54.js} +3 -3
  32. package/dist/{chunk-G4D6CLBT.js.map → chunk-7U5QYH54.js.map} +1 -1
  33. package/dist/chunk-AXRRBEER.js +86 -0
  34. package/dist/chunk-AXRRBEER.js.map +1 -0
  35. package/dist/{chunk-VU6UTJRM.js → chunk-CATY3P2U.js} +3 -3
  36. package/dist/{chunk-VU6UTJRM.js.map → chunk-CATY3P2U.js.map} +1 -1
  37. package/dist/{chunk-3YFJBUX4.js → chunk-CXEKSA7I.js} +3 -3
  38. package/dist/{chunk-3YFJBUX4.js.map → chunk-CXEKSA7I.js.map} +1 -1
  39. package/dist/{chunk-UV2FVNWT.cjs → chunk-DF7K6DOJ.cjs} +5 -5
  40. package/dist/{chunk-UV2FVNWT.cjs.map → chunk-DF7K6DOJ.cjs.map} +1 -1
  41. package/dist/{chunk-TVTIGV7Q.js → chunk-DXCATYEO.js} +4 -4
  42. package/dist/{chunk-TVTIGV7Q.js.map → chunk-DXCATYEO.js.map} +1 -1
  43. package/dist/{chunk-5MCBWTIF.cjs → chunk-E2B5BLAF.cjs} +4 -4
  44. package/dist/{chunk-5MCBWTIF.cjs.map → chunk-E2B5BLAF.cjs.map} +1 -1
  45. package/dist/{chunk-GD7EBGC4.cjs → chunk-EQXFDPXV.cjs} +14 -14
  46. package/dist/{chunk-GD7EBGC4.cjs.map → chunk-EQXFDPXV.cjs.map} +1 -1
  47. package/dist/{chunk-ENKFJJZX.js → chunk-ETCHEURD.js} +4 -4
  48. package/dist/{chunk-ENKFJJZX.js.map → chunk-ETCHEURD.js.map} +1 -1
  49. package/dist/{chunk-DEDN5HAG.js → chunk-FDP6VS5G.js} +3 -3
  50. package/dist/{chunk-DEDN5HAG.js.map → chunk-FDP6VS5G.js.map} +1 -1
  51. package/dist/{chunk-WNZAYBVB.cjs → chunk-GRV4MOEO.cjs} +26 -26
  52. package/dist/{chunk-WNZAYBVB.cjs.map → chunk-GRV4MOEO.cjs.map} +1 -1
  53. package/dist/{chunk-4A3W4TQF.js → chunk-IBCCFWD4.js} +28 -3
  54. package/dist/chunk-IBCCFWD4.js.map +1 -0
  55. package/dist/{chunk-G3JX3UAU.cjs → chunk-IUQMOBFB.cjs} +5 -5
  56. package/dist/{chunk-G3JX3UAU.cjs.map → chunk-IUQMOBFB.cjs.map} +1 -1
  57. package/dist/{chunk-ZPSJ2UV6.cjs → chunk-JX4UZEBZ.cjs} +8 -8
  58. package/dist/{chunk-ZPSJ2UV6.cjs.map → chunk-JX4UZEBZ.cjs.map} +1 -1
  59. package/dist/{chunk-7ZXAQTV4.cjs → chunk-KM5OQQL5.cjs} +8 -8
  60. package/dist/{chunk-7ZXAQTV4.cjs.map → chunk-KM5OQQL5.cjs.map} +1 -1
  61. package/dist/{chunk-AWJBOND5.js → chunk-LENW5YOC.js} +60 -3
  62. package/dist/chunk-LENW5YOC.js.map +1 -0
  63. package/dist/{chunk-KQUI4BGS.cjs → chunk-LGIQVSAE.cjs} +17 -17
  64. package/dist/{chunk-KQUI4BGS.cjs.map → chunk-LGIQVSAE.cjs.map} +1 -1
  65. package/dist/{chunk-FXO5ARBB.cjs → chunk-M5NYHH3Z.cjs} +4 -4
  66. package/dist/{chunk-FXO5ARBB.cjs.map → chunk-M5NYHH3Z.cjs.map} +1 -1
  67. package/dist/{chunk-URAQIF67.cjs → chunk-MB5KIIT4.cjs} +6 -6
  68. package/dist/{chunk-URAQIF67.cjs.map → chunk-MB5KIIT4.cjs.map} +1 -1
  69. package/dist/{chunk-ASSDGS4F.cjs → chunk-NEFBVO5W.cjs} +28 -3
  70. package/dist/chunk-NEFBVO5W.cjs.map +1 -0
  71. package/dist/{chunk-XZNN3S3S.cjs → chunk-O5A4GTTG.cjs} +4 -4
  72. package/dist/{chunk-XZNN3S3S.cjs.map → chunk-O5A4GTTG.cjs.map} +1 -1
  73. package/dist/{chunk-DZ5HFLRC.js → chunk-OWLWABAS.js} +3 -3
  74. package/dist/{chunk-DZ5HFLRC.js.map → chunk-OWLWABAS.js.map} +1 -1
  75. package/dist/{chunk-IX6KFB3K.cjs → chunk-OZ2LP2VQ.cjs} +9 -9
  76. package/dist/{chunk-IX6KFB3K.cjs.map → chunk-OZ2LP2VQ.cjs.map} +1 -1
  77. package/dist/{chunk-YQ2NQV5C.cjs → chunk-PEUCQ2YP.cjs} +73 -15
  78. package/dist/chunk-PEUCQ2YP.cjs.map +1 -0
  79. package/dist/{chunk-N6IY47YA.cjs → chunk-PLDJU623.cjs} +8 -8
  80. package/dist/{chunk-N6IY47YA.cjs.map → chunk-PLDJU623.cjs.map} +1 -1
  81. package/dist/{chunk-4CXGT3P7.js → chunk-QR7EG7YH.js} +73 -15
  82. package/dist/chunk-QR7EG7YH.js.map +1 -0
  83. package/dist/{chunk-WGPLUCBD.js → chunk-R47H3Y7J.js} +3 -3
  84. package/dist/{chunk-WGPLUCBD.js.map → chunk-R47H3Y7J.js.map} +1 -1
  85. package/dist/{chunk-OE5CKRUC.js → chunk-R5AFQWR5.js} +3 -3
  86. package/dist/{chunk-OE5CKRUC.js.map → chunk-R5AFQWR5.js.map} +1 -1
  87. package/dist/{chunk-2IZLKPUW.js → chunk-T7U5HHGK.js} +3 -3
  88. package/dist/{chunk-2IZLKPUW.js.map → chunk-T7U5HHGK.js.map} +1 -1
  89. package/dist/{chunk-OCSCBB52.cjs → chunk-TVSGJT6G.cjs} +6 -6
  90. package/dist/{chunk-OCSCBB52.cjs.map → chunk-TVSGJT6G.cjs.map} +1 -1
  91. package/dist/{chunk-3QEVGSFG.cjs → chunk-UKUKBUME.cjs} +5 -5
  92. package/dist/{chunk-3QEVGSFG.cjs.map → chunk-UKUKBUME.cjs.map} +1 -1
  93. package/dist/{chunk-GOALNQZ2.js → chunk-UV4IJNSN.js} +4 -83
  94. package/dist/chunk-UV4IJNSN.js.map +1 -0
  95. package/dist/{chunk-VOKVG3ER.js → chunk-UXI33QGR.js} +3 -3
  96. package/dist/{chunk-VOKVG3ER.js.map → chunk-UXI33QGR.js.map} +1 -1
  97. package/dist/{chunk-XEAT7XJG.cjs → chunk-VLBUT2QM.cjs} +4 -4
  98. package/dist/{chunk-XEAT7XJG.cjs.map → chunk-VLBUT2QM.cjs.map} +1 -1
  99. package/dist/chunk-VNCIIXGO.js +1924 -0
  100. package/dist/chunk-VNCIIXGO.js.map +1 -0
  101. package/dist/{chunk-5GUOOLPR.cjs → chunk-VPRKE2YU.cjs} +5 -5
  102. package/dist/{chunk-5GUOOLPR.cjs.map → chunk-VPRKE2YU.cjs.map} +1 -1
  103. package/dist/{chunk-KZFBQ7GY.js → chunk-VVZALGPI.js} +3 -3
  104. package/dist/{chunk-KZFBQ7GY.js.map → chunk-VVZALGPI.js.map} +1 -1
  105. package/dist/{chunk-V7D3YGUV.js → chunk-W5TPBCBM.js} +4 -4
  106. package/dist/{chunk-V7D3YGUV.js.map → chunk-W5TPBCBM.js.map} +1 -1
  107. package/dist/{chunk-H4ZXMQQW.js → chunk-WBBOH5QF.js} +3 -3
  108. package/dist/{chunk-H4ZXMQQW.js.map → chunk-WBBOH5QF.js.map} +1 -1
  109. package/dist/{chunk-3QGS6CXD.js → chunk-WC25GQZD.js} +3 -3
  110. package/dist/{chunk-3QGS6CXD.js.map → chunk-WC25GQZD.js.map} +1 -1
  111. package/dist/{chunk-VKELAMAZ.js → chunk-WN6A4QOF.js} +3 -3
  112. package/dist/{chunk-VKELAMAZ.js.map → chunk-WN6A4QOF.js.map} +1 -1
  113. package/dist/{chunk-AR7AKDM2.cjs → chunk-X2PPZJSL.cjs} +64 -2
  114. package/dist/chunk-X2PPZJSL.cjs.map +1 -0
  115. package/dist/chunk-XFLEW7AT.cjs +88 -0
  116. package/dist/chunk-XFLEW7AT.cjs.map +1 -0
  117. package/dist/{chunk-MNILXWVY.js → chunk-XU2E7MTG.js} +7 -7
  118. package/dist/{chunk-MNILXWVY.js.map → chunk-XU2E7MTG.js.map} +1 -1
  119. package/dist/{chunk-E4IBHYJ7.cjs → chunk-YEQLSYJO.cjs} +5 -5
  120. package/dist/{chunk-E4IBHYJ7.cjs.map → chunk-YEQLSYJO.cjs.map} +1 -1
  121. package/dist/chunk-YIWJTNR5.cjs +1967 -0
  122. package/dist/chunk-YIWJTNR5.cjs.map +1 -0
  123. package/dist/components/AlertDialog/index.cjs +4 -3
  124. package/dist/components/AlertDialog/index.js +3 -2
  125. package/dist/components/Button/index.cjs +4 -3
  126. package/dist/components/Button/index.d.cts +3 -2
  127. package/dist/components/Button/index.d.ts +3 -2
  128. package/dist/components/Button/index.js +2 -1
  129. package/dist/components/CalendarView/index.cjs +5 -4
  130. package/dist/components/CalendarView/index.d.cts +1 -1
  131. package/dist/components/CalendarView/index.d.ts +1 -1
  132. package/dist/components/CalendarView/index.js +3 -2
  133. package/dist/components/CustomizableDashboard/index.cjs +10 -9
  134. package/dist/components/CustomizableDashboard/index.js +3 -2
  135. package/dist/components/FloatingWindow/index.cjs +5 -4
  136. package/dist/components/FloatingWindow/index.js +3 -2
  137. package/dist/components/GanttView/index.d.cts +1 -1
  138. package/dist/components/GanttView/index.d.ts +1 -1
  139. package/dist/components/ListView/index.cjs +5 -4
  140. package/dist/components/ListView/index.d.cts +90 -2
  141. package/dist/components/ListView/index.d.ts +90 -2
  142. package/dist/components/ListView/index.js +3 -2
  143. package/dist/components/Markdown/index.cjs +20 -19
  144. package/dist/components/Markdown/index.js +8 -7
  145. package/dist/components/MediaEditor/index.cjs +9 -8
  146. package/dist/components/MediaEditor/index.js +4 -3
  147. package/dist/components/MediaPlayer/index.cjs +6 -5
  148. package/dist/components/MediaPlayer/index.js +3 -2
  149. package/dist/components/MegaMenu/index.cjs +6 -5
  150. package/dist/components/MegaMenu/index.js +3 -2
  151. package/dist/components/RadialExplorer/index.cjs +4 -3
  152. package/dist/components/RadialExplorer/index.js +3 -2
  153. package/dist/components/RichTextEditor/index.cjs +6 -5
  154. package/dist/components/RichTextEditor/index.js +3 -2
  155. package/dist/components/SectionSpyNav/index.cjs +4 -3
  156. package/dist/components/SectionSpyNav/index.js +3 -2
  157. package/dist/components/SuperChat/index.cjs +3 -3
  158. package/dist/components/SuperChat/index.js +1 -1
  159. package/dist/components/SuperChat/plugins/index.cjs +3 -3
  160. package/dist/components/SuperChat/plugins/index.js +2 -2
  161. package/dist/components/ViewSet/index.cjs +6 -5
  162. package/dist/components/ViewSet/index.d.cts +101 -1
  163. package/dist/components/ViewSet/index.d.ts +101 -1
  164. package/dist/components/ViewSet/index.js +5 -4
  165. package/dist/components/ViewSwitcher/index.d.cts +57 -4
  166. package/dist/components/ViewSwitcher/index.d.ts +57 -4
  167. package/dist/datavis.cjs +3 -2
  168. package/dist/datavis.cjs.map +1 -1
  169. package/dist/datavis.js +2 -1
  170. package/dist/datavis.js.map +1 -1
  171. package/dist/esheet.cjs +7 -6
  172. package/dist/esheet.cjs.map +1 -1
  173. package/dist/esheet.js +4 -3
  174. package/dist/esheet.js.map +1 -1
  175. package/dist/hooks/index.cjs +33 -13
  176. package/dist/hooks/index.d.cts +57 -1
  177. package/dist/hooks/index.d.ts +57 -1
  178. package/dist/hooks/index.js +1 -1
  179. package/dist/index.cjs +667 -557
  180. package/dist/index.cjs.map +1 -1
  181. package/dist/index.d.cts +624 -2
  182. package/dist/index.d.ts +624 -2
  183. package/dist/index.js +45 -42
  184. package/dist/index.js.map +1 -1
  185. package/dist/styles/effects.css +33 -0
  186. package/dist/styles.css +1 -1
  187. package/dist/tailwind-preset.cjs +4 -4
  188. package/dist/tailwind-preset.js +1 -1
  189. package/dist/templates.cjs +103 -0
  190. package/dist/templates.cjs.map +1 -0
  191. package/dist/templates.d.cts +560 -0
  192. package/dist/templates.d.ts +560 -0
  193. package/dist/templates.js +10 -0
  194. package/dist/templates.js.map +1 -0
  195. package/dist/{types-DsdZvEI1.d.ts → types-C3HQe74F.d.cts} +1 -7
  196. package/dist/{types-DsdZvEI1.d.cts → types-C3HQe74F.d.ts} +1 -7
  197. package/package.json +12 -1
  198. package/dist/CsvBlock-ROJCKJDP.cjs +0 -16
  199. package/dist/CsvBlock-UWPMTLE2.js +0 -7
  200. package/dist/HtmlPreviewBlock-DWFN6EUB.cjs +0 -16
  201. package/dist/HtmlPreviewBlock-ME5U3XNS.js +0 -7
  202. package/dist/MermaidBlock-2B6CPD6Y.js +0 -7
  203. package/dist/MermaidBlock-D2UC5M55.cjs +0 -16
  204. package/dist/SurveyBlock-4CD4AYMJ.cjs +0 -16
  205. package/dist/SurveyBlock-4DO62RBT.js +0 -7
  206. package/dist/chunk-4A3W4TQF.js.map +0 -1
  207. package/dist/chunk-4CXGT3P7.js.map +0 -1
  208. package/dist/chunk-AR7AKDM2.cjs.map +0 -1
  209. package/dist/chunk-ASSDGS4F.cjs.map +0 -1
  210. package/dist/chunk-AWJBOND5.js.map +0 -1
  211. package/dist/chunk-GOALNQZ2.js.map +0 -1
  212. package/dist/chunk-VNYW4C4J.cjs.map +0 -1
  213. package/dist/chunk-YQ2NQV5C.cjs.map +0 -1
  214. package/dist/index-DoYYWsNc.d.cts +0 -127
  215. package/dist/index-DoYYWsNc.d.ts +0 -127
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/own.ts","../src/templates/icons.tsx","../src/templates/Section.tsx","../src/components/ComparisonSection/ComparisonSection.tsx","../src/components/CtaSection/CtaSection.tsx","../src/components/FaqSection/FaqSection.tsx","../src/components/FeatureGridSection/FeatureGridSection.tsx","../src/components/HeroSection/HeroSection.tsx","../src/components/LeadFormSection/LeadFormSection.tsx","../src/components/LogoCloudSection/LogoCloudSection.tsx","../src/components/PricingSection/PricingSection.tsx","../src/components/ProcessStepsSection/ProcessStepsSection.tsx","../src/components/ResourceCardsSection/ResourceCardsSection.tsx","../src/components/SplitContentSection/SplitContentSection.tsx","../src/components/StatsSection/StatsSection.tsx","../src/components/TestimonialSection/TestimonialSection.tsx","../src/components/VideoSection/VideoSection.tsx","../src/components/LandingPage/LandingPage.tsx","../src/components/LandingPage/presets.ts"],"names":["jsx","React2","jsxs","React3","Fragment","React4","React5","ArrowRight","React6","CircleCheck","React7","React8","columnClass","React9","Check","React10","React11","React12","React13","TrendingUp","React14","React15","React16"],"mappings":"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","file":"chunk-VNCIIXGO.js","sourcesContent":["/**\n * `map[key]` restricted to own properties. Runtime page/CMS data supplies the\n * key, and a plain bracket lookup would also reach inherited\n * `Object.prototype` members — `\"toString\"` or `\"constructor\"` must resolve to\n * \"unknown\", not to a built-in function React then tries to render or call.\n */\nexport function ownProperty<T>(\n map: Record<string, T> | undefined,\n key: string\n): T | undefined {\n return map != null && Object.hasOwn(map, key) ? map[key] : undefined;\n}\n","import type * as React from 'react';\nimport {\n Activity,\n Award,\n BadgeCheck,\n Bell,\n Briefcase,\n Building2,\n Calendar,\n CalendarCheck,\n ChartColumn,\n ChartLine,\n CircleCheck,\n ClipboardCheck,\n Clock,\n Cloud,\n Database,\n DollarSign,\n Factory,\n FileText,\n FlaskConical,\n Globe,\n GraduationCap,\n Handshake,\n HardHat,\n Headset,\n HeartPulse,\n Hospital,\n Layers,\n Leaf,\n Lightbulb,\n Lock,\n Mail,\n MapPin,\n MessageSquare,\n Microscope,\n Phone,\n Plane,\n Plug,\n Rocket,\n Scale,\n Search,\n Settings,\n Shield,\n ShieldCheck,\n Smartphone,\n Sparkles,\n Stethoscope,\n Syringe,\n Target,\n Timer,\n TrendingUp,\n Truck,\n UserCheck,\n Users,\n Workflow,\n Wrench,\n Zap,\n} from 'lucide-react';\nimport { cn } from '../utils/cn';\nimport { ownProperty } from '../utils/own';\n\nexport type TemplateIconComponent = React.ComponentType<{\n className?: string;\n strokeWidth?: number;\n 'aria-hidden'?: boolean | 'true' | 'false';\n}>;\n\n/** Extra icon tokens a site maps to its own components; merged over the built-ins. */\nexport type TemplateIconRegistry = Record<string, TemplateIconComponent>;\n\n/**\n * Built-in icon tokens. Page data names an icon by token (`\"shield-check\"`)\n * rather than holding a component, so it stays JSON-serializable.\n */\nexport const templateIcons = {\n activity: Activity,\n award: Award,\n 'badge-check': BadgeCheck,\n bell: Bell,\n briefcase: Briefcase,\n building: Building2,\n calendar: Calendar,\n 'calendar-check': CalendarCheck,\n 'chart-column': ChartColumn,\n 'chart-line': ChartLine,\n 'circle-check': CircleCheck,\n 'clipboard-check': ClipboardCheck,\n clock: Clock,\n cloud: Cloud,\n database: Database,\n 'dollar-sign': DollarSign,\n factory: Factory,\n 'file-text': FileText,\n flask: FlaskConical,\n globe: Globe,\n 'graduation-cap': GraduationCap,\n handshake: Handshake,\n 'hard-hat': HardHat,\n headset: Headset,\n 'heart-pulse': HeartPulse,\n hospital: Hospital,\n layers: Layers,\n leaf: Leaf,\n lightbulb: Lightbulb,\n lock: Lock,\n mail: Mail,\n 'map-pin': MapPin,\n 'message-square': MessageSquare,\n microscope: Microscope,\n phone: Phone,\n plane: Plane,\n plug: Plug,\n rocket: Rocket,\n scale: Scale,\n search: Search,\n settings: Settings,\n shield: Shield,\n 'shield-check': ShieldCheck,\n smartphone: Smartphone,\n sparkles: Sparkles,\n stethoscope: Stethoscope,\n syringe: Syringe,\n target: Target,\n timer: Timer,\n 'trending-up': TrendingUp,\n truck: Truck,\n 'user-check': UserCheck,\n users: Users,\n workflow: Workflow,\n wrench: Wrench,\n zap: Zap,\n} satisfies TemplateIconRegistry;\n\nexport type TemplateIconName = keyof typeof templateIcons;\n\nexport interface TemplateIconProps {\n /** A built-in token, a token from `icons`, or a lettermark of up to four characters. */\n name: string;\n icons?: TemplateIconRegistry;\n className?: string;\n}\n\nexport function TemplateIcon({ name, icons, className }: TemplateIconProps) {\n // Icon names are page/CMS data — own properties only, or \"toString\" would\n // resolve to a prototype method instead of the lettermark/null fallback.\n const Icon =\n ownProperty(icons, name) ??\n ownProperty(templateIcons as TemplateIconRegistry, name);\n if (Icon)\n return (\n <Icon\n aria-hidden=\"true\"\n strokeWidth={1.75}\n className={cn('size-5', className)}\n />\n );\n if (name.length <= 4)\n return (\n <span\n aria-hidden=\"true\"\n className={cn('text-xs font-bold tracking-wide', className)}\n >\n {name}\n </span>\n );\n return null;\n}\n","import * as React from 'react';\nimport { ArrowRight } from 'lucide-react';\nimport { buttonVariants } from '../components/Button/button-variants';\nimport { cn } from '../utils/cn';\nimport { TemplateIcon, type TemplateIconRegistry } from './icons';\nimport type {\n SectionAlign,\n SectionTone,\n TemplateComponents,\n TemplateImageProps,\n TemplateLink,\n TemplateLinkProps,\n} from './types';\n\nconst toneSurface: Record<SectionTone, string> = {\n default: 'bg-background text-foreground',\n muted: 'bg-muted text-foreground',\n brand: 'bg-primary-900 text-white',\n};\n\nexport const toneClass = (tone: SectionTone) => toneSurface[tone];\n\n/** Card surface that reads correctly on the given section tone. */\nexport const cardClass = (tone: SectionTone) =>\n tone === 'brand'\n ? 'border border-white/15 bg-white/5 text-white'\n : 'border border-border bg-card text-card-foreground';\n\n// muted-foreground on bg-muted drops below AA in dark mode, so the muted tone mixes foreground instead.\nexport const mutedTextClass = (tone: SectionTone) =>\n tone === 'brand'\n ? 'text-white/80'\n : tone === 'muted'\n ? 'text-foreground/80'\n : 'text-muted-foreground';\n\n// Explicit, because host sites often colour h1–h4 in a base layer that beats inheritance.\nexport const headingTextClass = (tone: SectionTone) =>\n tone === 'brand' ? 'text-white' : 'text-foreground';\n\n// 800 (light) is the shade Button's primary fill already guarantees against white.\nexport const accentTextClass = (tone: SectionTone) =>\n tone === 'brand' ? 'text-white' : 'text-primary-800 dark:text-primary-300';\n\nexport const containerClass = (width: 'wide' | 'narrow' = 'wide') =>\n cn(\n 'mx-auto w-full px-4 sm:px-6 lg:px-8',\n width === 'narrow' ? 'max-w-3xl' : 'max-w-7xl'\n );\n\nconst SAFE_HREF_SCHEME = /^(?:https?|mailto|tel):/i;\n\n/**\n * A URL from page data, or `undefined` if its scheme is not http(s), mailto or\n * tel. Content/CMS URLs are untrusted, and a `javascript:` href is script\n * execution — React and site Link adapters render it verbatim.\n */\nexport function safeHref(href: string | undefined): string | undefined {\n if (href == null) return undefined;\n // Browsers drop tab/newline and leading controls when parsing, so\n // `java\\tscript:` still runs — match the scheme on the stripped value.\n // eslint-disable-next-line no-control-regex\n const stripped = href.replace(/[\\u0000-\\u0020]/g, '');\n // Blank means \"current document URL\" as a form action — not a real target.\n if (!stripped) return undefined;\n if (!/^[a-z][a-z0-9+.-]*:/i.test(stripped)) return href; // relative, hash, query, //\n return SAFE_HREF_SCHEME.test(stripped) ? href : undefined;\n}\n\n/** An anchor, or the site's `components.Link`, with `trackingId` as `data-track`. */\nexport function TemplateAnchor({\n components,\n trackingId,\n children,\n ...props\n}: TemplateLinkProps & {\n components?: TemplateComponents;\n trackingId?: string;\n}) {\n const Link = components?.Link;\n const href = safeHref(props.href);\n const all = { ...props, href, 'data-track': trackingId };\n // Adapters require an href (Next's Link throws), so a dropped one falls back\n // to an inert plain anchor.\n return Link && href != null ? (\n <Link {...all} href={href}>\n {children}\n </Link>\n ) : (\n <a {...all}>{children}</a>\n );\n}\n\n// React 18 only passes the lowercase attribute through; React 19 wants camelCase.\nconst fetchPriorityHigh = (\n React.version.startsWith('18.')\n ? { fetchpriority: 'high' }\n : { fetchPriority: 'high' }\n) as React.ImgHTMLAttributes<HTMLImageElement>;\n\n/** An `<img>`, or the site's `components.Image`. */\nexport function TemplateImg({\n components,\n priority,\n ...image\n}: TemplateImageProps & { components?: TemplateComponents }) {\n const Image = components?.Image;\n if (Image) return <Image {...image} priority={priority} />;\n return (\n <img\n {...image}\n alt={image.alt}\n loading={priority ? undefined : 'lazy'}\n {...(priority ? fetchPriorityHigh : {})}\n decoding=\"async\"\n />\n );\n}\n\nexport interface SectionHeadingProps {\n eyebrow?: string;\n title?: string;\n description?: string;\n /** Heading element. Sections use `h2`; only a page's hero is `h1`. */\n as?: 'h1' | 'h2' | 'h3';\n size?: 'section' | 'hero';\n align?: SectionAlign;\n tone?: SectionTone;\n titleId?: string;\n className?: string;\n}\n\n/** Eyebrow, heading and supporting text — the opener every landing section shares. */\nexport function SectionHeading({\n eyebrow,\n title,\n description,\n as: Heading = 'h2',\n size = 'section',\n align = 'start',\n tone = 'default',\n titleId,\n className,\n}: SectionHeadingProps) {\n if (!eyebrow && !title && !description) return null;\n return (\n <div\n data-slot=\"section-heading\"\n className={cn(\n 'max-w-3xl',\n align === 'center' && 'mx-auto text-center',\n className\n )}\n >\n {eyebrow && (\n <p\n className={cn(\n 'mb-3 text-sm font-semibold tracking-wider uppercase',\n accentTextClass(tone)\n )}\n >\n {eyebrow}\n </p>\n )}\n {title && (\n <Heading\n id={titleId}\n className={cn(\n 'font-bold tracking-tight text-balance',\n headingTextClass(tone),\n size === 'hero'\n ? 'text-4xl sm:text-5xl lg:text-6xl'\n : 'text-3xl sm:text-4xl'\n )}\n >\n {title}\n </Heading>\n )}\n {description && (\n <p\n className={cn(\n 'mt-4 text-pretty',\n size === 'hero' ? 'text-lg sm:text-xl' : 'text-lg',\n mutedTextClass(tone)\n )}\n >\n {description}\n </p>\n )}\n </div>\n );\n}\n\nexport interface SectionShellProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n 'title'\n> {\n eyebrow?: string;\n title?: string;\n description?: string;\n tone?: SectionTone;\n align?: SectionAlign;\n width?: 'wide' | 'narrow';\n spacing?: 'default' | 'compact';\n /** Accepted so sections can forward their props; the shell renders no links or images. */\n components?: TemplateComponents;\n}\n\n/**\n * The `<section>` + container + heading frame every landing section renders.\n * Exported so a site can build its own section that sits flush with the rest.\n */\nexport const SectionShell = React.forwardRef<HTMLElement, SectionShellProps>(\n (\n {\n eyebrow,\n title,\n description,\n tone = 'default',\n align = 'start',\n width = 'wide',\n spacing = 'default',\n className,\n children,\n components,\n ...rest\n },\n ref\n ) => {\n void components; // kept off the DOM\n const titleId = React.useId();\n return (\n <section\n ref={ref}\n data-slot=\"landing-section\"\n data-tone={tone}\n aria-labelledby={title ? titleId : undefined}\n className={cn(\n spacing === 'compact' ? 'py-10 sm:py-14' : 'py-16 sm:py-24',\n toneClass(tone),\n className\n )}\n {...rest}\n >\n <div className={containerClass(width)}>\n <SectionHeading\n eyebrow={eyebrow}\n title={title}\n description={description}\n align={align}\n tone={tone}\n titleId={titleId}\n className={cn(width === 'narrow' && 'max-w-none')}\n />\n {children}\n </div>\n </section>\n );\n }\n);\nSectionShell.displayName = 'SectionShell';\n\nexport interface CtaLinksProps {\n primary?: TemplateLink;\n secondary?: TemplateLink;\n tone?: SectionTone;\n align?: SectionAlign;\n className?: string;\n components?: TemplateComponents;\n}\n\n/** Primary + secondary calls to action as button-styled anchors. */\nexport function CtaLinks({\n primary,\n secondary,\n tone = 'default',\n align = 'start',\n className,\n components,\n}: CtaLinksProps) {\n if (!primary && !secondary) return null;\n const onBrand = tone === 'brand';\n // Long or translated labels must wrap rather than overflow on phones.\n const wrap = 'h-auto min-h-12 py-3 whitespace-normal text-center';\n return (\n <div\n data-slot=\"cta-links\"\n className={cn(\n 'flex flex-col gap-3 sm:flex-row sm:flex-wrap',\n align === 'center' && 'sm:justify-center',\n className\n )}\n >\n {primary && (\n <TemplateAnchor\n href={primary.href}\n trackingId={primary.trackingId}\n components={components}\n data-slot=\"cta-primary\"\n className={cn(\n buttonVariants({ variant: 'primary', size: 'lg' }),\n wrap,\n onBrand &&\n 'text-primary-900 hover:bg-primary-50 active:bg-primary-100 bg-white'\n )}\n >\n {primary.label}\n <ArrowRight aria-hidden=\"true\" className=\"size-5 rtl:-scale-x-100\" />\n </TemplateAnchor>\n )}\n {secondary && (\n <TemplateAnchor\n href={secondary.href}\n trackingId={secondary.trackingId}\n components={components}\n data-slot=\"cta-secondary\"\n className={cn(\n buttonVariants({ variant: 'outline', size: 'lg' }),\n wrap,\n onBrand &&\n 'border-white/70 text-white hover:bg-white/10 hover:text-white dark:border-white/70 dark:text-white dark:hover:bg-white/10'\n )}\n >\n {secondary.label}\n </TemplateAnchor>\n )}\n </div>\n );\n}\n\nexport interface IconTileProps {\n name: string;\n icons?: TemplateIconRegistry;\n tone?: SectionTone;\n className?: string;\n}\n\nexport function IconTile({\n name,\n icons,\n tone = 'default',\n className,\n}: IconTileProps) {\n return (\n <span\n data-slot=\"icon-tile\"\n className={cn(\n 'inline-flex size-11 shrink-0 items-center justify-center rounded-xl',\n tone === 'brand'\n ? 'bg-white/10 text-white'\n : 'bg-primary-100 text-primary-900 dark:bg-primary-900/60 dark:text-primary-200',\n className\n )}\n >\n <TemplateIcon name={name} icons={icons} />\n </span>\n );\n}\n","import * as React from 'react';\nimport { Check, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n cardClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport type { SectionBaseProps } from '../../templates/types';\n\nexport interface ComparisonRow {\n feature: string;\n /** One value per column: `true`/`false` render as included/not included, strings render as text. */\n values: (boolean | string)[];\n}\n\nexport interface ComparisonSectionLabels {\n /** Header of the first column. */\n feature?: string;\n /** Screen-reader text for a `true` cell. */\n included?: string;\n /** Screen-reader text for a `false` cell. */\n notIncluded?: string;\n}\n\nexport interface ComparisonSectionProps extends SectionBaseProps {\n /** Value column headers, e.g. `[\"Without BlueHive\", \"With BlueHive\"]`. */\n columns: string[];\n rows: ComparisonRow[];\n /** Index into `columns` to emphasise — usually your product. */\n highlightColumn?: number;\n labels?: ComparisonSectionLabels;\n}\n\nconst cellClass = 'px-3 py-3 sm:px-5 sm:py-4';\n\nexport const ComparisonSection = React.forwardRef<\n HTMLElement,\n ComparisonSectionProps\n>(\n (\n {\n columns,\n rows,\n highlightColumn,\n labels,\n title,\n tone = 'default',\n align = 'center',\n ...rest\n },\n ref\n ) => {\n const renderValue = (value: boolean | string) =>\n typeof value === 'string' ? (\n value\n ) : value ? (\n <>\n <Check\n aria-hidden=\"true\"\n className=\"text-success mx-auto size-5\"\n strokeWidth={2.5}\n />\n <span className=\"sr-only\">{labels?.included ?? 'Included'}</span>\n </>\n ) : (\n <>\n <X\n aria-hidden=\"true\"\n className={cn('mx-auto size-5', mutedTextClass(tone))}\n />\n <span className=\"sr-only\">\n {labels?.notIncluded ?? 'Not included'}\n </span>\n </>\n );\n return (\n <SectionShell\n ref={ref}\n data-slot=\"comparison-section\"\n title={title}\n tone={tone}\n align={align}\n {...rest}\n >\n <div\n className={cn('mt-12 overflow-x-auto rounded-2xl', cardClass(tone))}\n >\n <table\n className={cn(\n 'w-full border-collapse text-start',\n // Two value columns fit a phone; more scroll sideways.\n columns.length > 2 && 'min-w-[36rem]'\n )}\n >\n {title && <caption className=\"sr-only\">{title}</caption>}\n <thead>\n <tr>\n <th\n scope=\"col\"\n className={cn(cellClass, 'text-start text-sm font-semibold')}\n >\n {labels?.feature ?? 'Feature'}\n </th>\n {columns.map((column, i) => (\n <th\n key={column}\n scope=\"col\"\n className={cn(\n cellClass,\n 'text-center text-sm font-semibold',\n i === highlightColumn && 'bg-primary-800 text-white'\n )}\n >\n {column}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => (\n <tr\n key={row.feature}\n className={cn(\n 'border-t',\n tone === 'brand' ? 'border-white/15' : 'border-border'\n )}\n >\n <th\n scope=\"row\"\n className={cn(cellClass, 'text-start font-medium')}\n >\n {row.feature}\n </th>\n {/* One cell per column, so a short or long `values` array can't skew the table. */}\n {columns.map((column, i) => (\n <td\n key={column}\n className={cn(\n cellClass,\n 'text-center text-sm',\n i === highlightColumn &&\n 'bg-primary-500/10 font-semibold'\n )}\n >\n {renderValue(row.values[i] ?? '')}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </SectionShell>\n );\n }\n);\nComparisonSection.displayName = 'ComparisonSection';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n CtaLinks,\n SectionHeading,\n containerClass,\n mutedTextClass,\n toneClass,\n} from '../../templates/Section';\nimport type { SectionBaseProps, TemplateLink } from '../../templates/types';\n\nexport interface CtaSectionProps extends SectionBaseProps {\n title: string;\n primaryCta?: TemplateLink;\n secondaryCta?: TemplateLink;\n /** Small print under the buttons (\"Setup takes about 10 minutes\"). */\n note?: string;\n /** `band` fills the section with `tone`; `panel` floats a rounded card of `tone` on the page background. */\n layout?: 'band' | 'panel';\n}\n\nexport const CtaSection = React.forwardRef<HTMLElement, CtaSectionProps>(\n (\n {\n eyebrow,\n title,\n description,\n primaryCta,\n secondaryCta,\n note,\n tone = 'brand',\n align = 'center',\n layout = 'band',\n components,\n className,\n ...rest\n },\n ref\n ) => {\n const titleId = React.useId();\n const body = (\n <>\n <SectionHeading\n eyebrow={eyebrow}\n title={title}\n description={description}\n align={align}\n tone={tone}\n titleId={titleId}\n />\n <CtaLinks\n primary={primaryCta}\n secondary={secondaryCta}\n tone={tone}\n align={align}\n components={components}\n className=\"mt-8\"\n />\n {note && (\n <p\n className={cn(\n 'mt-4 text-sm',\n mutedTextClass(tone),\n align === 'center' && 'text-center'\n )}\n >\n {note}\n </p>\n )}\n </>\n );\n return (\n <section\n ref={ref}\n data-slot=\"cta-section\"\n data-tone={tone}\n aria-labelledby={titleId}\n className={cn(\n 'py-16 sm:py-24',\n layout === 'band' ? toneClass(tone) : 'bg-background',\n className\n )}\n {...rest}\n >\n <div className={containerClass()}>\n {layout === 'panel' ? (\n <div\n className={cn(\n 'rounded-3xl px-6 py-12 sm:px-12 sm:py-16',\n toneClass(tone),\n tone !== 'brand' && 'border-border border'\n )}\n >\n {body}\n </div>\n ) : (\n body\n )}\n </div>\n </section>\n );\n }\n);\nCtaSection.displayName = 'CtaSection';\n","import * as React from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n cardClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport type { SectionBaseProps } from '../../templates/types';\n\nexport interface FaqItem {\n question: string;\n /** Plain text; line breaks are preserved. */\n answer: string;\n /** Anchor id so a link can open straight to this answer. */\n id?: string;\n}\n\nexport interface FaqSectionProps extends SectionBaseProps {\n items: FaqItem[];\n}\n\nexport const FaqSection = React.forwardRef<HTMLElement, FaqSectionProps>(\n ({ items, tone = 'default', align = 'center', ...rest }, ref) => (\n <SectionShell\n ref={ref}\n data-slot=\"faq-section\"\n tone={tone}\n align={align}\n width=\"narrow\"\n {...rest}\n >\n <div className=\"mt-10 space-y-3\">\n {items.map((item) => (\n <details\n key={item.id ?? item.question}\n id={item.id}\n className={cn('group rounded-xl', cardClass(tone))}\n >\n <summary\n className={cn(\n 'flex cursor-pointer list-none items-center justify-between gap-4 rounded-xl px-5 py-4 text-start font-semibold',\n 'focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none',\n '[&::-webkit-details-marker]:hidden'\n )}\n >\n {item.question}\n <ChevronDown\n aria-hidden=\"true\"\n className=\"size-5 shrink-0 transition-transform group-open:rotate-180 motion-reduce:transition-none\"\n />\n </summary>\n <div\n className={cn(\n 'px-5 pb-5 whitespace-pre-line',\n mutedTextClass(tone)\n )}\n >\n {item.answer}\n </div>\n </details>\n ))}\n </div>\n </SectionShell>\n )\n);\nFaqSection.displayName = 'FaqSection';\n","import * as React from 'react';\nimport { ArrowRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n IconTile,\n SectionShell,\n TemplateAnchor,\n accentTextClass,\n cardClass,\n headingTextClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport type { TemplateIconRegistry } from '../../templates/icons';\nimport type { SectionBaseProps, TemplateLink } from '../../templates/types';\n\nexport interface FeatureItem {\n title: string;\n description: string;\n /** Icon token (see `templateIcons`) or a lettermark such as `\"EHR\"`. */\n icon?: string;\n /** Small label above the title. */\n tag?: string;\n link?: TemplateLink;\n}\n\nexport interface FeatureGridSectionProps extends SectionBaseProps {\n features: FeatureItem[];\n columns?: 2 | 3 | 4;\n /** `cards` frames each item; `plain` sets them straight on the section. */\n variant?: 'cards' | 'plain';\n icons?: TemplateIconRegistry;\n}\n\nconst columnClass = {\n 2: 'lg:grid-cols-2',\n 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4',\n} as const;\n\nexport const FeatureGridSection = React.forwardRef<\n HTMLElement,\n FeatureGridSectionProps\n>(\n (\n {\n features,\n columns = 3,\n variant = 'cards',\n icons,\n tone = 'default',\n align = 'start',\n components,\n ...rest\n },\n ref\n ) => (\n <SectionShell\n ref={ref}\n data-slot=\"feature-grid-section\"\n tone={tone}\n align={align}\n {...rest}\n >\n <ul\n className={cn('mt-12 grid gap-6 sm:grid-cols-2', columnClass[columns])}\n >\n {features.map((feature) => (\n <li\n key={feature.title}\n className={cn(\n 'flex flex-col gap-3',\n variant === 'cards' && cn('rounded-2xl p-6', cardClass(tone))\n )}\n >\n {feature.icon && (\n <IconTile name={feature.icon} icons={icons} tone={tone} />\n )}\n {feature.tag && (\n <p\n className={cn(\n 'text-xs font-semibold tracking-wider uppercase',\n accentTextClass(tone)\n )}\n >\n {feature.tag}\n </p>\n )}\n <h3 className={cn('text-lg font-semibold', headingTextClass(tone))}>\n {feature.title}\n </h3>\n <p className={mutedTextClass(tone)}>{feature.description}</p>\n {feature.link && (\n <TemplateAnchor\n href={feature.link.href}\n trackingId={feature.link.trackingId}\n components={components}\n className={cn(\n 'mt-auto inline-flex items-center gap-1 font-semibold hover:underline',\n accentTextClass(tone)\n )}\n >\n {feature.link.label}\n <ArrowRight\n aria-hidden=\"true\"\n className=\"size-4 rtl:-scale-x-100\"\n />\n </TemplateAnchor>\n )}\n </li>\n ))}\n </ul>\n </SectionShell>\n )\n);\nFeatureGridSection.displayName = 'FeatureGridSection';\n","import * as React from 'react';\nimport { ChevronRight, CircleCheck } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n CtaLinks,\n SectionHeading,\n TemplateAnchor,\n TemplateImg,\n accentTextClass,\n containerClass,\n mutedTextClass,\n toneClass,\n} from '../../templates/Section';\nimport type {\n SectionBaseProps,\n TemplateImage,\n TemplateLink,\n} from '../../templates/types';\n\nexport interface HeroSectionLabels {\n /** Accessible name of the breadcrumb `<nav>`. */\n breadcrumb?: string;\n}\n\nexport interface HeroSectionProps extends Omit<SectionBaseProps, 'align'> {\n title: string;\n /** `split` puts copy beside `image`; `centered` stacks everything. */\n variant?: 'centered' | 'split';\n primaryCta?: TemplateLink;\n secondaryCta?: TemplateLink;\n /** Reassurance line under the calls to action (\"No credit card required\"). */\n ctaNote?: string;\n /** Short trust points rendered as a checked list. */\n highlights?: string[];\n image?: TemplateImage;\n /** Trail ending in the current page, which renders unlinked. */\n breadcrumbs?: TemplateLink[];\n /** A page has one `h1`; set `h2` when the page already renders its own. */\n headingLevel?: 'h1' | 'h2';\n labels?: HeroSectionLabels;\n}\n\nexport const HeroSection = React.forwardRef<HTMLElement, HeroSectionProps>(\n (\n {\n eyebrow,\n title,\n description,\n variant = 'centered',\n tone = 'default',\n primaryCta,\n secondaryCta,\n ctaNote,\n highlights,\n image,\n breadcrumbs,\n headingLevel = 'h1',\n labels,\n components,\n className,\n ...rest\n },\n ref\n ) => {\n const titleId = React.useId();\n const split = variant === 'split' && !!image;\n const align = split ? 'start' : 'center';\n return (\n <section\n ref={ref}\n data-slot=\"hero-section\"\n data-tone={tone}\n aria-labelledby={titleId}\n className={cn('py-16 sm:py-24 lg:py-28', toneClass(tone), className)}\n {...rest}\n >\n <div\n className={cn(\n containerClass(),\n split && 'grid items-center gap-12 lg:grid-cols-2'\n )}\n >\n <div className={cn(!split && 'flex flex-col items-center')}>\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav\n aria-label={labels?.breadcrumb ?? 'Breadcrumb'}\n className=\"mb-6\"\n >\n <ol\n className={cn(\n 'flex flex-wrap items-center gap-1 text-sm',\n mutedTextClass(tone),\n !split && 'justify-center'\n )}\n >\n {breadcrumbs.map((crumb, i) => {\n const last = i === breadcrumbs.length - 1;\n return (\n <li key={crumb.href} className=\"flex items-center gap-1\">\n {last ? (\n <span aria-current=\"page\">{crumb.label}</span>\n ) : (\n <>\n <TemplateAnchor\n href={crumb.href}\n trackingId={crumb.trackingId}\n components={components}\n className=\"hover:underline focus-visible:underline\"\n >\n {crumb.label}\n </TemplateAnchor>\n <ChevronRight\n aria-hidden=\"true\"\n className=\"size-4 rtl:-scale-x-100\"\n />\n </>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n )}\n <SectionHeading\n as={headingLevel}\n size=\"hero\"\n eyebrow={eyebrow}\n title={title}\n description={description}\n align={align}\n tone={tone}\n titleId={titleId}\n />\n <CtaLinks\n primary={primaryCta}\n secondary={secondaryCta}\n tone={tone}\n align={align}\n components={components}\n className=\"mt-8\"\n />\n {ctaNote && (\n <p className={cn('mt-4 text-sm', mutedTextClass(tone))}>\n {ctaNote}\n </p>\n )}\n {highlights && highlights.length > 0 && (\n <ul\n className={cn(\n 'mt-8 flex flex-wrap gap-x-6 gap-y-2 text-sm font-medium',\n !split && 'justify-center'\n )}\n >\n {highlights.map((item) => (\n <li key={item} className=\"flex items-center gap-2\">\n <CircleCheck\n aria-hidden=\"true\"\n className={cn('size-4 shrink-0', accentTextClass(tone))}\n />\n {item}\n </li>\n ))}\n </ul>\n )}\n </div>\n {image && (\n <TemplateImg\n {...image}\n priority\n components={components}\n className={cn(\n 'h-auto w-full rounded-2xl object-cover shadow-xl',\n !split && 'mx-auto mt-12 max-w-5xl'\n )}\n />\n )}\n </div>\n </section>\n );\n }\n);\nHeroSection.displayName = 'HeroSection';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { buttonVariants } from '../Button/button-variants';\nimport { RequiredMark, inputVariants } from '../Input';\nimport {\n SectionHeading,\n cardClass,\n containerClass,\n mutedTextClass,\n safeHref,\n toneClass,\n} from '../../templates/Section';\nimport type { SectionBaseProps } from '../../templates/types';\n\nexport interface LeadFormField {\n name: string;\n label: string;\n type?: 'text' | 'email' | 'tel' | 'textarea' | 'select';\n required?: boolean;\n autoComplete?: string;\n placeholder?: string;\n /** Choices for `type: 'select'`. */\n options?: string[];\n /** `half` pairs two fields on one row from the `sm` breakpoint. */\n width?: 'full' | 'half';\n}\n\nexport interface LeadFormSectionProps extends Omit<\n SectionBaseProps,\n 'align' | 'onSubmit'\n> {\n title: string;\n /**\n * A URL, or a React form action such as a Next.js Server Action. A URL is\n * page data: if its scheme is not http(s), mailto or tel the section\n * renders nothing, so an executable action never reaches the form.\n */\n action: string | ((formData: FormData) => void | Promise<void>);\n /** Only used with a URL `action`. */\n method?: 'post' | 'get';\n fields?: LeadFormField[];\n /** Posted with the form, e.g. `{ source: 'industry-construction' }`. */\n hiddenFields?: Record<string, string>;\n submitLabel?: string;\n /** Privacy or consent line under the button. */\n note?: string;\n /** Rendered as `data-track` on the submit button. */\n submitTrackingId?: string;\n /** `split` puts the heading beside the form; `stacked` centres it above. */\n layout?: 'split' | 'stacked';\n}\n\nexport const defaultLeadFormFields: LeadFormField[] = [\n {\n name: 'firstName',\n label: 'First name',\n required: true,\n autoComplete: 'given-name',\n width: 'half',\n },\n {\n name: 'lastName',\n label: 'Last name',\n required: true,\n autoComplete: 'family-name',\n width: 'half',\n },\n {\n name: 'email',\n label: 'Work email',\n type: 'email',\n required: true,\n autoComplete: 'email',\n },\n {\n name: 'company',\n label: 'Company',\n required: true,\n autoComplete: 'organization',\n },\n];\n\nconst controlClass = cn(\n // Input's field styling (single source of truth for form controls); h-auto\n // and py-2.5 because this one class also sizes <textarea> and <select>.\n inputVariants({ size: 'md' }),\n 'block h-auto py-2.5'\n);\n\nexport const LeadFormSection = React.forwardRef<\n HTMLElement,\n LeadFormSectionProps\n>(\n (\n {\n eyebrow,\n title,\n description,\n action,\n method = 'post',\n fields = defaultLeadFormFields,\n hiddenFields,\n submitLabel = 'Submit',\n note,\n layout = 'split',\n tone = 'muted',\n submitTrackingId,\n components,\n className,\n ...rest\n },\n ref\n ) => {\n void components; // the form renders no links or images\n const baseId = React.useId();\n const titleId = `${baseId}-title`;\n const split = layout === 'split';\n // Same trust boundary as TemplateAnchor hrefs — and after the hooks, so\n // the hook count stays stable if `action` changes.\n const resolvedAction =\n typeof action === 'string' ? safeHref(action) : action;\n if (resolvedAction == null) return null;\n return (\n <section\n ref={ref}\n data-slot=\"lead-form-section\"\n data-tone={tone}\n aria-labelledby={titleId}\n className={cn('py-16 sm:py-24', toneClass(tone), className)}\n {...rest}\n >\n <div\n className={cn(\n containerClass(split ? 'wide' : 'narrow'),\n split && 'grid items-start gap-12 lg:grid-cols-2'\n )}\n >\n <SectionHeading\n eyebrow={eyebrow}\n title={title}\n description={description}\n align={split ? 'start' : 'center'}\n tone={tone}\n titleId={titleId}\n />\n <form\n action={resolvedAction}\n method={typeof resolvedAction === 'string' ? method : undefined}\n aria-labelledby={titleId}\n className={cn(\n 'grid gap-5 rounded-2xl p-6 sm:grid-cols-2 sm:p-8',\n // The form card always uses the theme surface so inputs stay legible on a brand band.\n cardClass('default'),\n !split && 'mt-10'\n )}\n >\n {hiddenFields &&\n Object.entries(hiddenFields).map(([name, value]) => (\n <input key={name} type=\"hidden\" name={name} value={value} />\n ))}\n {fields.map((field) => {\n const id = `${baseId}-${field.name}`;\n const common = {\n id,\n name: field.name,\n required: field.required,\n autoComplete: field.autoComplete,\n className: controlClass,\n };\n return (\n <div\n key={field.name}\n className={cn(field.width !== 'half' && 'sm:col-span-2')}\n >\n <label\n htmlFor={id}\n className=\"mb-1.5 block text-sm font-medium\"\n >\n {field.label}\n {field.required && <RequiredMark />}\n </label>\n {field.type === 'textarea' ? (\n <textarea\n {...common}\n rows={4}\n placeholder={field.placeholder}\n />\n ) : field.type === 'select' ? (\n <select {...common} defaultValue=\"\">\n <option value=\"\" disabled>\n {field.placeholder ?? ''}\n </option>\n {field.options?.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n ) : (\n <input\n {...common}\n type={field.type ?? 'text'}\n placeholder={field.placeholder}\n />\n )}\n </div>\n );\n })}\n <div className=\"sm:col-span-2\">\n <button\n type=\"submit\"\n data-track={submitTrackingId}\n className={cn(\n buttonVariants({\n variant: 'primary',\n size: 'lg',\n fullWidth: true,\n }),\n 'h-auto min-h-12 py-3 whitespace-normal'\n )}\n >\n {submitLabel}\n </button>\n {note && (\n <p className={cn('mt-3 text-xs', mutedTextClass('default'))}>\n {note}\n </p>\n )}\n </div>\n </form>\n </div>\n </section>\n );\n }\n);\nLeadFormSection.displayName = 'LeadFormSection';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n TemplateAnchor,\n mutedTextClass,\n} from '../../templates/Section';\nimport type {\n SectionBaseProps,\n TemplateComponents,\n} from '../../templates/types';\n\nexport interface LogoItem {\n name: string;\n /** Logo image; without it the name renders as a wordmark. */\n src?: string;\n href?: string;\n trackingId?: string;\n}\n\nexport interface LogoCloudSectionProps extends SectionBaseProps {\n logos: LogoItem[];\n /** `marquee` loops the row horizontally; it holds still under reduced motion. */\n variant?: 'grid' | 'marquee';\n speed?: 'slow' | 'normal' | 'fast';\n}\n\nconst duration = { slow: '60s', normal: '40s', fast: '25s' } as const;\n\nfunction Logo({\n logo,\n tone,\n hidden,\n components,\n}: {\n logo: LogoItem;\n tone: LogoCloudSectionProps['tone'];\n hidden?: boolean;\n components?: TemplateComponents;\n}) {\n // Plain <img>: logos have no intrinsic size to hand an image optimizer.\n const mark = logo.src ? (\n <img\n src={logo.src}\n alt={hidden ? '' : logo.name}\n loading=\"lazy\"\n decoding=\"async\"\n className={cn(\n 'h-8 w-auto max-w-[9rem] object-contain opacity-70 grayscale transition hover:opacity-100 hover:grayscale-0',\n // Logos are drawn white on dark surfaces so dark wordmarks stay visible.\n tone === 'brand'\n ? 'brightness-0 invert'\n : 'dark:brightness-0 dark:invert'\n )}\n />\n ) : (\n <span\n className={cn(\n 'text-lg font-semibold whitespace-nowrap',\n mutedTextClass(tone ?? 'default')\n )}\n >\n {logo.name}\n </span>\n );\n return logo.href ? (\n <TemplateAnchor\n href={logo.href}\n trackingId={logo.trackingId}\n components={components}\n tabIndex={hidden ? -1 : undefined}\n className=\"focus-visible:ring-ring inline-flex rounded focus-visible:ring-2 focus-visible:outline-none\"\n >\n {mark}\n </TemplateAnchor>\n ) : (\n mark\n );\n}\n\nexport const LogoCloudSection = React.forwardRef<\n HTMLElement,\n LogoCloudSectionProps\n>(\n (\n {\n logos,\n variant = 'grid',\n speed = 'normal',\n tone = 'default',\n align = 'center',\n components,\n ...rest\n },\n ref\n ) => (\n <SectionShell\n ref={ref}\n data-slot=\"logo-cloud-section\"\n tone={tone}\n align={align}\n spacing=\"compact\"\n {...rest}\n >\n {variant === 'marquee' ? (\n <div\n className=\"mie-marquee-host mt-8 overflow-hidden [mask-image:linear-gradient(90deg,transparent,black_10%,black_90%,transparent)]\"\n style={\n { '--mie-marquee-duration': duration[speed] } as React.CSSProperties\n }\n >\n <ul className=\"mie-marquee flex w-max items-center\">\n {logos.map((logo) => (\n <li key={logo.name} className=\"shrink-0 pe-12\">\n <Logo logo={logo} tone={tone} components={components} />\n </li>\n ))}\n {/* Second copy completes the loop; hidden from assistive tech. */}\n {logos.map((logo) => (\n <li\n key={`${logo.name}-copy`}\n data-duplicate=\"\"\n aria-hidden=\"true\"\n className=\"shrink-0 pe-12\"\n >\n <Logo logo={logo} tone={tone} components={components} hidden />\n </li>\n ))}\n </ul>\n </div>\n ) : (\n <ul className=\"mt-8 flex flex-wrap items-center justify-center gap-x-12 gap-y-8\">\n {logos.map((logo) => (\n <li key={logo.name}>\n <Logo logo={logo} tone={tone} components={components} />\n </li>\n ))}\n </ul>\n )}\n </SectionShell>\n )\n);\nLogoCloudSection.displayName = 'LogoCloudSection';\n","import * as React from 'react';\nimport { Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Badge } from '../Badge';\nimport {\n SectionShell,\n TemplateAnchor,\n accentTextClass,\n cardClass,\n headingTextClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport { buttonVariants } from '../Button/button-variants';\nimport type { SectionBaseProps, TemplateLink } from '../../templates/types';\n\nexport interface PricingPlan {\n name: string;\n /** Display price as written, e.g. \"$49\", \"Custom\" or \"Free\". */\n price: string;\n /** Billing unit after the price, e.g. \"per employee / month\". */\n period?: string;\n description?: string;\n features: string[];\n cta?: TemplateLink;\n /** Emphasise this plan and show `badge`. */\n highlighted?: boolean;\n badge?: string;\n}\n\nexport interface PricingSectionProps extends SectionBaseProps {\n plans: PricingPlan[];\n /** Small print under the plans (taxes, contract terms). */\n note?: string;\n}\n\nconst columnClass = [\n '',\n 'lg:grid-cols-1',\n 'lg:grid-cols-2',\n 'lg:grid-cols-3',\n 'lg:grid-cols-4',\n] as const;\n\nexport const PricingSection = React.forwardRef<\n HTMLElement,\n PricingSectionProps\n>(\n (\n { plans, note, tone = 'default', align = 'center', components, ...rest },\n ref\n ) => (\n <SectionShell\n ref={ref}\n data-slot=\"pricing-section\"\n tone={tone}\n align={align}\n {...rest}\n >\n <ul\n className={cn(\n 'mt-12 grid items-stretch gap-6 md:grid-cols-2',\n columnClass[Math.min(plans.length, 4)],\n plans.length === 1 && 'mx-auto max-w-md'\n )}\n >\n {plans.map((plan) => (\n <li\n key={plan.name}\n className={cn(\n 'relative flex flex-col rounded-2xl p-6 sm:p-8',\n cardClass(tone),\n plan.highlighted &&\n 'ring-primary-600 dark:ring-primary-400 ring-2'\n )}\n >\n {plan.highlighted && plan.badge && (\n <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\">\n {plan.badge}\n </Badge>\n )}\n <h3 className={cn('text-lg font-semibold', headingTextClass(tone))}>\n {plan.name}\n </h3>\n {plan.description && (\n <p className={cn('mt-2 text-sm', mutedTextClass(tone))}>\n {plan.description}\n </p>\n )}\n <p className=\"mt-6 flex flex-wrap items-baseline gap-x-2\">\n <span\n className={cn(\n 'text-4xl font-bold tracking-tight',\n headingTextClass(tone)\n )}\n >\n {plan.price}\n </span>\n {plan.period && (\n <span className={cn('text-sm', mutedTextClass(tone))}>\n {plan.period}\n </span>\n )}\n </p>\n <ul className=\"mt-6 flex-1 space-y-3 text-sm\">\n {plan.features.map((feature) => (\n <li key={feature} className=\"flex gap-3\">\n <Check\n aria-hidden=\"true\"\n className={cn(\n 'mt-0.5 size-4 shrink-0',\n accentTextClass(tone)\n )}\n />\n {feature}\n </li>\n ))}\n </ul>\n {plan.cta && (\n <TemplateAnchor\n href={plan.cta.href}\n trackingId={plan.cta.trackingId}\n components={components}\n className={cn(\n buttonVariants({\n variant: plan.highlighted ? 'primary' : 'outline',\n size: 'lg',\n fullWidth: true,\n }),\n 'mt-8 h-auto min-h-12 py-3 whitespace-normal',\n tone === 'brand' &&\n (plan.highlighted\n ? 'text-primary-900 hover:bg-primary-50 bg-white'\n : 'border-white/70 text-white hover:bg-white/10 hover:text-white dark:border-white/70 dark:text-white')\n )}\n >\n {plan.cta.label}\n </TemplateAnchor>\n )}\n </li>\n ))}\n </ul>\n {note && (\n <p\n className={cn(\n 'mt-8 text-sm',\n mutedTextClass(tone),\n align === 'center' && 'text-center'\n )}\n >\n {note}\n </p>\n )}\n </SectionShell>\n )\n);\nPricingSection.displayName = 'PricingSection';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n headingTextClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport { TemplateIcon, type TemplateIconRegistry } from '../../templates/icons';\nimport type { SectionBaseProps } from '../../templates/types';\n\nexport interface ProcessStep {\n title: string;\n description: string;\n /** Icon token shown in the step marker instead of its number. */\n icon?: string;\n}\n\nexport interface ProcessStepsSectionProps extends SectionBaseProps {\n steps: ProcessStep[];\n icons?: TemplateIconRegistry;\n}\n\nconst columnClass = [\n '',\n '',\n 'lg:grid-cols-2',\n 'lg:grid-cols-3',\n 'lg:grid-cols-4',\n] as const;\n\n// Runs from the first marker's centre to the last: half a column in from each edge.\nconst connectorInset = [\n '',\n '',\n 'inset-x-[25%]',\n 'inset-x-[16.667%]',\n 'inset-x-[12.5%]',\n] as const;\n\nexport const ProcessStepsSection = React.forwardRef<\n HTMLElement,\n ProcessStepsSectionProps\n>(({ steps, icons, tone = 'default', align = 'center', ...rest }, ref) => {\n const columns = Math.min(steps.length, 4);\n return (\n <SectionShell\n ref={ref}\n data-slot=\"process-steps-section\"\n tone={tone}\n align={align}\n {...rest}\n >\n <div className=\"relative mt-12\">\n {steps.length > 1 && steps.length <= 4 && (\n <div\n aria-hidden=\"true\"\n className={cn(\n 'absolute top-6 hidden h-px lg:block',\n connectorInset[columns],\n tone === 'brand' ? 'bg-white/25' : 'bg-border'\n )}\n />\n )}\n <ol className={cn('relative grid gap-10', columnClass[columns])}>\n {steps.map((step, i) => (\n <li\n key={step.title}\n className=\"flex flex-col items-center text-center\"\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-12 items-center justify-center rounded-full text-lg font-bold',\n tone === 'brand'\n ? 'text-primary-900 bg-white'\n : 'bg-primary-800 text-white'\n )}\n >\n {step.icon ? (\n <TemplateIcon name={step.icon} icons={icons} />\n ) : (\n i + 1\n )}\n </span>\n <h3\n className={cn(\n 'mt-5 text-lg font-semibold',\n headingTextClass(tone)\n )}\n >\n {step.title}\n </h3>\n <p className={cn('mt-2 max-w-xs', mutedTextClass(tone))}>\n {step.description}\n </p>\n </li>\n ))}\n </ol>\n </div>\n </SectionShell>\n );\n});\nProcessStepsSection.displayName = 'ProcessStepsSection';\n","import * as React from 'react';\nimport { ArrowRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n TemplateAnchor,\n TemplateImg,\n accentTextClass,\n cardClass,\n headingTextClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport type {\n SectionBaseProps,\n TemplateImage,\n TemplateLink,\n} from '../../templates/types';\n\nexport interface ResourceItem {\n title: string;\n href: string;\n excerpt?: string;\n image?: TemplateImage;\n /** Content type label, e.g. \"Guide\" or \"Case study\". */\n kind?: string;\n /** Free-text detail line the caller formats, e.g. \"8 min read\". */\n meta?: string;\n trackingId?: string;\n}\n\nexport interface ResourceCardsSectionProps extends SectionBaseProps {\n items: ResourceItem[];\n columns?: 2 | 3 | 4;\n /** Link to the full index, shown under the cards. */\n viewAll?: TemplateLink;\n}\n\nconst columnClass = {\n 2: 'lg:grid-cols-2',\n 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4',\n} as const;\n\nexport const ResourceCardsSection = React.forwardRef<\n HTMLElement,\n ResourceCardsSectionProps\n>(\n (\n {\n items,\n columns = 3,\n viewAll,\n tone = 'default',\n align = 'start',\n components,\n ...rest\n },\n ref\n ) => (\n <SectionShell\n ref={ref}\n data-slot=\"resource-cards-section\"\n tone={tone}\n align={align}\n {...rest}\n >\n <ul\n className={cn('mt-12 grid gap-6 sm:grid-cols-2', columnClass[columns])}\n >\n {items.map((item) => (\n <li\n key={item.href}\n className={cn(\n 'group relative flex flex-col overflow-hidden rounded-2xl',\n 'focus-within:ring-ring focus-within:ring-2',\n cardClass(tone)\n )}\n >\n {item.image && (\n <TemplateImg\n {...item.image}\n components={components}\n className=\"aspect-video w-full object-cover\"\n />\n )}\n <div className=\"flex flex-1 flex-col gap-2 p-6\">\n {item.kind && (\n <p\n className={cn(\n 'text-xs font-semibold tracking-wider uppercase',\n accentTextClass(tone)\n )}\n >\n {item.kind}\n </p>\n )}\n <h3\n className={cn('text-lg font-semibold', headingTextClass(tone))}\n >\n {/* The ::after stretches the link over the whole card. */}\n <TemplateAnchor\n href={item.href}\n trackingId={item.trackingId}\n components={components}\n className=\"group-hover:underline after:absolute after:inset-0 focus-visible:outline-none\"\n >\n {item.title}\n </TemplateAnchor>\n </h3>\n {item.excerpt && (\n <p className={cn('line-clamp-3', mutedTextClass(tone))}>\n {item.excerpt}\n </p>\n )}\n {item.meta && (\n <p className={cn('mt-auto pt-2 text-sm', mutedTextClass(tone))}>\n {item.meta}\n </p>\n )}\n </div>\n </li>\n ))}\n </ul>\n {viewAll && (\n <p className={cn('mt-10', align === 'center' && 'text-center')}>\n <TemplateAnchor\n href={viewAll.href}\n trackingId={viewAll.trackingId}\n components={components}\n className={cn(\n 'inline-flex items-center gap-1 font-semibold hover:underline',\n accentTextClass(tone)\n )}\n >\n {viewAll.label}\n <ArrowRight\n aria-hidden=\"true\"\n className=\"size-4 rtl:-scale-x-100\"\n />\n </TemplateAnchor>\n </p>\n )}\n </SectionShell>\n )\n);\nResourceCardsSection.displayName = 'ResourceCardsSection';\n","import * as React from 'react';\nimport { CircleCheck } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n CtaLinks,\n SectionHeading,\n TemplateImg,\n accentTextClass,\n containerClass,\n mutedTextClass,\n toneClass,\n} from '../../templates/Section';\nimport type {\n SectionBaseProps,\n TemplateImage,\n TemplateLink,\n} from '../../templates/types';\n\nexport interface SplitContentSectionProps extends Omit<\n SectionBaseProps,\n 'align'\n> {\n title: string;\n image: TemplateImage;\n /** Caption under the image. */\n caption?: string;\n /** Proof points rendered as a checked list under the description. */\n bullets?: string[];\n primaryCta?: TemplateLink;\n secondaryCta?: TemplateLink;\n /** Which side the image sits on at desktop widths (follows reading direction). */\n mediaPosition?: 'start' | 'end';\n}\n\nexport const SplitContentSection = React.forwardRef<\n HTMLElement,\n SplitContentSectionProps\n>(\n (\n {\n eyebrow,\n title,\n description,\n image,\n caption,\n bullets,\n primaryCta,\n secondaryCta,\n mediaPosition = 'end',\n tone = 'default',\n components,\n className,\n ...rest\n },\n ref\n ) => {\n const titleId = React.useId();\n return (\n <section\n ref={ref}\n data-slot=\"split-content-section\"\n data-tone={tone}\n aria-labelledby={titleId}\n className={cn('py-16 sm:py-24', toneClass(tone), className)}\n {...rest}\n >\n <div\n className={cn(\n containerClass(),\n 'grid items-center gap-12 lg:grid-cols-2'\n )}\n >\n <div>\n <SectionHeading\n eyebrow={eyebrow}\n title={title}\n description={description}\n tone={tone}\n titleId={titleId}\n />\n {bullets && bullets.length > 0 && (\n <ul className=\"mt-6 space-y-3\">\n {bullets.map((item) => (\n <li key={item} className=\"flex gap-3\">\n <CircleCheck\n aria-hidden=\"true\"\n className={cn(\n 'mt-0.5 size-5 shrink-0',\n accentTextClass(tone)\n )}\n />\n <span className={mutedTextClass(tone)}>{item}</span>\n </li>\n ))}\n </ul>\n )}\n <CtaLinks\n primary={primaryCta}\n secondary={secondaryCta}\n tone={tone}\n components={components}\n className=\"mt-8\"\n />\n </div>\n <figure className={cn(mediaPosition === 'start' && 'lg:order-first')}>\n <TemplateImg\n {...image}\n components={components}\n className=\"h-auto w-full rounded-2xl object-cover shadow-lg\"\n />\n {caption && (\n <figcaption className={cn('mt-3 text-sm', mutedTextClass(tone))}>\n {caption}\n </figcaption>\n )}\n </figure>\n </div>\n </section>\n );\n }\n);\nSplitContentSection.displayName = 'SplitContentSection';\n","import * as React from 'react';\nimport { TrendingDown, TrendingUp } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n cardClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport type { SectionBaseProps } from '../../templates/types';\n\nexport interface StatItem {\n /** Numbers are locale-formatted; strings render as written. */\n value: number | string;\n prefix?: string;\n suffix?: string;\n label: string;\n description?: string;\n /** Decorative arrow. Say the direction in `label` too — the arrow is hidden from screen readers. */\n trend?: 'up' | 'down';\n}\n\nexport interface StatsSectionProps extends SectionBaseProps {\n stats: StatItem[];\n variant?: 'plain' | 'cards';\n /** BCP 47 locale for number formatting. */\n locale?: string;\n}\n\nconst columnClass = [\n '',\n '',\n 'lg:grid-cols-2',\n 'lg:grid-cols-3',\n 'lg:grid-cols-4',\n] as const;\n\nexport const StatsSection = React.forwardRef<HTMLElement, StatsSectionProps>(\n (\n {\n stats,\n variant = 'plain',\n locale,\n tone = 'default',\n align = 'center',\n ...rest\n },\n ref\n ) => {\n const format = new Intl.NumberFormat(locale);\n return (\n <SectionShell\n ref={ref}\n data-slot=\"stats-section\"\n tone={tone}\n align={align}\n {...rest}\n >\n <dl\n className={cn(\n 'mt-12 grid gap-6 sm:grid-cols-2',\n columnClass[Math.min(stats.length, 4)]\n )}\n >\n {stats.map((stat) => {\n const Trend = stat.trend === 'down' ? TrendingDown : TrendingUp;\n return (\n <div\n key={stat.label}\n className={cn(\n 'flex flex-col-reverse gap-2',\n align === 'center' && 'items-center text-center',\n variant === 'cards' && cn('rounded-2xl p-6', cardClass(tone))\n )}\n >\n <dt>\n <span className=\"font-semibold\">{stat.label}</span>\n {stat.description && (\n <span\n className={cn('mt-1 block text-sm', mutedTextClass(tone))}\n >\n {stat.description}\n </span>\n )}\n </dt>\n <dd\n className={cn(\n 'flex items-center gap-2 text-4xl font-bold tracking-tight tabular-nums sm:text-5xl',\n tone === 'brand'\n ? 'text-white'\n : 'text-primary-800 dark:text-primary-300'\n )}\n >\n {stat.trend && (\n <Trend aria-hidden=\"true\" className=\"size-7 shrink-0\" />\n )}\n {stat.prefix}\n {typeof stat.value === 'number'\n ? format.format(stat.value)\n : stat.value}\n {stat.suffix}\n </dd>\n </div>\n );\n })}\n </dl>\n </SectionShell>\n );\n }\n);\nStatsSection.displayName = 'StatsSection';\n","import * as React from 'react';\nimport { Star } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n SectionShell,\n TemplateImg,\n cardClass,\n headingTextClass,\n mutedTextClass,\n} from '../../templates/Section';\nimport type { SectionBaseProps } from '../../templates/types';\n\nexport interface TestimonialItem {\n quote: string;\n author: string;\n role?: string;\n company?: string;\n /** Headshot URL; decorative, since the author is named beside it. */\n avatar?: string;\n /** Whole stars out of five. */\n rating?: 1 | 2 | 3 | 4 | 5;\n}\n\nexport interface TestimonialSectionLabels {\n /** Screen-reader rating text; `{rating}` is replaced with the number. */\n rating?: string;\n}\n\nexport interface TestimonialSectionProps extends SectionBaseProps {\n testimonials: TestimonialItem[];\n /** `featured` gives the first testimonial the whole section; `cards` lays them out in a grid. */\n variant?: 'cards' | 'featured';\n labels?: TestimonialSectionLabels;\n}\n\nexport const TestimonialSection = React.forwardRef<\n HTMLElement,\n TestimonialSectionProps\n>(\n (\n {\n testimonials,\n variant = 'cards',\n labels,\n tone = 'default',\n align = 'center',\n components,\n ...rest\n },\n ref\n ) => {\n const featured = variant === 'featured';\n const items = featured ? testimonials.slice(0, 1) : testimonials;\n return (\n <SectionShell\n ref={ref}\n data-slot=\"testimonial-section\"\n tone={tone}\n align={align}\n width={featured ? 'narrow' : 'wide'}\n {...rest}\n >\n <ul\n className={cn(\n 'mt-12 grid gap-6',\n !featured && 'md:grid-cols-2 lg:grid-cols-3'\n )}\n >\n {items.map(({ rating, ...t }) => (\n <li key={`${t.author}-${t.quote.slice(0, 24)}`}>\n <figure\n className={cn(\n 'flex h-full flex-col gap-6',\n featured\n ? 'items-center text-center'\n : cn('rounded-2xl p-6', cardClass(tone))\n )}\n >\n {rating && (\n <p className=\"text-warning flex gap-0.5\">\n {Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n aria-hidden=\"true\"\n className={cn(\n 'size-4',\n i < rating ? 'fill-current' : 'opacity-30'\n )}\n />\n ))}\n <span className=\"sr-only\">\n {(labels?.rating ?? 'Rated {rating} out of 5').replace(\n '{rating}',\n String(rating)\n )}\n </span>\n </p>\n )}\n <blockquote\n className={cn(\n 'text-pretty',\n featured\n ? cn(\n 'text-2xl font-medium sm:text-3xl',\n headingTextClass(tone)\n )\n : 'text-base'\n )}\n >\n <p>{t.quote}</p>\n </blockquote>\n <figcaption className=\"mt-auto flex items-center gap-3\">\n {t.avatar && (\n <TemplateImg\n src={t.avatar}\n alt=\"\"\n width={44}\n height={44}\n components={components}\n className=\"size-11 rounded-full object-cover\"\n />\n )}\n <span className={cn(!featured && 'text-start')}>\n <span className=\"block font-semibold\">{t.author}</span>\n {(t.role || t.company) && (\n <span\n className={cn('block text-sm', mutedTextClass(tone))}\n >\n {[t.role, t.company].filter(Boolean).join(', ')}\n </span>\n )}\n </span>\n </figcaption>\n </figure>\n </li>\n ))}\n </ul>\n </SectionShell>\n );\n }\n);\nTestimonialSection.displayName = 'TestimonialSection';\n","import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { SectionShell, mutedTextClass } from '../../templates/Section';\nimport type { SectionBaseProps } from '../../templates/types';\n\ninterface VideoBase {\n /** Accessible name of the player, e.g. \"Product tour (3 min)\". */\n title: string;\n}\n\nexport type VideoSource =\n | (VideoBase & {\n /** Embeds `youtube-nocookie.com`, which sets no cookies until playback. Captions come from YouTube. */\n youtubeId: string;\n })\n | (VideoBase & {\n /** A self-hosted file, played with the native `<video>` element. */\n src: string;\n /** Still frame shown before playback. */\n poster?: string;\n /** WebVTT captions — required, because prerecorded speech needs captions (WCAG 1.2.2). */\n captions: { src: string; srcLang: string; label: string };\n });\n\nexport interface VideoSectionProps extends SectionBaseProps {\n video: VideoSource;\n /** Caption under the player. */\n caption?: string;\n}\n\nexport const VideoSection = React.forwardRef<HTMLElement, VideoSectionProps>(\n ({ video, caption, tone = 'default', align = 'center', ...rest }, ref) => (\n <SectionShell\n ref={ref}\n data-slot=\"video-section\"\n tone={tone}\n align={align}\n {...rest}\n >\n <figure className=\"mx-auto mt-12 max-w-5xl\">\n <div className=\"aspect-video overflow-hidden rounded-2xl bg-neutral-900 shadow-xl\">\n {'youtubeId' in video ? (\n <iframe\n src={`https://www.youtube-nocookie.com/embed/${encodeURIComponent(video.youtubeId)}`}\n title={video.title}\n loading=\"lazy\"\n allow=\"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n referrerPolicy=\"strict-origin-when-cross-origin\"\n className=\"size-full border-0\"\n />\n ) : (\n <video\n src={video.src}\n poster={video.poster}\n title={video.title}\n aria-label={video.title}\n controls\n preload=\"none\"\n className=\"size-full object-cover\"\n >\n <track\n kind=\"captions\"\n src={video.captions.src}\n srcLang={video.captions.srcLang}\n label={video.captions.label}\n default\n />\n </video>\n )}\n </div>\n {caption && (\n <figcaption\n className={cn(\n 'mt-3 text-sm',\n mutedTextClass(tone),\n align === 'center' && 'text-center'\n )}\n >\n {caption}\n </figcaption>\n )}\n </figure>\n </SectionShell>\n )\n);\nVideoSection.displayName = 'VideoSection';\n","import * as React from 'react';\nimport {\n ComparisonSection,\n type ComparisonSectionProps,\n} from '../ComparisonSection';\nimport { CtaSection, type CtaSectionProps } from '../CtaSection';\nimport { FaqSection, type FaqSectionProps } from '../FaqSection';\nimport {\n FeatureGridSection,\n type FeatureGridSectionProps,\n} from '../FeatureGridSection';\nimport { HeroSection, type HeroSectionProps } from '../HeroSection';\nimport { LeadFormSection, type LeadFormSectionProps } from '../LeadFormSection';\nimport {\n LogoCloudSection,\n type LogoCloudSectionProps,\n} from '../LogoCloudSection';\nimport { PricingSection, type PricingSectionProps } from '../PricingSection';\nimport {\n ProcessStepsSection,\n type ProcessStepsSectionProps,\n} from '../ProcessStepsSection';\nimport {\n ResourceCardsSection,\n type ResourceCardsSectionProps,\n} from '../ResourceCardsSection';\nimport {\n SplitContentSection,\n type SplitContentSectionProps,\n} from '../SplitContentSection';\nimport { StatsSection, type StatsSectionProps } from '../StatsSection';\nimport {\n TestimonialSection,\n type TestimonialSectionProps,\n} from '../TestimonialSection';\nimport { VideoSection, type VideoSectionProps } from '../VideoSection';\nimport type { TemplateIconRegistry } from '../../templates/icons';\nimport { safeHref } from '../../templates/Section';\nimport type { TemplateComponents } from '../../templates/types';\nimport { ownProperty } from '../../utils/own';\n\n/** A section the site renders itself, looked up by name in `LandingPage`'s `custom` map. */\nexport interface CustomBlock {\n type: 'custom';\n component: string;\n props?: Record<string, unknown>;\n id?: string;\n}\n\n/** Section props as page data: no event handlers, children or components, so a block survives JSON. */\ntype BlockData<P> = Omit<\n P,\n keyof React.DOMAttributes<HTMLElement> | 'components' | 'icons'\n>;\n\n/** One entry of a page's `blocks` array: a section's props tagged with its `type`. */\nexport type LandingBlock =\n | ({ type: 'hero' } & BlockData<HeroSectionProps>)\n | ({ type: 'logos' } & BlockData<LogoCloudSectionProps>)\n | ({ type: 'features' } & BlockData<FeatureGridSectionProps>)\n | ({ type: 'split' } & BlockData<SplitContentSectionProps>)\n | ({ type: 'process' } & BlockData<ProcessStepsSectionProps>)\n | ({ type: 'stats' } & BlockData<StatsSectionProps>)\n | ({ type: 'comparison' } & BlockData<ComparisonSectionProps>)\n | ({ type: 'pricing' } & BlockData<PricingSectionProps>)\n | ({ type: 'video' } & BlockData<VideoSectionProps>)\n | ({ type: 'testimonials' } & BlockData<TestimonialSectionProps>)\n | ({ type: 'resources' } & BlockData<ResourceCardsSectionProps>)\n | ({ type: 'faq' } & BlockData<FaqSectionProps>)\n | ({ type: 'lead-form' } & Omit<BlockData<LeadFormSectionProps>, 'action'> & {\n /** A URL, or the name of a function in `LandingPage`'s `actions` map. */\n action: string;\n })\n | ({ type: 'cta' } & BlockData<CtaSectionProps>)\n | CustomBlock;\n\nexport type LandingBlockType = LandingBlock['type'];\n\nconst sections = {\n hero: HeroSection,\n logos: LogoCloudSection,\n features: FeatureGridSection,\n split: SplitContentSection,\n process: ProcessStepsSection,\n stats: StatsSection,\n comparison: ComparisonSection,\n pricing: PricingSection,\n video: VideoSection,\n testimonials: TestimonialSection,\n resources: ResourceCardsSection,\n faq: FaqSection,\n 'lead-form': LeadFormSection,\n cta: CtaSection,\n} satisfies Record<Exclude<LandingBlockType, 'custom'>, unknown>;\n\n/** Every block type the renderer knows — `validateLandingPage` checks runtime data against it. */\nexport const landingBlockTypes = [\n ...Object.keys(sections),\n 'custom',\n] as LandingBlockType[];\n\n/** Block types whose section resolves icon tokens. */\nconst takesIcons = new Set<LandingBlockType>(['features', 'process']);\n\nexport interface LandingPageProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The page, top to bottom. Plain data — import it from a content file or a CMS. */\n blocks: LandingBlock[];\n /** Site icon tokens, passed to every section that renders icons. */\n icons?: TemplateIconRegistry;\n /** Site image and link components (e.g. `next/image`, `next/link`), passed to every section. */\n components?: TemplateComponents;\n /** Site-owned sections for `{ type: 'custom', component }` blocks. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- each custom section owns its props\n custom?: Record<string, React.ComponentType<any>>;\n /** Form actions (e.g. Server Actions, React 19) that `lead-form` blocks name in `action`. */\n actions?: Record<string, (formData: FormData) => void | Promise<void>>;\n}\n\nexport const LandingPage = React.forwardRef<HTMLDivElement, LandingPageProps>(\n ({ blocks, icons, components, custom, actions, ...rest }, ref) => (\n <div ref={ref} data-slot=\"landing-page\" {...rest}>\n {blocks.map((block, i) => {\n const key = block.id ?? `${block.type}-${i}`;\n // Own-property lookups throughout: block data is runtime JSON, so\n // `\"toString\"` must mean \"unknown\", not `Object.prototype.toString`.\n if (block.type === 'custom') {\n const Custom = ownProperty(custom, block.component);\n return Custom ? (\n <Custom key={key} id={block.id} {...block.props} />\n ) : null;\n }\n const { type, ...props } = block;\n // `type` narrowed `props` to this section's props; TS can't correlate the lookup.\n const Section = ownProperty(\n sections as Record<string, unknown>,\n type\n ) as React.ComponentType<Record<string, unknown>> | undefined;\n // Runtime page data bypasses `BlockData`, so guard what TypeScript\n // cannot: skip unknown types the way unknown `custom` components are\n // skipped (`validateLandingPage` reports them), drop the props JSON\n // must not control, and inject the framework-owned props after the\n // spread so a block cannot override the site's adapters.\n if (!Section) return null;\n // A non-named lead-form action is a form URL — same trust boundary as\n // hrefs. No safe action means no form: an action-less form would\n // submit the lead to the current document URL instead of going inert.\n const action =\n block.type === 'lead-form'\n ? (ownProperty(actions, block.action) ?? safeHref(block.action))\n : undefined;\n if (block.type === 'lead-form' && action == null) return null;\n const data = { ...props } as Record<string, unknown>;\n delete data.children;\n delete data.dangerouslySetInnerHTML;\n return (\n <Section\n key={key}\n {...data}\n components={components}\n {...(takesIcons.has(type) ? { icons } : {})}\n {...(block.type === 'lead-form' ? { action } : {})}\n />\n );\n })}\n </div>\n )\n);\nLandingPage.displayName = 'LandingPage';\n","import { safeHref } from '../../templates/Section';\nimport {\n landingBlockTypes,\n type LandingBlock,\n type LandingBlockType,\n} from './LandingPage';\n\nexport interface LandingPreset {\n label: string;\n description: string;\n /** Recommended order, top to bottom. Blocks not listed may sit anywhere. */\n sequence: LandingBlockType[];\n /** Blocks the page is incomplete without. */\n required: LandingBlockType[];\n}\n\n/** Page archetypes shared by the BlueHive and Enterprise Health marketing sites. */\nexport const landingPresets = {\n 'vertical-hub': {\n label: 'Industry / vertical hub',\n description:\n 'One page per industry served: the sector problem, what the product does for it, proof, and a way in.',\n sequence: [\n 'hero',\n 'logos',\n 'features',\n 'split',\n 'stats',\n 'process',\n 'testimonials',\n 'resources',\n 'faq',\n 'cta',\n ],\n required: ['hero', 'features', 'faq', 'cta'],\n },\n 'service-detail': {\n label: 'Service / product detail',\n description:\n 'One offering explained: what it is, how it works, how it compares, and how to start.',\n sequence: [\n 'hero',\n 'features',\n 'video',\n 'process',\n 'comparison',\n 'pricing',\n 'stats',\n 'testimonials',\n 'faq',\n 'cta',\n ],\n required: ['hero', 'features', 'cta'],\n },\n campaign: {\n label: 'Campaign / ABM landing',\n description:\n 'A focused page for a campaign or named account that converts on the page itself.',\n sequence: [\n 'hero',\n 'logos',\n 'features',\n 'stats',\n 'testimonials',\n 'lead-form',\n 'faq',\n ],\n required: ['hero', 'lead-form'],\n },\n comparison: {\n label: 'Comparison',\n description:\n 'Your product against an alternative or the status quo, row by row.',\n sequence: ['hero', 'comparison', 'features', 'testimonials', 'faq', 'cta'],\n required: ['hero', 'comparison', 'cta'],\n },\n resource: {\n label: 'Resource / lead magnet',\n description:\n 'A guide, report or tool offered in exchange for contact details.',\n sequence: ['hero', 'split', 'lead-form', 'resources', 'faq'],\n required: ['hero', 'lead-form'],\n },\n pricing: {\n label: 'Pricing',\n description:\n 'Plans and what each includes, the proof that they are worth it, and the questions buyers ask before they pay.',\n sequence: [\n 'hero',\n 'pricing',\n 'comparison',\n 'stats',\n 'testimonials',\n 'faq',\n 'cta',\n ],\n required: ['hero', 'pricing', 'faq'],\n },\n} satisfies Record<string, LandingPreset>;\n\nexport type LandingPresetId = keyof typeof landingPresets;\n\n/** Block types whose items render `h3` titles under the section's `h2`. */\nconst headedItems = new Set<LandingBlockType>([\n 'features',\n 'process',\n 'pricing',\n 'resources',\n]);\n\nexport interface LandingPageIssue {\n severity: 'error' | 'warning';\n message: string;\n /** Index into `blocks`, when the issue belongs to one block. */\n index?: number;\n}\n\n/**\n * Checks a page against the heading contract (exactly one `h1` hero, first)\n * and, when given, a preset's required blocks and order. Run it in a build\n * step or test; `LandingPage` itself renders whatever it is given.\n */\nexport function validateLandingPage(\n blocks: LandingBlock[],\n preset?: LandingPresetId | LandingPreset\n): LandingPageIssue[] {\n const issues: LandingPageIssue[] = [];\n const types = blocks.map((b) => b.type);\n\n const knownTypes = new Set<string>(landingBlockTypes);\n blocks.forEach((b, index) => {\n if (!knownTypes.has(b.type))\n issues.push({\n severity: 'error',\n index,\n message: `Unknown block type \"${b.type}\": the renderer skips this block.`,\n });\n // A named action resolves like a relative URL; unsafe schemes never do.\n if (b.type === 'lead-form' && safeHref(b.action) == null)\n issues.push({\n severity: 'error',\n index,\n message: `Unsafe lead-form action \"${b.action}\": the renderer skips this block.`,\n });\n });\n\n const h1Heroes = blocks.flatMap((b, i) =>\n b.type === 'hero' && (b.headingLevel ?? 'h1') === 'h1' ? [i] : []\n );\n if (h1Heroes.length > 1)\n h1Heroes.slice(1).forEach((index) =>\n issues.push({\n severity: 'error',\n index,\n message:\n 'A second h1 hero: a page has one h1. Set headingLevel: \"h2\" or remove it.',\n })\n );\n if (h1Heroes.length === 0)\n issues.push({\n severity: 'warning',\n message:\n 'No h1 hero. The page must render its own h1 outside the blocks.',\n });\n const firstHero = types.indexOf('hero');\n if (firstHero > 0)\n issues.push({\n severity: 'warning',\n index: firstHero,\n message: 'The hero is not the first block.',\n });\n if (h1Heroes.length > 0 && h1Heroes[0] !== firstHero)\n issues.push({\n severity: 'warning',\n index: h1Heroes[0],\n message:\n 'The h1 hero is not the first hero: an h2 hero precedes the page h1.',\n });\n\n const seen = new Map<string, number>();\n blocks.forEach((b, index) => {\n // FAQ item ids become DOM ids too, so they share the page-wide namespace.\n const ids = [\n ...(b.id ? [b.id] : []),\n ...(b.type === 'faq'\n ? b.items.flatMap((item) => (item.id ? [item.id] : []))\n : []),\n ];\n ids.forEach((id) => {\n if (seen.has(id))\n issues.push({\n severity: 'error',\n index,\n message: `Duplicate id \"${id}\" (also block ${seen.get(id)}).`,\n });\n else seen.set(id, index);\n });\n });\n\n blocks.forEach((b, index) => {\n // Item titles are h3; without the section's h2 the outline skips a level.\n if (headedItems.has(b.type) && !('title' in b && b.title))\n issues.push({\n severity: 'warning',\n index,\n message: `\"${b.type}\" has no title, so its h3 item titles skip the h2 level.`,\n });\n if (b.type !== 'comparison') return;\n b.rows.forEach((row, r) => {\n if (row.values.length !== b.columns.length)\n issues.push({\n severity: 'error',\n index,\n message: `Comparison row ${r} (\"${row.feature}\") has ${row.values.length} values for ${b.columns.length} columns.`,\n });\n });\n if (\n b.highlightColumn !== undefined &&\n (b.highlightColumn < 0 || b.highlightColumn >= b.columns.length)\n )\n issues.push({\n severity: 'warning',\n index,\n message: `highlightColumn ${b.highlightColumn} is outside the ${b.columns.length} comparison columns.`,\n });\n });\n\n if (!preset) return issues;\n const spec: LandingPreset =\n typeof preset === 'string' ? landingPresets[preset] : preset;\n\n for (const type of spec.required)\n if (!types.includes(type))\n issues.push({\n severity: 'error',\n message: `Missing required \"${type}\" block for the ${spec.label} preset.`,\n });\n\n let last = -1;\n blocks.forEach((b, index) => {\n const rank = spec.sequence.indexOf(b.type);\n if (rank === -1) return;\n if (rank < last)\n issues.push({\n severity: 'warning',\n index,\n message: `\"${b.type}\" is out of the ${spec.label} preset's recommended order.`,\n });\n else last = rank;\n });\n\n return issues;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkVNYW4C4J_cjs = require('./chunk-VNYW4C4J.cjs');
3
+ var chunkXFLEW7AT_cjs = require('./chunk-XFLEW7AT.cjs');
4
4
  var chunkS5RVSXDV_cjs = require('./chunk-S5RVSXDV.cjs');
5
5
  var React = require('react');
6
6
  var lucideReact = require('lucide-react');
@@ -262,7 +262,7 @@ function MegaMenu({
262
262
  {
263
263
  href: menu.ctaHref,
264
264
  onClick: navigate,
265
- className: chunkVNYW4C4J_cjs.buttonVariants({ size: "sm", effect: "sheen" }),
265
+ className: chunkXFLEW7AT_cjs.buttonVariants({ size: "sm", effect: "sheen" }),
266
266
  children: menu.ctaLabel ?? "Get started"
267
267
  }
268
268
  )
@@ -388,7 +388,7 @@ function FeaturedPanel({
388
388
  href: featured.ctaHref,
389
389
  onClick: onNavigate,
390
390
  className: chunkS5RVSXDV_cjs.cn(
391
- chunkVNYW4C4J_cjs.buttonVariants({ variant: "outline", effect: "sheen" }),
391
+ chunkXFLEW7AT_cjs.buttonVariants({ variant: "outline", effect: "sheen" }),
392
392
  onDark && "border-white/40 text-white hover:border-white hover:bg-white/10 hover:text-white dark:border-white/40 dark:text-white dark:hover:border-white dark:hover:bg-white/10"
393
393
  ),
394
394
  children: [
@@ -432,5 +432,5 @@ function MegaMenuBar({
432
432
  exports.MegaMenu = MegaMenu;
433
433
  exports.MegaMenuBar = MegaMenuBar;
434
434
  exports.normalizePath = normalizePath;
435
- //# sourceMappingURL=chunk-5GUOOLPR.cjs.map
436
- //# sourceMappingURL=chunk-5GUOOLPR.cjs.map
435
+ //# sourceMappingURL=chunk-VPRKE2YU.cjs.map
436
+ //# sourceMappingURL=chunk-VPRKE2YU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/MegaMenu/MegaMenu.tsx"],"names":["React","cn","jsxs","jsx","ChevronDown","ChevronRight","ArrowRight","buttonVariants"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiGA,IAAM,aAAA,GAAgB,EAAA;AACtB,IAAM,cAAA,GAAiB,GAAA;AAOhB,SAAS,cAAc,IAAA,EAAsB;AAClD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AAG5C,EAAA,IAAI,MAAM,IAAA,CAAK,MAAA;AACf,EAAA,OAAO,MAAM,CAAA,IAAK,IAAA,CAAK,GAAA,GAAM,CAAC,MAAM,GAAA,EAAK,GAAA,EAAA;AACzC,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,IAAK,GAAA;AAC/B;AAgBO,SAAS,QAAA,CAAS;AAAA,EACvB,IAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,MAAA;AAAA,EACV,kBAAkB,CAAC,IAAA,EAAM,CAAA,KAAM,IAAA,EAAM,YAAY,CAAA,CAAE,QAAA;AAAA,EACnD,UAAA;AAAA,EACA,aAAA,GAAgB,GAAA;AAAA,EAChB;AACF,CAAA,EAAkB;AAChB,EAAA,MAAM,OAAA,GAAgBA,wBAAuB,IAAI,CAAA;AACjD,EAAA,MAAM,QAAA,GAAiBA,wBAAuB,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAmBA,wBAAoB,IAAI,CAAA;AACjD,EAAA,MAAM,SAAA,GAAkBA,wBAAsB,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAmBA,wBAAsB,IAAI,CAAA;AACnD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAUA,gBAAA,CAAA,QAAA,EAA6B;AAC3D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,0BAA8B,IAAI,CAAA;AACtE,EAAA,MAAM,UAAgBA,gBAAA,CAAA,KAAA,EAAM;AAE5B,EAAA,MAAM,kBAAkB,MACtB,OAAO,MAAA,KAAW,WAAA,IAAe,OAAO,UAAA,IAAc,aAAA;AAExD,EAAA,MAAM,WAAA,GAAoBA,6BAAY,MAAM;AAC1C,IAAA,IAAI,UAAU,OAAA,KAAY,IAAA,EAAM,MAAA,CAAO,YAAA,CAAa,UAAU,OAAO,CAAA;AACrE,IAAA,IAAI,WAAW,OAAA,KAAY,IAAA,EAAM,MAAA,CAAO,YAAA,CAAa,WAAW,OAAO,CAAA;AACvE,IAAA,SAAA,CAAU,OAAA,GAAU,WAAW,OAAA,GAAU,IAAA;AAAA,EAC3C,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAoBA,6BAAY,MAAM;AAC1C,IAAA,WAAA,EAAY;AACZ,IAAA,SAAA,CAAU,UAAU,MAAA,CAAO,UAAA;AAAA,MACzB,MAAM,aAAa,IAAI,CAAA;AAAA,MACvB;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAY,CAAC,CAAA;AAE9B,EAAA,MAAM,YAAA,GAAqBA,6BAAY,MAAM;AAC3C,IAAA,WAAA,EAAY;AACZ,IAAA,UAAA,CAAW,UAAU,MAAA,CAAO,UAAA;AAAA,MAC1B,MAAM,aAAa,KAAK,CAAA;AAAA,MACxB;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,YAAY,CAAC,CAAA;AAG9B,EAAA,MAAM,QAAA,GAAiBA,6BAAY,MAAM;AACvC,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,KAAA,IAAS,CAAC,iBAAgB,EAAG;AACzC,MAAA,OAAA,CAAQ,MAAS,CAAA;AACjB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,KAAK,qBAAA,EAAsB;AACxC,IAAA,MAAM,GAAA,GAAM,EAAA;AACZ,IAAA,MAAM,EAAA,GAAK,SAAS,eAAA,CAAgB,WAAA;AACpC,IAAA,MAAM,UAAU,IAAA,CAAK,GAAA;AAAA,MACnB,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA;AAAA,MACvB,KAAK,GAAA,CAAI,GAAA,EAAK,EAAA,GAAK,GAAA,GAAM,MAAM,WAAW;AAAA,KAC5C;AACA,IAAA,OAAA,CAAQ,OAAA,GAAU,KAAK,IAAI,CAAA;AAAA,EAE7B,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,MAAM,OAAA,GAAU,WAAA,GAAc,aAAA,CAAc,WAAW,CAAA,GAAI,IAAA;AAC3D,EAAA,MAAM,YAAY,CAAC,IAAA,KACjB,YAAY,IAAA,IAAQ,aAAA,CAAc,IAAI,CAAA,KAAM,OAAA;AAC9C,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,OAAA,EAAS,IAAI,CAAA;AAE9C,EAAMA,2BAAU,MAAM;AACpB,IAAA,IAAI,MAAM,QAAA,EAAS;AAAA,oBACH,IAAI,CAAA;AAAA,EAItB,CAAA,EAAG,CAAC,IAAA,EAAM,QAAA,EAAU,QAAQ,CAAC,CAAA;AAE7B,EAAMA,2BAAU,MAAM;AACpB,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AAC1C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,QAAQ,CAAA;AAAA,EAC5D,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAMA,gBAAA,CAAA,SAAA,CAAU,MAAM,WAAA,EAAa,CAAC,WAAW,CAAC,CAAA;AAEhD,EAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAA2C;AAC5D,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,IAAA,EAAM;AAC9B,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,WAAA,EAAY;AACZ,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,IAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,YAAA,GAAeC,oBAAA;AAAA,IACnB,qFAAA;AAAA,IACA,OAAA,KAAY,UACR,kDAAA,GACA,yDAAA;AAAA,IACJ,IAAA,KACG,OAAA,KAAY,OAAA,GACT,wBAAA,GACA,0BAAA;AAAA,GACR;AAEA,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,UAAA,IAAa;AAAA,EACf,CAAA;AAEA,EAAA;AAAA;AAAA;AAAA,oBAGEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAU,WAAA;AAAA,QACV,YAAA,EAAY,OAAO,MAAA,GAAS,QAAA;AAAA,QAC5B,SAAA,EAAWD,oBAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,QACnC,YAAA,EAAc,MAAM,eAAA,EAAgB,IAAK,WAAA,EAAY;AAAA,QACrD,YAAA,EAAc,MAAM,eAAA,EAAgB,IAAK,YAAA,EAAa;AAAA,QACtD,gBAAgB,MAAM;AACpB,UAAA,IAAI,CAAC,iBAAgB,EAAG;AACxB,UAAA,WAAA,EAAY;AACZ,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACnB,CAAA;AAAA,QACA,aAAA,EAAe,CAAC,CAAA,KAAM;AACpB,UAAA,IAAI,CAAC,iBAAgB,EAAG;AACxB,UAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,EAAS,QAAA,CAAS,EAAE,aAA4B,CAAA;AAC3D,YAAA,YAAA,EAAa;AAAA,QACjB,CAAA;AAAA,QACA,SAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,YAAA,IAAA,CAAK,IAAA,mBACJC,cAAA;AAAA,cAAC,GAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,UAAA;AAAA,gBACL,MAAM,IAAA,CAAK,IAAA;AAAA,gBACX,SAAA,EAAW,YAAA;AAAA,gBACX,eAAA,EAAc,MAAA;AAAA,gBACd,eAAA,EAAe,IAAA;AAAA,gBACf,eAAA,EAAe,OAAA;AAAA,gBACf,cAAA,EAAc,SAAA,CAAU,IAAA,CAAK,IAAI,IAAI,MAAA,GAAS,MAAA;AAAA,gBAC9C,OAAA,EAAS,QAAA;AAAA,gBAER,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,aACR,mBAEAA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,UAAA;AAAA,gBACL,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAW,YAAA;AAAA,gBACX,eAAA,EAAc,MAAA;AAAA,gBACd,eAAA,EAAe,IAAA;AAAA,gBACf,eAAA,EAAe,OAAA;AAAA,gBACf,SAAS,MAAM;AACb,kBAAA,WAAA,EAAY;AACZ,kBAAA,YAAA,CAAa,CAAC,IAAI,CAAA;AAAA,gBACpB,CAAA;AAAA,gBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,aACR;AAAA,4BAEFA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,YAAA,EAAY,CAAA,OAAA,EAAU,IAAA,CAAK,KAAK,CAAA,KAAA,CAAA;AAAA,gBAChC,eAAA,EAAe,IAAA;AAAA,gBACf,eAAA,EAAe,OAAA;AAAA,gBACf,SAAS,MAAM;AACb,kBAAA,WAAA,EAAY;AACZ,kBAAA,YAAA,CAAa,CAAC,IAAI,CAAA;AAAA,gBACpB,CAAA;AAAA,gBACA,SAAA,EAAWF,oBAAA;AAAA,kBACT,2CAAA;AAAA,kBACA,OAAA,KAAY,UACR,gCAAA,GACA,6CAAA;AAAA,kBACJ,IAAA,IAAQ;AAAA,iBACV;AAAA,gBAEA,QAAA,kBAAAE,cAAA,CAACC,uBAAA,EAAA,EAAY,IAAA,EAAM,EAAA,EAAI,eAAY,MAAA,EAAO;AAAA;AAAA;AAC5C,WAAA,EACF,CAAA;AAAA,0BAEAF,eAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,OAAA;AAAA,cACJ,GAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,QAAA;AAAA,cACL,cAAY,IAAA,CAAK,KAAA;AAAA,cACjB,WAAA,EAAU,iBAAA;AAAA,cACV,KAAA,EAAO,EAAE,IAAA,EAAK;AAAA,cACd,SAAA,EAAWD,oBAAA;AAAA,gBACT,qHAAA;AAAA,gBACA,6CAAA;AAAA,gBACA,OACI,mCAAA,GACA,wDAAA;AAAA,gBACJ,WACI,4DAAA,GACA;AAAA,eACN;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,KAAA,EACZ,QAAA,EAAA;AAAA,kBAAA,IAAA,CAAK,2BACJC,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8EAAA,EACV,eAAK,OAAA,EACR,CAAA;AAAA,kBAGD,IAAA,CAAK,MAAA,mBACJA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EACZ,QAAA,EAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBAChBD,eAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,CAAA,CAAE,IAAA,mBACDA,eAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,MAAM,CAAA,CAAE,IAAA;AAAA,wBACR,cAAA,EAAc,SAAA,CAAU,CAAA,CAAE,IAAI,IAAI,MAAA,GAAS,MAAA;AAAA,wBAC3C,OAAA,EAAS,QAAA;AAAA,wBACT,SAAA,EAAU,8HAAA;AAAA,wBAET,QAAA,EAAA;AAAA,0BAAA,CAAA,CAAE,KAAA;AAAA,0CACHC,cAAA,CAACE,wBAAA,EAAA,EAAa,IAAA,EAAM,EAAA,EAAI,eAAY,MAAA,EAAO;AAAA;AAAA;AAAA,wCAG7CF,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EACV,YAAE,KAAA,EACL,CAAA;AAAA,oCAEFA,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,aAAA,EACX,QAAA,EAAA,CAAA,CAAE,MAAM,GAAA,CAAI,CAAC,EAAA,qBACZA,cAAA,CAAC,IAAA,EAAA,EACC,QAAA,kBAAAA,cAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAM,EAAA;AAAA,wBACN,OAAA,EAAO,IAAA;AAAA,wBACP,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,IAAI,CAAA;AAAA,wBAC1B,OAAA,EAAS,UAAA;AAAA,wBACT,UAAA,EAAY;AAAA;AAAA,qBACd,EAAA,EAPO,EAAA,CAAG,IAQZ,CACD,CAAA,EACH;AAAA,mBAAA,EAAA,EA5BQ,CAAA,CAAE,KA6BZ,CACD,CAAA,EACH,CAAA,mBAEAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2BAAA,EACZ,QAAA,EAAA,IAAA,CAAK,KAAA,EAAO,GAAA,CAAI,CAAC,EAAA,qBAChBA,cAAA;AAAA,oBAAC,QAAA;AAAA,oBAAA;AAAA,sBAEC,IAAA,EAAM,EAAA;AAAA,sBACN,OAAA,EAAS,SAAA,CAAU,EAAA,CAAG,IAAI,CAAA;AAAA,sBAC1B,OAAA,EAAS,UAAA;AAAA,sBACT,UAAA,EAAY;AAAA,qBAAA;AAAA,oBAJP,EAAA,CAAG;AAAA,mBAMX,CAAA,EACH,CAAA;AAAA,kBAAA,CAGA,KAAK,OAAA,IAAW,IAAA,CAAK,4BACrBD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,0EAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAK,OAAA,mBACJA,eAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,MAAM,IAAA,CAAK,OAAA;AAAA,wBACX,OAAA,EAAS,QAAA;AAAA,wBACT,SAAA,EAAU,2HAAA;AAAA,wBAET,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAK,QAAA,IAAY,YAAA;AAAA,0CAClBC,cAAA,CAACG,sBAAA,EAAA,EAAW,IAAA,EAAM,EAAA,EAAI,eAAY,MAAA,EAAO;AAAA;AAAA;AAAA,qBAC3C,kCAEC,MAAA,EAAA,EAAK,CAAA;AAAA,oBAEP,KAAK,OAAA,oBACJH,cAAA;AAAA,sBAAC,GAAA;AAAA,sBAAA;AAAA,wBACC,MAAM,IAAA,CAAK,OAAA;AAAA,wBACX,OAAA,EAAS,QAAA;AAAA,wBACT,WAAWI,gCAAA,CAAe,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA;AAAA,wBAExD,eAAK,QAAA,IAAY;AAAA;AAAA;AACpB,mBAAA,EAEJ;AAAA,iBAAA,EAEJ,CAAA;AAAA,gBAEC,QAAA,oBACCJ,cAAA,CAAC,aAAA,EAAA,EAAc,QAAA,EAAoB,YAAY,QAAA,EAAU;AAAA;AAAA;AAAA;AAE7D;AAAA;AAAA;AACF;AAEJ;AAMA,SAAS,QAAA,CAAS;AAAA,EAChB,IAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,uBACED,eAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,MAAA,EAAQ,IAAA,CAAK,QAAA,GAAW,QAAA,GAAW,MAAA;AAAA,MACnC,GAAA,EAAK,IAAA,CAAK,QAAA,GAAW,qBAAA,GAAwB,MAAA;AAAA,MAC7C,cAAA,EAAc,UAAU,MAAA,GAAS,MAAA;AAAA,MACjC,WAAA,EAAU,gBAAA;AAAA,MACV,OAAA,EAAS,UAAA;AAAA,MACT,YAAA,EAAc,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,MAChC,OAAA,EAAS,MAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,MAC3B,SAAA,EAAWD,oBAAA;AAAA,QACT,sEAAA;AAAA,QACA,UAAU,aAAA,GAAgB,KAAA;AAAA,QAC1B,oFAAA;AAAA,QACA,OAAA,IAAW;AAAA,OACb;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,IAAA,oBACJE,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,oBAAA;AAAA,cACT,+EAAA;AAAA,cACA,UACI,iCAAA,GACA,mCAAA;AAAA,cACJ,+EAAA;AAAA,cACA,OAAA,IAAW;AAAA,aACb;AAAA,YAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,SACR;AAAA,wBAEFC,eAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EACd,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWF,oBAAA;AAAA,gBACT,oGAAA;AAAA,gBACA,UAAU,SAAA,GAAY;AAAA,eACxB;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,WACR;AAAA,UACC,CAAC,WAAW,IAAA,CAAK,WAAA,mCACf,MAAA,EAAA,EAAK,SAAA,EAAU,yDAAA,EACb,QAAA,EAAA,IAAA,CAAK,WAAA,EACR;AAAA,SAAA,EAEJ;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,IAAA,GAAqC;AAAA,EACzC,OAAA,EAAS,8DAAA;AAAA,EACT,MAAA,EACE,8JAAA;AAAA,EACF,OAAA,EAAS;AACX,CAAA;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,QAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,IAAA,GAAO,SAAS,IAAA,IAAQ,SAAA;AAC9B,EAAA,MAAM,SAAS,IAAA,KAAS,SAAA;AAIxB,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MAEV,SAAA,EAAWD,oBAAA;AAAA,QACT,iFAAA;AAAA,QACA,KAAK,IAAI;AAAA,OACX;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAE,cAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,oBAAA;AAAA,cACT,mDAAA;AAAA,cACA,SAAS,eAAA,GAAkB;AAAA,aAC7B;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,SACZ;AAAA,uCACC,KAAA,EAAA,EAAI,SAAA,EAAU,QACZ,QAAA,EAAA,QAAA,CAAS,KAAA,KACP,SAAS,IAAA,oBACRE,cAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,oBAAA;AAAA,cACT,sFAAA;AAAA,cACA,SAAS,wBAAA,GAA2B;AAAA,aACtC;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,SACZ,CAAA,EAEN,CAAA;AAAA,wBACAE,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0CAAA,EACV,mBAAS,KAAA,EACZ,CAAA;AAAA,QACC,SAAS,WAAA,oBACRA,cAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,oBAAA;AAAA,cACT,2BAAA;AAAA,cACA,SAAS,eAAA,GAAkB;AAAA,aAC7B;AAAA,YAEC,QAAA,EAAA,QAAA,CAAS;AAAA;AAAA,SACZ;AAAA,wBAEFE,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACb,QAAA,kBAAAD,eAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,MAAM,QAAA,CAAS,OAAA;AAAA,YACf,OAAA,EAAS,UAAA;AAAA,YACT,SAAA,EAAWD,oBAAA;AAAA,cACTM,iCAAe,EAAE,OAAA,EAAS,SAAA,EAAW,MAAA,EAAQ,SAAS,CAAA;AAAA,cACtD,MAAA,IACE;AAAA,aACJ;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,QAAA,CAAS,QAAA;AAAA,8BACVJ,cAAA,CAACG,sBAAA,EAAA,EAAW,IAAA,EAAM,EAAA,EAAI,eAAY,MAAA,EAAO;AAAA;AAAA;AAAA,SAC3C,EACF;AAAA;AAAA,KAAA;AAAA,IArDK,QAAA,CAAS;AAAA,GAsDhB;AAEJ;AAgBO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAc,SAAA,GAAY,iBAAA;AAAA,EAC1B,GAAG;AACL,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUN,0BAAwB,IAAI,CAAA;AAChE,EAAA,uBACEG,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAWF,oBAAA,CAAG,yBAAA,EAA2B,SAAS,CAAA;AAAA,MAEjD,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVE,cAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,IAAA,EAAM,CAAA;AAAA,UACN,IAAA,EAAM,YAAY,CAAA,CAAE,GAAA;AAAA,UACpB,YAAA,EAAc,CAAC,CAAA,KACb,UAAA,CAAW,CAAA,GAAI,CAAA,CAAE,GAAA,GAAM,OAAA,KAAY,CAAA,CAAE,GAAA,GAAM,IAAA,GAAO,OAAO,CAAA;AAAA,UAE1D,GAAG;AAAA,SAAA;AAAA,QANC,CAAA,CAAE;AAAA,OAQV;AAAA;AAAA,GACH;AAEJ","file":"chunk-5GUOOLPR.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { ArrowRight, ChevronDown, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { buttonVariants } from '../Button';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type MegaMenuTone = 'primary' | 'accent' | 'neutral';\n\n/** The right-column feature panel. */\nexport interface MegaMenuFeatured {\n /** Small caps label, e.g. \"Whitepaper\". */\n eyebrow: string;\n title: string;\n description?: string;\n ctaLabel: string;\n ctaHref: string;\n /** Icon tile above the title. Ignored when `media` is given. */\n icon?: React.ReactNode;\n /** Rich media in place of the icon tile — a `VideoCard variant=\"plate\"`, an image. */\n media?: React.ReactNode;\n /** Panel colour. Default `primary`. */\n tone?: MegaMenuTone;\n}\n\nexport interface MegaMenuItem {\n label: string;\n href: string;\n description?: string;\n icon?: React.ReactNode;\n /**\n * Feature panel to show while this item is hovered/focused. Falls back to\n * the menu-level `featured` when unset — this is what makes the right\n * column contextual instead of static.\n */\n featured?: MegaMenuFeatured;\n external?: boolean;\n}\n\nexport interface MegaMenuGroup {\n label: string;\n /** Makes the group heading a link. */\n href?: string;\n items: MegaMenuItem[];\n}\n\nexport interface MegaMenuConfig {\n /** Stable id — used by `MegaMenuBar` to track the open menu. */\n key: string;\n /** Trigger label. */\n label: string;\n /** Trigger destination. Omit for a pure toggle. */\n href?: string;\n /** Heading inside the panel, e.g. \"Resources & insight\". */\n heading?: string;\n /** Flat 2-column grid of items (icon + label + description). */\n items?: MegaMenuItem[];\n /** Grouped columns of compact items. Takes precedence over `items`. */\n groups?: MegaMenuGroup[];\n /** \"Browse all …\" footer link. */\n allLabel?: string;\n allHref?: string;\n /** Footer CTA button. */\n ctaLabel?: string;\n ctaHref?: string;\n /** Default right-column feature panel. */\n featured?: MegaMenuFeatured;\n}\n\nexport interface MegaMenuProps {\n menu: MegaMenuConfig;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Current pathname — marks the matching item/group with `aria-current`. */\n currentPath?: string;\n /** Trigger colours for light (on dark header) or dark (on light header) chrome. */\n variant?: 'light' | 'dark';\n /**\n * Override how the feature panel is chosen. Receives the hovered item (or\n * `null` when none) and the menu; return `undefined` to hide the column.\n * Default: `item?.featured ?? menu.featured`.\n */\n resolveFeatured?: (\n item: MegaMenuItem | null,\n menu: MegaMenuConfig\n ) => MegaMenuFeatured | undefined;\n /** Called after any in-panel navigation (close mobile drawers, etc.). */\n onNavigate?: () => void;\n /** Viewport width below which hover-open is disabled (touch/mobile). Default 900. */\n hoverMinWidth?: number;\n className?: string;\n}\n\nconst OPEN_DELAY_MS = 70;\nconst CLOSE_DELAY_MS = 150;\n\n/**\n * Normalize an href for `currentPath` comparison (strips hash, query and\n * trailing slashes). Shared with `SiteHeader`'s mobile drawer so desktop and\n * mobile menu links agree on `aria-current`.\n */\nexport function normalizePath(href: string): string {\n const path = href.split('#')[0].split('?')[0];\n // Trim trailing slashes with a scan: an anchored `\\/+$` is CodeQL's canonical\n // polynomial-backtracking pattern on caller-supplied hrefs full of slashes.\n let end = path.length;\n while (end > 0 && path[end - 1] === '/') end--;\n return path.slice(0, end) || '/';\n}\n\n// =============================================================================\n// MegaMenu\n// =============================================================================\n\n/**\n * A hover/click mega-menu: trigger link + chevron toggle, a panel with a\n * heading, a 2-column item grid (or grouped columns), a footer with\n * \"Browse all\" + CTA, and a right-column feature panel that **follows the\n * hovered item** (`item.featured`) before falling back to the menu default.\n * Marks the current route with `aria-current`. Ported from the Enterprise\n * Health frontdoor nav.\n *\n * Controlled — pair with `MegaMenuBar` to keep one menu open at a time.\n */\nexport function MegaMenu({\n menu,\n open,\n onOpenChange,\n currentPath,\n variant = 'dark',\n resolveFeatured = (item, m) => item?.featured ?? m.featured,\n onNavigate,\n hoverMinWidth = 900,\n className,\n}: MegaMenuProps) {\n const rootRef = React.useRef<HTMLDivElement>(null);\n const panelRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLElement>(null);\n const openTimer = React.useRef<number | null>(null);\n const closeTimer = React.useRef<number | null>(null);\n const [left, setLeft] = React.useState<number | undefined>();\n const [hovered, setHovered] = React.useState<MegaMenuItem | null>(null);\n const panelId = React.useId();\n\n const isHoverViewport = () =>\n typeof window !== 'undefined' && window.innerWidth >= hoverMinWidth;\n\n const clearTimers = React.useCallback(() => {\n if (openTimer.current !== null) window.clearTimeout(openTimer.current);\n if (closeTimer.current !== null) window.clearTimeout(closeTimer.current);\n openTimer.current = closeTimer.current = null;\n }, []);\n\n const requestOpen = React.useCallback(() => {\n clearTimers();\n openTimer.current = window.setTimeout(\n () => onOpenChange(true),\n OPEN_DELAY_MS\n );\n }, [clearTimers, onOpenChange]);\n\n const requestClose = React.useCallback(() => {\n clearTimers();\n closeTimer.current = window.setTimeout(\n () => onOpenChange(false),\n CLOSE_DELAY_MS\n );\n }, [clearTimers, onOpenChange]);\n\n // Clamp the panel inside the viewport (it's absolutely positioned under the trigger).\n const position = React.useCallback(() => {\n const root = rootRef.current;\n const panel = panelRef.current;\n if (!root || !panel || !isHoverViewport()) {\n setLeft(undefined);\n return;\n }\n const rect = root.getBoundingClientRect();\n const pad = 16;\n const vw = document.documentElement.clientWidth;\n const clamped = Math.min(\n Math.max(rect.left, pad),\n Math.max(pad, vw - pad - panel.offsetWidth)\n );\n setLeft(clamped - rect.left);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hoverMinWidth]);\n\n const curPath = currentPath ? normalizePath(currentPath) : null;\n const isCurrent = (href: string) =>\n curPath !== null && normalizePath(href) === curPath;\n const featured = resolveFeatured(hovered, menu);\n\n React.useEffect(() => {\n if (open) position();\n else setHovered(null);\n // `featured` is a dep because the feature column swaps the 600px layout\n // for the 880px one after open — the wider panel must be re-clamped or a\n // menu opened near the viewport edge overflows it.\n }, [open, position, featured]);\n\n React.useEffect(() => {\n window.addEventListener('resize', position);\n return () => window.removeEventListener('resize', position);\n }, [position]);\n\n React.useEffect(() => clearTimers, [clearTimers]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape' && open) {\n e.stopPropagation();\n clearTimers();\n onOpenChange(false);\n triggerRef.current?.focus();\n }\n };\n\n const triggerClass = cn(\n 'inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-colors',\n variant === 'light'\n ? 'text-white/90 hover:bg-white/10 hover:text-white'\n : 'text-foreground/80 hover:bg-muted hover:text-foreground',\n open &&\n (variant === 'light'\n ? 'bg-white/10 text-white'\n : 'bg-muted text-foreground')\n );\n\n const navigate = () => {\n onOpenChange(false);\n onNavigate?.();\n };\n\n return (\n // Hover/focus delegation region only — the trigger, toggle and links inside are the interactive elements.\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={rootRef}\n data-slot=\"mega-menu\"\n data-state={open ? 'open' : 'closed'}\n className={cn('relative', className)}\n onMouseEnter={() => isHoverViewport() && requestOpen()}\n onMouseLeave={() => isHoverViewport() && requestClose()}\n onFocusCapture={() => {\n if (!isHoverViewport()) return;\n clearTimers();\n onOpenChange(true);\n }}\n onBlurCapture={(e) => {\n if (!isHoverViewport()) return;\n if (!rootRef.current?.contains(e.relatedTarget as Node | null))\n requestClose();\n }}\n onKeyDown={onKeyDown}\n >\n <div className=\"flex items-center\">\n {menu.href ? (\n <a\n ref={triggerRef as React.RefObject<HTMLAnchorElement>}\n href={menu.href}\n className={triggerClass}\n aria-haspopup=\"true\"\n aria-expanded={open}\n aria-controls={panelId}\n aria-current={isCurrent(menu.href) ? 'page' : undefined}\n onClick={navigate}\n >\n {menu.label}\n </a>\n ) : (\n <button\n ref={triggerRef as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n className={triggerClass}\n aria-haspopup=\"true\"\n aria-expanded={open}\n aria-controls={panelId}\n onClick={() => {\n clearTimers();\n onOpenChange(!open);\n }}\n >\n {menu.label}\n </button>\n )}\n <button\n type=\"button\"\n aria-label={`Toggle ${menu.label} menu`}\n aria-expanded={open}\n aria-controls={panelId}\n onClick={() => {\n clearTimers();\n onOpenChange(!open);\n }}\n className={cn(\n '-ms-1 rounded-md p-1 transition-transform',\n variant === 'light'\n ? 'text-white/70 hover:text-white'\n : 'text-muted-foreground hover:text-foreground',\n open && 'rotate-180'\n )}\n >\n <ChevronDown size={16} aria-hidden=\"true\" />\n </button>\n </div>\n\n <div\n id={panelId}\n ref={panelRef}\n role=\"region\"\n aria-label={menu.label}\n data-slot=\"mega-menu-panel\"\n style={{ left }}\n className={cn(\n 'border-border bg-card text-card-foreground absolute top-full z-50 mt-3 origin-top-left rounded-2xl border shadow-xl',\n 'transition-[opacity,transform] duration-200',\n open\n ? 'visible translate-y-0 opacity-100'\n : 'pointer-events-none invisible -translate-y-1 opacity-0',\n featured\n ? 'grid w-[min(880px,calc(100vw-2rem))] grid-cols-[1fr_280px]'\n : 'w-[min(600px,calc(100vw-2rem))]'\n )}\n >\n <div className=\"p-6\">\n {menu.heading && (\n <p className=\"text-muted-foreground mb-4 text-[11px] font-bold tracking-[0.14em] uppercase\">\n {menu.heading}\n </p>\n )}\n\n {menu.groups ? (\n <div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {menu.groups.map((g) => (\n <div key={g.label}>\n {g.href ? (\n <a\n href={g.href}\n aria-current={isCurrent(g.href) ? 'page' : undefined}\n onClick={navigate}\n className=\"text-foreground hover:text-primary-700 dark:hover:text-primary-300 mb-2 inline-flex items-center gap-1 text-sm font-semibold\"\n >\n {g.label}\n <ChevronRight size={14} aria-hidden=\"true\" />\n </a>\n ) : (\n <p className=\"text-foreground mb-2 text-sm font-semibold\">\n {g.label}\n </p>\n )}\n <ul className=\"space-y-0.5\">\n {g.items.map((it) => (\n <li key={it.href}>\n <ItemLink\n item={it}\n compact\n current={isCurrent(it.href)}\n onHover={setHovered}\n onNavigate={navigate}\n />\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"grid gap-1 sm:grid-cols-2\">\n {menu.items?.map((it) => (\n <ItemLink\n key={it.href}\n item={it}\n current={isCurrent(it.href)}\n onHover={setHovered}\n onNavigate={navigate}\n />\n ))}\n </div>\n )}\n\n {(menu.allHref || menu.ctaHref) && (\n <div className=\"border-border mt-5 flex items-center justify-between gap-4 border-t pt-4\">\n {menu.allHref ? (\n <a\n href={menu.allHref}\n onClick={navigate}\n className=\"text-foreground hover:text-primary-700 dark:hover:text-primary-300 inline-flex items-center gap-1.5 text-sm font-semibold\"\n >\n {menu.allLabel ?? 'Browse all'}\n <ArrowRight size={16} aria-hidden=\"true\" />\n </a>\n ) : (\n <span />\n )}\n {menu.ctaHref && (\n <a\n href={menu.ctaHref}\n onClick={navigate}\n className={buttonVariants({ size: 'sm', effect: 'sheen' })}\n >\n {menu.ctaLabel ?? 'Get started'}\n </a>\n )}\n </div>\n )}\n </div>\n\n {featured && (\n <FeaturedPanel featured={featured} onNavigate={navigate} />\n )}\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// Pieces\n// =============================================================================\n\nfunction ItemLink({\n item,\n compact,\n current,\n onHover,\n onNavigate,\n}: {\n item: MegaMenuItem;\n compact?: boolean;\n current: boolean;\n onHover: (item: MegaMenuItem | null) => void;\n onNavigate: () => void;\n}) {\n return (\n <a\n href={item.href}\n target={item.external ? '_blank' : undefined}\n rel={item.external ? 'noopener noreferrer' : undefined}\n aria-current={current ? 'page' : undefined}\n data-slot=\"mega-menu-item\"\n onClick={onNavigate}\n onMouseEnter={() => onHover(item)}\n onFocus={() => onHover(item)}\n className={cn(\n 'group flex items-start gap-3 rounded-xl text-start transition-colors',\n compact ? 'px-2 py-1.5' : 'p-3',\n 'hover:bg-primary-500/10 focus-visible:bg-primary-500/10 focus-visible:outline-none',\n current && 'bg-primary-500/10'\n )}\n >\n {item.icon && (\n <span\n className={cn(\n 'inline-flex shrink-0 items-center justify-center rounded-lg transition-colors',\n compact\n ? 'h-7 w-7 [&_svg]:h-4 [&_svg]:w-4'\n : 'h-10 w-10 [&_svg]:h-5 [&_svg]:w-5',\n 'bg-muted text-foreground/70 group-hover:bg-primary-800 group-hover:text-white',\n current && 'bg-primary-800 text-white'\n )}\n >\n {item.icon}\n </span>\n )}\n <span className=\"min-w-0\">\n <span\n className={cn(\n 'text-foreground group-hover:text-primary-800 dark:group-hover:text-primary-200 block font-semibold',\n compact ? 'text-sm' : 'text-base'\n )}\n >\n {item.label}\n </span>\n {!compact && item.description && (\n <span className=\"text-muted-foreground mt-0.5 block text-sm leading-snug\">\n {item.description}\n </span>\n )}\n </span>\n </a>\n );\n}\n\nconst TONE: Record<MegaMenuTone, string> = {\n primary: 'bg-gradient-to-br from-primary-800 to-primary-950 text-white',\n accent:\n 'text-white [background:linear-gradient(160deg,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-700))_70%,#000)_0%,var(--mieweb-primary-950)_100%)]',\n neutral: 'bg-muted text-foreground',\n};\n\nfunction FeaturedPanel({\n featured,\n onNavigate,\n}: {\n featured: MegaMenuFeatured;\n onNavigate: () => void;\n}) {\n const tone = featured.tone ?? 'primary';\n const onDark = tone !== 'neutral';\n // `key` re-mounts the panel so swapping between items replays the fade-in.\n // A `div`, not `aside`: a complementary landmark nested inside the menu\n // region violates axe landmark-complementary-is-top-level.\n return (\n <div\n data-slot=\"mega-menu-featured\"\n key={featured.title}\n className={cn(\n 'flex flex-col rounded-e-2xl p-6 motion-safe:animate-[mie-fade-in_0.2s_ease-out]',\n TONE[tone]\n )}\n >\n <p\n className={cn(\n 'text-[11px] font-bold tracking-[0.14em] uppercase',\n onDark ? 'text-white/70' : 'text-muted-foreground'\n )}\n >\n {featured.eyebrow}\n </p>\n <div className=\"mt-4\">\n {featured.media ??\n (featured.icon && (\n <span\n className={cn(\n 'inline-flex h-14 w-14 items-center justify-center rounded-xl [&_svg]:h-7 [&_svg]:w-7',\n onDark ? 'bg-white/15 text-white' : 'bg-card text-foreground'\n )}\n >\n {featured.icon}\n </span>\n ))}\n </div>\n <p className=\"mt-4 text-xl leading-tight font-semibold\">\n {featured.title}\n </p>\n {featured.description && (\n <p\n className={cn(\n 'mt-2 text-sm leading-snug',\n onDark ? 'text-white/80' : 'text-muted-foreground'\n )}\n >\n {featured.description}\n </p>\n )}\n <div className=\"mt-auto pt-5\">\n <a\n href={featured.ctaHref}\n onClick={onNavigate}\n className={cn(\n buttonVariants({ variant: 'outline', effect: 'sheen' }),\n onDark &&\n 'border-white/40 text-white hover:border-white hover:bg-white/10 hover:text-white dark:border-white/40 dark:text-white dark:hover:border-white dark:hover:bg-white/10'\n )}\n >\n {featured.ctaLabel}\n <ArrowRight size={16} aria-hidden=\"true\" />\n </a>\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// MegaMenuBar — keeps one menu open at a time\n// =============================================================================\n\nexport interface MegaMenuBarProps extends Pick<\n MegaMenuProps,\n 'currentPath' | 'variant' | 'resolveFeatured' | 'onNavigate' | 'hoverMinWidth'\n> {\n menus: MegaMenuConfig[];\n className?: string;\n 'aria-label'?: string;\n}\n\n/** A row of `MegaMenu` triggers sharing one open-state so only one panel shows. */\nexport function MegaMenuBar({\n menus,\n className,\n 'aria-label': ariaLabel = 'Main navigation',\n ...rest\n}: MegaMenuBarProps) {\n const [openKey, setOpenKey] = React.useState<string | null>(null);\n return (\n <nav\n data-slot=\"mega-menu-bar\"\n aria-label={ariaLabel}\n className={cn('flex items-center gap-1', className)}\n >\n {menus.map((m) => (\n <MegaMenu\n key={m.key}\n menu={m}\n open={openKey === m.key}\n onOpenChange={(o) =>\n setOpenKey(o ? m.key : openKey === m.key ? null : openKey)\n }\n {...rest}\n />\n ))}\n </nav>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/MegaMenu/MegaMenu.tsx"],"names":["React","cn","jsxs","jsx","ChevronDown","ChevronRight","ArrowRight","buttonVariants"],"mappings":"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","file":"chunk-VPRKE2YU.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { ArrowRight, ChevronDown, ChevronRight } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { buttonVariants } from '../Button';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type MegaMenuTone = 'primary' | 'accent' | 'neutral';\n\n/** The right-column feature panel. */\nexport interface MegaMenuFeatured {\n /** Small caps label, e.g. \"Whitepaper\". */\n eyebrow: string;\n title: string;\n description?: string;\n ctaLabel: string;\n ctaHref: string;\n /** Icon tile above the title. Ignored when `media` is given. */\n icon?: React.ReactNode;\n /** Rich media in place of the icon tile — a `VideoCard variant=\"plate\"`, an image. */\n media?: React.ReactNode;\n /** Panel colour. Default `primary`. */\n tone?: MegaMenuTone;\n}\n\nexport interface MegaMenuItem {\n label: string;\n href: string;\n description?: string;\n icon?: React.ReactNode;\n /**\n * Feature panel to show while this item is hovered/focused. Falls back to\n * the menu-level `featured` when unset — this is what makes the right\n * column contextual instead of static.\n */\n featured?: MegaMenuFeatured;\n external?: boolean;\n}\n\nexport interface MegaMenuGroup {\n label: string;\n /** Makes the group heading a link. */\n href?: string;\n items: MegaMenuItem[];\n}\n\nexport interface MegaMenuConfig {\n /** Stable id — used by `MegaMenuBar` to track the open menu. */\n key: string;\n /** Trigger label. */\n label: string;\n /** Trigger destination. Omit for a pure toggle. */\n href?: string;\n /** Heading inside the panel, e.g. \"Resources & insight\". */\n heading?: string;\n /** Flat 2-column grid of items (icon + label + description). */\n items?: MegaMenuItem[];\n /** Grouped columns of compact items. Takes precedence over `items`. */\n groups?: MegaMenuGroup[];\n /** \"Browse all …\" footer link. */\n allLabel?: string;\n allHref?: string;\n /** Footer CTA button. */\n ctaLabel?: string;\n ctaHref?: string;\n /** Default right-column feature panel. */\n featured?: MegaMenuFeatured;\n}\n\nexport interface MegaMenuProps {\n menu: MegaMenuConfig;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Current pathname — marks the matching item/group with `aria-current`. */\n currentPath?: string;\n /** Trigger colours for light (on dark header) or dark (on light header) chrome. */\n variant?: 'light' | 'dark';\n /**\n * Override how the feature panel is chosen. Receives the hovered item (or\n * `null` when none) and the menu; return `undefined` to hide the column.\n * Default: `item?.featured ?? menu.featured`.\n */\n resolveFeatured?: (\n item: MegaMenuItem | null,\n menu: MegaMenuConfig\n ) => MegaMenuFeatured | undefined;\n /** Called after any in-panel navigation (close mobile drawers, etc.). */\n onNavigate?: () => void;\n /** Viewport width below which hover-open is disabled (touch/mobile). Default 900. */\n hoverMinWidth?: number;\n className?: string;\n}\n\nconst OPEN_DELAY_MS = 70;\nconst CLOSE_DELAY_MS = 150;\n\n/**\n * Normalize an href for `currentPath` comparison (strips hash, query and\n * trailing slashes). Shared with `SiteHeader`'s mobile drawer so desktop and\n * mobile menu links agree on `aria-current`.\n */\nexport function normalizePath(href: string): string {\n const path = href.split('#')[0].split('?')[0];\n // Trim trailing slashes with a scan: an anchored `\\/+$` is CodeQL's canonical\n // polynomial-backtracking pattern on caller-supplied hrefs full of slashes.\n let end = path.length;\n while (end > 0 && path[end - 1] === '/') end--;\n return path.slice(0, end) || '/';\n}\n\n// =============================================================================\n// MegaMenu\n// =============================================================================\n\n/**\n * A hover/click mega-menu: trigger link + chevron toggle, a panel with a\n * heading, a 2-column item grid (or grouped columns), a footer with\n * \"Browse all\" + CTA, and a right-column feature panel that **follows the\n * hovered item** (`item.featured`) before falling back to the menu default.\n * Marks the current route with `aria-current`. Ported from the Enterprise\n * Health frontdoor nav.\n *\n * Controlled — pair with `MegaMenuBar` to keep one menu open at a time.\n */\nexport function MegaMenu({\n menu,\n open,\n onOpenChange,\n currentPath,\n variant = 'dark',\n resolveFeatured = (item, m) => item?.featured ?? m.featured,\n onNavigate,\n hoverMinWidth = 900,\n className,\n}: MegaMenuProps) {\n const rootRef = React.useRef<HTMLDivElement>(null);\n const panelRef = React.useRef<HTMLDivElement>(null);\n const triggerRef = React.useRef<HTMLElement>(null);\n const openTimer = React.useRef<number | null>(null);\n const closeTimer = React.useRef<number | null>(null);\n const [left, setLeft] = React.useState<number | undefined>();\n const [hovered, setHovered] = React.useState<MegaMenuItem | null>(null);\n const panelId = React.useId();\n\n const isHoverViewport = () =>\n typeof window !== 'undefined' && window.innerWidth >= hoverMinWidth;\n\n const clearTimers = React.useCallback(() => {\n if (openTimer.current !== null) window.clearTimeout(openTimer.current);\n if (closeTimer.current !== null) window.clearTimeout(closeTimer.current);\n openTimer.current = closeTimer.current = null;\n }, []);\n\n const requestOpen = React.useCallback(() => {\n clearTimers();\n openTimer.current = window.setTimeout(\n () => onOpenChange(true),\n OPEN_DELAY_MS\n );\n }, [clearTimers, onOpenChange]);\n\n const requestClose = React.useCallback(() => {\n clearTimers();\n closeTimer.current = window.setTimeout(\n () => onOpenChange(false),\n CLOSE_DELAY_MS\n );\n }, [clearTimers, onOpenChange]);\n\n // Clamp the panel inside the viewport (it's absolutely positioned under the trigger).\n const position = React.useCallback(() => {\n const root = rootRef.current;\n const panel = panelRef.current;\n if (!root || !panel || !isHoverViewport()) {\n setLeft(undefined);\n return;\n }\n const rect = root.getBoundingClientRect();\n const pad = 16;\n const vw = document.documentElement.clientWidth;\n const clamped = Math.min(\n Math.max(rect.left, pad),\n Math.max(pad, vw - pad - panel.offsetWidth)\n );\n setLeft(clamped - rect.left);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hoverMinWidth]);\n\n const curPath = currentPath ? normalizePath(currentPath) : null;\n const isCurrent = (href: string) =>\n curPath !== null && normalizePath(href) === curPath;\n const featured = resolveFeatured(hovered, menu);\n\n React.useEffect(() => {\n if (open) position();\n else setHovered(null);\n // `featured` is a dep because the feature column swaps the 600px layout\n // for the 880px one after open — the wider panel must be re-clamped or a\n // menu opened near the viewport edge overflows it.\n }, [open, position, featured]);\n\n React.useEffect(() => {\n window.addEventListener('resize', position);\n return () => window.removeEventListener('resize', position);\n }, [position]);\n\n React.useEffect(() => clearTimers, [clearTimers]);\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape' && open) {\n e.stopPropagation();\n clearTimers();\n onOpenChange(false);\n triggerRef.current?.focus();\n }\n };\n\n const triggerClass = cn(\n 'inline-flex items-center rounded-lg px-3 py-2 text-sm font-medium transition-colors',\n variant === 'light'\n ? 'text-white/90 hover:bg-white/10 hover:text-white'\n : 'text-foreground/80 hover:bg-muted hover:text-foreground',\n open &&\n (variant === 'light'\n ? 'bg-white/10 text-white'\n : 'bg-muted text-foreground')\n );\n\n const navigate = () => {\n onOpenChange(false);\n onNavigate?.();\n };\n\n return (\n // Hover/focus delegation region only — the trigger, toggle and links inside are the interactive elements.\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={rootRef}\n data-slot=\"mega-menu\"\n data-state={open ? 'open' : 'closed'}\n className={cn('relative', className)}\n onMouseEnter={() => isHoverViewport() && requestOpen()}\n onMouseLeave={() => isHoverViewport() && requestClose()}\n onFocusCapture={() => {\n if (!isHoverViewport()) return;\n clearTimers();\n onOpenChange(true);\n }}\n onBlurCapture={(e) => {\n if (!isHoverViewport()) return;\n if (!rootRef.current?.contains(e.relatedTarget as Node | null))\n requestClose();\n }}\n onKeyDown={onKeyDown}\n >\n <div className=\"flex items-center\">\n {menu.href ? (\n <a\n ref={triggerRef as React.RefObject<HTMLAnchorElement>}\n href={menu.href}\n className={triggerClass}\n aria-haspopup=\"true\"\n aria-expanded={open}\n aria-controls={panelId}\n aria-current={isCurrent(menu.href) ? 'page' : undefined}\n onClick={navigate}\n >\n {menu.label}\n </a>\n ) : (\n <button\n ref={triggerRef as React.RefObject<HTMLButtonElement>}\n type=\"button\"\n className={triggerClass}\n aria-haspopup=\"true\"\n aria-expanded={open}\n aria-controls={panelId}\n onClick={() => {\n clearTimers();\n onOpenChange(!open);\n }}\n >\n {menu.label}\n </button>\n )}\n <button\n type=\"button\"\n aria-label={`Toggle ${menu.label} menu`}\n aria-expanded={open}\n aria-controls={panelId}\n onClick={() => {\n clearTimers();\n onOpenChange(!open);\n }}\n className={cn(\n '-ms-1 rounded-md p-1 transition-transform',\n variant === 'light'\n ? 'text-white/70 hover:text-white'\n : 'text-muted-foreground hover:text-foreground',\n open && 'rotate-180'\n )}\n >\n <ChevronDown size={16} aria-hidden=\"true\" />\n </button>\n </div>\n\n <div\n id={panelId}\n ref={panelRef}\n role=\"region\"\n aria-label={menu.label}\n data-slot=\"mega-menu-panel\"\n style={{ left }}\n className={cn(\n 'border-border bg-card text-card-foreground absolute top-full z-50 mt-3 origin-top-left rounded-2xl border shadow-xl',\n 'transition-[opacity,transform] duration-200',\n open\n ? 'visible translate-y-0 opacity-100'\n : 'pointer-events-none invisible -translate-y-1 opacity-0',\n featured\n ? 'grid w-[min(880px,calc(100vw-2rem))] grid-cols-[1fr_280px]'\n : 'w-[min(600px,calc(100vw-2rem))]'\n )}\n >\n <div className=\"p-6\">\n {menu.heading && (\n <p className=\"text-muted-foreground mb-4 text-[11px] font-bold tracking-[0.14em] uppercase\">\n {menu.heading}\n </p>\n )}\n\n {menu.groups ? (\n <div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {menu.groups.map((g) => (\n <div key={g.label}>\n {g.href ? (\n <a\n href={g.href}\n aria-current={isCurrent(g.href) ? 'page' : undefined}\n onClick={navigate}\n className=\"text-foreground hover:text-primary-700 dark:hover:text-primary-300 mb-2 inline-flex items-center gap-1 text-sm font-semibold\"\n >\n {g.label}\n <ChevronRight size={14} aria-hidden=\"true\" />\n </a>\n ) : (\n <p className=\"text-foreground mb-2 text-sm font-semibold\">\n {g.label}\n </p>\n )}\n <ul className=\"space-y-0.5\">\n {g.items.map((it) => (\n <li key={it.href}>\n <ItemLink\n item={it}\n compact\n current={isCurrent(it.href)}\n onHover={setHovered}\n onNavigate={navigate}\n />\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"grid gap-1 sm:grid-cols-2\">\n {menu.items?.map((it) => (\n <ItemLink\n key={it.href}\n item={it}\n current={isCurrent(it.href)}\n onHover={setHovered}\n onNavigate={navigate}\n />\n ))}\n </div>\n )}\n\n {(menu.allHref || menu.ctaHref) && (\n <div className=\"border-border mt-5 flex items-center justify-between gap-4 border-t pt-4\">\n {menu.allHref ? (\n <a\n href={menu.allHref}\n onClick={navigate}\n className=\"text-foreground hover:text-primary-700 dark:hover:text-primary-300 inline-flex items-center gap-1.5 text-sm font-semibold\"\n >\n {menu.allLabel ?? 'Browse all'}\n <ArrowRight size={16} aria-hidden=\"true\" />\n </a>\n ) : (\n <span />\n )}\n {menu.ctaHref && (\n <a\n href={menu.ctaHref}\n onClick={navigate}\n className={buttonVariants({ size: 'sm', effect: 'sheen' })}\n >\n {menu.ctaLabel ?? 'Get started'}\n </a>\n )}\n </div>\n )}\n </div>\n\n {featured && (\n <FeaturedPanel featured={featured} onNavigate={navigate} />\n )}\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// Pieces\n// =============================================================================\n\nfunction ItemLink({\n item,\n compact,\n current,\n onHover,\n onNavigate,\n}: {\n item: MegaMenuItem;\n compact?: boolean;\n current: boolean;\n onHover: (item: MegaMenuItem | null) => void;\n onNavigate: () => void;\n}) {\n return (\n <a\n href={item.href}\n target={item.external ? '_blank' : undefined}\n rel={item.external ? 'noopener noreferrer' : undefined}\n aria-current={current ? 'page' : undefined}\n data-slot=\"mega-menu-item\"\n onClick={onNavigate}\n onMouseEnter={() => onHover(item)}\n onFocus={() => onHover(item)}\n className={cn(\n 'group flex items-start gap-3 rounded-xl text-start transition-colors',\n compact ? 'px-2 py-1.5' : 'p-3',\n 'hover:bg-primary-500/10 focus-visible:bg-primary-500/10 focus-visible:outline-none',\n current && 'bg-primary-500/10'\n )}\n >\n {item.icon && (\n <span\n className={cn(\n 'inline-flex shrink-0 items-center justify-center rounded-lg transition-colors',\n compact\n ? 'h-7 w-7 [&_svg]:h-4 [&_svg]:w-4'\n : 'h-10 w-10 [&_svg]:h-5 [&_svg]:w-5',\n 'bg-muted text-foreground/70 group-hover:bg-primary-800 group-hover:text-white',\n current && 'bg-primary-800 text-white'\n )}\n >\n {item.icon}\n </span>\n )}\n <span className=\"min-w-0\">\n <span\n className={cn(\n 'text-foreground group-hover:text-primary-800 dark:group-hover:text-primary-200 block font-semibold',\n compact ? 'text-sm' : 'text-base'\n )}\n >\n {item.label}\n </span>\n {!compact && item.description && (\n <span className=\"text-muted-foreground mt-0.5 block text-sm leading-snug\">\n {item.description}\n </span>\n )}\n </span>\n </a>\n );\n}\n\nconst TONE: Record<MegaMenuTone, string> = {\n primary: 'bg-gradient-to-br from-primary-800 to-primary-950 text-white',\n accent:\n 'text-white [background:linear-gradient(160deg,color-mix(in_srgb,var(--mieweb-accent,var(--mieweb-primary-700))_70%,#000)_0%,var(--mieweb-primary-950)_100%)]',\n neutral: 'bg-muted text-foreground',\n};\n\nfunction FeaturedPanel({\n featured,\n onNavigate,\n}: {\n featured: MegaMenuFeatured;\n onNavigate: () => void;\n}) {\n const tone = featured.tone ?? 'primary';\n const onDark = tone !== 'neutral';\n // `key` re-mounts the panel so swapping between items replays the fade-in.\n // A `div`, not `aside`: a complementary landmark nested inside the menu\n // region violates axe landmark-complementary-is-top-level.\n return (\n <div\n data-slot=\"mega-menu-featured\"\n key={featured.title}\n className={cn(\n 'flex flex-col rounded-e-2xl p-6 motion-safe:animate-[mie-fade-in_0.2s_ease-out]',\n TONE[tone]\n )}\n >\n <p\n className={cn(\n 'text-[11px] font-bold tracking-[0.14em] uppercase',\n onDark ? 'text-white/70' : 'text-muted-foreground'\n )}\n >\n {featured.eyebrow}\n </p>\n <div className=\"mt-4\">\n {featured.media ??\n (featured.icon && (\n <span\n className={cn(\n 'inline-flex h-14 w-14 items-center justify-center rounded-xl [&_svg]:h-7 [&_svg]:w-7',\n onDark ? 'bg-white/15 text-white' : 'bg-card text-foreground'\n )}\n >\n {featured.icon}\n </span>\n ))}\n </div>\n <p className=\"mt-4 text-xl leading-tight font-semibold\">\n {featured.title}\n </p>\n {featured.description && (\n <p\n className={cn(\n 'mt-2 text-sm leading-snug',\n onDark ? 'text-white/80' : 'text-muted-foreground'\n )}\n >\n {featured.description}\n </p>\n )}\n <div className=\"mt-auto pt-5\">\n <a\n href={featured.ctaHref}\n onClick={onNavigate}\n className={cn(\n buttonVariants({ variant: 'outline', effect: 'sheen' }),\n onDark &&\n 'border-white/40 text-white hover:border-white hover:bg-white/10 hover:text-white dark:border-white/40 dark:text-white dark:hover:border-white dark:hover:bg-white/10'\n )}\n >\n {featured.ctaLabel}\n <ArrowRight size={16} aria-hidden=\"true\" />\n </a>\n </div>\n </div>\n );\n}\n\n// =============================================================================\n// MegaMenuBar — keeps one menu open at a time\n// =============================================================================\n\nexport interface MegaMenuBarProps extends Pick<\n MegaMenuProps,\n 'currentPath' | 'variant' | 'resolveFeatured' | 'onNavigate' | 'hoverMinWidth'\n> {\n menus: MegaMenuConfig[];\n className?: string;\n 'aria-label'?: string;\n}\n\n/** A row of `MegaMenu` triggers sharing one open-state so only one panel shows. */\nexport function MegaMenuBar({\n menus,\n className,\n 'aria-label': ariaLabel = 'Main navigation',\n ...rest\n}: MegaMenuBarProps) {\n const [openKey, setOpenKey] = React.useState<string | null>(null);\n return (\n <nav\n data-slot=\"mega-menu-bar\"\n aria-label={ariaLabel}\n className={cn('flex items-center gap-1', className)}\n >\n {menus.map((m) => (\n <MegaMenu\n key={m.key}\n menu={m}\n open={openKey === m.key}\n onOpenChange={(o) =>\n setOpenKey(o ? m.key : openKey === m.key ? null : openKey)\n }\n {...rest}\n />\n ))}\n </nav>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { FenceBlock } from './chunk-H4ZXMQQW.js';
1
+ import { FenceBlock } from './chunk-WBBOH5QF.js';
2
2
  import DOMPurify from 'dompurify';
3
3
  import { useState, useMemo, useCallback, useEffect } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -144,5 +144,5 @@ var MermaidBlock = ({ code, id }) => {
144
144
  };
145
145
 
146
146
  export { MermaidBlock };
147
- //# sourceMappingURL=chunk-KZFBQ7GY.js.map
148
- //# sourceMappingURL=chunk-KZFBQ7GY.js.map
147
+ //# sourceMappingURL=chunk-VVZALGPI.js.map
148
+ //# sourceMappingURL=chunk-VVZALGPI.js.map