@opensite/ui 2.7.6 → 2.7.8

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 (1386) hide show
  1. package/README.md +11 -2
  2. package/dist/about-company-profile.d.cts +3 -3
  3. package/dist/about-company-profile.d.ts +3 -3
  4. package/dist/about-culture-tabs.cjs +174 -174
  5. package/dist/about-culture-tabs.d.cts +4 -4
  6. package/dist/about-culture-tabs.d.ts +4 -4
  7. package/dist/about-culture-tabs.js +174 -174
  8. package/dist/about-developer-profile.cjs +178 -178
  9. package/dist/about-developer-profile.d.cts +3 -3
  10. package/dist/about-developer-profile.d.ts +3 -3
  11. package/dist/about-developer-profile.js +178 -178
  12. package/dist/about-developer-story.cjs +142 -142
  13. package/dist/about-developer-story.d.cts +3 -3
  14. package/dist/about-developer-story.d.ts +3 -3
  15. package/dist/about-developer-story.js +142 -142
  16. package/dist/about-expandable-values.d.cts +4 -4
  17. package/dist/about-expandable-values.d.ts +4 -4
  18. package/dist/about-interactive-tabs.d.cts +3 -3
  19. package/dist/about-interactive-tabs.d.ts +3 -3
  20. package/dist/about-location-info-hero.d.cts +3 -3
  21. package/dist/about-location-info-hero.d.ts +3 -3
  22. package/dist/about-minimal-story.d.cts +3 -3
  23. package/dist/about-minimal-story.d.ts +3 -3
  24. package/dist/about-mission-dual-image.cjs +142 -142
  25. package/dist/about-mission-dual-image.d.cts +3 -3
  26. package/dist/about-mission-dual-image.d.ts +3 -3
  27. package/dist/about-mission-dual-image.js +142 -142
  28. package/dist/about-mission-features.cjs +143 -143
  29. package/dist/about-mission-features.d.cts +3 -3
  30. package/dist/about-mission-features.d.ts +3 -3
  31. package/dist/about-mission-features.js +143 -143
  32. package/dist/about-mission-principles.d.cts +4 -4
  33. package/dist/about-mission-principles.d.ts +4 -4
  34. package/dist/about-network-spotlight.cjs +147 -144
  35. package/dist/about-network-spotlight.d.cts +3 -3
  36. package/dist/about-network-spotlight.d.ts +3 -3
  37. package/dist/about-network-spotlight.js +147 -144
  38. package/dist/about-split-hero.d.cts +3 -3
  39. package/dist/about-split-hero.d.ts +3 -3
  40. package/dist/about-startup-team.d.cts +3 -3
  41. package/dist/about-startup-team.d.ts +3 -3
  42. package/dist/about-stats-showcase.d.cts +3 -3
  43. package/dist/about-stats-showcase.d.ts +3 -3
  44. package/dist/about-stats-sidebar.d.cts +3 -3
  45. package/dist/about-stats-sidebar.d.ts +3 -3
  46. package/dist/about-story-expertise.cjs +142 -142
  47. package/dist/about-story-expertise.d.cts +3 -3
  48. package/dist/about-story-expertise.d.ts +3 -3
  49. package/dist/about-story-expertise.js +142 -142
  50. package/dist/about-story-gallery.d.cts +3 -3
  51. package/dist/about-story-gallery.d.ts +3 -3
  52. package/dist/about-story-hero.d.cts +3 -3
  53. package/dist/about-story-hero.d.ts +3 -3
  54. package/dist/about-streamline-team.cjs +142 -142
  55. package/dist/about-streamline-team.d.cts +3 -3
  56. package/dist/about-streamline-team.d.ts +3 -3
  57. package/dist/about-streamline-team.js +142 -142
  58. package/dist/about-vision-gallery.d.cts +3 -3
  59. package/dist/about-vision-gallery.d.ts +3 -3
  60. package/dist/alternating-blocks.d.cts +4 -4
  61. package/dist/alternating-blocks.d.ts +4 -4
  62. package/dist/animated-dialog.d.cts +3 -3
  63. package/dist/animated-dialog.d.ts +3 -3
  64. package/dist/article-breadcrumb-social.d.cts +3 -3
  65. package/dist/article-breadcrumb-social.d.ts +3 -3
  66. package/dist/article-chapters-author.d.cts +3 -3
  67. package/dist/article-chapters-author.d.ts +3 -3
  68. package/dist/article-compact-toc.d.cts +3 -3
  69. package/dist/article-compact-toc.d.ts +3 -3
  70. package/dist/article-hero-prose.d.cts +3 -3
  71. package/dist/article-hero-prose.d.ts +3 -3
  72. package/dist/article-sidebar-sticky.d.cts +3 -3
  73. package/dist/article-sidebar-sticky.d.ts +3 -3
  74. package/dist/article-split-animated.d.cts +3 -3
  75. package/dist/article-split-animated.d.ts +3 -3
  76. package/dist/article-toc-sidebar.d.cts +3 -3
  77. package/dist/article-toc-sidebar.d.ts +3 -3
  78. package/dist/auto-scroll-carousel.d.cts +3 -3
  79. package/dist/auto-scroll-carousel.d.ts +3 -3
  80. package/dist/badge.d.cts +1 -1
  81. package/dist/badge.d.ts +1 -1
  82. package/dist/banner-announcement-dismissible.d.cts +3 -3
  83. package/dist/banner-announcement-dismissible.d.ts +3 -3
  84. package/dist/banner-countdown-sale.d.cts +3 -3
  85. package/dist/banner-countdown-sale.d.ts +3 -3
  86. package/dist/banner-delivery-countdown.d.cts +3 -3
  87. package/dist/banner-delivery-countdown.d.ts +3 -3
  88. package/dist/banner-event-promo.d.cts +3 -3
  89. package/dist/banner-event-promo.d.ts +3 -3
  90. package/dist/banner-floating-offer.d.cts +3 -3
  91. package/dist/banner-floating-offer.d.ts +3 -3
  92. package/dist/banner-gdpr-rights.d.cts +3 -3
  93. package/dist/banner-gdpr-rights.d.ts +3 -3
  94. package/dist/banner-privacy-notice.d.cts +3 -3
  95. package/dist/banner-privacy-notice.d.ts +3 -3
  96. package/dist/banner-promo-cta.d.cts +3 -3
  97. package/dist/banner-promo-cta.d.ts +3 -3
  98. package/dist/banner-social-follow.d.cts +3 -3
  99. package/dist/banner-social-follow.d.ts +3 -3
  100. package/dist/banner-survey-incentive.d.cts +3 -3
  101. package/dist/banner-survey-incentive.d.ts +3 -3
  102. package/dist/{blocks-CsMdf2Jh.d.ts → blocks-DmMuCMEh.d.ts} +6 -2
  103. package/dist/{blocks-gR13ES5A.d.cts → blocks-U7wOoE0O.d.cts} +6 -2
  104. package/dist/blog-cards-read-time.d.cts +3 -3
  105. package/dist/blog-cards-read-time.d.ts +3 -3
  106. package/dist/blog-cards-tagline-cta.d.cts +3 -3
  107. package/dist/blog-cards-tagline-cta.d.ts +3 -3
  108. package/dist/blog-carousel-apple.d.cts +3 -3
  109. package/dist/blog-carousel-apple.d.ts +3 -3
  110. package/dist/blog-category-overlay.d.cts +3 -3
  111. package/dist/blog-category-overlay.d.ts +3 -3
  112. package/dist/blog-featured-popular.d.cts +3 -3
  113. package/dist/blog-featured-popular.d.ts +3 -3
  114. package/dist/blog-filtered-results.d.cts +3 -3
  115. package/dist/blog-filtered-results.d.ts +3 -3
  116. package/dist/blog-grid-author-cards.d.cts +3 -3
  117. package/dist/blog-grid-author-cards.d.ts +3 -3
  118. package/dist/blog-grid-nine-posts.d.cts +3 -3
  119. package/dist/blog-grid-nine-posts.d.ts +3 -3
  120. package/dist/blog-horizontal-cards.d.cts +3 -3
  121. package/dist/blog-horizontal-cards.d.ts +3 -3
  122. package/dist/blog-horizontal-timeline.d.cts +3 -3
  123. package/dist/blog-horizontal-timeline.d.ts +3 -3
  124. package/dist/blog-masonry-featured.d.cts +3 -3
  125. package/dist/blog-masonry-featured.d.ts +3 -3
  126. package/dist/blog-related-articles.d.cts +3 -3
  127. package/dist/blog-related-articles.d.ts +3 -3
  128. package/dist/blog-tech-insights.cjs +6 -6
  129. package/dist/blog-tech-insights.d.cts +3 -3
  130. package/dist/blog-tech-insights.d.ts +3 -3
  131. package/dist/blog-tech-insights.js +6 -6
  132. package/dist/blur-vignette-grid.d.cts +3 -3
  133. package/dist/blur-vignette-grid.d.ts +3 -3
  134. package/dist/{button-variants-lRElsmTc.d.cts → button-variants-8mtEHxev.d.cts} +1 -1
  135. package/dist/{button-variants-lRElsmTc.d.ts → button-variants-8mtEHxev.d.ts} +1 -1
  136. package/dist/button.d.cts +1 -1
  137. package/dist/button.d.ts +1 -1
  138. package/dist/carousel-animated-sections.d.cts +3 -3
  139. package/dist/carousel-animated-sections.d.ts +3 -3
  140. package/dist/carousel-auto-progress-slides.d.cts +3 -3
  141. package/dist/carousel-auto-progress-slides.d.ts +3 -3
  142. package/dist/carousel-autoplay-progress.d.cts +3 -3
  143. package/dist/carousel-autoplay-progress.d.ts +3 -3
  144. package/dist/carousel-badge-cards.d.cts +3 -3
  145. package/dist/carousel-badge-cards.d.ts +3 -3
  146. package/dist/carousel-demo-link.d.cts +3 -3
  147. package/dist/carousel-demo-link.d.ts +3 -3
  148. package/dist/carousel-feature-badge.d.cts +3 -3
  149. package/dist/carousel-feature-badge.d.ts +3 -3
  150. package/dist/carousel-fullscreen-scroll-fx.d.cts +3 -3
  151. package/dist/carousel-fullscreen-scroll-fx.d.ts +3 -3
  152. package/dist/carousel-gallery-thumbnails.d.cts +3 -3
  153. package/dist/carousel-gallery-thumbnails.d.ts +3 -3
  154. package/dist/carousel-gradient-overlay.d.cts +3 -3
  155. package/dist/carousel-gradient-overlay.d.ts +3 -3
  156. package/dist/carousel-gradient-text.d.cts +3 -3
  157. package/dist/carousel-gradient-text.d.ts +3 -3
  158. package/dist/carousel-horizontal-cards.d.cts +3 -3
  159. package/dist/carousel-horizontal-cards.d.ts +3 -3
  160. package/dist/carousel-icon-sidebar.d.cts +3 -3
  161. package/dist/carousel-icon-sidebar.d.ts +3 -3
  162. package/dist/carousel-icon-tabs.d.cts +3 -3
  163. package/dist/carousel-icon-tabs.d.ts +3 -3
  164. package/dist/carousel-image-hero.d.cts +3 -3
  165. package/dist/carousel-image-hero.d.ts +3 -3
  166. package/dist/carousel-multi-step-showcase.d.cts +3 -3
  167. package/dist/carousel-multi-step-showcase.d.ts +3 -3
  168. package/dist/carousel-portfolio-hero.d.cts +3 -3
  169. package/dist/carousel-portfolio-hero.d.ts +3 -3
  170. package/dist/carousel-product-feature-showcase.d.cts +3 -3
  171. package/dist/carousel-product-feature-showcase.d.ts +3 -3
  172. package/dist/carousel-progress-slider.d.cts +3 -3
  173. package/dist/carousel-progress-slider.d.ts +3 -3
  174. package/dist/carousel-scale-focus.d.cts +3 -3
  175. package/dist/carousel-scale-focus.d.ts +3 -3
  176. package/dist/carousel-scrolling-feature-showcase.d.cts +3 -3
  177. package/dist/carousel-scrolling-feature-showcase.d.ts +3 -3
  178. package/dist/carousel-sidebar-resources.d.cts +3 -3
  179. package/dist/carousel-sidebar-resources.d.ts +3 -3
  180. package/dist/carousel-tabs-content.d.cts +3 -3
  181. package/dist/carousel-tabs-content.d.ts +3 -3
  182. package/dist/case-studies-featured-border.d.cts +3 -3
  183. package/dist/case-studies-featured-border.d.ts +3 -3
  184. package/dist/case-studies-image-grid.d.cts +3 -3
  185. package/dist/case-studies-image-grid.d.ts +3 -3
  186. package/dist/case-studies-stats-card.d.cts +3 -3
  187. package/dist/case-studies-stats-card.d.ts +3 -3
  188. package/dist/case-studies-testimonial-stats.d.cts +3 -3
  189. package/dist/case-studies-testimonial-stats.d.ts +3 -3
  190. package/dist/case-study-prose-sidebar.d.cts +3 -3
  191. package/dist/case-study-prose-sidebar.d.ts +3 -3
  192. package/dist/case-study-stats-metrics.d.cts +3 -3
  193. package/dist/case-study-stats-metrics.d.ts +3 -3
  194. package/dist/case-study-toc-social-sidebar.d.cts +3 -3
  195. package/dist/case-study-toc-social-sidebar.d.ts +3 -3
  196. package/dist/{community-initiatives-CtLnPq2v.d.ts → community-initiatives-64wrtPed.d.ts} +2 -6
  197. package/dist/{community-initiatives-2FsyKLdT.d.cts → community-initiatives-DM27LAzE.d.cts} +2 -6
  198. package/dist/community-initiatives.cjs +142 -142
  199. package/dist/community-initiatives.d.cts +4 -4
  200. package/dist/community-initiatives.d.ts +4 -4
  201. package/dist/community-initiatives.js +142 -142
  202. package/dist/comparison-ai-models.d.cts +3 -3
  203. package/dist/comparison-ai-models.d.ts +3 -3
  204. package/dist/comparison-feature-cards.d.cts +3 -3
  205. package/dist/comparison-feature-cards.d.ts +3 -3
  206. package/dist/comparison-feature-grid.d.cts +4 -4
  207. package/dist/comparison-feature-grid.d.ts +4 -4
  208. package/dist/comparison-grid-badges.d.cts +4 -4
  209. package/dist/comparison-grid-badges.d.ts +4 -4
  210. package/dist/comparison-image-cards.d.cts +3 -3
  211. package/dist/comparison-image-cards.d.ts +3 -3
  212. package/dist/comparison-legacy-modern.d.cts +4 -4
  213. package/dist/comparison-legacy-modern.d.ts +4 -4
  214. package/dist/comparison-metrics-rows.d.cts +3 -3
  215. package/dist/comparison-metrics-rows.d.ts +3 -3
  216. package/dist/comparison-table-tabs.d.cts +4 -4
  217. package/dist/comparison-table-tabs.d.ts +4 -4
  218. package/dist/comparison-table-tooltips.d.cts +4 -4
  219. package/dist/comparison-table-tooltips.d.ts +4 -4
  220. package/dist/comparison-table-two-column.d.cts +3 -3
  221. package/dist/comparison-table-two-column.d.ts +3 -3
  222. package/dist/components.cjs +1359 -785
  223. package/dist/components.d.cts +6 -4
  224. package/dist/components.d.ts +6 -4
  225. package/dist/components.js +1264 -691
  226. package/dist/contact-callback.d.cts +4 -4
  227. package/dist/contact-callback.d.ts +4 -4
  228. package/dist/contact-card.d.cts +5 -5
  229. package/dist/contact-card.d.ts +5 -5
  230. package/dist/contact-careers.cjs +4 -4
  231. package/dist/contact-careers.d.cts +4 -4
  232. package/dist/contact-careers.d.ts +4 -4
  233. package/dist/contact-careers.js +4 -4
  234. package/dist/contact-catering.d.cts +4 -4
  235. package/dist/contact-catering.d.ts +4 -4
  236. package/dist/contact-consultation.d.cts +4 -4
  237. package/dist/contact-consultation.d.ts +4 -4
  238. package/dist/{contact-dark-BN6426-J.d.ts → contact-dark-CECEnR7C.d.ts} +1 -1
  239. package/dist/{contact-dark-DA4diOuH.d.cts → contact-dark-DlV3Sdwd.d.cts} +1 -1
  240. package/dist/contact-dark.d.cts +5 -5
  241. package/dist/contact-dark.d.ts +5 -5
  242. package/dist/contact-demo.d.cts +4 -4
  243. package/dist/contact-demo.d.ts +4 -4
  244. package/dist/contact-emergency.d.cts +4 -4
  245. package/dist/contact-emergency.d.ts +4 -4
  246. package/dist/contact-event.d.cts +4 -4
  247. package/dist/contact-event.d.ts +4 -4
  248. package/dist/contact-faq.cjs +4 -4
  249. package/dist/contact-faq.d.cts +4 -4
  250. package/dist/contact-faq.d.ts +4 -4
  251. package/dist/contact-faq.js +4 -4
  252. package/dist/contact-feedback.d.cts +4 -4
  253. package/dist/contact-feedback.d.ts +4 -4
  254. package/dist/contact-fitness.d.cts +4 -4
  255. package/dist/contact-fitness.d.ts +4 -4
  256. package/dist/contact-floating-banner.d.cts +3 -3
  257. package/dist/contact-floating-banner.d.ts +3 -3
  258. package/dist/contact-guest.d.cts +4 -4
  259. package/dist/contact-guest.d.ts +4 -4
  260. package/dist/contact-help-center.d.cts +4 -4
  261. package/dist/contact-help-center.d.ts +4 -4
  262. package/dist/contact-image.d.cts +3 -3
  263. package/dist/contact-image.d.ts +3 -3
  264. package/dist/contact-insurance.d.cts +4 -4
  265. package/dist/contact-insurance.d.ts +4 -4
  266. package/dist/contact-interview.d.cts +4 -4
  267. package/dist/contact-interview.d.ts +4 -4
  268. package/dist/contact-locations.d.cts +4 -4
  269. package/dist/contact-locations.d.ts +4 -4
  270. package/dist/contact-maintenance.d.cts +4 -4
  271. package/dist/contact-maintenance.d.ts +4 -4
  272. package/dist/contact-map.cjs +1078 -40
  273. package/dist/contact-map.d.cts +15 -5
  274. package/dist/contact-map.d.ts +15 -5
  275. package/dist/contact-map.js +1062 -39
  276. package/dist/contact-minimal.d.cts +4 -4
  277. package/dist/contact-minimal.d.ts +4 -4
  278. package/dist/contact-moving.d.cts +4 -4
  279. package/dist/contact-moving.d.ts +4 -4
  280. package/dist/contact-multistep.d.cts +4 -4
  281. package/dist/contact-multistep.d.ts +4 -4
  282. package/dist/contact-partnership.d.cts +4 -4
  283. package/dist/contact-partnership.d.ts +4 -4
  284. package/dist/contact-photography.d.cts +3 -3
  285. package/dist/contact-photography.d.ts +3 -3
  286. package/dist/contact-press.d.cts +4 -4
  287. package/dist/contact-press.d.ts +4 -4
  288. package/dist/contact-quote.d.cts +4 -4
  289. package/dist/contact-quote.d.ts +4 -4
  290. package/dist/contact-referral.d.cts +4 -4
  291. package/dist/contact-referral.d.ts +4 -4
  292. package/dist/contact-report.d.cts +4 -4
  293. package/dist/contact-report.d.ts +4 -4
  294. package/dist/contact-reservation.d.cts +4 -4
  295. package/dist/contact-reservation.d.ts +4 -4
  296. package/dist/contact-retreat.d.cts +4 -4
  297. package/dist/contact-retreat.d.ts +4 -4
  298. package/dist/contact-rsvp.d.cts +4 -4
  299. package/dist/contact-rsvp.d.ts +4 -4
  300. package/dist/contact-sales.d.cts +4 -4
  301. package/dist/contact-sales.d.ts +4 -4
  302. package/dist/contact-schedule.d.cts +4 -4
  303. package/dist/contact-schedule.d.ts +4 -4
  304. package/dist/contact-sponsorship.d.cts +4 -4
  305. package/dist/contact-sponsorship.d.ts +4 -4
  306. package/dist/contact-support.d.cts +4 -4
  307. package/dist/contact-support.d.ts +4 -4
  308. package/dist/contact-tenant.d.cts +4 -4
  309. package/dist/contact-tenant.d.ts +4 -4
  310. package/dist/contact-vendor.d.cts +4 -4
  311. package/dist/contact-vendor.d.ts +4 -4
  312. package/dist/contact-volunteer.d.cts +4 -4
  313. package/dist/contact-volunteer.d.ts +4 -4
  314. package/dist/contact-warranty.d.cts +4 -4
  315. package/dist/contact-warranty.d.ts +4 -4
  316. package/dist/contact-wedding.d.cts +4 -4
  317. package/dist/contact-wedding.d.ts +4 -4
  318. package/dist/container.d.cts +4 -4
  319. package/dist/container.d.ts +4 -4
  320. package/dist/cta-accent-background.d.cts +3 -3
  321. package/dist/cta-accent-background.d.ts +3 -3
  322. package/dist/cta-app-download-newsletter.d.cts +3 -3
  323. package/dist/cta-app-download-newsletter.d.ts +3 -3
  324. package/dist/cta-background-icon-badge.d.cts +3 -3
  325. package/dist/cta-background-icon-badge.d.ts +3 -3
  326. package/dist/cta-case-study-testimonial.d.cts +3 -3
  327. package/dist/cta-case-study-testimonial.d.ts +3 -3
  328. package/dist/cta-documentation-links.d.cts +3 -3
  329. package/dist/cta-documentation-links.d.ts +3 -3
  330. package/dist/cta-enterprise-dark-features.d.cts +3 -3
  331. package/dist/cta-enterprise-dark-features.d.ts +3 -3
  332. package/dist/cta-enterprise-split.d.cts +3 -3
  333. package/dist/cta-enterprise-split.d.ts +3 -3
  334. package/dist/cta-feature-cards-grid.d.cts +3 -3
  335. package/dist/cta-feature-cards-grid.d.ts +3 -3
  336. package/dist/cta-feature-checklist.cjs +142 -142
  337. package/dist/cta-feature-checklist.d.cts +3 -3
  338. package/dist/cta-feature-checklist.d.ts +3 -3
  339. package/dist/cta-feature-checklist.js +142 -142
  340. package/dist/cta-feature-list.d.cts +3 -3
  341. package/dist/cta-feature-list.d.ts +3 -3
  342. package/dist/cta-fullwidth-background.d.cts +3 -3
  343. package/dist/cta-fullwidth-background.d.ts +3 -3
  344. package/dist/cta-gradient-logos-floating.d.cts +3 -3
  345. package/dist/cta-gradient-logos-floating.d.ts +3 -3
  346. package/dist/cta-gradient-stats-hero.d.cts +3 -3
  347. package/dist/cta-gradient-stats-hero.d.ts +3 -3
  348. package/dist/cta-hero-feature-cards.d.cts +3 -3
  349. package/dist/cta-hero-feature-cards.d.ts +3 -3
  350. package/dist/cta-image-overlay-arrow.d.cts +3 -3
  351. package/dist/cta-image-overlay-arrow.d.ts +3 -3
  352. package/dist/cta-image-overlay-centered.d.cts +3 -3
  353. package/dist/cta-image-overlay-centered.d.ts +3 -3
  354. package/dist/cta-minimal-separator.d.cts +3 -3
  355. package/dist/cta-minimal-separator.d.ts +3 -3
  356. package/dist/cta-newsletter-features.d.cts +3 -3
  357. package/dist/cta-newsletter-features.d.ts +3 -3
  358. package/dist/cta-pattern-background.d.cts +3 -3
  359. package/dist/cta-pattern-background.d.ts +3 -3
  360. package/dist/cta-platform-demo.d.cts +3 -3
  361. package/dist/cta-platform-demo.d.ts +3 -3
  362. package/dist/cta-simple-centered.d.cts +3 -3
  363. package/dist/cta-simple-centered.d.ts +3 -3
  364. package/dist/cta-split-gradient-image.d.cts +3 -3
  365. package/dist/cta-split-gradient-image.d.ts +3 -3
  366. package/dist/cta-split-image-logos.d.cts +3 -3
  367. package/dist/cta-split-image-logos.d.ts +3 -3
  368. package/dist/cta-split-image.d.cts +3 -3
  369. package/dist/cta-split-image.d.ts +3 -3
  370. package/dist/cta-stacked-cards.d.cts +3 -3
  371. package/dist/cta-stacked-cards.d.ts +3 -3
  372. package/dist/cta-video-background-hero.d.cts +3 -3
  373. package/dist/cta-video-background-hero.d.ts +3 -3
  374. package/dist/cta-workflow-tabs.d.cts +3 -3
  375. package/dist/cta-workflow-tabs.d.ts +3 -3
  376. package/dist/expandable-case-study-cards.d.cts +3 -3
  377. package/dist/expandable-case-study-cards.d.ts +3 -3
  378. package/dist/faq-badge-support.cjs +5 -5
  379. package/dist/faq-badge-support.d.cts +3 -3
  380. package/dist/faq-badge-support.d.ts +3 -3
  381. package/dist/faq-badge-support.js +5 -5
  382. package/dist/faq-bordered-badge.cjs +15 -66
  383. package/dist/faq-bordered-badge.d.cts +4 -4
  384. package/dist/faq-bordered-badge.d.ts +4 -4
  385. package/dist/faq-bordered-badge.js +15 -66
  386. package/dist/faq-card-categories.cjs +143 -162
  387. package/dist/faq-card-categories.d.cts +4 -4
  388. package/dist/faq-card-categories.d.ts +4 -4
  389. package/dist/faq-card-categories.js +142 -158
  390. package/dist/faq-categorized-sections.cjs +10 -46
  391. package/dist/faq-categorized-sections.d.cts +4 -4
  392. package/dist/faq-categorized-sections.d.ts +4 -4
  393. package/dist/faq-categorized-sections.js +10 -46
  394. package/dist/faq-centered-accordion.cjs +4 -4
  395. package/dist/faq-centered-accordion.d.cts +3 -3
  396. package/dist/faq-centered-accordion.d.ts +3 -3
  397. package/dist/faq-centered-accordion.js +4 -4
  398. package/dist/faq-gradient-categories.cjs +99 -75
  399. package/dist/faq-gradient-categories.d.cts +6 -6
  400. package/dist/faq-gradient-categories.d.ts +6 -6
  401. package/dist/faq-gradient-categories.js +98 -71
  402. package/dist/faq-icon-benefits.cjs +125 -76
  403. package/dist/faq-icon-benefits.d.cts +4 -4
  404. package/dist/faq-icon-benefits.d.ts +4 -4
  405. package/dist/faq-icon-benefits.js +107 -73
  406. package/dist/faq-muted-cards.cjs +122 -92
  407. package/dist/faq-muted-cards.d.cts +20 -4
  408. package/dist/faq-muted-cards.d.ts +20 -4
  409. package/dist/faq-muted-cards.js +121 -88
  410. package/dist/faq-numbered-grid.cjs +142 -142
  411. package/dist/faq-numbered-grid.d.cts +3 -3
  412. package/dist/faq-numbered-grid.d.ts +3 -3
  413. package/dist/faq-numbered-grid.js +142 -142
  414. package/dist/faq-numbered-list.cjs +47 -106
  415. package/dist/faq-numbered-list.d.cts +4 -4
  416. package/dist/faq-numbered-list.d.ts +4 -4
  417. package/dist/faq-numbered-list.js +47 -106
  418. package/dist/faq-profile-sidebar.cjs +150 -124
  419. package/dist/faq-profile-sidebar.d.cts +4 -4
  420. package/dist/faq-profile-sidebar.d.ts +4 -4
  421. package/dist/faq-profile-sidebar.js +150 -124
  422. package/dist/faq-rounded-cards.cjs +107 -37
  423. package/dist/faq-rounded-cards.d.cts +4 -4
  424. package/dist/faq-rounded-cards.d.ts +4 -4
  425. package/dist/faq-rounded-cards.js +106 -33
  426. package/dist/faq-sidebar-navigation.cjs +65 -51
  427. package/dist/faq-sidebar-navigation.d.cts +3 -3
  428. package/dist/faq-sidebar-navigation.d.ts +3 -3
  429. package/dist/faq-sidebar-navigation.js +65 -51
  430. package/dist/faq-simple-accordion.cjs +12 -5
  431. package/dist/faq-simple-accordion.d.cts +3 -3
  432. package/dist/faq-simple-accordion.d.ts +3 -3
  433. package/dist/faq-simple-accordion.js +12 -5
  434. package/dist/faq-split-help.cjs +77 -20
  435. package/dist/faq-split-help.d.cts +3 -3
  436. package/dist/faq-split-help.d.ts +3 -3
  437. package/dist/faq-split-help.js +77 -20
  438. package/dist/faq-split-hero.cjs +228 -75
  439. package/dist/faq-split-hero.d.cts +16 -22
  440. package/dist/faq-split-hero.d.ts +16 -22
  441. package/dist/faq-split-hero.js +224 -74
  442. package/dist/faq-static-list.cjs +124 -21
  443. package/dist/faq-static-list.d.cts +16 -4
  444. package/dist/faq-static-list.d.ts +16 -4
  445. package/dist/faq-static-list.js +106 -18
  446. package/dist/feature-accordion-image.cjs +4 -4
  447. package/dist/feature-accordion-image.d.cts +3 -3
  448. package/dist/feature-accordion-image.d.ts +3 -3
  449. package/dist/feature-accordion-image.js +4 -4
  450. package/dist/feature-animated-carousel.cjs +142 -142
  451. package/dist/feature-animated-carousel.d.cts +3 -3
  452. package/dist/feature-animated-carousel.d.ts +3 -3
  453. package/dist/feature-animated-carousel.js +142 -142
  454. package/dist/feature-badge-grid-six.d.cts +3 -3
  455. package/dist/feature-badge-grid-six.d.ts +3 -3
  456. package/dist/feature-bento-image-grid.d.cts +3 -3
  457. package/dist/feature-bento-image-grid.d.ts +3 -3
  458. package/dist/feature-bento-utilities.cjs +142 -142
  459. package/dist/feature-bento-utilities.d.cts +3 -3
  460. package/dist/feature-bento-utilities.d.ts +3 -3
  461. package/dist/feature-bento-utilities.js +142 -142
  462. package/dist/feature-capabilities-grid.cjs +142 -142
  463. package/dist/feature-capabilities-grid.d.cts +4 -4
  464. package/dist/feature-capabilities-grid.d.ts +4 -4
  465. package/dist/feature-capabilities-grid.js +142 -142
  466. package/dist/feature-card-grid-linked.d.cts +3 -3
  467. package/dist/feature-card-grid-linked.d.ts +3 -3
  468. package/dist/feature-carousel-progress.d.cts +4 -4
  469. package/dist/feature-carousel-progress.d.ts +4 -4
  470. package/dist/feature-category-image-cards.cjs +142 -142
  471. package/dist/feature-category-image-cards.d.cts +3 -3
  472. package/dist/feature-category-image-cards.d.ts +3 -3
  473. package/dist/feature-category-image-cards.js +142 -142
  474. package/dist/feature-checklist-image.d.cts +3 -3
  475. package/dist/feature-checklist-image.d.ts +3 -3
  476. package/dist/feature-checklist-three-column.d.cts +3 -3
  477. package/dist/feature-checklist-three-column.d.ts +3 -3
  478. package/dist/feature-icon-grid-accent.d.cts +3 -3
  479. package/dist/feature-icon-grid-accent.d.ts +3 -3
  480. package/dist/feature-icon-grid-bordered.cjs +142 -142
  481. package/dist/feature-icon-grid-bordered.d.cts +4 -4
  482. package/dist/feature-icon-grid-bordered.d.ts +4 -4
  483. package/dist/feature-icon-grid-bordered.js +142 -142
  484. package/dist/feature-icon-grid-muted.cjs +142 -142
  485. package/dist/feature-icon-grid-muted.d.cts +4 -4
  486. package/dist/feature-icon-grid-muted.d.ts +4 -4
  487. package/dist/feature-icon-grid-muted.js +142 -142
  488. package/dist/feature-icon-tabs-content.d.cts +3 -3
  489. package/dist/feature-icon-tabs-content.d.ts +3 -3
  490. package/dist/feature-image-cards-three-column.d.cts +3 -3
  491. package/dist/feature-image-cards-three-column.d.ts +3 -3
  492. package/dist/feature-image-overlay-badge.d.cts +3 -3
  493. package/dist/feature-image-overlay-badge.d.ts +3 -3
  494. package/dist/feature-integration-cards.d.cts +3 -3
  495. package/dist/feature-integration-cards.d.ts +3 -3
  496. package/dist/feature-numbered-cards.cjs +142 -142
  497. package/dist/feature-numbered-cards.d.cts +3 -3
  498. package/dist/feature-numbered-cards.d.ts +3 -3
  499. package/dist/feature-numbered-cards.js +142 -142
  500. package/dist/feature-pattern-grid-links.d.cts +4 -4
  501. package/dist/feature-pattern-grid-links.d.ts +4 -4
  502. package/dist/feature-showcase.d.cts +4 -4
  503. package/dist/feature-showcase.d.ts +4 -4
  504. package/dist/feature-split-image-reverse.d.cts +3 -3
  505. package/dist/feature-split-image-reverse.d.ts +3 -3
  506. package/dist/feature-split-image.d.cts +3 -3
  507. package/dist/feature-split-image.d.ts +3 -3
  508. package/dist/feature-stats-highlight.d.cts +3 -3
  509. package/dist/feature-stats-highlight.d.ts +3 -3
  510. package/dist/feature-tabbed-content-image.d.cts +3 -3
  511. package/dist/feature-tabbed-content-image.d.ts +3 -3
  512. package/dist/feature-three-column-values.cjs +142 -142
  513. package/dist/feature-three-column-values.d.cts +4 -4
  514. package/dist/feature-three-column-values.d.ts +4 -4
  515. package/dist/feature-three-column-values.js +142 -142
  516. package/dist/feature-utility-cards-grid.d.cts +3 -3
  517. package/dist/feature-utility-cards-grid.d.ts +3 -3
  518. package/dist/footer-accordion-social.d.cts +3 -3
  519. package/dist/footer-accordion-social.d.ts +3 -3
  520. package/dist/footer-animated-social.d.cts +4 -4
  521. package/dist/footer-animated-social.d.ts +4 -4
  522. package/dist/footer-background-card.d.cts +3 -3
  523. package/dist/footer-background-card.d.ts +3 -3
  524. package/dist/footer-brand-description.d.cts +3 -3
  525. package/dist/footer-brand-description.d.ts +3 -3
  526. package/dist/footer-brand-links-contact.d.cts +3 -3
  527. package/dist/footer-brand-links-contact.d.ts +3 -3
  528. package/dist/footer-comprehensive-links.d.cts +4 -4
  529. package/dist/footer-comprehensive-links.d.ts +4 -4
  530. package/dist/footer-contact-card.d.cts +3 -3
  531. package/dist/footer-contact-card.d.ts +3 -3
  532. package/dist/footer-cta-banner.d.cts +3 -3
  533. package/dist/footer-cta-banner.d.ts +3 -3
  534. package/dist/footer-cta-social.d.cts +4 -4
  535. package/dist/footer-cta-social.d.ts +4 -4
  536. package/dist/footer-info-cards-accordion.d.cts +3 -3
  537. package/dist/footer-info-cards-accordion.d.ts +3 -3
  538. package/dist/footer-links-grid.d.cts +4 -4
  539. package/dist/footer-links-grid.d.ts +4 -4
  540. package/dist/footer-nav-social.d.cts +3 -3
  541. package/dist/footer-nav-social.d.ts +3 -3
  542. package/dist/footer-newsletter-contact.d.cts +3 -3
  543. package/dist/footer-newsletter-contact.d.ts +3 -3
  544. package/dist/footer-newsletter-grid.d.cts +4 -4
  545. package/dist/footer-newsletter-grid.d.ts +4 -4
  546. package/dist/footer-newsletter-minimal.d.cts +3 -3
  547. package/dist/footer-newsletter-minimal.d.ts +3 -3
  548. package/dist/footer-simple-centered.d.cts +3 -3
  549. package/dist/footer-simple-centered.d.ts +3 -3
  550. package/dist/footer-social-apps.d.cts +4 -4
  551. package/dist/footer-social-apps.d.ts +4 -4
  552. package/dist/footer-social-newsletter.d.cts +3 -3
  553. package/dist/footer-social-newsletter.d.ts +3 -3
  554. package/dist/footer-split-image-accordion.d.cts +3 -3
  555. package/dist/footer-split-image-accordion.d.ts +3 -3
  556. package/dist/geo-map.cjs +1026 -0
  557. package/dist/geo-map.d.cts +90 -0
  558. package/dist/geo-map.d.ts +90 -0
  559. package/dist/geo-map.js +1004 -0
  560. package/dist/hero-ad-campaign-expert.cjs +144 -144
  561. package/dist/hero-ad-campaign-expert.d.cts +3 -3
  562. package/dist/hero-ad-campaign-expert.d.ts +3 -3
  563. package/dist/hero-ad-campaign-expert.js +144 -144
  564. package/dist/hero-adaptable-product-grid.cjs +142 -142
  565. package/dist/hero-adaptable-product-grid.d.cts +3 -3
  566. package/dist/hero-adaptable-product-grid.d.ts +3 -3
  567. package/dist/hero-adaptable-product-grid.js +142 -142
  568. package/dist/hero-agency-animated-images.cjs +142 -142
  569. package/dist/hero-agency-animated-images.d.cts +3 -3
  570. package/dist/hero-agency-animated-images.d.ts +3 -3
  571. package/dist/hero-agency-animated-images.js +142 -142
  572. package/dist/hero-ai-powered-carousel.d.cts +3 -3
  573. package/dist/hero-ai-powered-carousel.d.ts +3 -3
  574. package/dist/hero-announcement-badge.cjs +142 -142
  575. package/dist/hero-announcement-badge.d.cts +3 -3
  576. package/dist/hero-announcement-badge.d.ts +3 -3
  577. package/dist/hero-announcement-badge.js +142 -142
  578. package/dist/hero-architecture-fullscreen.d.cts +3 -3
  579. package/dist/hero-architecture-fullscreen.d.ts +3 -3
  580. package/dist/hero-badge-image-split.cjs +142 -142
  581. package/dist/hero-badge-image-split.d.cts +3 -3
  582. package/dist/hero-badge-image-split.d.ts +3 -3
  583. package/dist/hero-badge-image-split.js +142 -142
  584. package/dist/hero-badge-shadow-overlay.d.cts +3 -3
  585. package/dist/hero-badge-shadow-overlay.d.ts +3 -3
  586. package/dist/hero-billing-platform-logos.d.cts +3 -3
  587. package/dist/hero-billing-platform-logos.d.ts +3 -3
  588. package/dist/hero-business-carousel-dots.cjs +142 -142
  589. package/dist/hero-business-carousel-dots.d.cts +3 -3
  590. package/dist/hero-business-carousel-dots.d.ts +3 -3
  591. package/dist/hero-business-carousel-dots.js +142 -142
  592. package/dist/hero-business-operations-mosaic.cjs +142 -142
  593. package/dist/hero-business-operations-mosaic.d.cts +3 -3
  594. package/dist/hero-business-operations-mosaic.d.ts +3 -3
  595. package/dist/hero-business-operations-mosaic.js +142 -142
  596. package/dist/hero-centered-gradient-cta.d.cts +3 -3
  597. package/dist/hero-centered-gradient-cta.d.ts +3 -3
  598. package/dist/hero-centered-image-grid.d.cts +3 -3
  599. package/dist/hero-centered-image-grid.d.ts +3 -3
  600. package/dist/hero-centered-screenshot.d.cts +3 -3
  601. package/dist/hero-centered-screenshot.d.ts +3 -3
  602. package/dist/hero-coming-soon-countdown.d.cts +3 -3
  603. package/dist/hero-coming-soon-countdown.d.ts +3 -3
  604. package/dist/hero-community-survey-cta.d.cts +3 -3
  605. package/dist/hero-community-survey-cta.d.ts +3 -3
  606. package/dist/hero-conversation-intelligence.cjs +142 -142
  607. package/dist/hero-conversation-intelligence.d.cts +3 -3
  608. package/dist/hero-conversation-intelligence.d.ts +3 -3
  609. package/dist/hero-conversation-intelligence.js +142 -142
  610. package/dist/hero-conversion-video-play.d.cts +3 -3
  611. package/dist/hero-conversion-video-play.d.ts +3 -3
  612. package/dist/hero-creative-studio-stacked.cjs +142 -142
  613. package/dist/hero-creative-studio-stacked.d.cts +4 -4
  614. package/dist/hero-creative-studio-stacked.d.ts +4 -4
  615. package/dist/hero-creative-studio-stacked.js +142 -142
  616. package/dist/hero-crm-streamlined.cjs +142 -142
  617. package/dist/hero-crm-streamlined.d.cts +3 -3
  618. package/dist/hero-crm-streamlined.d.ts +3 -3
  619. package/dist/hero-crm-streamlined.js +142 -142
  620. package/dist/hero-customer-support-layered.cjs +142 -142
  621. package/dist/hero-customer-support-layered.d.cts +3 -3
  622. package/dist/hero-customer-support-layered.d.ts +3 -3
  623. package/dist/hero-customer-support-layered.js +142 -142
  624. package/dist/hero-dashed-border-features.d.cts +3 -3
  625. package/dist/hero-dashed-border-features.d.ts +3 -3
  626. package/dist/hero-design-carousel-portfolio.d.cts +3 -3
  627. package/dist/hero-design-carousel-portfolio.d.ts +3 -3
  628. package/dist/hero-design-showcase-logos.cjs +142 -142
  629. package/dist/hero-design-showcase-logos.d.cts +3 -3
  630. package/dist/hero-design-showcase-logos.d.ts +3 -3
  631. package/dist/hero-design-showcase-logos.js +142 -142
  632. package/dist/hero-design-system-3d.cjs +142 -142
  633. package/dist/hero-design-system-3d.d.cts +3 -3
  634. package/dist/hero-design-system-3d.d.ts +3 -3
  635. package/dist/hero-design-system-3d.js +142 -142
  636. package/dist/hero-developer-tools-code.cjs +142 -142
  637. package/dist/hero-developer-tools-code.d.cts +3 -3
  638. package/dist/hero-developer-tools-code.d.ts +3 -3
  639. package/dist/hero-developer-tools-code.js +142 -142
  640. package/dist/hero-digital-agency-fullscreen.cjs +142 -142
  641. package/dist/hero-digital-agency-fullscreen.d.cts +3 -3
  642. package/dist/hero-digital-agency-fullscreen.d.ts +3 -3
  643. package/dist/hero-digital-agency-fullscreen.js +142 -142
  644. package/dist/hero-ecommerce-product-showcase.cjs +174 -174
  645. package/dist/hero-ecommerce-product-showcase.d.cts +3 -3
  646. package/dist/hero-ecommerce-product-showcase.d.ts +3 -3
  647. package/dist/hero-ecommerce-product-showcase.js +174 -174
  648. package/dist/hero-enterprise-security.d.cts +3 -3
  649. package/dist/hero-enterprise-security.d.ts +3 -3
  650. package/dist/hero-event-registration.cjs +142 -142
  651. package/dist/hero-event-registration.d.cts +3 -3
  652. package/dist/hero-event-registration.d.ts +3 -3
  653. package/dist/hero-event-registration.js +142 -142
  654. package/dist/hero-feature-cards-grid.d.cts +3 -3
  655. package/dist/hero-feature-cards-grid.d.ts +3 -3
  656. package/dist/hero-floating-images.d.cts +3 -3
  657. package/dist/hero-floating-images.d.ts +3 -3
  658. package/dist/hero-fullscreen-background-image.cjs +142 -142
  659. package/dist/hero-fullscreen-background-image.d.cts +3 -3
  660. package/dist/hero-fullscreen-background-image.d.ts +3 -3
  661. package/dist/hero-fullscreen-background-image.js +142 -142
  662. package/dist/hero-fullscreen-logo-cta.d.cts +3 -3
  663. package/dist/hero-fullscreen-logo-cta.d.ts +3 -3
  664. package/dist/hero-gradient-avatars-rating.cjs +142 -142
  665. package/dist/hero-gradient-avatars-rating.d.cts +3 -3
  666. package/dist/hero-gradient-avatars-rating.d.ts +3 -3
  667. package/dist/hero-gradient-avatars-rating.js +142 -142
  668. package/dist/hero-gradient-client-focused.cjs +142 -142
  669. package/dist/hero-gradient-client-focused.d.cts +3 -3
  670. package/dist/hero-gradient-client-focused.d.ts +3 -3
  671. package/dist/hero-gradient-client-focused.js +142 -142
  672. package/dist/hero-grid-pattern-efficiency.d.cts +3 -3
  673. package/dist/hero-grid-pattern-efficiency.d.ts +3 -3
  674. package/dist/hero-grid-pattern-solutions.d.cts +3 -3
  675. package/dist/hero-grid-pattern-solutions.d.ts +3 -3
  676. package/dist/hero-hiring-animated-text.cjs +142 -142
  677. package/dist/hero-hiring-animated-text.d.cts +3 -3
  678. package/dist/hero-hiring-animated-text.d.ts +3 -3
  679. package/dist/hero-hiring-animated-text.js +142 -142
  680. package/dist/hero-image-left-content.cjs +142 -142
  681. package/dist/hero-image-left-content.d.cts +3 -3
  682. package/dist/hero-image-left-content.d.ts +3 -3
  683. package/dist/hero-image-left-content.js +142 -142
  684. package/dist/hero-image-slider.d.cts +3 -3
  685. package/dist/hero-image-slider.d.ts +3 -3
  686. package/dist/hero-innovation-image-grid.cjs +142 -142
  687. package/dist/hero-innovation-image-grid.d.cts +3 -3
  688. package/dist/hero-innovation-image-grid.d.ts +3 -3
  689. package/dist/hero-innovation-image-grid.js +142 -142
  690. package/dist/hero-logo-centered-screenshot.d.cts +3 -3
  691. package/dist/hero-logo-centered-screenshot.d.ts +3 -3
  692. package/dist/hero-marketplace-scattered-images.d.cts +3 -3
  693. package/dist/hero-marketplace-scattered-images.d.ts +3 -3
  694. package/dist/hero-mental-health-team.cjs +142 -142
  695. package/dist/hero-mental-health-team.d.cts +3 -3
  696. package/dist/hero-mental-health-team.d.ts +3 -3
  697. package/dist/hero-mental-health-team.js +142 -142
  698. package/dist/hero-mentorship-video-split.d.cts +3 -3
  699. package/dist/hero-mentorship-video-split.d.ts +3 -3
  700. package/dist/hero-minimal-centered-dark.cjs +174 -174
  701. package/dist/hero-minimal-centered-dark.d.cts +3 -3
  702. package/dist/hero-minimal-centered-dark.d.ts +3 -3
  703. package/dist/hero-minimal-centered-dark.js +174 -174
  704. package/dist/hero-mobile-app-download.d.cts +3 -3
  705. package/dist/hero-mobile-app-download.d.ts +3 -3
  706. package/dist/hero-newsletter-minimal.d.cts +3 -3
  707. package/dist/hero-newsletter-minimal.d.ts +3 -3
  708. package/dist/hero-overlay-cta-grid.d.cts +4 -4
  709. package/dist/hero-overlay-cta-grid.d.ts +4 -4
  710. package/dist/hero-pattern-badge-logos.d.cts +3 -3
  711. package/dist/hero-pattern-badge-logos.d.ts +3 -3
  712. package/dist/hero-pattern-logo-tech-stack.d.cts +3 -3
  713. package/dist/hero-pattern-logo-tech-stack.d.ts +3 -3
  714. package/dist/hero-platform-features-grid.d.cts +3 -3
  715. package/dist/hero-platform-features-grid.d.ts +3 -3
  716. package/dist/hero-portfolio-creative.d.cts +3 -3
  717. package/dist/hero-portfolio-creative.d.ts +3 -3
  718. package/dist/hero-premium-split-avatars.d.cts +3 -3
  719. package/dist/hero-premium-split-avatars.d.ts +3 -3
  720. package/dist/hero-presentation-platform-video.cjs +142 -142
  721. package/dist/hero-presentation-platform-video.d.cts +3 -3
  722. package/dist/hero-presentation-platform-video.d.ts +3 -3
  723. package/dist/hero-presentation-platform-video.js +142 -142
  724. package/dist/hero-pricing-comparison.d.cts +3 -3
  725. package/dist/hero-pricing-comparison.d.ts +3 -3
  726. package/dist/hero-product-showcase-floating.cjs +174 -174
  727. package/dist/hero-product-showcase-floating.d.cts +3 -3
  728. package/dist/hero-product-showcase-floating.d.ts +3 -3
  729. package/dist/hero-product-showcase-floating.js +174 -174
  730. package/dist/hero-productivity-launcher-video.d.cts +3 -3
  731. package/dist/hero-productivity-launcher-video.d.ts +3 -3
  732. package/dist/hero-saas-dashboard-preview.d.cts +3 -3
  733. package/dist/hero-saas-dashboard-preview.d.ts +3 -3
  734. package/dist/hero-shared-inbox-layered.cjs +142 -142
  735. package/dist/hero-shared-inbox-layered.d.cts +3 -3
  736. package/dist/hero-shared-inbox-layered.d.ts +3 -3
  737. package/dist/hero-shared-inbox-layered.js +142 -142
  738. package/dist/hero-simple-centered-image.d.cts +3 -3
  739. package/dist/hero-simple-centered-image.d.ts +3 -3
  740. package/dist/hero-software-growth-video-dialog.cjs +142 -142
  741. package/dist/hero-software-growth-video-dialog.d.cts +3 -3
  742. package/dist/hero-software-growth-video-dialog.d.ts +3 -3
  743. package/dist/hero-software-growth-video-dialog.js +142 -142
  744. package/dist/hero-spiral-pattern-cards.cjs +174 -174
  745. package/dist/hero-spiral-pattern-cards.d.cts +3 -3
  746. package/dist/hero-spiral-pattern-cards.d.ts +3 -3
  747. package/dist/hero-spiral-pattern-cards.js +174 -174
  748. package/dist/hero-split-geometric-shapes.cjs +142 -142
  749. package/dist/hero-split-geometric-shapes.d.cts +3 -3
  750. package/dist/hero-split-geometric-shapes.d.ts +3 -3
  751. package/dist/hero-split-geometric-shapes.js +142 -142
  752. package/dist/hero-split-icon-cards.d.cts +4 -4
  753. package/dist/hero-split-icon-cards.d.ts +4 -4
  754. package/dist/hero-split-image-newsletter.d.cts +3 -3
  755. package/dist/hero-split-image-newsletter.d.ts +3 -3
  756. package/dist/hero-split-spiral-shapes.d.cts +3 -3
  757. package/dist/hero-split-spiral-shapes.d.ts +3 -3
  758. package/dist/hero-startup-launch-cta.cjs +174 -174
  759. package/dist/hero-startup-launch-cta.d.cts +3 -3
  760. package/dist/hero-startup-launch-cta.d.ts +3 -3
  761. package/dist/hero-startup-launch-cta.js +174 -174
  762. package/dist/hero-stats-social-proof.cjs +174 -174
  763. package/dist/hero-stats-social-proof.d.cts +3 -3
  764. package/dist/hero-stats-social-proof.d.ts +3 -3
  765. package/dist/hero-stats-social-proof.js +174 -174
  766. package/dist/hero-task-timer-animated.cjs +142 -142
  767. package/dist/hero-task-timer-animated.d.cts +3 -3
  768. package/dist/hero-task-timer-animated.d.ts +3 -3
  769. package/dist/hero-task-timer-animated.js +142 -142
  770. package/dist/hero-tech-carousel.d.cts +3 -3
  771. package/dist/hero-tech-carousel.d.ts +3 -3
  772. package/dist/hero-testimonial-image-grid.cjs +142 -142
  773. package/dist/hero-testimonial-image-grid.d.cts +3 -3
  774. package/dist/hero-testimonial-image-grid.d.ts +3 -3
  775. package/dist/hero-testimonial-image-grid.js +142 -142
  776. package/dist/hero-therapy-testimonial-grid.cjs +142 -142
  777. package/dist/hero-therapy-testimonial-grid.d.cts +3 -3
  778. package/dist/hero-therapy-testimonial-grid.d.ts +3 -3
  779. package/dist/hero-therapy-testimonial-grid.js +142 -142
  780. package/dist/hero-ui-library-showcase.cjs +142 -142
  781. package/dist/hero-ui-library-showcase.d.cts +3 -3
  782. package/dist/hero-ui-library-showcase.d.ts +3 -3
  783. package/dist/hero-ui-library-showcase.js +142 -142
  784. package/dist/hero-video-background-dark.cjs +174 -174
  785. package/dist/hero-video-background-dark.d.cts +3 -3
  786. package/dist/hero-video-background-dark.d.ts +3 -3
  787. package/dist/hero-video-background-dark.js +174 -174
  788. package/dist/{hero-video-dialog-gradient-CW2ELwTs.d.ts → hero-video-dialog-gradient-C7o05nWW.d.ts} +2 -2
  789. package/dist/{hero-video-dialog-gradient-BOmAMhjq.d.cts → hero-video-dialog-gradient-DykMOpK9.d.cts} +2 -2
  790. package/dist/hero-video-dialog-gradient.cjs +142 -142
  791. package/dist/hero-video-dialog-gradient.d.cts +5 -5
  792. package/dist/hero-video-dialog-gradient.d.ts +5 -5
  793. package/dist/hero-video-dialog-gradient.js +142 -142
  794. package/dist/hero-video-overlay-stars.cjs +142 -142
  795. package/dist/hero-video-overlay-stars.d.cts +3 -3
  796. package/dist/hero-video-overlay-stars.d.ts +3 -3
  797. package/dist/hero-video-overlay-stars.js +142 -142
  798. package/dist/hero-welcome-asymmetric-images.cjs +142 -142
  799. package/dist/hero-welcome-asymmetric-images.d.cts +3 -3
  800. package/dist/hero-welcome-asymmetric-images.d.ts +3 -3
  801. package/dist/hero-welcome-asymmetric-images.js +142 -142
  802. package/dist/hooks.cjs +11 -0
  803. package/dist/hooks.d.cts +6 -0
  804. package/dist/hooks.d.ts +6 -0
  805. package/dist/hooks.js +12 -1
  806. package/dist/image-slider.d.cts +2 -2
  807. package/dist/image-slider.d.ts +2 -2
  808. package/dist/index.cjs +1365 -780
  809. package/dist/index.d.cts +6 -3
  810. package/dist/index.d.ts +6 -3
  811. package/dist/index.js +1269 -686
  812. package/dist/industries-badge-list-bordered.d.cts +3 -3
  813. package/dist/industries-badge-list-bordered.d.ts +3 -3
  814. package/dist/industries-expandable-showcase.d.cts +3 -3
  815. package/dist/industries-expandable-showcase.d.ts +3 -3
  816. package/dist/industries-hover-reveal-grid.d.cts +3 -3
  817. package/dist/industries-hover-reveal-grid.d.ts +3 -3
  818. package/dist/industries-timeline-table.d.cts +3 -3
  819. package/dist/industries-timeline-table.d.ts +3 -3
  820. package/dist/interior-carousel.d.cts +3 -3
  821. package/dist/interior-carousel.d.ts +3 -3
  822. package/dist/link-page-bento-layout.d.cts +3 -3
  823. package/dist/link-page-bento-layout.d.ts +3 -3
  824. package/dist/link-page-grid-cards.d.cts +3 -3
  825. package/dist/link-page-grid-cards.d.ts +3 -3
  826. package/dist/link-page-minimal-profile.d.cts +3 -3
  827. package/dist/link-page-minimal-profile.d.ts +3 -3
  828. package/dist/link-page-newsletter-social.d.cts +3 -3
  829. package/dist/link-page-newsletter-social.d.ts +3 -3
  830. package/dist/link-tree-block.d.cts +3 -3
  831. package/dist/link-tree-block.d.ts +3 -3
  832. package/dist/list-achievements-showcase.d.cts +3 -3
  833. package/dist/list-achievements-showcase.d.ts +3 -3
  834. package/dist/list-career-timeline.d.cts +4 -4
  835. package/dist/list-career-timeline.d.ts +4 -4
  836. package/dist/list-feature-comparison.d.cts +3 -3
  837. package/dist/list-feature-comparison.d.ts +3 -3
  838. package/dist/list-metrics-dashboard.d.cts +3 -3
  839. package/dist/list-metrics-dashboard.d.ts +3 -3
  840. package/dist/list-searchable-grid.d.cts +4 -4
  841. package/dist/list-searchable-grid.d.ts +4 -4
  842. package/dist/list-service-category-table.d.cts +4 -4
  843. package/dist/list-service-category-table.d.ts +4 -4
  844. package/dist/logos-carousel-heading.d.cts +3 -3
  845. package/dist/logos-carousel-heading.d.ts +3 -3
  846. package/dist/logos-centered-simple.d.cts +3 -3
  847. package/dist/logos-centered-simple.d.ts +3 -3
  848. package/dist/logos-certifications-grid.d.cts +3 -3
  849. package/dist/logos-certifications-grid.d.ts +3 -3
  850. package/dist/logos-double-carousel-pattern.d.cts +3 -3
  851. package/dist/logos-double-carousel-pattern.d.ts +3 -3
  852. package/dist/logos-inline-tagline.d.cts +3 -3
  853. package/dist/logos-inline-tagline.d.ts +3 -3
  854. package/dist/logos-marquee-muted.d.cts +3 -3
  855. package/dist/logos-marquee-muted.d.ts +3 -3
  856. package/dist/logos-minimal-carousel.d.cts +3 -3
  857. package/dist/logos-minimal-carousel.d.ts +3 -3
  858. package/dist/logos-numbered-carousel.d.cts +3 -3
  859. package/dist/logos-numbered-carousel.d.ts +3 -3
  860. package/dist/logos-partner-grid-sidebar.d.cts +3 -3
  861. package/dist/logos-partner-grid-sidebar.d.ts +3 -3
  862. package/dist/logos-partner-network.d.cts +3 -3
  863. package/dist/logos-partner-network.d.ts +3 -3
  864. package/dist/logos-two-row-grid.d.cts +3 -3
  865. package/dist/logos-two-row-grid.d.ts +3 -3
  866. package/dist/masonry-motion-grid.d.cts +3 -3
  867. package/dist/masonry-motion-grid.d.ts +3 -3
  868. package/dist/media-hover-ctas.d.cts +4 -4
  869. package/dist/media-hover-ctas.d.ts +4 -4
  870. package/dist/navbar-animated-preview.cjs +4 -4
  871. package/dist/navbar-animated-preview.d.cts +3 -3
  872. package/dist/navbar-animated-preview.d.ts +3 -3
  873. package/dist/navbar-animated-preview.js +4 -4
  874. package/dist/navbar-centered-menu.cjs +4 -4
  875. package/dist/navbar-centered-menu.d.cts +3 -3
  876. package/dist/navbar-centered-menu.d.ts +3 -3
  877. package/dist/navbar-centered-menu.js +4 -4
  878. package/dist/navbar-dark-icons.cjs +4 -4
  879. package/dist/navbar-dark-icons.d.cts +3 -3
  880. package/dist/navbar-dark-icons.d.ts +3 -3
  881. package/dist/navbar-dark-icons.js +4 -4
  882. package/dist/navbar-dropdown-menu.cjs +4 -4
  883. package/dist/navbar-dropdown-menu.d.cts +3 -3
  884. package/dist/navbar-dropdown-menu.d.ts +3 -3
  885. package/dist/navbar-dropdown-menu.js +4 -4
  886. package/dist/navbar-education-platform.cjs +4 -4
  887. package/dist/navbar-education-platform.d.cts +3 -3
  888. package/dist/navbar-education-platform.d.ts +3 -3
  889. package/dist/navbar-education-platform.js +4 -4
  890. package/dist/navbar-enterprise-mega.cjs +4 -4
  891. package/dist/navbar-enterprise-mega.d.cts +3 -3
  892. package/dist/navbar-enterprise-mega.d.ts +3 -3
  893. package/dist/navbar-enterprise-mega.js +4 -4
  894. package/dist/navbar-feature-grid.cjs +4 -4
  895. package/dist/navbar-feature-grid.d.cts +3 -3
  896. package/dist/navbar-feature-grid.d.ts +3 -3
  897. package/dist/navbar-feature-grid.js +4 -4
  898. package/dist/navbar-floating-pill.d.cts +3 -3
  899. package/dist/navbar-floating-pill.d.ts +3 -3
  900. package/dist/navbar-fullscreen-menu.d.cts +3 -3
  901. package/dist/navbar-fullscreen-menu.d.ts +3 -3
  902. package/dist/navbar-icon-links.d.cts +3 -3
  903. package/dist/navbar-icon-links.d.ts +3 -3
  904. package/dist/navbar-image-preview.cjs +4 -4
  905. package/dist/navbar-image-preview.d.cts +3 -3
  906. package/dist/navbar-image-preview.d.ts +3 -3
  907. package/dist/navbar-image-preview.js +4 -4
  908. package/dist/navbar-mega-menu.cjs +4 -4
  909. package/dist/navbar-mega-menu.d.cts +3 -3
  910. package/dist/navbar-mega-menu.d.ts +3 -3
  911. package/dist/navbar-mega-menu.js +4 -4
  912. package/dist/navbar-multi-column-groups.cjs +4 -4
  913. package/dist/navbar-multi-column-groups.d.cts +3 -3
  914. package/dist/navbar-multi-column-groups.d.ts +3 -3
  915. package/dist/navbar-multi-column-groups.js +4 -4
  916. package/dist/navbar-platform-resources.cjs +4 -4
  917. package/dist/navbar-platform-resources.d.cts +3 -3
  918. package/dist/navbar-platform-resources.d.ts +3 -3
  919. package/dist/navbar-platform-resources.js +4 -4
  920. package/dist/navbar-search-focused.d.cts +3 -3
  921. package/dist/navbar-search-focused.d.ts +3 -3
  922. package/dist/navbar-sidebar-mobile.cjs +4 -4
  923. package/dist/navbar-sidebar-mobile.d.cts +3 -3
  924. package/dist/navbar-sidebar-mobile.d.ts +3 -3
  925. package/dist/navbar-sidebar-mobile.js +4 -4
  926. package/dist/navbar-simple-links.d.cts +3 -3
  927. package/dist/navbar-simple-links.d.ts +3 -3
  928. package/dist/navbar-split-cta.d.cts +3 -3
  929. package/dist/navbar-split-cta.d.ts +3 -3
  930. package/dist/navbar-sticky-compact.cjs +4 -4
  931. package/dist/navbar-sticky-compact.d.cts +3 -3
  932. package/dist/navbar-sticky-compact.d.ts +3 -3
  933. package/dist/navbar-sticky-compact.js +4 -4
  934. package/dist/navbar-tabbed-sections.cjs +4 -4
  935. package/dist/navbar-tabbed-sections.d.cts +3 -3
  936. package/dist/navbar-tabbed-sections.d.ts +3 -3
  937. package/dist/navbar-tabbed-sections.js +4 -4
  938. package/dist/navbar-transparent-overlay.d.cts +3 -3
  939. package/dist/navbar-transparent-overlay.d.ts +3 -3
  940. package/dist/offer-modal-membership-image.d.cts +3 -3
  941. package/dist/offer-modal-membership-image.d.ts +3 -3
  942. package/dist/offer-modal-newsletter-discount.d.cts +3 -3
  943. package/dist/offer-modal-newsletter-discount.d.ts +3 -3
  944. package/dist/offer-modal-sheet-newsletter.d.cts +3 -3
  945. package/dist/offer-modal-sheet-newsletter.d.ts +3 -3
  946. package/dist/page-hero-banner.d.cts +3 -3
  947. package/dist/page-hero-banner.d.ts +3 -3
  948. package/dist/pressable.d.cts +2 -2
  949. package/dist/pressable.d.ts +2 -2
  950. package/dist/pricing-addons-cards.d.cts +3 -3
  951. package/dist/pricing-addons-cards.d.ts +3 -3
  952. package/dist/pricing-addons-featured.d.cts +3 -3
  953. package/dist/pricing-addons-featured.d.ts +3 -3
  954. package/dist/pricing-collapsible-plans.d.cts +3 -3
  955. package/dist/pricing-collapsible-plans.d.ts +3 -3
  956. package/dist/pricing-columns-toggle.d.cts +3 -3
  957. package/dist/pricing-columns-toggle.d.ts +3 -3
  958. package/dist/pricing-comparison-headers.d.cts +3 -3
  959. package/dist/pricing-comparison-headers.d.ts +3 -3
  960. package/dist/pricing-comparison-table.d.cts +3 -3
  961. package/dist/pricing-comparison-table.d.ts +3 -3
  962. package/dist/pricing-discount-card.d.cts +3 -3
  963. package/dist/pricing-discount-card.d.ts +3 -3
  964. package/dist/pricing-enterprise-contact.d.cts +3 -3
  965. package/dist/pricing-enterprise-contact.d.ts +3 -3
  966. package/dist/pricing-feature-matrix.d.cts +3 -3
  967. package/dist/pricing-feature-matrix.d.ts +3 -3
  968. package/dist/pricing-four-tier-toggle.d.cts +3 -3
  969. package/dist/pricing-four-tier-toggle.d.ts +3 -3
  970. package/dist/pricing-full-comparison.d.cts +3 -3
  971. package/dist/pricing-full-comparison.d.ts +3 -3
  972. package/dist/pricing-gradient-cards.d.cts +3 -3
  973. package/dist/pricing-gradient-cards.d.ts +3 -3
  974. package/dist/pricing-icon-headers.d.cts +3 -3
  975. package/dist/pricing-icon-headers.d.ts +3 -3
  976. package/dist/pricing-minimal-cards.d.cts +3 -3
  977. package/dist/pricing-minimal-cards.d.ts +3 -3
  978. package/dist/pricing-packages-radio.d.cts +3 -3
  979. package/dist/pricing-packages-radio.d.ts +3 -3
  980. package/dist/pricing-popular-highlight.d.cts +3 -3
  981. package/dist/pricing-popular-highlight.d.ts +3 -3
  982. package/dist/pricing-radio-toggle.d.cts +3 -3
  983. package/dist/pricing-radio-toggle.d.ts +3 -3
  984. package/dist/pricing-responsive-table.d.cts +3 -3
  985. package/dist/pricing-responsive-table.d.ts +3 -3
  986. package/dist/pricing-services-cards.d.cts +3 -3
  987. package/dist/pricing-services-cards.d.ts +3 -3
  988. package/dist/pricing-simple-card.d.cts +3 -3
  989. package/dist/pricing-simple-card.d.ts +3 -3
  990. package/dist/pricing-single-card.d.cts +3 -3
  991. package/dist/pricing-single-card.d.ts +3 -3
  992. package/dist/pricing-split-layout.d.cts +3 -3
  993. package/dist/pricing-split-layout.d.ts +3 -3
  994. package/dist/pricing-spotlight-card.d.cts +3 -3
  995. package/dist/pricing-spotlight-card.d.ts +3 -3
  996. package/dist/pricing-switch-cards.d.cts +3 -3
  997. package/dist/pricing-switch-cards.d.ts +3 -3
  998. package/dist/pricing-tabs-toggle.d.cts +3 -3
  999. package/dist/pricing-tabs-toggle.d.ts +3 -3
  1000. package/dist/pricing-tier-grid.d.cts +3 -3
  1001. package/dist/pricing-tier-grid.d.ts +3 -3
  1002. package/dist/pricing-toggle-cards.d.cts +3 -3
  1003. package/dist/pricing-toggle-cards.d.ts +3 -3
  1004. package/dist/pricing-toggle-period.d.cts +3 -3
  1005. package/dist/pricing-toggle-period.d.ts +3 -3
  1006. package/dist/pricing-two-column-basic.d.cts +3 -3
  1007. package/dist/pricing-two-column-basic.d.ts +3 -3
  1008. package/dist/process-expandable-timeline.d.cts +3 -3
  1009. package/dist/process-expandable-timeline.d.ts +3 -3
  1010. package/dist/process-hover-cards.d.cts +3 -3
  1011. package/dist/process-hover-cards.d.ts +3 -3
  1012. package/dist/process-icon-timeline.d.cts +3 -3
  1013. package/dist/process-icon-timeline.d.ts +3 -3
  1014. package/dist/process-mission-principles.d.cts +3 -3
  1015. package/dist/process-mission-principles.d.ts +3 -3
  1016. package/dist/process-numbered-services.d.cts +3 -3
  1017. package/dist/process-numbered-services.d.ts +3 -3
  1018. package/dist/process-roadmap-timeline.d.cts +3 -3
  1019. package/dist/process-roadmap-timeline.d.ts +3 -3
  1020. package/dist/process-scroll-image.d.cts +3 -3
  1021. package/dist/process-scroll-image.d.ts +3 -3
  1022. package/dist/process-steps-grid.d.cts +3 -3
  1023. package/dist/process-steps-grid.d.ts +3 -3
  1024. package/dist/process-sticky-steps.d.cts +3 -3
  1025. package/dist/process-sticky-steps.d.ts +3 -3
  1026. package/dist/project-alternating-motion.d.cts +3 -3
  1027. package/dist/project-alternating-motion.d.ts +3 -3
  1028. package/dist/project-background-reveal.d.cts +3 -3
  1029. package/dist/project-background-reveal.d.ts +3 -3
  1030. package/dist/project-card-overlay.d.cts +3 -3
  1031. package/dist/project-card-overlay.d.ts +3 -3
  1032. package/dist/project-carousel-cinematic.d.cts +3 -3
  1033. package/dist/project-carousel-cinematic.d.ts +3 -3
  1034. package/dist/project-carousel-detail-cards.d.cts +3 -3
  1035. package/dist/project-carousel-detail-cards.d.ts +3 -3
  1036. package/dist/project-carousel-minimal.d.cts +3 -3
  1037. package/dist/project-carousel-minimal.d.ts +3 -3
  1038. package/dist/project-detail-architecture-carousel.d.cts +3 -3
  1039. package/dist/project-detail-architecture-carousel.d.ts +3 -3
  1040. package/dist/project-detail-card-header.d.cts +3 -3
  1041. package/dist/project-detail-card-header.d.ts +3 -3
  1042. package/dist/project-detail-case-study-prose.d.cts +3 -3
  1043. package/dist/project-detail-case-study-prose.d.ts +3 -3
  1044. package/dist/project-detail-compact-metadata.d.cts +3 -3
  1045. package/dist/project-detail-compact-metadata.d.ts +3 -3
  1046. package/dist/project-detail-exhibition-sidebar.d.cts +3 -3
  1047. package/dist/project-detail-exhibition-sidebar.d.ts +3 -3
  1048. package/dist/project-detail-fashion-editorial.d.cts +3 -3
  1049. package/dist/project-detail-fashion-editorial.d.ts +3 -3
  1050. package/dist/project-detail-fullscreen-hero.d.cts +3 -3
  1051. package/dist/project-detail-fullscreen-hero.d.ts +3 -3
  1052. package/dist/project-detail-grid-gallery.d.cts +3 -3
  1053. package/dist/project-detail-grid-gallery.d.ts +3 -3
  1054. package/dist/project-detail-hero-metadata.d.cts +3 -3
  1055. package/dist/project-detail-hero-metadata.d.ts +3 -3
  1056. package/dist/project-detail-hover-gallery.d.cts +3 -3
  1057. package/dist/project-detail-hover-gallery.d.ts +3 -3
  1058. package/dist/project-detail-large-hero-featured.d.cts +3 -3
  1059. package/dist/project-detail-large-hero-featured.d.ts +3 -3
  1060. package/dist/project-detail-list-related.d.cts +3 -3
  1061. package/dist/project-detail-list-related.d.ts +3 -3
  1062. package/dist/project-detail-mask-reveal.d.cts +3 -3
  1063. package/dist/project-detail-mask-reveal.d.ts +3 -3
  1064. package/dist/project-detail-minimal-centered.d.cts +3 -3
  1065. package/dist/project-detail-minimal-centered.d.ts +3 -3
  1066. package/dist/project-detail-numbered-sections.d.cts +3 -3
  1067. package/dist/project-detail-numbered-sections.d.ts +3 -3
  1068. package/dist/project-detail-parallax-scroll.d.cts +3 -3
  1069. package/dist/project-detail-parallax-scroll.d.ts +3 -3
  1070. package/dist/project-detail-photography-breadcrumb.d.cts +3 -3
  1071. package/dist/project-detail-photography-breadcrumb.d.ts +3 -3
  1072. package/dist/project-detail-sculpture-showcase.d.cts +3 -3
  1073. package/dist/project-detail-sculpture-showcase.d.ts +3 -3
  1074. package/dist/project-detail-sidebar-navigation.d.cts +3 -3
  1075. package/dist/project-detail-sidebar-navigation.d.ts +3 -3
  1076. package/dist/project-detail-sidebar-sticky.d.cts +3 -3
  1077. package/dist/project-detail-sidebar-sticky.d.ts +3 -3
  1078. package/dist/project-detail-split-materials.d.cts +3 -3
  1079. package/dist/project-detail-split-materials.d.ts +3 -3
  1080. package/dist/project-detail-tabbed-case-study.d.cts +3 -3
  1081. package/dist/project-detail-tabbed-case-study.d.ts +3 -3
  1082. package/dist/project-experience-quote.d.cts +3 -3
  1083. package/dist/project-experience-quote.d.ts +3 -3
  1084. package/dist/project-featured-carousel.d.cts +3 -3
  1085. package/dist/project-featured-carousel.d.ts +3 -3
  1086. package/dist/project-filterable-gallery.d.cts +3 -3
  1087. package/dist/project-filterable-gallery.d.ts +3 -3
  1088. package/dist/project-filterable-three-column.d.cts +3 -3
  1089. package/dist/project-filterable-three-column.d.ts +3 -3
  1090. package/dist/project-grid-gallery.d.cts +3 -3
  1091. package/dist/project-grid-gallery.d.ts +3 -3
  1092. package/dist/project-grid-motion.d.cts +3 -3
  1093. package/dist/project-grid-motion.d.ts +3 -3
  1094. package/dist/project-horizontal-cards.d.cts +3 -3
  1095. package/dist/project-horizontal-cards.d.ts +3 -3
  1096. package/dist/project-hover-reveal-grid.d.cts +3 -3
  1097. package/dist/project-hover-reveal-grid.d.ts +3 -3
  1098. package/dist/project-interactive-hover-reveal.d.cts +3 -3
  1099. package/dist/project-interactive-hover-reveal.d.ts +3 -3
  1100. package/dist/project-masonry-columns.d.cts +3 -3
  1101. package/dist/project-masonry-columns.d.ts +3 -3
  1102. package/dist/project-nature-mosaic.d.cts +3 -3
  1103. package/dist/project-nature-mosaic.d.ts +3 -3
  1104. package/dist/project-scroll-reveal.d.cts +3 -3
  1105. package/dist/project-scroll-reveal.d.ts +3 -3
  1106. package/dist/project-showcase-alternating.d.cts +3 -3
  1107. package/dist/project-showcase-alternating.d.ts +3 -3
  1108. package/dist/project-sticky-scroll.d.cts +3 -3
  1109. package/dist/project-sticky-scroll.d.ts +3 -3
  1110. package/dist/project-studio-hover-preview.d.cts +3 -3
  1111. package/dist/project-studio-hover-preview.d.ts +3 -3
  1112. package/dist/project-table-list.d.cts +3 -3
  1113. package/dist/project-table-list.d.ts +3 -3
  1114. package/dist/project-video-carousel.d.cts +3 -3
  1115. package/dist/project-video-carousel.d.ts +3 -3
  1116. package/dist/project-video-hover-bento.d.cts +3 -3
  1117. package/dist/project-video-hover-bento.d.ts +3 -3
  1118. package/dist/project-video-hover-grid.d.cts +3 -3
  1119. package/dist/project-video-hover-grid.d.ts +3 -3
  1120. package/dist/project-video-hover-rounded.d.cts +3 -3
  1121. package/dist/project-video-hover-rounded.d.ts +3 -3
  1122. package/dist/project-video-hover-stack.d.cts +3 -3
  1123. package/dist/project-video-hover-stack.d.ts +3 -3
  1124. package/dist/project-video-hover-two-by-two.d.cts +3 -3
  1125. package/dist/project-video-hover-two-by-two.d.ts +3 -3
  1126. package/dist/project-work-showcase.d.cts +3 -3
  1127. package/dist/project-work-showcase.d.ts +3 -3
  1128. package/dist/project-zigzag-layout.d.cts +3 -3
  1129. package/dist/project-zigzag-layout.d.ts +3 -3
  1130. package/dist/registry.cjs +3770 -2889
  1131. package/dist/registry.js +2613 -1732
  1132. package/dist/resource-detail-article-hero.d.cts +3 -3
  1133. package/dist/resource-detail-article-hero.d.ts +3 -3
  1134. package/dist/resource-detail-document-sidebar.d.cts +3 -3
  1135. package/dist/resource-detail-document-sidebar.d.ts +3 -3
  1136. package/dist/resource-detail-whitepaper-sidebar.d.cts +3 -3
  1137. package/dist/resource-detail-whitepaper-sidebar.d.ts +3 -3
  1138. package/dist/resource-list-course-cards.d.cts +3 -3
  1139. package/dist/resource-list-course-cards.d.ts +3 -3
  1140. package/dist/resource-list-featured-articles.d.cts +3 -3
  1141. package/dist/resource-list-featured-articles.d.ts +3 -3
  1142. package/dist/resource-list-featured-grid.d.cts +3 -3
  1143. package/dist/resource-list-featured-grid.d.ts +3 -3
  1144. package/dist/resource-list-hero-filter.d.cts +2 -2
  1145. package/dist/resource-list-hero-filter.d.ts +2 -2
  1146. package/dist/resource-list-news-updates.d.cts +3 -3
  1147. package/dist/resource-list-news-updates.d.ts +3 -3
  1148. package/dist/section.d.cts +4 -4
  1149. package/dist/section.d.ts +4 -4
  1150. package/dist/service-detail-centered-expertise.d.cts +3 -3
  1151. package/dist/service-detail-centered-expertise.d.ts +3 -3
  1152. package/dist/service-detail-compact-cards.d.cts +3 -3
  1153. package/dist/service-detail-compact-cards.d.ts +3 -3
  1154. package/dist/service-detail-image-hero.d.cts +3 -3
  1155. package/dist/service-detail-image-hero.d.ts +3 -3
  1156. package/dist/service-detail-prose-minimal.d.cts +3 -3
  1157. package/dist/service-detail-prose-minimal.d.ts +3 -3
  1158. package/dist/service-detail-sidebar-related.d.cts +3 -3
  1159. package/dist/service-detail-sidebar-related.d.ts +3 -3
  1160. package/dist/service-detail-sidebar-stats.d.cts +3 -3
  1161. package/dist/service-detail-sidebar-stats.d.ts +3 -3
  1162. package/dist/service-detail-stats-hero.d.cts +3 -3
  1163. package/dist/service-detail-stats-hero.d.ts +3 -3
  1164. package/dist/service-hover-carousel.d.cts +3 -3
  1165. package/dist/service-hover-carousel.d.ts +3 -3
  1166. package/dist/services-list-accordion-benefits.cjs +4 -4
  1167. package/dist/services-list-accordion-benefits.d.cts +3 -3
  1168. package/dist/services-list-accordion-benefits.d.ts +3 -3
  1169. package/dist/services-list-accordion-benefits.js +4 -4
  1170. package/dist/services-list-accordion.cjs +4 -4
  1171. package/dist/services-list-accordion.d.cts +4 -4
  1172. package/dist/services-list-accordion.d.ts +4 -4
  1173. package/dist/services-list-accordion.js +4 -4
  1174. package/dist/services-list-cards-hover.d.cts +4 -4
  1175. package/dist/services-list-cards-hover.d.ts +4 -4
  1176. package/dist/services-list-category-accordion.cjs +4 -4
  1177. package/dist/services-list-category-accordion.d.cts +4 -4
  1178. package/dist/services-list-category-accordion.d.ts +4 -4
  1179. package/dist/services-list-category-accordion.js +4 -4
  1180. package/dist/services-list-centered-icons.d.cts +4 -4
  1181. package/dist/services-list-centered-icons.d.ts +4 -4
  1182. package/dist/services-list-culture-tabs.d.cts +3 -3
  1183. package/dist/services-list-culture-tabs.d.ts +3 -3
  1184. package/dist/services-list-expandable-cards.d.cts +3 -3
  1185. package/dist/services-list-expandable-cards.d.ts +3 -3
  1186. package/dist/services-list-feature-spotlight.d.cts +4 -4
  1187. package/dist/services-list-feature-spotlight.d.ts +4 -4
  1188. package/dist/services-list-featured-highlight.d.cts +4 -4
  1189. package/dist/services-list-featured-highlight.d.ts +4 -4
  1190. package/dist/services-list-hero-cards.d.cts +3 -3
  1191. package/dist/services-list-hero-cards.d.ts +3 -3
  1192. package/dist/services-list-icon-grid.d.cts +4 -4
  1193. package/dist/services-list-icon-grid.d.ts +4 -4
  1194. package/dist/services-list-image-cards.d.cts +3 -3
  1195. package/dist/services-list-image-cards.d.ts +3 -3
  1196. package/dist/services-list-image-overlay-grid.d.cts +3 -3
  1197. package/dist/services-list-image-overlay-grid.d.ts +3 -3
  1198. package/dist/services-list-masonry.d.cts +4 -4
  1199. package/dist/services-list-masonry.d.ts +4 -4
  1200. package/dist/services-list-methodology-steps.d.cts +3 -3
  1201. package/dist/services-list-methodology-steps.d.ts +3 -3
  1202. package/dist/services-list-minimal-grid.d.cts +4 -4
  1203. package/dist/services-list-minimal-grid.d.ts +4 -4
  1204. package/dist/services-list-muted-cards.d.cts +4 -4
  1205. package/dist/services-list-muted-cards.d.ts +4 -4
  1206. package/dist/services-list-numbered-steps.d.cts +3 -3
  1207. package/dist/services-list-numbered-steps.d.ts +3 -3
  1208. package/dist/services-list-pricing-grid.d.cts +4 -4
  1209. package/dist/services-list-pricing-grid.d.ts +4 -4
  1210. package/dist/services-list-progress-sidebar.d.cts +3 -3
  1211. package/dist/services-list-progress-sidebar.d.ts +3 -3
  1212. package/dist/services-list-split-checklist.d.cts +3 -3
  1213. package/dist/services-list-split-checklist.d.ts +3 -3
  1214. package/dist/services-list-sticky-image.d.cts +3 -3
  1215. package/dist/services-list-sticky-image.d.ts +3 -3
  1216. package/dist/services-list-table-hover.d.cts +3 -3
  1217. package/dist/services-list-table-hover.d.ts +3 -3
  1218. package/dist/services-list-tabs-features.d.cts +3 -3
  1219. package/dist/services-list-tabs-features.d.ts +3 -3
  1220. package/dist/services-list-timeline.d.cts +3 -3
  1221. package/dist/services-list-timeline.d.ts +3 -3
  1222. package/dist/services-list-two-column-grid.d.cts +3 -3
  1223. package/dist/services-list-two-column-grid.d.ts +3 -3
  1224. package/dist/services-list-vertical-tags.d.cts +4 -4
  1225. package/dist/services-list-vertical-tags.d.ts +4 -4
  1226. package/dist/services-list-video-showcase.d.cts +3 -3
  1227. package/dist/services-list-video-showcase.d.ts +3 -3
  1228. package/dist/social-link-icon.d.cts +2 -2
  1229. package/dist/social-link-icon.d.ts +2 -2
  1230. package/dist/stats-animated-counter.d.cts +3 -3
  1231. package/dist/stats-animated-counter.d.ts +3 -3
  1232. package/dist/stats-bar-comparison.d.cts +3 -3
  1233. package/dist/stats-bar-comparison.d.ts +3 -3
  1234. package/dist/stats-card-group.d.cts +3 -3
  1235. package/dist/stats-card-group.d.ts +3 -3
  1236. package/dist/stats-circular-progress.d.cts +3 -3
  1237. package/dist/stats-circular-progress.d.ts +3 -3
  1238. package/dist/stats-growth-timeline.d.cts +3 -3
  1239. package/dist/stats-growth-timeline.d.ts +3 -3
  1240. package/dist/stats-icon-cards.d.cts +3 -3
  1241. package/dist/stats-icon-cards.d.ts +3 -3
  1242. package/dist/stats-impact-grid.cjs +5 -3
  1243. package/dist/stats-impact-grid.d.cts +3 -3
  1244. package/dist/stats-impact-grid.d.ts +3 -3
  1245. package/dist/stats-impact-grid.js +5 -3
  1246. package/dist/stats-milestone-sidebar.d.cts +3 -3
  1247. package/dist/stats-milestone-sidebar.d.ts +3 -3
  1248. package/dist/stats-number-ticker.d.cts +3 -3
  1249. package/dist/stats-number-ticker.d.ts +3 -3
  1250. package/dist/stats-primary-secondary.d.cts +3 -3
  1251. package/dist/stats-primary-secondary.d.ts +3 -3
  1252. package/dist/stats-simple-grid.d.cts +3 -3
  1253. package/dist/stats-simple-grid.d.ts +3 -3
  1254. package/dist/stats-timeline-tabs.d.cts +3 -3
  1255. package/dist/stats-timeline-tabs.d.ts +3 -3
  1256. package/dist/team-alternating-bios.d.cts +3 -3
  1257. package/dist/team-alternating-bios.d.ts +3 -3
  1258. package/dist/team-avatar-social.d.cts +3 -3
  1259. package/dist/team-avatar-social.d.ts +3 -3
  1260. package/dist/team-bio-badges.d.cts +3 -3
  1261. package/dist/team-bio-badges.d.ts +3 -3
  1262. package/dist/team-carousel-experience.d.cts +3 -3
  1263. package/dist/team-carousel-experience.d.ts +3 -3
  1264. package/dist/team-compact-cta.d.cts +3 -3
  1265. package/dist/team-compact-cta.d.ts +3 -3
  1266. package/dist/team-compact-grid.d.cts +3 -3
  1267. package/dist/team-compact-grid.d.ts +3 -3
  1268. package/dist/team-contact-cards.d.cts +3 -3
  1269. package/dist/team-contact-cards.d.ts +3 -3
  1270. package/dist/team-department-sections.d.cts +3 -3
  1271. package/dist/team-department-sections.d.ts +3 -3
  1272. package/dist/team-expertise-cards.d.cts +3 -3
  1273. package/dist/team-expertise-cards.d.ts +3 -3
  1274. package/dist/team-filterable-search.d.cts +3 -3
  1275. package/dist/team-filterable-search.d.ts +3 -3
  1276. package/dist/team-gradient-cards.d.cts +3 -3
  1277. package/dist/team-gradient-cards.d.ts +3 -3
  1278. package/dist/team-grid-animated.d.cts +3 -3
  1279. package/dist/team-grid-animated.d.ts +3 -3
  1280. package/dist/team-hover-highlight.d.cts +3 -3
  1281. package/dist/team-hover-highlight.d.ts +3 -3
  1282. package/dist/team-hover-overlay.d.cts +3 -3
  1283. package/dist/team-hover-overlay.d.ts +3 -3
  1284. package/dist/team-investor-showcase.d.cts +3 -3
  1285. package/dist/team-investor-showcase.d.ts +3 -3
  1286. package/dist/team-large-images.d.cts +3 -3
  1287. package/dist/team-large-images.d.ts +3 -3
  1288. package/dist/team-media-showcase.d.cts +3 -3
  1289. package/dist/team-media-showcase.d.ts +3 -3
  1290. package/dist/team-role-filter.d.cts +3 -3
  1291. package/dist/team-role-filter.d.ts +3 -3
  1292. package/dist/team-simple-grid.d.cts +3 -3
  1293. package/dist/team-simple-grid.d.ts +3 -3
  1294. package/dist/team-skill-badges.d.cts +3 -3
  1295. package/dist/team-skill-badges.d.ts +3 -3
  1296. package/dist/team-social-cards.d.cts +3 -3
  1297. package/dist/team-social-cards.d.ts +3 -3
  1298. package/dist/team-social-grid.d.cts +3 -3
  1299. package/dist/team-social-grid.d.ts +3 -3
  1300. package/dist/team-testimonial-stats.d.cts +3 -3
  1301. package/dist/team-testimonial-stats.d.ts +3 -3
  1302. package/dist/testimonial-carousel-cards.d.cts +3 -3
  1303. package/dist/testimonial-carousel-cards.d.ts +3 -3
  1304. package/dist/testimonials-animated-split.d.cts +3 -3
  1305. package/dist/testimonials-animated-split.d.ts +3 -3
  1306. package/dist/testimonials-bento-grid.d.cts +3 -3
  1307. package/dist/testimonials-bento-grid.d.ts +3 -3
  1308. package/dist/testimonials-carousel-image.d.cts +3 -3
  1309. package/dist/testimonials-carousel-image.d.ts +3 -3
  1310. package/dist/testimonials-centered-avatars.d.cts +3 -3
  1311. package/dist/testimonials-centered-avatars.d.ts +3 -3
  1312. package/dist/testimonials-company-logo.d.cts +3 -3
  1313. package/dist/testimonials-company-logo.d.ts +3 -3
  1314. package/dist/testimonials-grid-add-review.d.cts +4 -4
  1315. package/dist/testimonials-grid-add-review.d.ts +4 -4
  1316. package/dist/testimonials-images-helpful.d.cts +3 -3
  1317. package/dist/testimonials-images-helpful.d.ts +3 -3
  1318. package/dist/testimonials-large-quote.d.cts +3 -3
  1319. package/dist/testimonials-large-quote.d.ts +3 -3
  1320. package/dist/testimonials-list-verified.d.cts +4 -4
  1321. package/dist/testimonials-list-verified.d.ts +4 -4
  1322. package/dist/testimonials-logo-cards.d.cts +3 -3
  1323. package/dist/testimonials-logo-cards.d.ts +3 -3
  1324. package/dist/testimonials-marquee.d.cts +3 -3
  1325. package/dist/testimonials-marquee.d.ts +3 -3
  1326. package/dist/testimonials-masonry-grid.d.cts +3 -3
  1327. package/dist/testimonials-masonry-grid.d.ts +3 -3
  1328. package/dist/testimonials-mini-dividers.d.cts +3 -3
  1329. package/dist/testimonials-mini-dividers.d.ts +3 -3
  1330. package/dist/testimonials-minimal-numbered.d.cts +3 -3
  1331. package/dist/testimonials-minimal-numbered.d.ts +3 -3
  1332. package/dist/testimonials-parallax-number.d.cts +3 -3
  1333. package/dist/testimonials-parallax-number.d.ts +3 -3
  1334. package/dist/testimonials-quote-carousel.d.cts +3 -3
  1335. package/dist/testimonials-quote-carousel.d.ts +3 -3
  1336. package/dist/testimonials-scrolling-columns.d.cts +3 -3
  1337. package/dist/testimonials-scrolling-columns.d.ts +3 -3
  1338. package/dist/testimonials-simple-grid.d.cts +3 -3
  1339. package/dist/testimonials-simple-grid.d.ts +3 -3
  1340. package/dist/testimonials-slider-minimal.d.cts +3 -3
  1341. package/dist/testimonials-slider-minimal.d.ts +3 -3
  1342. package/dist/testimonials-split-image.d.cts +3 -3
  1343. package/dist/testimonials-split-image.d.ts +3 -3
  1344. package/dist/testimonials-stats-header.d.cts +3 -3
  1345. package/dist/testimonials-stats-header.d.ts +3 -3
  1346. package/dist/testimonials-twitter-cards.d.cts +4 -4
  1347. package/dist/testimonials-twitter-cards.d.ts +4 -4
  1348. package/dist/testimonials-wall-compact.d.cts +3 -3
  1349. package/dist/testimonials-wall-compact.d.ts +3 -3
  1350. package/dist/timeline-ai-workflow-cards.d.cts +3 -3
  1351. package/dist/timeline-ai-workflow-cards.d.ts +3 -3
  1352. package/dist/timeline-alternating-diagonal.d.cts +3 -3
  1353. package/dist/timeline-alternating-diagonal.d.ts +3 -3
  1354. package/dist/timeline-changelog-badges.d.cts +3 -3
  1355. package/dist/timeline-changelog-badges.d.ts +3 -3
  1356. package/dist/timeline-history-prose.d.cts +3 -3
  1357. package/dist/timeline-history-prose.d.ts +3 -3
  1358. package/dist/timeline-horizontal-icons.d.cts +3 -3
  1359. package/dist/timeline-horizontal-icons.d.ts +3 -3
  1360. package/dist/timeline-horizontal-phases.d.cts +3 -3
  1361. package/dist/timeline-horizontal-phases.d.ts +3 -3
  1362. package/dist/timeline-product-launch.d.cts +3 -3
  1363. package/dist/timeline-product-launch.d.ts +3 -3
  1364. package/dist/timeline-productivity-list.d.cts +3 -3
  1365. package/dist/timeline-productivity-list.d.ts +3 -3
  1366. package/dist/timeline-scroll-highlight.d.cts +3 -3
  1367. package/dist/timeline-scroll-highlight.d.ts +3 -3
  1368. package/dist/timeline-scroll-sticky-image.d.cts +3 -3
  1369. package/dist/timeline-scroll-sticky-image.d.ts +3 -3
  1370. package/dist/timeline-stepper-animated.d.cts +3 -3
  1371. package/dist/timeline-stepper-animated.d.ts +3 -3
  1372. package/dist/timeline-tabbed-phases.d.cts +3 -3
  1373. package/dist/timeline-tabbed-phases.d.ts +3 -3
  1374. package/dist/timeline-two-column-featured.d.cts +3 -3
  1375. package/dist/timeline-two-column-featured.d.ts +3 -3
  1376. package/dist/timeline-vertical-icon-dashed.d.cts +3 -3
  1377. package/dist/timeline-vertical-icon-dashed.d.ts +3 -3
  1378. package/dist/types.d.cts +3 -3
  1379. package/dist/types.d.ts +3 -3
  1380. package/dist/use-responsive-layout.cjs +17 -0
  1381. package/dist/use-responsive-layout.d.cts +24 -0
  1382. package/dist/use-responsive-layout.d.ts +24 -0
  1383. package/dist/use-responsive-layout.js +15 -0
  1384. package/dist/utils.d.cts +4 -4
  1385. package/dist/utils.d.ts +4 -4
  1386. package/package.json +9 -4
package/dist/index.cjs CHANGED
@@ -1,16 +1,17 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React4 = require('react');
4
+ var React5 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
+ var maps = require('@page-speed/maps');
9
+ var classVarianceAuthority = require('class-variance-authority');
8
10
  var framerMotion = require('framer-motion');
9
11
  var useOnClickOutside = require('@opensite/hooks/useOnClickOutside');
10
12
  var react = require('motion/react');
11
13
  var img = require('@page-speed/img');
12
14
  var reactSlot = require('@radix-ui/react-slot');
13
- var classVarianceAuthority = require('class-variance-authority');
14
15
  var PopoverPrimitive = require('@radix-ui/react-popover');
15
16
  var icon = require('@page-speed/icon');
16
17
  var usePlatformFromUrl = require('@opensite/hooks/usePlatformFromUrl');
@@ -35,7 +36,7 @@ function _interopNamespace(e) {
35
36
  return Object.freeze(n);
36
37
  }
37
38
 
38
- var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
39
+ var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
39
40
  var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
40
41
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
41
42
 
@@ -142,7 +143,7 @@ var maxWidthStyles = {
142
143
  "4xl": "max-w-[1536px]",
143
144
  full: "max-w-full"
144
145
  };
145
- var Container = React4__namespace.default.forwardRef(
146
+ var Container = React5__namespace.default.forwardRef(
146
147
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
147
148
  const Component = as;
148
149
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -448,7 +449,7 @@ var spacingStyles = {
448
449
  };
449
450
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
450
451
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
451
- var Section = React4__namespace.default.forwardRef(
452
+ var Section = React5__namespace.default.forwardRef(
452
453
  ({
453
454
  id,
454
455
  title,
@@ -509,129 +510,1120 @@ var Section = React4__namespace.default.forwardRef(
509
510
  }
510
511
  );
511
512
  Section.displayName = "Section";
512
- var sizeStyles = {
513
- sm: "max-w-md",
514
- md: "max-w-2xl",
515
- lg: "max-w-4xl",
516
- xl: "max-w-5xl",
517
- full: "max-w-7xl",
518
- compact: "max-w-[700px]"
519
- };
520
- var dialogTransition = {
521
- duration: 0.35,
522
- ease: [0.16, 1, 0.3, 1]
523
- };
524
- function AnimatedDialog({
525
- open,
526
- onOpenChange,
527
- title,
528
- eyebrow,
529
- description,
530
- children,
531
- header,
532
- footer,
533
- size = "lg",
534
- className,
535
- contentClassName,
536
- featuredMediaHeader
537
- }) {
538
- const titleId = React4.useId();
539
- const descriptionId = React4.useId();
540
- const containerRef = React4.useRef(null);
541
- useOnClickOutside.useOnClickOutside(containerRef, () => {
542
- if (open) {
543
- onOpenChange(false);
513
+ function normalizePhoneNumber(input) {
514
+ const trimmed = input.trim();
515
+ if (trimmed.toLowerCase().startsWith("tel:")) {
516
+ return trimmed;
517
+ }
518
+ const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
519
+ if (match) {
520
+ const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
521
+ const extension = match[3];
522
+ const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
523
+ const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
524
+ return `tel:${withExtension}`;
525
+ }
526
+ const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
527
+ return `tel:${cleaned}`;
528
+ }
529
+ function normalizeEmail(input) {
530
+ const trimmed = input.trim();
531
+ if (trimmed.toLowerCase().startsWith("mailto:")) {
532
+ return trimmed;
533
+ }
534
+ return `mailto:${trimmed}`;
535
+ }
536
+ function isEmail(input) {
537
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
538
+ return emailRegex.test(input.trim());
539
+ }
540
+ function isPhoneNumber(input) {
541
+ const trimmed = input.trim();
542
+ if (trimmed.toLowerCase().startsWith("tel:")) {
543
+ return true;
544
+ }
545
+ const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
546
+ return phoneRegex.test(trimmed);
547
+ }
548
+ function isInternalUrl(href) {
549
+ if (typeof window === "undefined") {
550
+ return href.startsWith("/") && !href.startsWith("//");
551
+ }
552
+ const trimmed = href.trim();
553
+ if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
554
+ return true;
555
+ }
556
+ try {
557
+ const url = new URL(trimmed, window.location.href);
558
+ const currentOrigin = window.location.origin;
559
+ const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
560
+ return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
561
+ } catch {
562
+ return false;
563
+ }
564
+ }
565
+ function toRelativePath(href) {
566
+ if (typeof window === "undefined") {
567
+ return href;
568
+ }
569
+ const trimmed = href.trim();
570
+ if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
571
+ return trimmed;
572
+ }
573
+ try {
574
+ const url = new URL(trimmed, window.location.href);
575
+ const currentOrigin = window.location.origin;
576
+ const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
577
+ if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
578
+ return url.pathname + url.search + url.hash;
544
579
  }
545
- });
546
- React4.useEffect(() => {
547
- if (!open) {
548
- return;
580
+ } catch {
581
+ }
582
+ return trimmed;
583
+ }
584
+ function useNavigation({
585
+ href,
586
+ onClick
587
+ } = {}) {
588
+ const linkType = React5__namespace.useMemo(() => {
589
+ if (!href || href.trim() === "") {
590
+ return onClick ? "none" : "none";
549
591
  }
550
- const onKeyDown = (event) => {
551
- if (event.key === "Escape") {
552
- onOpenChange(false);
592
+ const trimmed = href.trim();
593
+ if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
594
+ return "mailto";
595
+ }
596
+ if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
597
+ return "tel";
598
+ }
599
+ if (isInternalUrl(trimmed)) {
600
+ return "internal";
601
+ }
602
+ try {
603
+ new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
604
+ return "external";
605
+ } catch {
606
+ return "internal";
607
+ }
608
+ }, [href, onClick]);
609
+ const normalizedHref = React5__namespace.useMemo(() => {
610
+ if (!href || href.trim() === "") {
611
+ return void 0;
612
+ }
613
+ const trimmed = href.trim();
614
+ switch (linkType) {
615
+ case "tel":
616
+ return normalizePhoneNumber(trimmed);
617
+ case "mailto":
618
+ return normalizeEmail(trimmed);
619
+ case "internal":
620
+ return toRelativePath(trimmed);
621
+ case "external":
622
+ return trimmed;
623
+ default:
624
+ return trimmed;
625
+ }
626
+ }, [href, linkType]);
627
+ const target = React5__namespace.useMemo(() => {
628
+ switch (linkType) {
629
+ case "external":
630
+ return "_blank";
631
+ case "internal":
632
+ return "_self";
633
+ case "mailto":
634
+ case "tel":
635
+ return void 0;
636
+ default:
637
+ return void 0;
638
+ }
639
+ }, [linkType]);
640
+ const rel = React5__namespace.useMemo(() => {
641
+ if (linkType === "external") {
642
+ return "noopener noreferrer";
643
+ }
644
+ return void 0;
645
+ }, [linkType]);
646
+ const isExternal = linkType === "external";
647
+ const isInternal = linkType === "internal";
648
+ const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
649
+ const handleClick = React5__namespace.useCallback(
650
+ (event) => {
651
+ if (onClick) {
652
+ try {
653
+ onClick(event);
654
+ } catch (error) {
655
+ console.error("Error in user onClick handler:", error);
656
+ }
553
657
  }
554
- };
555
- const previousOverflow = document.body.style.overflow;
556
- document.body.style.overflow = "hidden";
557
- window.addEventListener("keydown", onKeyDown);
558
- return () => {
559
- document.body.style.overflow = previousOverflow;
560
- window.removeEventListener("keydown", onKeyDown);
561
- };
562
- }, [open, onOpenChange]);
563
- return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 h-screen overflow-y-auto", children: [
564
- /* @__PURE__ */ jsxRuntime.jsx(
565
- framerMotion.motion.div,
566
- {
567
- initial: { opacity: 0 },
568
- animate: { opacity: 1, transition: dialogTransition },
569
- exit: { opacity: 0, transition: dialogTransition },
570
- className: "fixed inset-0 h-full w-full bg-foreground/80 backdrop-blur-lg"
658
+ if (event.defaultPrevented) {
659
+ return;
571
660
  }
572
- ),
573
- /* @__PURE__ */ jsxRuntime.jsxs(
574
- framerMotion.motion.div,
575
- {
576
- initial: { opacity: 0, y: 24, scale: 0.98 },
577
- animate: {
578
- opacity: 1,
579
- y: 0,
580
- scale: 1,
581
- transition: dialogTransition
582
- },
583
- exit: {
584
- opacity: 0,
585
- y: 12,
586
- scale: 0.98,
587
- transition: dialogTransition
588
- },
589
- ref: containerRef,
590
- role: "dialog",
591
- "aria-modal": "true",
592
- "aria-labelledby": title ? titleId : void 0,
593
- "aria-describedby": description ? descriptionId : void 0,
594
- className: cn(
595
- "relative z-60 mx-auto my-12 flex w-[92vw] max-h-[85vh] flex-col overflow-hidden rounded-3xl bg-background shadow-2xl ring-1 ring-border/10",
596
- size === "compact" ? "p-0 md:my-20" : "p-6 md:my-20 md:p-12",
597
- sizeStyles[size],
598
- className
599
- ),
600
- children: [
601
- featuredMediaHeader ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden", children: [
602
- featuredMediaHeader,
603
- /* @__PURE__ */ jsxRuntime.jsx(
604
- "button",
605
- {
606
- type: "button",
607
- "aria-label": "Close dialog",
608
- className: "absolute right-4 top-4 z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-foreground/90 text-background backdrop-blur-sm transition hover:bg-foreground md:h-11 md:w-11",
609
- onClick: () => onOpenChange(false),
610
- children: /* @__PURE__ */ jsxRuntime.jsx(
611
- "svg",
612
- {
613
- xmlns: "http://www.w3.org/2000/svg",
614
- width: "24",
615
- height: "24",
616
- viewBox: "0 0 24 24",
617
- children: /* @__PURE__ */ jsxRuntime.jsx(
618
- "path",
619
- {
620
- fill: "none",
621
- stroke: "currentColor",
622
- strokeLinecap: "round",
623
- strokeLinejoin: "round",
624
- strokeWidth: "2",
625
- d: "M18 6L6 18M6 6l12 12"
626
- }
627
- )
628
- }
629
- )
630
- }
631
- )
632
- ] }) : null,
633
- /* @__PURE__ */ jsxRuntime.jsxs(
634
- "div",
661
+ if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
662
+ !event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
663
+ if (typeof window !== "undefined") {
664
+ const handler = window.__opensiteNavigationHandler;
665
+ if (typeof handler === "function") {
666
+ try {
667
+ const handled = handler(normalizedHref, event.nativeEvent || event);
668
+ if (handled !== false) {
669
+ event.preventDefault();
670
+ }
671
+ } catch (error) {
672
+ console.error("Error in navigation handler:", error);
673
+ }
674
+ }
675
+ }
676
+ }
677
+ },
678
+ [onClick, shouldUseRouter, normalizedHref]
679
+ );
680
+ return {
681
+ linkType,
682
+ normalizedHref,
683
+ target,
684
+ rel,
685
+ isExternal,
686
+ isInternal,
687
+ shouldUseRouter,
688
+ handleClick
689
+ };
690
+ }
691
+ var baseStyles = [
692
+ // Layout
693
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
694
+ // Typography - using CSS variables with sensible defaults
695
+ "font-[var(--button-font-family,inherit)]",
696
+ "font-[var(--button-font-weight,500)]",
697
+ "tracking-[var(--button-letter-spacing,0)]",
698
+ "leading-[var(--button-line-height,1.25)]",
699
+ "[text-transform:var(--button-text-transform,none)]",
700
+ "text-sm",
701
+ // Border radius
702
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
703
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
704
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
705
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
706
+ "[box-shadow:var(--button-shadow,none)]",
707
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
708
+ // Disabled state
709
+ "disabled:pointer-events-none disabled:opacity-50",
710
+ // SVG handling
711
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
712
+ // Focus styles
713
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
714
+ // Invalid state
715
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
716
+ ].join(" ");
717
+ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
718
+ variants: {
719
+ variant: {
720
+ // Default (Primary) variant - full customization
721
+ default: [
722
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
723
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
724
+ "border-[length:var(--button-default-border-width,0px)]",
725
+ "border-[color:var(--button-default-border,transparent)]",
726
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
727
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
728
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
729
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
730
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
731
+ ].join(" "),
732
+ // Destructive variant - full customization
733
+ destructive: [
734
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
735
+ "text-[var(--button-destructive-fg,white)]",
736
+ "border-[length:var(--button-destructive-border-width,0px)]",
737
+ "border-[color:var(--button-destructive-border,transparent)]",
738
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
739
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
740
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
741
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
742
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
743
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
744
+ "dark:bg-destructive/60"
745
+ ].join(" "),
746
+ // Outline variant - full customization with proper border handling
747
+ outline: [
748
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
749
+ "text-[var(--button-outline-fg,inherit)]",
750
+ "border-[length:var(--button-outline-border-width,1px)]",
751
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
752
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
753
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
754
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
755
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
756
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
757
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
758
+ ].join(" "),
759
+ // Secondary variant - full customization
760
+ secondary: [
761
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
762
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
763
+ "border-[length:var(--button-secondary-border-width,0px)]",
764
+ "border-[color:var(--button-secondary-border,transparent)]",
765
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
766
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
767
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
768
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
769
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
770
+ ].join(" "),
771
+ // Ghost variant - full customization
772
+ ghost: [
773
+ "bg-[var(--button-ghost-bg,transparent)]",
774
+ "text-[var(--button-ghost-fg,inherit)]",
775
+ "border-[length:var(--button-ghost-border-width,0px)]",
776
+ "border-[color:var(--button-ghost-border,transparent)]",
777
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
778
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
779
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
780
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
781
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
782
+ "dark:hover:bg-accent/50"
783
+ ].join(" "),
784
+ // Link variant - full customization
785
+ link: [
786
+ "bg-[var(--button-link-bg,transparent)]",
787
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
788
+ "border-[length:var(--button-link-border-width,0px)]",
789
+ "border-[color:var(--button-link-border,transparent)]",
790
+ "[box-shadow:var(--button-link-shadow,none)]",
791
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
792
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
793
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
794
+ "underline-offset-4 hover:underline"
795
+ ].join(" ")
796
+ },
797
+ size: {
798
+ default: [
799
+ "h-[var(--button-height-md,2.25rem)]",
800
+ "px-[var(--button-padding-x-md,1rem)]",
801
+ "py-[var(--button-padding-y-md,0.5rem)]",
802
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
803
+ ].join(" "),
804
+ sm: [
805
+ "h-[var(--button-height-sm,2rem)]",
806
+ "px-[var(--button-padding-x-sm,0.75rem)]",
807
+ "py-[var(--button-padding-y-sm,0.25rem)]",
808
+ "gap-1.5",
809
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
810
+ ].join(" "),
811
+ md: [
812
+ "h-[var(--button-height-md,2.25rem)]",
813
+ "px-[var(--button-padding-x-md,1rem)]",
814
+ "py-[var(--button-padding-y-md,0.5rem)]",
815
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
816
+ ].join(" "),
817
+ lg: [
818
+ "h-[var(--button-height-lg,2.5rem)]",
819
+ "px-[var(--button-padding-x-lg,1.5rem)]",
820
+ "py-[var(--button-padding-y-lg,0.5rem)]",
821
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
822
+ ].join(" "),
823
+ icon: "size-[var(--button-height-md,2.25rem)]",
824
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
825
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
826
+ }
827
+ },
828
+ defaultVariants: {
829
+ variant: "default",
830
+ size: "default"
831
+ }
832
+ });
833
+ var Pressable = React5__namespace.forwardRef(
834
+ ({
835
+ children,
836
+ className,
837
+ href,
838
+ onClick,
839
+ variant,
840
+ size,
841
+ asButton = false,
842
+ fallbackComponentType = "span",
843
+ componentType,
844
+ "aria-label": ariaLabel,
845
+ "aria-describedby": ariaDescribedby,
846
+ id,
847
+ ...props
848
+ }, ref) => {
849
+ const navigation = useNavigation({ href, onClick });
850
+ const {
851
+ normalizedHref,
852
+ target,
853
+ rel,
854
+ linkType,
855
+ isInternal,
856
+ isExternal,
857
+ handleClick
858
+ } = navigation;
859
+ const shouldRenderLink = normalizedHref && linkType !== "none";
860
+ const shouldRenderButton = !shouldRenderLink && onClick;
861
+ const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
862
+ const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
863
+ const shouldApplyButtonStyles = asButton || variant || size;
864
+ const combinedClassName = cn(
865
+ shouldApplyButtonStyles && buttonVariants({ variant, size }),
866
+ className
867
+ );
868
+ const dataProps = Object.fromEntries(
869
+ Object.entries(props).filter(([key]) => key.startsWith("data-"))
870
+ );
871
+ const buttonDataAttributes = shouldApplyButtonStyles ? {
872
+ "data-slot": "button",
873
+ "data-variant": variant ?? "default",
874
+ "data-size": size ?? "default"
875
+ } : {};
876
+ const commonProps = {
877
+ className: combinedClassName,
878
+ onClick: handleClick,
879
+ "aria-label": ariaLabel,
880
+ "aria-describedby": ariaDescribedby,
881
+ id,
882
+ ...dataProps,
883
+ ...buttonDataAttributes
884
+ };
885
+ if (finalComponentType === "a" && shouldRenderLink) {
886
+ return /* @__PURE__ */ jsxRuntime.jsx(
887
+ "a",
888
+ {
889
+ ref,
890
+ href: normalizedHref,
891
+ target,
892
+ rel,
893
+ ...commonProps,
894
+ ...props,
895
+ children
896
+ }
897
+ );
898
+ }
899
+ if (finalComponentType === "button") {
900
+ return /* @__PURE__ */ jsxRuntime.jsx(
901
+ "button",
902
+ {
903
+ ref,
904
+ type: props.type || "button",
905
+ ...commonProps,
906
+ ...props,
907
+ children
908
+ }
909
+ );
910
+ }
911
+ if (finalComponentType === "div") {
912
+ return /* @__PURE__ */ jsxRuntime.jsx(
913
+ "div",
914
+ {
915
+ ref,
916
+ ...commonProps,
917
+ children
918
+ }
919
+ );
920
+ }
921
+ return /* @__PURE__ */ jsxRuntime.jsx(
922
+ "span",
923
+ {
924
+ ref,
925
+ ...commonProps,
926
+ children
927
+ }
928
+ );
929
+ }
930
+ );
931
+ Pressable.displayName = "Pressable";
932
+ var PANEL_POSITION_CLASS = {
933
+ "top-left": "left-4 top-4",
934
+ "top-right": "right-4 top-4",
935
+ "bottom-left": "bottom-4 left-4",
936
+ "bottom-right": "bottom-4 right-4"
937
+ };
938
+ var DEFAULT_VIEW_STATE = {
939
+ latitude: 39.5,
940
+ longitude: -98.35,
941
+ zoom: 3
942
+ };
943
+ var VIDEO_FILE_EXTENSION_REGEX = /\.(mp4|webm|ogg|mov|m4v|m3u8)(\?.*)?$/i;
944
+ function resolveMediaType(item) {
945
+ if (item.type) {
946
+ return item.type;
947
+ }
948
+ return VIDEO_FILE_EXTENSION_REGEX.test(item.src) ? "video" : "image";
949
+ }
950
+ function normalizeId(value, fallback) {
951
+ if (value === null || value === void 0 || value === "") {
952
+ return fallback;
953
+ }
954
+ return String(value);
955
+ }
956
+ function buildClusterCenter(markers) {
957
+ if (!markers.length) {
958
+ return null;
959
+ }
960
+ const total = markers.reduce(
961
+ (accumulator, marker) => ({
962
+ latitude: accumulator.latitude + marker.latitude,
963
+ longitude: accumulator.longitude + marker.longitude
964
+ }),
965
+ { latitude: 0, longitude: 0 }
966
+ );
967
+ return {
968
+ latitude: total.latitude / markers.length,
969
+ longitude: total.longitude / markers.length
970
+ };
971
+ }
972
+ function resolveActionKey(action, index) {
973
+ if (typeof action.label === "string" && action.label.trim().length > 0) {
974
+ return `label:${action.label}:${index}`;
975
+ }
976
+ if (action.href) {
977
+ return `href:${action.href}:${index}`;
978
+ }
979
+ return `action:${index}`;
980
+ }
981
+ function MarkerActions({ actions }) {
982
+ if (!actions || actions.length === 0) {
983
+ return null;
984
+ }
985
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: actions.map((action, index) => {
986
+ const {
987
+ label,
988
+ icon,
989
+ iconAfter,
990
+ children,
991
+ href,
992
+ onClick,
993
+ className: actionClassName,
994
+ variant,
995
+ size,
996
+ asButton,
997
+ ...rest
998
+ } = action;
999
+ return /* @__PURE__ */ jsxRuntime.jsx(
1000
+ Pressable,
1001
+ {
1002
+ href,
1003
+ onClick,
1004
+ variant: variant ?? (index === 0 ? "default" : "outline"),
1005
+ size: size ?? "sm",
1006
+ asButton: asButton ?? true,
1007
+ className: cn("inline-flex items-center gap-2", actionClassName),
1008
+ ...rest,
1009
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1010
+ icon,
1011
+ label,
1012
+ iconAfter
1013
+ ] })
1014
+ },
1015
+ resolveActionKey(action, index)
1016
+ );
1017
+ }) });
1018
+ }
1019
+ function MarkerMediaCarousel({ mediaItems }) {
1020
+ const [activeIndex, setActiveIndex] = React5__namespace.useState(0);
1021
+ const totalItems = mediaItems.length;
1022
+ React5__namespace.useEffect(() => {
1023
+ setActiveIndex(0);
1024
+ }, [mediaItems]);
1025
+ const activeMediaItem = mediaItems[activeIndex];
1026
+ const mediaType = resolveMediaType(activeMediaItem);
1027
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
1028
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-44 w-full overflow-hidden", children: mediaType === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
1029
+ "video",
1030
+ {
1031
+ className: "h-full w-full object-cover",
1032
+ controls: true,
1033
+ preload: "metadata",
1034
+ poster: activeMediaItem.poster,
1035
+ children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: activeMediaItem.src })
1036
+ }
1037
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1038
+ "img",
1039
+ {
1040
+ src: activeMediaItem.src,
1041
+ alt: activeMediaItem.alt ?? "Map marker media",
1042
+ className: "h-full w-full object-cover",
1043
+ loading: "lazy"
1044
+ }
1045
+ ) }),
1046
+ totalItems > 1 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1047
+ /* @__PURE__ */ jsxRuntime.jsx(
1048
+ "button",
1049
+ {
1050
+ type: "button",
1051
+ "aria-label": "Show previous media",
1052
+ className: "absolute left-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/90 text-foreground shadow-sm transition hover:bg-background",
1053
+ onClick: () => {
1054
+ setActiveIndex((current) => (current - 1 + totalItems) % totalItems);
1055
+ },
1056
+ children: "<"
1057
+ }
1058
+ ),
1059
+ /* @__PURE__ */ jsxRuntime.jsx(
1060
+ "button",
1061
+ {
1062
+ type: "button",
1063
+ "aria-label": "Show next media",
1064
+ className: "absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/90 text-foreground shadow-sm transition hover:bg-background",
1065
+ onClick: () => {
1066
+ setActiveIndex((current) => (current + 1) % totalItems);
1067
+ },
1068
+ children: ">"
1069
+ }
1070
+ ),
1071
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5", children: mediaItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
1072
+ "button",
1073
+ {
1074
+ type: "button",
1075
+ "aria-label": `Show media item ${index + 1}`,
1076
+ className: cn(
1077
+ "h-2 rounded-full transition-all",
1078
+ index === activeIndex ? "w-6 bg-white" : "w-2 bg-white/70 hover:bg-white/90"
1079
+ ),
1080
+ onClick: () => setActiveIndex(index)
1081
+ },
1082
+ normalizeId(item.id, `media-dot-${index}`)
1083
+ )) })
1084
+ ] }) : null
1085
+ ] });
1086
+ }
1087
+ function getMarkerTitle(marker, markerIndex) {
1088
+ if (marker.title !== void 0 && marker.title !== null) {
1089
+ return marker.title;
1090
+ }
1091
+ if (marker.label !== void 0 && marker.label !== null) {
1092
+ return marker.label;
1093
+ }
1094
+ return `Location ${markerIndex + 1}`;
1095
+ }
1096
+ function GeoMap({
1097
+ className,
1098
+ mapWrapperClassName,
1099
+ mapClassName,
1100
+ panelClassName,
1101
+ panelPosition = "top-left",
1102
+ stadiaApiKey = "",
1103
+ mapStyle = "osm-bright",
1104
+ styleUrl,
1105
+ mapLibreCssHref,
1106
+ markers = [],
1107
+ clusters = [],
1108
+ viewState,
1109
+ defaultViewState,
1110
+ onViewStateChange,
1111
+ onMapClick,
1112
+ onMarkerDrag,
1113
+ showNavigationControl = true,
1114
+ showGeolocateControl = false,
1115
+ navigationControlPosition = "top-right",
1116
+ geolocateControlPosition = "top-left",
1117
+ flyToOptions,
1118
+ markerFocusZoom = 14,
1119
+ clusterFocusZoom = 5,
1120
+ selectedMarkerId,
1121
+ initialSelectedMarkerId,
1122
+ onSelectionChange,
1123
+ clearSelectionOnMapClick = true,
1124
+ mapChildren
1125
+ }) {
1126
+ const normalizedStandaloneMarkers = React5__namespace.useMemo(
1127
+ () => markers.map((marker, index) => ({
1128
+ ...marker,
1129
+ id: normalizeId(marker.id, `marker-${index}`)
1130
+ })),
1131
+ [markers]
1132
+ );
1133
+ const normalizedClusters = React5__namespace.useMemo(() => {
1134
+ const results = [];
1135
+ clusters.forEach((cluster, clusterIndex) => {
1136
+ const clusterId = normalizeId(cluster.id, `cluster-${clusterIndex}`);
1137
+ const normalizedClusterMarkers = cluster.markers.map(
1138
+ (marker, markerIndex) => ({
1139
+ ...marker,
1140
+ id: normalizeId(marker.id, `${clusterId}-marker-${markerIndex}`),
1141
+ clusterId
1142
+ })
1143
+ );
1144
+ const clusterCenter = cluster.latitude !== void 0 && cluster.longitude !== void 0 ? { latitude: cluster.latitude, longitude: cluster.longitude } : buildClusterCenter(normalizedClusterMarkers);
1145
+ if (!clusterCenter) {
1146
+ return;
1147
+ }
1148
+ results.push({
1149
+ ...cluster,
1150
+ id: clusterId,
1151
+ latitude: clusterCenter.latitude,
1152
+ longitude: clusterCenter.longitude,
1153
+ markers: normalizedClusterMarkers
1154
+ });
1155
+ });
1156
+ return results;
1157
+ }, [clusters]);
1158
+ const markerLookup = React5__namespace.useMemo(() => {
1159
+ const lookup = /* @__PURE__ */ new Map();
1160
+ normalizedStandaloneMarkers.forEach((marker) => {
1161
+ lookup.set(marker.id, marker);
1162
+ });
1163
+ normalizedClusters.forEach((cluster) => {
1164
+ cluster.markers.forEach((marker) => {
1165
+ lookup.set(marker.id, marker);
1166
+ });
1167
+ });
1168
+ return lookup;
1169
+ }, [normalizedClusters, normalizedStandaloneMarkers]);
1170
+ const clusterLookup = React5__namespace.useMemo(() => {
1171
+ const lookup = /* @__PURE__ */ new Map();
1172
+ normalizedClusters.forEach((cluster) => {
1173
+ lookup.set(cluster.id, cluster);
1174
+ });
1175
+ return lookup;
1176
+ }, [normalizedClusters]);
1177
+ const firstCoordinate = React5__namespace.useMemo(() => {
1178
+ if (normalizedStandaloneMarkers.length > 0) {
1179
+ const firstStandaloneMarker = normalizedStandaloneMarkers[0];
1180
+ return {
1181
+ latitude: firstStandaloneMarker.latitude,
1182
+ longitude: firstStandaloneMarker.longitude
1183
+ };
1184
+ }
1185
+ if (normalizedClusters.length > 0) {
1186
+ const firstCluster = normalizedClusters[0];
1187
+ return {
1188
+ latitude: firstCluster.latitude,
1189
+ longitude: firstCluster.longitude
1190
+ };
1191
+ }
1192
+ return {
1193
+ latitude: DEFAULT_VIEW_STATE.latitude,
1194
+ longitude: DEFAULT_VIEW_STATE.longitude
1195
+ };
1196
+ }, [normalizedClusters, normalizedStandaloneMarkers]);
1197
+ const [uncontrolledViewState, setUncontrolledViewState] = React5__namespace.useState({
1198
+ latitude: defaultViewState?.latitude ?? firstCoordinate.latitude,
1199
+ longitude: defaultViewState?.longitude ?? firstCoordinate.longitude,
1200
+ zoom: defaultViewState?.zoom ?? DEFAULT_VIEW_STATE.zoom
1201
+ });
1202
+ const isControlledViewState = viewState !== void 0;
1203
+ const resolvedViewState = isControlledViewState ? viewState : uncontrolledViewState;
1204
+ const applyViewState = React5__namespace.useCallback(
1205
+ (nextState) => {
1206
+ if (!isControlledViewState) {
1207
+ setUncontrolledViewState((current) => ({ ...current, ...nextState }));
1208
+ }
1209
+ onViewStateChange?.(nextState);
1210
+ },
1211
+ [isControlledViewState, onViewStateChange]
1212
+ );
1213
+ const [selection, setSelection] = React5__namespace.useState(() => {
1214
+ if (initialSelectedMarkerId !== void 0 && initialSelectedMarkerId !== null) {
1215
+ return {
1216
+ type: "marker",
1217
+ markerId: String(initialSelectedMarkerId)
1218
+ };
1219
+ }
1220
+ return { type: "none" };
1221
+ });
1222
+ React5__namespace.useEffect(() => {
1223
+ if (selectedMarkerId === void 0 || selectedMarkerId === null) {
1224
+ return;
1225
+ }
1226
+ setSelection({
1227
+ type: "marker",
1228
+ markerId: String(selectedMarkerId)
1229
+ });
1230
+ }, [selectedMarkerId]);
1231
+ const selectedMarker = selection.markerId ? markerLookup.get(selection.markerId) : void 0;
1232
+ const selectedCluster = selection.clusterId ? clusterLookup.get(selection.clusterId) : void 0;
1233
+ React5__namespace.useEffect(() => {
1234
+ if (selection.type === "marker" && selection.markerId && !selectedMarker) {
1235
+ setSelection({ type: "none" });
1236
+ onSelectionChange?.({ type: "none" });
1237
+ }
1238
+ }, [onSelectionChange, selectedMarker, selection]);
1239
+ const emitSelectionChange = React5__namespace.useCallback(
1240
+ (nextSelection) => {
1241
+ if (nextSelection.type === "none") {
1242
+ onSelectionChange?.({ type: "none" });
1243
+ return;
1244
+ }
1245
+ if (nextSelection.type === "marker") {
1246
+ const parentCluster = nextSelection.marker.clusterId ? clusterLookup.get(nextSelection.marker.clusterId) : void 0;
1247
+ onSelectionChange?.({
1248
+ type: "marker",
1249
+ marker: nextSelection.marker,
1250
+ cluster: parentCluster
1251
+ });
1252
+ return;
1253
+ }
1254
+ onSelectionChange?.({
1255
+ type: "cluster",
1256
+ cluster: nextSelection.cluster
1257
+ });
1258
+ },
1259
+ [clusterLookup, onSelectionChange]
1260
+ );
1261
+ const selectMarker = React5__namespace.useCallback(
1262
+ (marker) => {
1263
+ setSelection({
1264
+ type: "marker",
1265
+ markerId: marker.id,
1266
+ clusterId: marker.clusterId
1267
+ });
1268
+ applyViewState({
1269
+ latitude: marker.latitude,
1270
+ longitude: marker.longitude,
1271
+ zoom: markerFocusZoom
1272
+ });
1273
+ emitSelectionChange({ type: "marker", marker });
1274
+ },
1275
+ [applyViewState, emitSelectionChange, markerFocusZoom]
1276
+ );
1277
+ const selectCluster = React5__namespace.useCallback(
1278
+ (cluster) => {
1279
+ setSelection({
1280
+ type: "cluster",
1281
+ clusterId: cluster.id
1282
+ });
1283
+ applyViewState({
1284
+ latitude: cluster.latitude,
1285
+ longitude: cluster.longitude,
1286
+ zoom: clusterFocusZoom
1287
+ });
1288
+ emitSelectionChange({ type: "cluster", cluster });
1289
+ },
1290
+ [applyViewState, clusterFocusZoom, emitSelectionChange]
1291
+ );
1292
+ const clearSelection = React5__namespace.useCallback(() => {
1293
+ setSelection({ type: "none" });
1294
+ emitSelectionChange({ type: "none" });
1295
+ }, [emitSelectionChange]);
1296
+ const mapMarkers = React5__namespace.useMemo(() => {
1297
+ const resolvedMarkers = [];
1298
+ normalizedClusters.forEach((cluster) => {
1299
+ const isSelected = selection.type === "cluster" && selection.clusterId === cluster.id;
1300
+ resolvedMarkers.push({
1301
+ id: `cluster-pin:${cluster.id}`,
1302
+ latitude: cluster.latitude,
1303
+ longitude: cluster.longitude,
1304
+ element: () => {
1305
+ const customMarkerElement = cluster.markerElement;
1306
+ const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({
1307
+ isSelected,
1308
+ count: cluster.markers.length
1309
+ }) : customMarkerElement;
1310
+ return /* @__PURE__ */ jsxRuntime.jsx(
1311
+ "button",
1312
+ {
1313
+ type: "button",
1314
+ className: "group cursor-pointer",
1315
+ onClick: (event) => {
1316
+ event.preventDefault();
1317
+ event.stopPropagation();
1318
+ selectCluster(cluster);
1319
+ },
1320
+ "aria-label": `View ${cluster.markers.length} clustered locations`,
1321
+ children: markerBody ?? /* @__PURE__ */ jsxRuntime.jsx(
1322
+ "span",
1323
+ {
1324
+ className: cn(
1325
+ "inline-flex min-h-10 min-w-10 items-center justify-center rounded-full border-2 border-white px-2 text-xs font-semibold text-white shadow-lg transition-transform duration-200 group-hover:scale-105",
1326
+ isSelected && "ring-4 ring-primary/30",
1327
+ cluster.pinClassName
1328
+ ),
1329
+ style: {
1330
+ backgroundColor: cluster.pinColor ?? "var(--foreground)"
1331
+ },
1332
+ children: cluster.markers.length
1333
+ }
1334
+ )
1335
+ }
1336
+ );
1337
+ }
1338
+ });
1339
+ });
1340
+ normalizedStandaloneMarkers.forEach((marker) => {
1341
+ const isSelected = selection.type === "marker" && selection.markerId === marker.id;
1342
+ const customMarkerElement = marker.markerElement;
1343
+ resolvedMarkers.push({
1344
+ id: marker.id,
1345
+ latitude: marker.latitude,
1346
+ longitude: marker.longitude,
1347
+ draggable: marker.draggable,
1348
+ element: () => {
1349
+ const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({ isSelected }) : customMarkerElement;
1350
+ return /* @__PURE__ */ jsxRuntime.jsx(
1351
+ "button",
1352
+ {
1353
+ type: "button",
1354
+ className: "group cursor-pointer",
1355
+ onClick: (event) => {
1356
+ event.preventDefault();
1357
+ event.stopPropagation();
1358
+ selectMarker(marker);
1359
+ },
1360
+ "aria-label": typeof marker.title === "string" ? `View ${marker.title}` : "View location details",
1361
+ children: markerBody ?? /* @__PURE__ */ jsxRuntime.jsx(
1362
+ "span",
1363
+ {
1364
+ className: cn(
1365
+ "inline-flex h-4 w-4 rounded-full border-2 border-white shadow-md transition-transform duration-200 group-hover:scale-110",
1366
+ isSelected && "h-5 w-5 ring-4 ring-primary/30",
1367
+ marker.pinClassName
1368
+ ),
1369
+ style: {
1370
+ backgroundColor: marker.pinColor ?? "#f43f5e"
1371
+ }
1372
+ }
1373
+ )
1374
+ }
1375
+ );
1376
+ }
1377
+ });
1378
+ });
1379
+ return resolvedMarkers;
1380
+ }, [normalizedClusters, normalizedStandaloneMarkers, selectCluster, selectMarker, selection]);
1381
+ const renderMarkerPanel = () => {
1382
+ if (selectedMarker) {
1383
+ const markerMediaItems = selectedMarker.mediaItems ?? [];
1384
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1385
+ "div",
1386
+ {
1387
+ className: cn(
1388
+ "w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-background shadow-2xl",
1389
+ panelClassName
1390
+ ),
1391
+ children: [
1392
+ markerMediaItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(MarkerMediaCarousel, { mediaItems: markerMediaItems }) : null,
1393
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 p-4", children: [
1394
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
1395
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-1", children: [
1396
+ selectedMarker.eyebrow ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedMarker.eyebrow }) : null,
1397
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedMarker.title ?? selectedMarker.label ?? "Location" })
1398
+ ] }),
1399
+ /* @__PURE__ */ jsxRuntime.jsx(
1400
+ "button",
1401
+ {
1402
+ type: "button",
1403
+ "aria-label": "Close marker details",
1404
+ className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-border/70 text-muted-foreground transition hover:bg-muted hover:text-foreground",
1405
+ onClick: clearSelection,
1406
+ children: "x"
1407
+ }
1408
+ )
1409
+ ] }),
1410
+ selectedMarker.summary ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-relaxed text-muted-foreground", children: selectedMarker.summary }) : null,
1411
+ selectedMarker.locationLine ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-foreground", children: selectedMarker.locationLine }) : null,
1412
+ selectedMarker.hoursLine ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: selectedMarker.hoursLine }) : null,
1413
+ selectedMarker.markerContentComponent ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: selectedMarker.markerContentComponent }) : null,
1414
+ /* @__PURE__ */ jsxRuntime.jsx(MarkerActions, { actions: selectedMarker.actions })
1415
+ ] })
1416
+ ]
1417
+ }
1418
+ );
1419
+ }
1420
+ if (selectedCluster) {
1421
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1422
+ "div",
1423
+ {
1424
+ className: cn(
1425
+ "w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-background p-4 shadow-2xl",
1426
+ panelClassName
1427
+ ),
1428
+ children: [
1429
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-start justify-between gap-3", children: [
1430
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
1431
+ selectedCluster.label ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedCluster.label }) : null,
1432
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedCluster.title ?? "Clustered Locations" }),
1433
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: selectedCluster.summary ?? `${selectedCluster.markers.length} location${selectedCluster.markers.length === 1 ? "" : "s"} in this cluster.` })
1434
+ ] }),
1435
+ /* @__PURE__ */ jsxRuntime.jsx(
1436
+ "button",
1437
+ {
1438
+ type: "button",
1439
+ "aria-label": "Close cluster details",
1440
+ className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-border/70 text-muted-foreground transition hover:bg-muted hover:text-foreground",
1441
+ onClick: clearSelection,
1442
+ children: "x"
1443
+ }
1444
+ )
1445
+ ] }),
1446
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-56 space-y-2 overflow-y-auto pr-1", children: selectedCluster.markers.map((marker, markerIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
1447
+ "button",
1448
+ {
1449
+ type: "button",
1450
+ className: "w-full rounded-lg border border-border/60 p-3 text-left transition hover:border-border hover:bg-muted/50",
1451
+ onClick: () => selectMarker(marker),
1452
+ children: [
1453
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-1 text-sm font-semibold text-foreground", children: getMarkerTitle(marker, markerIndex) }),
1454
+ marker.summary ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 line-clamp-2 text-xs text-muted-foreground", children: marker.summary }) : null
1455
+ ]
1456
+ },
1457
+ marker.id
1458
+ )) })
1459
+ ]
1460
+ }
1461
+ );
1462
+ }
1463
+ return null;
1464
+ };
1465
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1466
+ "div",
1467
+ {
1468
+ className: cn(
1469
+ "relative overflow-hidden rounded-2xl border border-border bg-background",
1470
+ className
1471
+ ),
1472
+ children: [
1473
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("h-[520px] w-full", mapWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
1474
+ maps.MapLibre,
1475
+ {
1476
+ stadiaApiKey,
1477
+ mapStyle,
1478
+ styleUrl,
1479
+ mapLibreCssHref,
1480
+ viewState: resolvedViewState,
1481
+ onViewStateChange: applyViewState,
1482
+ markers: mapMarkers,
1483
+ onClick: (coord) => {
1484
+ onMapClick?.(coord);
1485
+ if (clearSelectionOnMapClick) {
1486
+ clearSelection();
1487
+ }
1488
+ },
1489
+ onMarkerDrag,
1490
+ showNavigationControl,
1491
+ showGeolocateControl,
1492
+ navigationControlPosition,
1493
+ geolocateControlPosition,
1494
+ flyToOptions,
1495
+ className: cn("h-full w-full", mapClassName),
1496
+ children: mapChildren
1497
+ }
1498
+ ) }),
1499
+ selection.type !== "none" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pointer-events-none absolute z-20", PANEL_POSITION_CLASS[panelPosition]), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-auto", children: renderMarkerPanel() }) }) : null
1500
+ ]
1501
+ }
1502
+ );
1503
+ }
1504
+ var sizeStyles = {
1505
+ sm: "max-w-md",
1506
+ md: "max-w-2xl",
1507
+ lg: "max-w-4xl",
1508
+ xl: "max-w-5xl",
1509
+ full: "max-w-7xl",
1510
+ compact: "max-w-[700px]"
1511
+ };
1512
+ var dialogTransition = {
1513
+ duration: 0.35,
1514
+ ease: [0.16, 1, 0.3, 1]
1515
+ };
1516
+ function AnimatedDialog({
1517
+ open,
1518
+ onOpenChange,
1519
+ title,
1520
+ eyebrow,
1521
+ description,
1522
+ children,
1523
+ header,
1524
+ footer,
1525
+ size = "lg",
1526
+ className,
1527
+ contentClassName,
1528
+ featuredMediaHeader
1529
+ }) {
1530
+ const titleId = React5.useId();
1531
+ const descriptionId = React5.useId();
1532
+ const containerRef = React5.useRef(null);
1533
+ useOnClickOutside.useOnClickOutside(containerRef, () => {
1534
+ if (open) {
1535
+ onOpenChange(false);
1536
+ }
1537
+ });
1538
+ React5.useEffect(() => {
1539
+ if (!open) {
1540
+ return;
1541
+ }
1542
+ const onKeyDown = (event) => {
1543
+ if (event.key === "Escape") {
1544
+ onOpenChange(false);
1545
+ }
1546
+ };
1547
+ const previousOverflow = document.body.style.overflow;
1548
+ document.body.style.overflow = "hidden";
1549
+ window.addEventListener("keydown", onKeyDown);
1550
+ return () => {
1551
+ document.body.style.overflow = previousOverflow;
1552
+ window.removeEventListener("keydown", onKeyDown);
1553
+ };
1554
+ }, [open, onOpenChange]);
1555
+ return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 h-screen overflow-y-auto", children: [
1556
+ /* @__PURE__ */ jsxRuntime.jsx(
1557
+ framerMotion.motion.div,
1558
+ {
1559
+ initial: { opacity: 0 },
1560
+ animate: { opacity: 1, transition: dialogTransition },
1561
+ exit: { opacity: 0, transition: dialogTransition },
1562
+ className: "fixed inset-0 h-full w-full bg-foreground/80 backdrop-blur-lg"
1563
+ }
1564
+ ),
1565
+ /* @__PURE__ */ jsxRuntime.jsxs(
1566
+ framerMotion.motion.div,
1567
+ {
1568
+ initial: { opacity: 0, y: 24, scale: 0.98 },
1569
+ animate: {
1570
+ opacity: 1,
1571
+ y: 0,
1572
+ scale: 1,
1573
+ transition: dialogTransition
1574
+ },
1575
+ exit: {
1576
+ opacity: 0,
1577
+ y: 12,
1578
+ scale: 0.98,
1579
+ transition: dialogTransition
1580
+ },
1581
+ ref: containerRef,
1582
+ role: "dialog",
1583
+ "aria-modal": "true",
1584
+ "aria-labelledby": title ? titleId : void 0,
1585
+ "aria-describedby": description ? descriptionId : void 0,
1586
+ className: cn(
1587
+ "relative z-60 mx-auto my-12 flex w-[92vw] max-h-[85vh] flex-col overflow-hidden rounded-3xl bg-background shadow-2xl ring-1 ring-border/10",
1588
+ size === "compact" ? "p-0 md:my-20" : "p-6 md:my-20 md:p-12",
1589
+ sizeStyles[size],
1590
+ className
1591
+ ),
1592
+ children: [
1593
+ featuredMediaHeader ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden", children: [
1594
+ featuredMediaHeader,
1595
+ /* @__PURE__ */ jsxRuntime.jsx(
1596
+ "button",
1597
+ {
1598
+ type: "button",
1599
+ "aria-label": "Close dialog",
1600
+ className: "absolute right-4 top-4 z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-foreground/90 text-background backdrop-blur-sm transition hover:bg-foreground md:h-11 md:w-11",
1601
+ onClick: () => onOpenChange(false),
1602
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1603
+ "svg",
1604
+ {
1605
+ xmlns: "http://www.w3.org/2000/svg",
1606
+ width: "24",
1607
+ height: "24",
1608
+ viewBox: "0 0 24 24",
1609
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1610
+ "path",
1611
+ {
1612
+ fill: "none",
1613
+ stroke: "currentColor",
1614
+ strokeLinecap: "round",
1615
+ strokeLinejoin: "round",
1616
+ strokeWidth: "2",
1617
+ d: "M18 6L6 18M6 6l12 12"
1618
+ }
1619
+ )
1620
+ }
1621
+ )
1622
+ }
1623
+ )
1624
+ ] }) : null,
1625
+ /* @__PURE__ */ jsxRuntime.jsxs(
1626
+ "div",
635
1627
  {
636
1628
  className: cn(
637
1629
  "flex items-start justify-between gap-8",
@@ -866,10 +1858,10 @@ var ImageSlider = ({
866
1858
  optixFlowConfig
867
1859
  }) => {
868
1860
  const hasImages = images.length > 0;
869
- const [currentIndex, setCurrentIndex] = React4__namespace.useState(
1861
+ const [currentIndex, setCurrentIndex] = React5__namespace.useState(
870
1862
  () => normalizeIndex(startIndex, images.length)
871
1863
  );
872
- const handleNext = React4__namespace.useCallback(() => {
1864
+ const handleNext = React5__namespace.useCallback(() => {
873
1865
  if (!hasImages) return;
874
1866
  setCurrentIndex((prevIndex) => {
875
1867
  const nextIndex = prevIndex + 1 >= images.length ? 0 : prevIndex + 1;
@@ -877,7 +1869,7 @@ var ImageSlider = ({
877
1869
  return nextIndex;
878
1870
  });
879
1871
  }, [hasImages, images.length, onSlideChange]);
880
- const handlePrevious = React4__namespace.useCallback(() => {
1872
+ const handlePrevious = React5__namespace.useCallback(() => {
881
1873
  if (!hasImages) return;
882
1874
  setCurrentIndex((prevIndex) => {
883
1875
  const nextIndex = prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1;
@@ -885,11 +1877,11 @@ var ImageSlider = ({
885
1877
  return nextIndex;
886
1878
  });
887
1879
  }, [hasImages, images.length, onSlideChange]);
888
- React4__namespace.useEffect(() => {
1880
+ React5__namespace.useEffect(() => {
889
1881
  if (!hasImages) return;
890
1882
  setCurrentIndex(normalizeIndex(startIndex, images.length));
891
1883
  }, [startIndex, images.length, hasImages]);
892
- React4__namespace.useEffect(() => {
1884
+ React5__namespace.useEffect(() => {
893
1885
  if (!enableKeyboard || !hasImages) return;
894
1886
  const handleKeyDown = (event) => {
895
1887
  if (event.key === "ArrowRight") {
@@ -903,7 +1895,7 @@ var ImageSlider = ({
903
1895
  window.removeEventListener("keydown", handleKeyDown);
904
1896
  };
905
1897
  }, [enableKeyboard, handleNext, handlePrevious, hasImages]);
906
- React4__namespace.useEffect(() => {
1898
+ React5__namespace.useEffect(() => {
907
1899
  if (!autoplay || images.length < 2) return;
908
1900
  const interval = window.setInterval(handleNext, autoplayIntervalMs);
909
1901
  return () => window.clearInterval(interval);
@@ -971,153 +1963,11 @@ var ImageSlider = ({
971
1963
  ),
972
1964
  children
973
1965
  }
974
- ) : null
975
- ]
976
- }
977
- );
978
- };
979
- var baseStyles = [
980
- // Layout
981
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
982
- // Typography - using CSS variables with sensible defaults
983
- "font-[var(--button-font-family,inherit)]",
984
- "font-[var(--button-font-weight,500)]",
985
- "tracking-[var(--button-letter-spacing,0)]",
986
- "leading-[var(--button-line-height,1.25)]",
987
- "[text-transform:var(--button-text-transform,none)]",
988
- "text-sm",
989
- // Border radius
990
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
991
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
992
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
993
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
994
- "[box-shadow:var(--button-shadow,none)]",
995
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
996
- // Disabled state
997
- "disabled:pointer-events-none disabled:opacity-50",
998
- // SVG handling
999
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
1000
- // Focus styles
1001
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
1002
- // Invalid state
1003
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
1004
- ].join(" ");
1005
- var buttonVariants = classVarianceAuthority.cva(baseStyles, {
1006
- variants: {
1007
- variant: {
1008
- // Default (Primary) variant - full customization
1009
- default: [
1010
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
1011
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
1012
- "border-[length:var(--button-default-border-width,0px)]",
1013
- "border-[color:var(--button-default-border,transparent)]",
1014
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
1015
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
1016
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
1017
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
1018
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
1019
- ].join(" "),
1020
- // Destructive variant - full customization
1021
- destructive: [
1022
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
1023
- "text-[var(--button-destructive-fg,white)]",
1024
- "border-[length:var(--button-destructive-border-width,0px)]",
1025
- "border-[color:var(--button-destructive-border,transparent)]",
1026
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
1027
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
1028
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
1029
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
1030
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
1031
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
1032
- "dark:bg-destructive/60"
1033
- ].join(" "),
1034
- // Outline variant - full customization with proper border handling
1035
- outline: [
1036
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
1037
- "text-[var(--button-outline-fg,inherit)]",
1038
- "border-[length:var(--button-outline-border-width,1px)]",
1039
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
1040
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
1041
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
1042
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
1043
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
1044
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
1045
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
1046
- ].join(" "),
1047
- // Secondary variant - full customization
1048
- secondary: [
1049
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
1050
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
1051
- "border-[length:var(--button-secondary-border-width,0px)]",
1052
- "border-[color:var(--button-secondary-border,transparent)]",
1053
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
1054
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
1055
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
1056
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
1057
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
1058
- ].join(" "),
1059
- // Ghost variant - full customization
1060
- ghost: [
1061
- "bg-[var(--button-ghost-bg,transparent)]",
1062
- "text-[var(--button-ghost-fg,inherit)]",
1063
- "border-[length:var(--button-ghost-border-width,0px)]",
1064
- "border-[color:var(--button-ghost-border,transparent)]",
1065
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
1066
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
1067
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
1068
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
1069
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
1070
- "dark:hover:bg-accent/50"
1071
- ].join(" "),
1072
- // Link variant - full customization
1073
- link: [
1074
- "bg-[var(--button-link-bg,transparent)]",
1075
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
1076
- "border-[length:var(--button-link-border-width,0px)]",
1077
- "border-[color:var(--button-link-border,transparent)]",
1078
- "[box-shadow:var(--button-link-shadow,none)]",
1079
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
1080
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
1081
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
1082
- "underline-offset-4 hover:underline"
1083
- ].join(" ")
1084
- },
1085
- size: {
1086
- default: [
1087
- "h-[var(--button-height-md,2.25rem)]",
1088
- "px-[var(--button-padding-x-md,1rem)]",
1089
- "py-[var(--button-padding-y-md,0.5rem)]",
1090
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
1091
- ].join(" "),
1092
- sm: [
1093
- "h-[var(--button-height-sm,2rem)]",
1094
- "px-[var(--button-padding-x-sm,0.75rem)]",
1095
- "py-[var(--button-padding-y-sm,0.25rem)]",
1096
- "gap-1.5",
1097
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
1098
- ].join(" "),
1099
- md: [
1100
- "h-[var(--button-height-md,2.25rem)]",
1101
- "px-[var(--button-padding-x-md,1rem)]",
1102
- "py-[var(--button-padding-y-md,0.5rem)]",
1103
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
1104
- ].join(" "),
1105
- lg: [
1106
- "h-[var(--button-height-lg,2.5rem)]",
1107
- "px-[var(--button-padding-x-lg,1.5rem)]",
1108
- "py-[var(--button-padding-y-lg,0.5rem)]",
1109
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
1110
- ].join(" "),
1111
- icon: "size-[var(--button-height-md,2.25rem)]",
1112
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
1113
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
1966
+ ) : null
1967
+ ]
1114
1968
  }
1115
- },
1116
- defaultVariants: {
1117
- variant: "default",
1118
- size: "default"
1119
- }
1120
- });
1969
+ );
1970
+ };
1121
1971
  function Button({
1122
1972
  className,
1123
1973
  variant = "default",
@@ -1145,407 +1995,130 @@ function Card({ className, ...props }) {
1145
1995
  className: cn(
1146
1996
  "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
1147
1997
  className
1148
- ),
1149
- ...props
1150
- }
1151
- );
1152
- }
1153
- function CardHeader({ className, ...props }) {
1154
- return /* @__PURE__ */ jsxRuntime.jsx(
1155
- "div",
1156
- {
1157
- "data-slot": "card-header",
1158
- className: cn(
1159
- "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
1160
- className
1161
- ),
1162
- ...props
1163
- }
1164
- );
1165
- }
1166
- function CardTitle({ className, ...props }) {
1167
- return /* @__PURE__ */ jsxRuntime.jsx(
1168
- "div",
1169
- {
1170
- "data-slot": "card-title",
1171
- className: cn("leading-none font-semibold", className),
1172
- ...props
1173
- }
1174
- );
1175
- }
1176
- function CardDescription({ className, ...props }) {
1177
- return /* @__PURE__ */ jsxRuntime.jsx(
1178
- "div",
1179
- {
1180
- "data-slot": "card-description",
1181
- className: cn("text-muted-foreground text-sm", className),
1182
- ...props
1183
- }
1184
- );
1185
- }
1186
- function CardContent({ className, ...props }) {
1187
- return /* @__PURE__ */ jsxRuntime.jsx(
1188
- "div",
1189
- {
1190
- "data-slot": "card-content",
1191
- className: cn("px-6", className),
1192
- ...props
1193
- }
1194
- );
1195
- }
1196
- function CardFooter({ className, ...props }) {
1197
- return /* @__PURE__ */ jsxRuntime.jsx(
1198
- "div",
1199
- {
1200
- "data-slot": "card-footer",
1201
- className: cn("flex items-center px-6 [.border-t]:pt-6", className),
1202
- ...props
1203
- }
1204
- );
1205
- }
1206
- var badgeVariants = classVarianceAuthority.cva(
1207
- "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
1208
- {
1209
- variants: {
1210
- variant: {
1211
- default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
1212
- secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
1213
- destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
1214
- outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
1215
- }
1216
- },
1217
- defaultVariants: {
1218
- variant: "default"
1219
- }
1220
- }
1221
- );
1222
- function Badge({
1223
- className,
1224
- variant,
1225
- asChild = false,
1226
- ...props
1227
- }) {
1228
- const Comp = asChild ? reactSlot.Slot : "span";
1229
- return /* @__PURE__ */ jsxRuntime.jsx(
1230
- Comp,
1231
- {
1232
- "data-slot": "badge",
1233
- className: cn(badgeVariants({ variant }), className),
1234
- ...props
1235
- }
1236
- );
1237
- }
1238
- function Popover({
1239
- ...props
1240
- }) {
1241
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
1242
- }
1243
- function PopoverTrigger({
1244
- ...props
1245
- }) {
1246
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
1247
- }
1248
- function PopoverContent({
1249
- className,
1250
- align = "center",
1251
- sideOffset = 4,
1252
- ...props
1253
- }) {
1254
- return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
1255
- PopoverPrimitive__namespace.Content,
1256
- {
1257
- "data-slot": "popover-content",
1258
- align,
1259
- sideOffset,
1260
- className: cn(
1261
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
1262
- className
1263
- ),
1264
- ...props
1265
- }
1266
- ) });
1267
- }
1268
- var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
1269
- function DynamicIcon({ apiKey, ...props }) {
1270
- return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
1271
- }
1272
- function normalizePhoneNumber(input) {
1273
- const trimmed = input.trim();
1274
- if (trimmed.toLowerCase().startsWith("tel:")) {
1275
- return trimmed;
1276
- }
1277
- const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
1278
- if (match) {
1279
- const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
1280
- const extension = match[3];
1281
- const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
1282
- const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
1283
- return `tel:${withExtension}`;
1284
- }
1285
- const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
1286
- return `tel:${cleaned}`;
1287
- }
1288
- function normalizeEmail(input) {
1289
- const trimmed = input.trim();
1290
- if (trimmed.toLowerCase().startsWith("mailto:")) {
1291
- return trimmed;
1292
- }
1293
- return `mailto:${trimmed}`;
1294
- }
1295
- function isEmail(input) {
1296
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
1297
- return emailRegex.test(input.trim());
1298
- }
1299
- function isPhoneNumber(input) {
1300
- const trimmed = input.trim();
1301
- if (trimmed.toLowerCase().startsWith("tel:")) {
1302
- return true;
1303
- }
1304
- const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
1305
- return phoneRegex.test(trimmed);
1306
- }
1307
- function isInternalUrl(href) {
1308
- if (typeof window === "undefined") {
1309
- return href.startsWith("/") && !href.startsWith("//");
1310
- }
1311
- const trimmed = href.trim();
1312
- if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
1313
- return true;
1314
- }
1315
- try {
1316
- const url = new URL(trimmed, window.location.href);
1317
- const currentOrigin = window.location.origin;
1318
- const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
1319
- return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
1320
- } catch {
1321
- return false;
1322
- }
1323
- }
1324
- function toRelativePath(href) {
1325
- if (typeof window === "undefined") {
1326
- return href;
1327
- }
1328
- const trimmed = href.trim();
1329
- if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
1330
- return trimmed;
1331
- }
1332
- try {
1333
- const url = new URL(trimmed, window.location.href);
1334
- const currentOrigin = window.location.origin;
1335
- const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
1336
- if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
1337
- return url.pathname + url.search + url.hash;
1338
- }
1339
- } catch {
1340
- }
1341
- return trimmed;
1342
- }
1343
- function useNavigation({
1344
- href,
1345
- onClick
1346
- } = {}) {
1347
- const linkType = React4__namespace.useMemo(() => {
1348
- if (!href || href.trim() === "") {
1349
- return onClick ? "none" : "none";
1350
- }
1351
- const trimmed = href.trim();
1352
- if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
1353
- return "mailto";
1354
- }
1355
- if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
1356
- return "tel";
1357
- }
1358
- if (isInternalUrl(trimmed)) {
1359
- return "internal";
1360
- }
1361
- try {
1362
- new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
1363
- return "external";
1364
- } catch {
1365
- return "internal";
1366
- }
1367
- }, [href, onClick]);
1368
- const normalizedHref = React4__namespace.useMemo(() => {
1369
- if (!href || href.trim() === "") {
1370
- return void 0;
1371
- }
1372
- const trimmed = href.trim();
1373
- switch (linkType) {
1374
- case "tel":
1375
- return normalizePhoneNumber(trimmed);
1376
- case "mailto":
1377
- return normalizeEmail(trimmed);
1378
- case "internal":
1379
- return toRelativePath(trimmed);
1380
- case "external":
1381
- return trimmed;
1382
- default:
1383
- return trimmed;
1384
- }
1385
- }, [href, linkType]);
1386
- const target = React4__namespace.useMemo(() => {
1387
- switch (linkType) {
1388
- case "external":
1389
- return "_blank";
1390
- case "internal":
1391
- return "_self";
1392
- case "mailto":
1393
- case "tel":
1394
- return void 0;
1395
- default:
1396
- return void 0;
1998
+ ),
1999
+ ...props
1397
2000
  }
1398
- }, [linkType]);
1399
- const rel = React4__namespace.useMemo(() => {
1400
- if (linkType === "external") {
1401
- return "noopener noreferrer";
2001
+ );
2002
+ }
2003
+ function CardHeader({ className, ...props }) {
2004
+ return /* @__PURE__ */ jsxRuntime.jsx(
2005
+ "div",
2006
+ {
2007
+ "data-slot": "card-header",
2008
+ className: cn(
2009
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
2010
+ className
2011
+ ),
2012
+ ...props
1402
2013
  }
1403
- return void 0;
1404
- }, [linkType]);
1405
- const isExternal = linkType === "external";
1406
- const isInternal = linkType === "internal";
1407
- const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
1408
- const handleClick = React4__namespace.useCallback(
1409
- (event) => {
1410
- if (onClick) {
1411
- try {
1412
- onClick(event);
1413
- } catch (error) {
1414
- console.error("Error in user onClick handler:", error);
1415
- }
1416
- }
1417
- if (event.defaultPrevented) {
1418
- return;
1419
- }
1420
- if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
1421
- !event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
1422
- if (typeof window !== "undefined") {
1423
- const handler = window.__opensiteNavigationHandler;
1424
- if (typeof handler === "function") {
1425
- try {
1426
- const handled = handler(normalizedHref, event.nativeEvent || event);
1427
- if (handled !== false) {
1428
- event.preventDefault();
1429
- }
1430
- } catch (error) {
1431
- console.error("Error in navigation handler:", error);
1432
- }
1433
- }
1434
- }
1435
- }
1436
- },
1437
- [onClick, shouldUseRouter, normalizedHref]
1438
2014
  );
1439
- return {
1440
- linkType,
1441
- normalizedHref,
1442
- target,
1443
- rel,
1444
- isExternal,
1445
- isInternal,
1446
- shouldUseRouter,
1447
- handleClick
1448
- };
1449
2015
  }
1450
- var Pressable = React4__namespace.forwardRef(
1451
- ({
1452
- children,
1453
- className,
1454
- href,
1455
- onClick,
1456
- variant,
1457
- size,
1458
- asButton = false,
1459
- fallbackComponentType = "span",
1460
- componentType,
1461
- "aria-label": ariaLabel,
1462
- "aria-describedby": ariaDescribedby,
1463
- id,
1464
- ...props
1465
- }, ref) => {
1466
- const navigation = useNavigation({ href, onClick });
1467
- const {
1468
- normalizedHref,
1469
- target,
1470
- rel,
1471
- linkType,
1472
- isInternal,
1473
- isExternal,
1474
- handleClick
1475
- } = navigation;
1476
- const shouldRenderLink = normalizedHref && linkType !== "none";
1477
- const shouldRenderButton = !shouldRenderLink && onClick;
1478
- const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
1479
- const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
1480
- const shouldApplyButtonStyles = asButton || variant || size;
1481
- const combinedClassName = cn(
1482
- shouldApplyButtonStyles && buttonVariants({ variant, size }),
1483
- className
1484
- );
1485
- const dataProps = Object.fromEntries(
1486
- Object.entries(props).filter(([key]) => key.startsWith("data-"))
1487
- );
1488
- const buttonDataAttributes = shouldApplyButtonStyles ? {
1489
- "data-slot": "button",
1490
- "data-variant": variant ?? "default",
1491
- "data-size": size ?? "default"
1492
- } : {};
1493
- const commonProps = {
1494
- className: combinedClassName,
1495
- onClick: handleClick,
1496
- "aria-label": ariaLabel,
1497
- "aria-describedby": ariaDescribedby,
1498
- id,
1499
- ...dataProps,
1500
- ...buttonDataAttributes
1501
- };
1502
- if (finalComponentType === "a" && shouldRenderLink) {
1503
- return /* @__PURE__ */ jsxRuntime.jsx(
1504
- "a",
1505
- {
1506
- ref,
1507
- href: normalizedHref,
1508
- target,
1509
- rel,
1510
- ...commonProps,
1511
- ...props,
1512
- children
1513
- }
1514
- );
2016
+ function CardTitle({ className, ...props }) {
2017
+ return /* @__PURE__ */ jsxRuntime.jsx(
2018
+ "div",
2019
+ {
2020
+ "data-slot": "card-title",
2021
+ className: cn("leading-none font-semibold", className),
2022
+ ...props
1515
2023
  }
1516
- if (finalComponentType === "button") {
1517
- return /* @__PURE__ */ jsxRuntime.jsx(
1518
- "button",
1519
- {
1520
- ref,
1521
- type: props.type || "button",
1522
- ...commonProps,
1523
- ...props,
1524
- children
1525
- }
1526
- );
2024
+ );
2025
+ }
2026
+ function CardDescription({ className, ...props }) {
2027
+ return /* @__PURE__ */ jsxRuntime.jsx(
2028
+ "div",
2029
+ {
2030
+ "data-slot": "card-description",
2031
+ className: cn("text-muted-foreground text-sm", className),
2032
+ ...props
1527
2033
  }
1528
- if (finalComponentType === "div") {
1529
- return /* @__PURE__ */ jsxRuntime.jsx(
1530
- "div",
1531
- {
1532
- ref,
1533
- ...commonProps,
1534
- children
1535
- }
1536
- );
2034
+ );
2035
+ }
2036
+ function CardContent({ className, ...props }) {
2037
+ return /* @__PURE__ */ jsxRuntime.jsx(
2038
+ "div",
2039
+ {
2040
+ "data-slot": "card-content",
2041
+ className: cn("px-6", className),
2042
+ ...props
1537
2043
  }
1538
- return /* @__PURE__ */ jsxRuntime.jsx(
1539
- "span",
1540
- {
1541
- ref,
1542
- ...commonProps,
1543
- children
2044
+ );
2045
+ }
2046
+ function CardFooter({ className, ...props }) {
2047
+ return /* @__PURE__ */ jsxRuntime.jsx(
2048
+ "div",
2049
+ {
2050
+ "data-slot": "card-footer",
2051
+ className: cn("flex items-center px-6 [.border-t]:pt-6", className),
2052
+ ...props
2053
+ }
2054
+ );
2055
+ }
2056
+ var badgeVariants = classVarianceAuthority.cva(
2057
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
2058
+ {
2059
+ variants: {
2060
+ variant: {
2061
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
2062
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
2063
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
2064
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
1544
2065
  }
1545
- );
2066
+ },
2067
+ defaultVariants: {
2068
+ variant: "default"
2069
+ }
1546
2070
  }
1547
2071
  );
1548
- Pressable.displayName = "Pressable";
2072
+ function Badge({
2073
+ className,
2074
+ variant,
2075
+ asChild = false,
2076
+ ...props
2077
+ }) {
2078
+ const Comp = asChild ? reactSlot.Slot : "span";
2079
+ return /* @__PURE__ */ jsxRuntime.jsx(
2080
+ Comp,
2081
+ {
2082
+ "data-slot": "badge",
2083
+ className: cn(badgeVariants({ variant }), className),
2084
+ ...props
2085
+ }
2086
+ );
2087
+ }
2088
+ function Popover({
2089
+ ...props
2090
+ }) {
2091
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
2092
+ }
2093
+ function PopoverTrigger({
2094
+ ...props
2095
+ }) {
2096
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
2097
+ }
2098
+ function PopoverContent({
2099
+ className,
2100
+ align = "center",
2101
+ sideOffset = 4,
2102
+ ...props
2103
+ }) {
2104
+ return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2105
+ PopoverPrimitive__namespace.Content,
2106
+ {
2107
+ "data-slot": "popover-content",
2108
+ align,
2109
+ sideOffset,
2110
+ className: cn(
2111
+ "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
2112
+ className
2113
+ ),
2114
+ ...props
2115
+ }
2116
+ ) });
2117
+ }
2118
+ var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
2119
+ function DynamicIcon({ apiKey, ...props }) {
2120
+ return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
2121
+ }
1549
2122
  var BUTTON_SIZES = {
1550
2123
  sm: { buttonSize: "size-8", iconSize: 16 },
1551
2124
  md: { buttonSize: "size-10", iconSize: 20 },
@@ -1637,7 +2210,7 @@ var platformIconMap = {
1637
2210
  dribbble: "cib/dribbble",
1638
2211
  unknown: "icon-park-solid/circular-connection"
1639
2212
  };
1640
- var SocialLinkIcon = React4__namespace.forwardRef(
2213
+ var SocialLinkIcon = React5__namespace.forwardRef(
1641
2214
  ({
1642
2215
  platformName,
1643
2216
  label,
@@ -1650,13 +2223,13 @@ var SocialLinkIcon = React4__namespace.forwardRef(
1650
2223
  ...pressableProps
1651
2224
  }, ref) => {
1652
2225
  const platform = usePlatformFromUrl.usePlatformFromUrl(href);
1653
- const smartPlatformName = React4__namespace.useMemo(() => {
2226
+ const smartPlatformName = React5__namespace.useMemo(() => {
1654
2227
  return platform || platformName;
1655
2228
  }, [platform, platformName]);
1656
- const iconName = React4__namespace.useMemo(() => {
2229
+ const iconName = React5__namespace.useMemo(() => {
1657
2230
  return iconNameOverride || platformIconMap[smartPlatformName];
1658
2231
  }, [iconNameOverride, smartPlatformName]);
1659
- const accessibleLabel = React4__namespace.useMemo(() => {
2232
+ const accessibleLabel = React5__namespace.useMemo(() => {
1660
2233
  return label || platformName;
1661
2234
  }, [label, platformName]);
1662
2235
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1733,12 +2306,12 @@ function TextInner({ as, className, children, ...props }, ref) {
1733
2306
  const Component = as || "span";
1734
2307
  return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
1735
2308
  }
1736
- var Text = React4__namespace.forwardRef(TextInner);
2309
+ var Text = React5__namespace.forwardRef(TextInner);
1737
2310
  Text.displayName = "Text";
1738
2311
  function isContentTextItem(item) {
1739
- return item !== null && typeof item === "object" && !React4__namespace.isValidElement(item) && "_type" in item && item._type === "text";
2312
+ return item !== null && typeof item === "object" && !React5__namespace.isValidElement(item) && "_type" in item && item._type === "text";
1740
2313
  }
1741
- var ContentGroup = React4__namespace.forwardRef(
2314
+ var ContentGroup = React5__namespace.forwardRef(
1742
2315
  ({ items, className, children, ...props }, ref) => {
1743
2316
  const hasContent = items && items.length > 0;
1744
2317
  if (!hasContent) {
@@ -1751,10 +2324,10 @@ var ContentGroup = React4__namespace.forwardRef(
1751
2324
  return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
1752
2325
  }
1753
2326
  const reactNode = item;
1754
- if (React4__namespace.isValidElement(reactNode)) {
1755
- return React4__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
2327
+ if (React5__namespace.isValidElement(reactNode)) {
2328
+ return React5__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
1756
2329
  }
1757
- return /* @__PURE__ */ jsxRuntime.jsx(React4__namespace.Fragment, { children: reactNode }, idx);
2330
+ return /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: reactNode }, idx);
1758
2331
  }),
1759
2332
  children
1760
2333
  ] });
@@ -1778,7 +2351,7 @@ function AlternatingBlocks({
1778
2351
  pattern,
1779
2352
  patternOpacity
1780
2353
  }) {
1781
- const sectionsContent = React4.useMemo(() => {
2354
+ const sectionsContent = React5.useMemo(() => {
1782
2355
  if (sectionsSlot) return sectionsSlot;
1783
2356
  if (!sections || sections.length === 0) return null;
1784
2357
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-12", sectionsClassName), children: sections.map((section, index) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1822,7 +2395,7 @@ function AlternatingBlocks({
1822
2395
  sectionContentClassName,
1823
2396
  sectionMediaClassName
1824
2397
  ]);
1825
- const headerItems = React4.useMemo(() => {
2398
+ const headerItems = React5.useMemo(() => {
1826
2399
  const items = [];
1827
2400
  if (subtitle) {
1828
2401
  items.push(
@@ -1891,7 +2464,7 @@ function AboutSplitHero({
1891
2464
  patternOpacity,
1892
2465
  directionConfig = { desktop: "mediaRight", mobile: "mediaTop" }
1893
2466
  }) {
1894
- const ctaContent = React4.useMemo(() => {
2467
+ const ctaContent = React5.useMemo(() => {
1895
2468
  if (ctaSlot) return ctaSlot;
1896
2469
  if (!ctaAction) return null;
1897
2470
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -1913,7 +2486,7 @@ function AboutSplitHero({
1913
2486
  }
1914
2487
  );
1915
2488
  }, [ctaSlot, ctaAction, ctaClassName]);
1916
- const bgColorClass = React4.useMemo(() => {
2489
+ const bgColorClass = React5.useMemo(() => {
1917
2490
  switch (background) {
1918
2491
  case "dark":
1919
2492
  return "bg-foreground text-background";
@@ -2041,7 +2614,7 @@ function AboutMissionPrinciples({
2041
2614
  pattern,
2042
2615
  patternOpacity
2043
2616
  }) {
2044
- const missionActionContent = React4.useMemo(() => {
2617
+ const missionActionContent = React5.useMemo(() => {
2045
2618
  if (missionActionSlot) return missionActionSlot;
2046
2619
  if (!missionAction) return null;
2047
2620
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2", missionActionClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2066,7 +2639,7 @@ function AboutMissionPrinciples({
2066
2639
  }
2067
2640
  ) });
2068
2641
  }, [missionActionSlot, missionAction, missionActionClassName]);
2069
- const principlesContent = React4.useMemo(() => {
2642
+ const principlesContent = React5.useMemo(() => {
2070
2643
  if (principlesSlot) return principlesSlot;
2071
2644
  if (!principles || principles.length === 0) return null;
2072
2645
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -2104,7 +2677,7 @@ function AboutMissionPrinciples({
2104
2677
  }
2105
2678
  );
2106
2679
  }, [principlesSlot, principles, principlesClassName]);
2107
- const visionActionContent = React4.useMemo(() => {
2680
+ const visionActionContent = React5.useMemo(() => {
2108
2681
  if (visionActionSlot) return visionActionSlot;
2109
2682
  if (!visionAction) return null;
2110
2683
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2279,11 +2852,11 @@ function AboutExpandableValues({
2279
2852
  pattern,
2280
2853
  patternOpacity
2281
2854
  }) {
2282
- const [expandedValue, setExpandedValue] = React4__namespace.useState(null);
2283
- const toggleExpand = React4.useCallback((id) => {
2855
+ const [expandedValue, setExpandedValue] = React5__namespace.useState(null);
2856
+ const toggleExpand = React5.useCallback((id) => {
2284
2857
  setExpandedValue((prev) => prev === id ? null : id);
2285
2858
  }, []);
2286
- React4.useMemo(() => {
2859
+ React5.useMemo(() => {
2287
2860
  if (actionsSlot) return actionsSlot;
2288
2861
  if (!actions || actions.length === 0) return null;
2289
2862
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -2299,7 +2872,7 @@ function AboutExpandableValues({
2299
2872
  idx
2300
2873
  )) });
2301
2874
  }, [actionsSlot, actions, actionsClassName]);
2302
- const valuesContent = React4.useMemo(() => {
2875
+ const valuesContent = React5.useMemo(() => {
2303
2876
  if (valuesSlot) return valuesSlot;
2304
2877
  if (!values || values.length === 0) return null;
2305
2878
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-1 gap-6 mt-8", valuesClassName), children: values.map((value) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2515,17 +3088,17 @@ function CommunityInitiatives({
2515
3088
  pattern,
2516
3089
  patternOpacity
2517
3090
  }) {
2518
- const [activeCategory, setActiveCategory] = React4__namespace.useState(
3091
+ const [activeCategory, setActiveCategory] = React5__namespace.useState(
2519
3092
  categories?.[0]?.id || ""
2520
3093
  );
2521
3094
  const currentCategory = categories?.find((category) => category.id === activeCategory) || categories?.[0];
2522
- const handleCategoryChange = React4.useCallback(
3095
+ const handleCategoryChange = React5.useCallback(
2523
3096
  (e) => {
2524
3097
  setActiveCategory(e.target.value);
2525
3098
  },
2526
3099
  []
2527
3100
  );
2528
- const categoriesContent = React4.useMemo(() => {
3101
+ const categoriesContent = React5.useMemo(() => {
2529
3102
  if (categoriesSlot) return categoriesSlot;
2530
3103
  if (!categories || categories.length === 0) return null;
2531
3104
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2779,10 +3352,10 @@ function AboutCultureTabs({
2779
3352
  patternOpacity
2780
3353
  }) {
2781
3354
  const resolvedAspects = aspects ?? [];
2782
- const [activeTab, setActiveTab] = React4__namespace.useState(
3355
+ const [activeTab, setActiveTab] = React5__namespace.useState(
2783
3356
  resolvedAspects[0]?.id || ""
2784
3357
  );
2785
- const headerItems = React4.useMemo(() => {
3358
+ const headerItems = React5.useMemo(() => {
2786
3359
  const items = [];
2787
3360
  if (badgeText) {
2788
3361
  if (typeof badgeText === "string") {
@@ -2829,7 +3402,7 @@ function AboutCultureTabs({
2829
3402
  description,
2830
3403
  descriptionClassName
2831
3404
  ]);
2832
- const ctaImagesContent = React4.useMemo(() => {
3405
+ const ctaImagesContent = React5.useMemo(() => {
2833
3406
  if (ctaImagesSlot) return ctaImagesSlot;
2834
3407
  if (!ctaImages || ctaImages.length === 0) return null;
2835
3408
  return ctaImages.map((src, i) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -2995,7 +3568,7 @@ function MediaHoverCtas({
2995
3568
  optixFlowConfig
2996
3569
  }) {
2997
3570
  const resolvedItems = items ?? [];
2998
- const itemsContent = React4.useMemo(() => {
3571
+ const itemsContent = React5.useMemo(() => {
2999
3572
  if (itemsSlot) return itemsSlot;
3000
3573
  return resolvedItems.map((item, index) => {
3001
3574
  const CardComponent = item.cardHref ? "a" : "div";
@@ -3085,13 +3658,13 @@ function BannerAnnouncementDismissible({
3085
3658
  actionsClassName,
3086
3659
  dismissButtonClassName
3087
3660
  }) {
3088
- const [isVisible, setIsVisible] = React4.useState(true);
3661
+ const [isVisible, setIsVisible] = React5.useState(true);
3089
3662
  const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
3090
- const handleDismiss = React4.useCallback(() => {
3663
+ const handleDismiss = React5.useCallback(() => {
3091
3664
  setIsVisible(false);
3092
3665
  onDismiss?.();
3093
3666
  }, [onDismiss]);
3094
- const actionsContent = React4.useMemo(() => {
3667
+ const actionsContent = React5.useMemo(() => {
3095
3668
  if (actionsSlot) return actionsSlot;
3096
3669
  if (!actions || actions.length === 0) return null;
3097
3670
  return actions.map((action, index) => {
@@ -3119,7 +3692,7 @@ function BannerAnnouncementDismissible({
3119
3692
  );
3120
3693
  });
3121
3694
  }, [actions, actionsSlot]);
3122
- const iconContent = React4.useMemo(() => {
3695
+ const iconContent = React5.useMemo(() => {
3123
3696
  if (icon) return icon;
3124
3697
  if (!iconName) return null;
3125
3698
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3131,11 +3704,11 @@ function BannerAnnouncementDismissible({
3131
3704
  }
3132
3705
  );
3133
3706
  }, [icon, iconName, iconClassName]);
3134
- const dismissIconContent = React4.useMemo(() => {
3707
+ const dismissIconContent = React5.useMemo(() => {
3135
3708
  if (dismissIcon) return dismissIcon;
3136
3709
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
3137
3710
  }, [dismissIcon]);
3138
- const messageContent = React4.useMemo(() => {
3711
+ const messageContent = React5.useMemo(() => {
3139
3712
  if (!message) return null;
3140
3713
  return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium text-sm", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: messageClassName, children: message });
3141
3714
  }, [message, messageClassName]);
@@ -3181,12 +3754,12 @@ function BannerCountdownSale({
3181
3754
  separatorClassName
3182
3755
  }) {
3183
3756
  const targetTime = endTime;
3184
- const [timeLeft, setTimeLeft] = React4.useState({
3757
+ const [timeLeft, setTimeLeft] = React5.useState({
3185
3758
  hours: 0,
3186
3759
  minutes: 0,
3187
3760
  seconds: 0
3188
3761
  });
3189
- React4.useEffect(() => {
3762
+ React5.useEffect(() => {
3190
3763
  if (!targetTime) {
3191
3764
  return;
3192
3765
  }
@@ -3209,8 +3782,8 @@ function BannerCountdownSale({
3209
3782
  }, 1e3);
3210
3783
  return () => clearInterval(timer);
3211
3784
  }, [targetTime]);
3212
- const pad = React4.useCallback((n) => n.toString().padStart(2, "0"), []);
3213
- const timerContent = React4.useMemo(() => {
3785
+ const pad = React5.useCallback((n) => n.toString().padStart(2, "0"), []);
3786
+ const timerContent = React5.useMemo(() => {
3214
3787
  if (timerSlot) return timerSlot;
3215
3788
  if (renderTimer) return renderTimer(timeLeft);
3216
3789
  if (!targetTime) return null;
@@ -3222,11 +3795,11 @@ function BannerCountdownSale({
3222
3795
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.seconds) })
3223
3796
  ] });
3224
3797
  }, [timerSlot, renderTimer, timeLeft, timerClassName, timeUnitClassName, separatorClassName, pad, targetTime]);
3225
- const messageContent = React4.useMemo(() => {
3798
+ const messageContent = React5.useMemo(() => {
3226
3799
  if (!message) return null;
3227
3800
  return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: messageClassName, children: message });
3228
3801
  }, [message, messageClassName]);
3229
- const descriptionContent = React4.useMemo(() => {
3802
+ const descriptionContent = React5.useMemo(() => {
3230
3803
  if (!description) return null;
3231
3804
  return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-destructive-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description });
3232
3805
  }, [description, descriptionClassName]);
@@ -3255,12 +3828,12 @@ function BannerDeliveryCountdown({
3255
3828
  deliveryDateClassName
3256
3829
  }) {
3257
3830
  const targetTime = cutoffTime;
3258
- const [timeLeft, setTimeLeft] = React4.useState({
3831
+ const [timeLeft, setTimeLeft] = React5.useState({
3259
3832
  hours: 0,
3260
3833
  minutes: 0,
3261
3834
  seconds: 0
3262
3835
  });
3263
- React4.useEffect(() => {
3836
+ React5.useEffect(() => {
3264
3837
  if (!targetTime) {
3265
3838
  return;
3266
3839
  }
@@ -3283,13 +3856,13 @@ function BannerDeliveryCountdown({
3283
3856
  }, 1e3);
3284
3857
  return () => clearInterval(timer);
3285
3858
  }, [targetTime]);
3286
- const pad = React4.useCallback((n) => n.toString().padStart(2, "0"), []);
3287
- const iconContent = React4.useMemo(() => {
3859
+ const pad = React5.useCallback((n) => n.toString().padStart(2, "0"), []);
3860
+ const iconContent = React5.useMemo(() => {
3288
3861
  if (icon) return icon;
3289
3862
  if (!iconName) return null;
3290
3863
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 16, className: iconClassName });
3291
3864
  }, [icon, iconName, iconClassName]);
3292
- const timerContent = React4.useMemo(() => {
3865
+ const timerContent = React5.useMemo(() => {
3293
3866
  if (timerSlot) return timerSlot;
3294
3867
  if (renderTimer) return renderTimer(timeLeft);
3295
3868
  if (!targetTime) return null;
@@ -3301,18 +3874,18 @@ function BannerDeliveryCountdown({
3301
3874
  pad(timeLeft.seconds)
3302
3875
  ] });
3303
3876
  }, [timerSlot, renderTimer, timeLeft, timerClassName, pad, targetTime]);
3304
- const deliveryDateContent = React4.useMemo(() => {
3877
+ const deliveryDateContent = React5.useMemo(() => {
3305
3878
  if (!deliveryDate) return null;
3306
3879
  return typeof deliveryDate === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: deliveryDateClassName, children: deliveryDate });
3307
3880
  }, [deliveryDate, deliveryDateClassName]);
3308
- const messageParts = React4.useMemo(() => {
3881
+ const messageParts = React5.useMemo(() => {
3309
3882
  return [prefixText, timerContent, middleText, deliveryDateContent].filter(
3310
3883
  (part) => part !== null && part !== void 0
3311
3884
  );
3312
3885
  }, [prefixText, timerContent, middleText, deliveryDateContent]);
3313
3886
  return /* @__PURE__ */ jsxRuntime.jsx(Section, { background, spacing: "none", className: cn("bg-accent text-accent-foreground", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-3 text-sm", contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2", messageClassName), children: [
3314
3887
  iconContent,
3315
- messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(React4__namespace.Fragment, { children: [
3888
+ messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(React5__namespace.Fragment, { children: [
3316
3889
  index > 0 ? " " : null,
3317
3890
  part
3318
3891
  ] }, index)) })
@@ -3334,7 +3907,7 @@ function BannerEventPromo({
3334
3907
  eventDetailsClassName,
3335
3908
  actionsClassName
3336
3909
  }) {
3337
- const actionsContent = React4.useMemo(() => {
3910
+ const actionsContent = React5.useMemo(() => {
3338
3911
  if (actionsSlot) return actionsSlot;
3339
3912
  if (!actions || actions.length === 0) return null;
3340
3913
  return actions.map((action, index) => {
@@ -3362,7 +3935,7 @@ function BannerEventPromo({
3362
3935
  );
3363
3936
  });
3364
3937
  }, [actions, actionsSlot]);
3365
- const separatorContent = React4.useMemo(() => {
3938
+ const separatorContent = React5.useMemo(() => {
3366
3939
  if (separator) return separator;
3367
3940
  return /* @__PURE__ */ jsxRuntime.jsx(
3368
3941
  "svg",
@@ -3374,11 +3947,11 @@ function BannerEventPromo({
3374
3947
  }
3375
3948
  );
3376
3949
  }, [separator, separatorClassName]);
3377
- const eventNameContent = React4.useMemo(() => {
3950
+ const eventNameContent = React5.useMemo(() => {
3378
3951
  if (!eventName) return null;
3379
3952
  return typeof eventName === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventNameClassName, children: eventName });
3380
3953
  }, [eventName, eventNameClassName]);
3381
- const eventDetailsContent = React4.useMemo(() => {
3954
+ const eventDetailsContent = React5.useMemo(() => {
3382
3955
  if (!eventDetails) return null;
3383
3956
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventDetailsClassName, children: eventDetails });
3384
3957
  }, [eventDetails, eventDetailsClassName]);
@@ -3415,22 +3988,22 @@ function BannerFloatingOffer({
3415
3988
  }) {
3416
3989
  const isControlled = open !== void 0;
3417
3990
  const initialOpen = defaultOpen ?? true;
3418
- const [internalOpen, setInternalOpen] = React4.useState(initialOpen);
3991
+ const [internalOpen, setInternalOpen] = React5.useState(initialOpen);
3419
3992
  const isVisible = isControlled ? open : internalOpen;
3420
3993
  const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
3421
3994
  const isDismissible = dismissible ?? false;
3422
- React4.useEffect(() => {
3995
+ React5.useEffect(() => {
3423
3996
  if (!isControlled && defaultOpen !== internalOpen) {
3424
3997
  setInternalOpen(initialOpen);
3425
3998
  }
3426
3999
  }, [defaultOpen, initialOpen, isControlled, internalOpen]);
3427
- const handleDismiss = React4.useCallback(() => {
4000
+ const handleDismiss = React5.useCallback(() => {
3428
4001
  if (!isControlled) {
3429
4002
  setInternalOpen(false);
3430
4003
  }
3431
4004
  onOpenChange?.(false);
3432
4005
  }, [isControlled, onOpenChange]);
3433
- const actionsContent = React4.useMemo(() => {
4006
+ const actionsContent = React5.useMemo(() => {
3434
4007
  if (actionsSlot) return actionsSlot;
3435
4008
  if (!actions || actions.length === 0) return null;
3436
4009
  return actions.map((action, index) => {
@@ -3458,7 +4031,7 @@ function BannerFloatingOffer({
3458
4031
  );
3459
4032
  });
3460
4033
  }, [actions, actionsSlot]);
3461
- const separatorContent = React4.useMemo(() => {
4034
+ const separatorContent = React5.useMemo(() => {
3462
4035
  if (separator) return separator;
3463
4036
  return /* @__PURE__ */ jsxRuntime.jsx(
3464
4037
  "svg",
@@ -3470,15 +4043,15 @@ function BannerFloatingOffer({
3470
4043
  }
3471
4044
  );
3472
4045
  }, [separator, separatorClassName]);
3473
- const dismissIconContent = React4.useMemo(() => {
4046
+ const dismissIconContent = React5.useMemo(() => {
3474
4047
  if (dismissIcon) return dismissIcon;
3475
4048
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
3476
4049
  }, [dismissIcon]);
3477
- const offerTitleContent = React4.useMemo(() => {
4050
+ const offerTitleContent = React5.useMemo(() => {
3478
4051
  if (!offerTitle) return null;
3479
4052
  return typeof offerTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerTitleClassName, children: offerTitle });
3480
4053
  }, [offerTitle, offerTitleClassName]);
3481
- const offerDescriptionContent = React4.useMemo(() => {
4054
+ const offerDescriptionContent = React5.useMemo(() => {
3482
4055
  if (!offerDescription) return null;
3483
4056
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerDescriptionClassName, children: offerDescription });
3484
4057
  }, [offerDescription, offerDescriptionClassName]);
@@ -3539,13 +4112,13 @@ function BannerGdprRights({
3539
4112
  actionsClassName,
3540
4113
  dismissButtonClassName
3541
4114
  }) {
3542
- const [isVisible, setIsVisible] = React4.useState(true);
4115
+ const [isVisible, setIsVisible] = React5.useState(true);
3543
4116
  const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
3544
- const handleDismiss = React4.useCallback(() => {
4117
+ const handleDismiss = React5.useCallback(() => {
3545
4118
  setIsVisible(false);
3546
4119
  onDismiss?.();
3547
4120
  }, [onDismiss]);
3548
- const iconContent = React4.useMemo(() => {
4121
+ const iconContent = React5.useMemo(() => {
3549
4122
  if (icon) return icon;
3550
4123
  if (!iconName) return null;
3551
4124
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3557,7 +4130,7 @@ function BannerGdprRights({
3557
4130
  }
3558
4131
  );
3559
4132
  }, [icon, iconName, iconClassName]);
3560
- const actionsContent = React4.useMemo(() => {
4133
+ const actionsContent = React5.useMemo(() => {
3561
4134
  if (actionsSlot) return actionsSlot;
3562
4135
  if (!actions || actions.length === 0) return null;
3563
4136
  return actions.map((action, index) => {
@@ -3584,15 +4157,15 @@ function BannerGdprRights({
3584
4157
  );
3585
4158
  });
3586
4159
  }, [actions, actionsSlot]);
3587
- const dismissIconContent = React4.useMemo(() => {
4160
+ const dismissIconContent = React5.useMemo(() => {
3588
4161
  if (dismissIcon) return dismissIcon;
3589
4162
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
3590
4163
  }, [dismissIcon]);
3591
- const titleContent = React4.useMemo(() => {
4164
+ const titleContent = React5.useMemo(() => {
3592
4165
  if (!title) return null;
3593
4166
  return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
3594
4167
  }, [title, titleClassName]);
3595
- const descriptionContent = React4.useMemo(() => {
4168
+ const descriptionContent = React5.useMemo(() => {
3596
4169
  if (!description && !actionsContent) return null;
3597
4170
  return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
3598
4171
  description,
@@ -3646,13 +4219,13 @@ function BannerPrivacyNotice({
3646
4219
  actionsClassName,
3647
4220
  dismissButtonClassName
3648
4221
  }) {
3649
- const [isVisible, setIsVisible] = React4.useState(true);
4222
+ const [isVisible, setIsVisible] = React5.useState(true);
3650
4223
  const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
3651
- const handleDismiss = React4.useCallback(() => {
4224
+ const handleDismiss = React5.useCallback(() => {
3652
4225
  setIsVisible(false);
3653
4226
  onDismiss?.();
3654
4227
  }, [onDismiss]);
3655
- const iconContent = React4.useMemo(() => {
4228
+ const iconContent = React5.useMemo(() => {
3656
4229
  if (icon) return icon;
3657
4230
  if (!iconName) return null;
3658
4231
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3664,7 +4237,7 @@ function BannerPrivacyNotice({
3664
4237
  }
3665
4238
  );
3666
4239
  }, [icon, iconName, iconClassName]);
3667
- const actionsContent = React4.useMemo(() => {
4240
+ const actionsContent = React5.useMemo(() => {
3668
4241
  if (actionsSlot) return actionsSlot;
3669
4242
  if (!actions || actions.length === 0) return null;
3670
4243
  return actions.map((action, index) => {
@@ -3691,15 +4264,15 @@ function BannerPrivacyNotice({
3691
4264
  );
3692
4265
  });
3693
4266
  }, [actions, actionsSlot]);
3694
- const dismissIconContent = React4.useMemo(() => {
4267
+ const dismissIconContent = React5.useMemo(() => {
3695
4268
  if (dismissIcon) return dismissIcon;
3696
4269
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
3697
4270
  }, [dismissIcon]);
3698
- const titleContent = React4.useMemo(() => {
4271
+ const titleContent = React5.useMemo(() => {
3699
4272
  if (!title) return null;
3700
4273
  return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
3701
4274
  }, [title, titleClassName]);
3702
- const descriptionContent = React4.useMemo(() => {
4275
+ const descriptionContent = React5.useMemo(() => {
3703
4276
  if (!description) return null;
3704
4277
  return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description });
3705
4278
  }, [description, descriptionClassName]);
@@ -3746,7 +4319,7 @@ function BannerPromoCta({
3746
4319
  discountClassName,
3747
4320
  actionsClassName
3748
4321
  }) {
3749
- const actionsContent = React4.useMemo(() => {
4322
+ const actionsContent = React5.useMemo(() => {
3750
4323
  if (actionsSlot) return actionsSlot;
3751
4324
  if (!actions || actions.length === 0) return null;
3752
4325
  return actions.map((action, index) => {
@@ -3773,15 +4346,15 @@ function BannerPromoCta({
3773
4346
  );
3774
4347
  });
3775
4348
  }, [actions, actionsSlot]);
3776
- const separatorContent = React4.useMemo(() => {
4349
+ const separatorContent = React5.useMemo(() => {
3777
4350
  if (separator) return separator;
3778
4351
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("hidden sm:inline", separatorClassName), children: "\xB7" });
3779
4352
  }, [separator, separatorClassName]);
3780
- const messageContent = React4.useMemo(() => {
4353
+ const messageContent = React5.useMemo(() => {
3781
4354
  if (!message) return null;
3782
4355
  return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
3783
4356
  }, [message, messageClassName]);
3784
- const discountContent = React4.useMemo(() => {
4357
+ const discountContent = React5.useMemo(() => {
3785
4358
  if (!discount) return null;
3786
4359
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: discountClassName, children: discount });
3787
4360
  }, [discount, discountClassName]);
@@ -3809,13 +4382,13 @@ function BannerSocialFollow({
3809
4382
  actionsClassName,
3810
4383
  dismissButtonClassName
3811
4384
  }) {
3812
- const [isVisible, setIsVisible] = React4.useState(true);
4385
+ const [isVisible, setIsVisible] = React5.useState(true);
3813
4386
  const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
3814
- const handleDismiss = React4.useCallback(() => {
4387
+ const handleDismiss = React5.useCallback(() => {
3815
4388
  setIsVisible(false);
3816
4389
  onDismiss?.();
3817
4390
  }, [onDismiss]);
3818
- const iconContent = React4.useMemo(() => {
4391
+ const iconContent = React5.useMemo(() => {
3819
4392
  if (icon) return icon;
3820
4393
  if (!iconName) return null;
3821
4394
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3827,7 +4400,7 @@ function BannerSocialFollow({
3827
4400
  }
3828
4401
  );
3829
4402
  }, [icon, iconName, iconClassName]);
3830
- const actionsContent = React4.useMemo(() => {
4403
+ const actionsContent = React5.useMemo(() => {
3831
4404
  if (actionsSlot) return actionsSlot;
3832
4405
  if (!actions || actions.length === 0) return null;
3833
4406
  return actions.map((action, index) => {
@@ -3855,11 +4428,11 @@ function BannerSocialFollow({
3855
4428
  );
3856
4429
  });
3857
4430
  }, [actions, actionsSlot]);
3858
- const dismissIconContent = React4.useMemo(() => {
4431
+ const dismissIconContent = React5.useMemo(() => {
3859
4432
  if (dismissIcon) return dismissIcon;
3860
4433
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
3861
4434
  }, [dismissIcon]);
3862
- const messageContent = React4.useMemo(() => {
4435
+ const messageContent = React5.useMemo(() => {
3863
4436
  if (!message) return null;
3864
4437
  return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
3865
4438
  }, [message, messageClassName]);
@@ -3907,13 +4480,13 @@ function BannerSurveyIncentive({
3907
4480
  actionsClassName,
3908
4481
  dismissButtonClassName
3909
4482
  }) {
3910
- const [isVisible, setIsVisible] = React4.useState(true);
4483
+ const [isVisible, setIsVisible] = React5.useState(true);
3911
4484
  const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
3912
- const handleDismiss = React4.useCallback(() => {
4485
+ const handleDismiss = React5.useCallback(() => {
3913
4486
  setIsVisible(false);
3914
4487
  onDismiss?.();
3915
4488
  }, [onDismiss]);
3916
- const iconContent = React4.useMemo(() => {
4489
+ const iconContent = React5.useMemo(() => {
3917
4490
  if (icon) return icon;
3918
4491
  if (!iconName) return null;
3919
4492
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -3925,7 +4498,7 @@ function BannerSurveyIncentive({
3925
4498
  }
3926
4499
  );
3927
4500
  }, [icon, iconName, iconClassName]);
3928
- const actionsContent = React4.useMemo(() => {
4501
+ const actionsContent = React5.useMemo(() => {
3929
4502
  if (actionsSlot) return actionsSlot;
3930
4503
  if (!actions || actions.length === 0) return null;
3931
4504
  return actions.map((action, index) => {
@@ -3953,15 +4526,15 @@ function BannerSurveyIncentive({
3953
4526
  );
3954
4527
  });
3955
4528
  }, [actions, actionsSlot]);
3956
- const dismissIconContent = React4.useMemo(() => {
4529
+ const dismissIconContent = React5.useMemo(() => {
3957
4530
  if (dismissIcon) return dismissIcon;
3958
4531
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
3959
4532
  }, [dismissIcon]);
3960
- const titleContent = React4.useMemo(() => {
4533
+ const titleContent = React5.useMemo(() => {
3961
4534
  if (!title) return null;
3962
4535
  return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: titleClassName, children: title });
3963
4536
  }, [title, titleClassName]);
3964
- const descriptionContent = React4.useMemo(() => {
4537
+ const descriptionContent = React5.useMemo(() => {
3965
4538
  if (!description) return null;
3966
4539
  return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: descriptionClassName, children: description });
3967
4540
  }, [description, descriptionClassName]);
@@ -4071,7 +4644,7 @@ function FooterCopyright({
4071
4644
  copyright,
4072
4645
  className
4073
4646
  }) {
4074
- const currentYear = React4.useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
4647
+ const currentYear = React5.useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
4075
4648
  if (!copyright) {
4076
4649
  return null;
4077
4650
  }
@@ -4583,8 +5156,8 @@ var BrandAttribution = ({
4583
5156
  }
4584
5157
  const { prefix = "", anchorText, href, suffix = "" } = options[optionIndex];
4585
5158
  const ContainerEl = variant;
4586
- const [trackedHref, setTrackedHref] = React4__namespace.useState(href);
4587
- React4__namespace.useEffect(() => {
5159
+ const [trackedHref, setTrackedHref] = React5__namespace.useState(href);
5160
+ React5__namespace.useEffect(() => {
4588
5161
  setTrackedHref(buildTrackedHref(href));
4589
5162
  }, [href]);
4590
5163
  return /* @__PURE__ */ jsxRuntime.jsxs(ContainerEl, { className: containerClassName, children: [
@@ -4704,7 +5277,7 @@ function FooterSocialNewsletter({
4704
5277
  patternOpacity,
4705
5278
  optixFlowConfig
4706
5279
  }) {
4707
- const renderForm = React4__namespace.useMemo(() => {
5280
+ const renderForm = React5__namespace.useMemo(() => {
4708
5281
  if (!formEngineSetup) return null;
4709
5282
  const action = {
4710
5283
  variant: "default",
@@ -4857,14 +5430,14 @@ function FooterSocialApps({
4857
5430
  patternOpacity,
4858
5431
  optixFlowConfig
4859
5432
  }) {
4860
- const sectionsContent = React4.useMemo(() => {
5433
+ const sectionsContent = React5.useMemo(() => {
4861
5434
  if (!sections || sections.length === 0) return null;
4862
5435
  return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 md:mt-0", children: [
4863
5436
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
4864
5437
  /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium ", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.href, children: link.name }) }, linkIdx)) })
4865
5438
  ] }, sectionIdx));
4866
5439
  }, [sections]);
4867
- const socialLinksContent = React4.useMemo(() => {
5440
+ const socialLinksContent = React5.useMemo(() => {
4868
5441
  if (!socialLinks || socialLinks.length === 0) return null;
4869
5442
  return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(
4870
5443
  SocialLinkIcon,
@@ -4879,7 +5452,7 @@ function FooterSocialApps({
4879
5452
  }
4880
5453
  ) }, idx));
4881
5454
  }, [socialLinks, background]);
4882
- const appLinksContent = React4.useMemo(() => {
5455
+ const appLinksContent = React5.useMemo(() => {
4883
5456
  if (!appLinks || appLinks.length === 0) return null;
4884
5457
  return appLinks.map((app, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: app.href, "aria-label": app.label, children: /* @__PURE__ */ jsxRuntime.jsx(
4885
5458
  "span",
@@ -4968,7 +5541,7 @@ function FooterSimpleCentered({
4968
5541
  patternOpacity,
4969
5542
  optixFlowConfig
4970
5543
  }) {
4971
- const sitemapContent = React4.useMemo(() => {
5544
+ const sitemapContent = React5.useMemo(() => {
4972
5545
  if (!sitemap || sitemap.length === 0) return null;
4973
5546
  return sitemap.map((section) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sitemapSectionClassName), children: [
4974
5547
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 text-sm font-semibold", sitemapTitleClassName), children: section.title }),
@@ -4991,9 +5564,9 @@ function FooterSimpleCentered({
4991
5564
  sitemapLinksClassName,
4992
5565
  sitemapLinkClassName
4993
5566
  ]);
4994
- const bottomLinksContent = React4.useMemo(() => {
5567
+ const bottomLinksContent = React5.useMemo(() => {
4995
5568
  if (!bottomLinks || bottomLinks.length === 0) return null;
4996
- return bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(React4__namespace.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
5569
+ return bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
4997
5570
  Pressable,
4998
5571
  {
4999
5572
  href: link.href,
@@ -5318,7 +5891,7 @@ function FooterNewsletterGrid({
5318
5891
  patternOpacity,
5319
5892
  optixFlowConfig
5320
5893
  }) {
5321
- const sectionsContent = React4.useMemo(() => {
5894
+ const sectionsContent = React5.useMemo(() => {
5322
5895
  if (!sections || sections.length === 0) return null;
5323
5896
  return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 md:col-span-1", children: [
5324
5897
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-5 font-medium", children: section.title }),
@@ -5332,7 +5905,7 @@ function FooterNewsletterGrid({
5332
5905
  )) })
5333
5906
  ] }, sectionIdx));
5334
5907
  }, [sections]);
5335
- const socialLinksContent = React4.useMemo(() => {
5908
+ const socialLinksContent = React5.useMemo(() => {
5336
5909
  if (!socialLinks || socialLinks.length === 0) return null;
5337
5910
  return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
5338
5911
  SocialLinkIcon,
@@ -5848,7 +6421,7 @@ function FooterBackgroundCard({
5848
6421
  patternOpacity,
5849
6422
  optixFlowConfig
5850
6423
  }) {
5851
- const sectionStyle = React4.useMemo(
6424
+ const sectionStyle = React5.useMemo(
5852
6425
  () => backgroundImage ? { backgroundImage: `url('${backgroundImage}')` } : void 0,
5853
6426
  [backgroundImage]
5854
6427
  );
@@ -6122,7 +6695,7 @@ function FooterAnimatedSocial({
6122
6695
  pattern,
6123
6696
  patternOpacity
6124
6697
  }) {
6125
- const socialLinksContent = React4.useMemo(() => {
6698
+ const socialLinksContent = React5.useMemo(() => {
6126
6699
  if (!socialLinks || socialLinks.length === 0) return null;
6127
6700
  return socialLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(
6128
6701
  framerMotion.motion.div,
@@ -6340,7 +6913,7 @@ function FooterNewsletterMinimal({
6340
6913
  buttonAction,
6341
6914
  formSlot
6342
6915
  }) {
6343
- const navLinksContent = React4__namespace.useMemo(() => {
6916
+ const navLinksContent = React5__namespace.useMemo(() => {
6344
6917
  if (!navLinks || navLinks.length === 0) return null;
6345
6918
  return navLinks.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
6346
6919
  Pressable,
@@ -6351,7 +6924,7 @@ function FooterNewsletterMinimal({
6351
6924
  }
6352
6925
  ) }, idx));
6353
6926
  }, [navLinks, navLinkClassName]);
6354
- const socialLinksContent = React4__namespace.useMemo(() => {
6927
+ const socialLinksContent = React5__namespace.useMemo(() => {
6355
6928
  if (!socialLinks || socialLinks.length === 0) return null;
6356
6929
  return socialLinks.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
6357
6930
  SocialLinkIcon,
@@ -6367,7 +6940,7 @@ function FooterNewsletterMinimal({
6367
6940
  }
6368
6941
  ) }, idx));
6369
6942
  }, [socialLinks, socialLinkClassName]);
6370
- const footerLinksContent = React4__namespace.useMemo(() => {
6943
+ const footerLinksContent = React5__namespace.useMemo(() => {
6371
6944
  if (!footerLinks || footerLinks.length === 0) return null;
6372
6945
  return footerLinks.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
6373
6946
  Pressable,
@@ -6381,7 +6954,7 @@ function FooterNewsletterMinimal({
6381
6954
  }
6382
6955
  ) }, item.label));
6383
6956
  }, [footerLinks, footerLinkClassName]);
6384
- const renderForm = React4__namespace.useMemo(() => {
6957
+ const renderForm = React5__namespace.useMemo(() => {
6385
6958
  if (formSlot) return formSlot;
6386
6959
  if (!formEngineSetup) return null;
6387
6960
  const defaultButtonAction = {
@@ -6616,7 +7189,7 @@ function FooterCtaSocial({
6616
7189
  pattern,
6617
7190
  patternOpacity
6618
7191
  }) {
6619
- const socialLinksContent = React4.useMemo(() => {
7192
+ const socialLinksContent = React5.useMemo(() => {
6620
7193
  if (!socialLinks || socialLinks.length === 0) return null;
6621
7194
  return socialLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
6622
7195
  SocialLinkIcon,
@@ -6734,7 +7307,7 @@ function FooterNavSocial({
6734
7307
  patternOpacity,
6735
7308
  optixFlowConfig
6736
7309
  }) {
6737
- const sectionsContent = React4.useMemo(() => {
7310
+ const sectionsContent = React5.useMemo(() => {
6738
7311
  if (!sections || sections.length === 0) return null;
6739
7312
  return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(navSectionClassName), children: [
6740
7313
  /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 font-semibold", navTitleClassName), children: section.title }),
@@ -6747,7 +7320,7 @@ function FooterNavSocial({
6747
7320
  navLinksClassName,
6748
7321
  navLinkClassName
6749
7322
  ]);
6750
- const socialLinksContent = React4.useMemo(() => {
7323
+ const socialLinksContent = React5.useMemo(() => {
6751
7324
  if (!socialLinks || socialLinks.length === 0) return null;
6752
7325
  return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
6753
7326
  SocialLinkIcon,
@@ -6762,7 +7335,7 @@ function FooterNavSocial({
6762
7335
  }
6763
7336
  ) }, idx));
6764
7337
  }, [socialLinks, socialLinkClassName]);
6765
- const legalLinksContent = React4.useMemo(() => {
7338
+ const legalLinksContent = React5.useMemo(() => {
6766
7339
  if (!legalLinks || legalLinks.length === 0) return null;
6767
7340
  return legalLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: cn(legalLinkClassName), children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.href, className: "hover:opacity-100", children: link.name }) }, idx));
6768
7341
  }, [legalLinks, legalLinkClassName]);
@@ -6927,6 +7500,16 @@ function FooterNavSocial({
6927
7500
  }
6928
7501
  );
6929
7502
  }
7503
+ var useResponsiveLayout = ({
7504
+ directionConfig = { desktop: "mediaRight", mobile: "mediaTop" }
7505
+ }) => {
7506
+ const responsiveClassName = React5.useMemo(() => {
7507
+ const desktopOrder = directionConfig.desktop === "mediaRight" ? "lg:flex-row" : "lg:flex-row-reverse";
7508
+ const mobileOrder = directionConfig.mobile === "mediaTop" ? "flex-col-reverse" : "flex-col";
7509
+ return `${mobileOrder} ${desktopOrder}`;
7510
+ }, [directionConfig.desktop, directionConfig.mobile]);
7511
+ return { responsiveClassName };
7512
+ };
6930
7513
 
6931
7514
  Object.defineProperty(exports, "PageSpeedFormSubmissionError", {
6932
7515
  enumerable: true,
@@ -7001,6 +7584,7 @@ exports.FooterNewsletterMinimal = FooterNewsletterMinimal;
7001
7584
  exports.FooterSimpleCentered = FooterSimpleCentered;
7002
7585
  exports.FooterSocialApps = FooterSocialApps;
7003
7586
  exports.FooterSocialNewsletter = FooterSocialNewsletter;
7587
+ exports.GeoMap = GeoMap;
7004
7588
  exports.ImageSlider = ImageSlider;
7005
7589
  exports.MediaHoverCtas = MediaHoverCtas;
7006
7590
  exports.PageHeroBanner = PageHeroBanner;
@@ -7018,3 +7602,4 @@ exports.getNestedCardBg = getNestedCardBg;
7018
7602
  exports.getNestedCardTextColor = getNestedCardTextColor;
7019
7603
  exports.getTextColor = getTextColor;
7020
7604
  exports.useNavigation = useNavigation;
7605
+ exports.useResponsiveLayout = useResponsiveLayout;