@opensite/ui 2.8.0 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/dist/about-culture-tabs.cjs +25 -21
  2. package/dist/about-culture-tabs.js +23 -19
  3. package/dist/about-developer-profile.cjs +6 -2
  4. package/dist/about-developer-profile.js +6 -2
  5. package/dist/about-expandable-values.cjs +6 -2
  6. package/dist/about-expandable-values.js +6 -2
  7. package/dist/about-location-info-hero.cjs +6 -2
  8. package/dist/about-location-info-hero.js +6 -2
  9. package/dist/about-mission-principles.cjs +6 -2
  10. package/dist/about-mission-principles.js +6 -2
  11. package/dist/about-network-spotlight.cjs +18 -14
  12. package/dist/about-network-spotlight.js +16 -12
  13. package/dist/about-split-hero.cjs +6 -2
  14. package/dist/about-split-hero.js +6 -2
  15. package/dist/about-startup-team.cjs +6 -2
  16. package/dist/about-startup-team.js +6 -2
  17. package/dist/article-breadcrumb-social.cjs +27 -23
  18. package/dist/article-breadcrumb-social.js +27 -23
  19. package/dist/article-chapters-author.cjs +29 -25
  20. package/dist/article-chapters-author.js +29 -25
  21. package/dist/article-compact-toc.cjs +26 -22
  22. package/dist/article-compact-toc.js +26 -22
  23. package/dist/article-sidebar-sticky.cjs +6 -2
  24. package/dist/article-sidebar-sticky.js +6 -2
  25. package/dist/auto-scroll-carousel.cjs +28 -24
  26. package/dist/auto-scroll-carousel.js +26 -22
  27. package/dist/banner-announcement-dismissible.cjs +6 -2
  28. package/dist/banner-announcement-dismissible.js +6 -2
  29. package/dist/banner-delivery-countdown.cjs +6 -2
  30. package/dist/banner-delivery-countdown.js +6 -2
  31. package/dist/banner-floating-offer.cjs +6 -2
  32. package/dist/banner-floating-offer.js +6 -2
  33. package/dist/banner-gdpr-rights.cjs +6 -2
  34. package/dist/banner-gdpr-rights.js +6 -2
  35. package/dist/banner-privacy-notice.cjs +6 -2
  36. package/dist/banner-privacy-notice.js +6 -2
  37. package/dist/banner-social-follow.cjs +6 -2
  38. package/dist/banner-social-follow.js +6 -2
  39. package/dist/banner-survey-incentive.cjs +6 -2
  40. package/dist/banner-survey-incentive.js +6 -2
  41. package/dist/blog-cards-read-time.cjs +6 -2
  42. package/dist/blog-cards-read-time.js +6 -2
  43. package/dist/blog-cards-tagline-cta.cjs +6 -2
  44. package/dist/blog-cards-tagline-cta.js +6 -2
  45. package/dist/blog-carousel-apple.cjs +25 -21
  46. package/dist/blog-carousel-apple.js +21 -17
  47. package/dist/blog-category-overlay.cjs +6 -2
  48. package/dist/blog-category-overlay.js +6 -2
  49. package/dist/blog-filtered-results.cjs +30 -26
  50. package/dist/blog-filtered-results.js +24 -20
  51. package/dist/blog-horizontal-cards.cjs +6 -2
  52. package/dist/blog-horizontal-cards.js +6 -2
  53. package/dist/blog-horizontal-timeline.cjs +6 -2
  54. package/dist/blog-horizontal-timeline.js +6 -2
  55. package/dist/carousel-animated-sections.cjs +23 -19
  56. package/dist/carousel-animated-sections.js +23 -19
  57. package/dist/carousel-auto-progress-slides.cjs +6 -2
  58. package/dist/carousel-auto-progress-slides.js +6 -2
  59. package/dist/carousel-autoplay-progress.cjs +34 -30
  60. package/dist/carousel-autoplay-progress.js +34 -30
  61. package/dist/carousel-badge-cards.cjs +31 -27
  62. package/dist/carousel-badge-cards.js +26 -22
  63. package/dist/carousel-demo-link.cjs +32 -28
  64. package/dist/carousel-demo-link.js +26 -22
  65. package/dist/carousel-feature-badge.cjs +22 -18
  66. package/dist/carousel-feature-badge.js +22 -18
  67. package/dist/carousel-gallery-thumbnails.cjs +6 -2
  68. package/dist/carousel-gallery-thumbnails.js +6 -2
  69. package/dist/carousel-gradient-overlay.cjs +32 -28
  70. package/dist/carousel-gradient-overlay.js +26 -22
  71. package/dist/carousel-gradient-text.cjs +32 -28
  72. package/dist/carousel-gradient-text.js +26 -22
  73. package/dist/carousel-horizontal-cards.cjs +20 -16
  74. package/dist/carousel-horizontal-cards.js +20 -16
  75. package/dist/carousel-icon-sidebar.cjs +38 -34
  76. package/dist/carousel-icon-sidebar.js +26 -22
  77. package/dist/carousel-icon-tabs.cjs +39 -35
  78. package/dist/carousel-icon-tabs.js +26 -22
  79. package/dist/carousel-image-hero.cjs +22 -18
  80. package/dist/carousel-image-hero.js +22 -18
  81. package/dist/carousel-multi-step-showcase.cjs +6 -2
  82. package/dist/carousel-multi-step-showcase.js +6 -2
  83. package/dist/carousel-pagination.cjs +6 -2
  84. package/dist/carousel-pagination.js +6 -2
  85. package/dist/carousel-portfolio-hero.cjs +22 -18
  86. package/dist/carousel-portfolio-hero.js +22 -18
  87. package/dist/carousel-product-feature-showcase.cjs +6 -2
  88. package/dist/carousel-product-feature-showcase.js +6 -2
  89. package/dist/carousel-progress-slider.cjs +28 -24
  90. package/dist/carousel-progress-slider.js +28 -24
  91. package/dist/carousel-scale-focus.cjs +41 -37
  92. package/dist/carousel-scale-focus.js +26 -22
  93. package/dist/carousel-sidebar-resources.cjs +34 -30
  94. package/dist/carousel-sidebar-resources.js +26 -22
  95. package/dist/carousel-tabs-content.cjs +39 -35
  96. package/dist/carousel-tabs-content.js +26 -22
  97. package/dist/case-studies-featured-border.cjs +6 -2
  98. package/dist/case-studies-featured-border.js +6 -2
  99. package/dist/case-study-stats-metrics.cjs +6 -2
  100. package/dist/case-study-stats-metrics.js +6 -2
  101. package/dist/case-study-toc-social-sidebar.cjs +6 -2
  102. package/dist/case-study-toc-social-sidebar.js +6 -2
  103. package/dist/community-initiatives.cjs +19 -15
  104. package/dist/community-initiatives.js +17 -13
  105. package/dist/comparison-ai-models.cjs +18 -14
  106. package/dist/comparison-ai-models.js +17 -13
  107. package/dist/comparison-feature-cards.cjs +16 -12
  108. package/dist/comparison-feature-cards.js +16 -12
  109. package/dist/comparison-feature-grid.cjs +14 -10
  110. package/dist/comparison-feature-grid.js +14 -10
  111. package/dist/comparison-grid-badges.cjs +13 -9
  112. package/dist/comparison-grid-badges.js +13 -9
  113. package/dist/comparison-legacy-modern.cjs +15 -11
  114. package/dist/comparison-legacy-modern.js +15 -11
  115. package/dist/comparison-table-tabs.cjs +15 -11
  116. package/dist/comparison-table-tabs.js +14 -10
  117. package/dist/comparison-table-two-column.cjs +14 -10
  118. package/dist/comparison-table-two-column.js +14 -10
  119. package/dist/components.cjs +199 -179
  120. package/dist/components.js +104 -84
  121. package/dist/contact-callback.cjs +27 -7
  122. package/dist/contact-callback.js +10 -5
  123. package/dist/contact-card.cjs +6 -2
  124. package/dist/contact-card.js +6 -2
  125. package/dist/contact-careers.cjs +18 -14
  126. package/dist/contact-careers.js +16 -12
  127. package/dist/contact-dark.cjs +6 -2
  128. package/dist/contact-dark.js +6 -2
  129. package/dist/contact-emergency.cjs +6 -2
  130. package/dist/contact-emergency.js +6 -2
  131. package/dist/contact-faq.cjs +9 -7
  132. package/dist/contact-faq.js +10 -5
  133. package/dist/contact-floating-banner.cjs +6 -2
  134. package/dist/contact-floating-banner.js +6 -2
  135. package/dist/contact-help-center.cjs +16 -12
  136. package/dist/contact-help-center.js +16 -12
  137. package/dist/contact-image.cjs +18 -14
  138. package/dist/contact-image.js +17 -13
  139. package/dist/contact-map.cjs +78 -58
  140. package/dist/contact-map.js +78 -58
  141. package/dist/cta-app-download-newsletter.cjs +6 -2
  142. package/dist/cta-app-download-newsletter.js +6 -2
  143. package/dist/cta-background-icon-badge.cjs +6 -2
  144. package/dist/cta-background-icon-badge.js +6 -2
  145. package/dist/cta-case-study-testimonial.cjs +6 -2
  146. package/dist/cta-case-study-testimonial.js +6 -2
  147. package/dist/cta-documentation-links.cjs +6 -2
  148. package/dist/cta-documentation-links.js +6 -2
  149. package/dist/cta-enterprise-dark-features.cjs +6 -2
  150. package/dist/cta-enterprise-dark-features.js +6 -2
  151. package/dist/cta-enterprise-split.cjs +6 -2
  152. package/dist/cta-enterprise-split.js +6 -2
  153. package/dist/cta-feature-cards-grid.cjs +6 -2
  154. package/dist/cta-feature-cards-grid.js +6 -2
  155. package/dist/cta-feature-checklist.cjs +17 -13
  156. package/dist/cta-feature-checklist.js +16 -12
  157. package/dist/cta-feature-list.cjs +6 -2
  158. package/dist/cta-feature-list.js +6 -2
  159. package/dist/cta-gradient-logos-floating.cjs +6 -2
  160. package/dist/cta-gradient-logos-floating.js +6 -2
  161. package/dist/cta-gradient-stats-hero.cjs +6 -2
  162. package/dist/cta-gradient-stats-hero.js +6 -2
  163. package/dist/cta-hero-feature-cards.cjs +6 -2
  164. package/dist/cta-hero-feature-cards.js +6 -2
  165. package/dist/cta-image-overlay-arrow.cjs +6 -2
  166. package/dist/cta-image-overlay-arrow.js +6 -2
  167. package/dist/cta-newsletter-features.cjs +12 -8
  168. package/dist/cta-newsletter-features.js +12 -8
  169. package/dist/cta-platform-demo.cjs +6 -2
  170. package/dist/cta-platform-demo.js +6 -2
  171. package/dist/cta-simple-centered.cjs +6 -2
  172. package/dist/cta-simple-centered.js +6 -2
  173. package/dist/cta-split-image-logos.cjs +6 -2
  174. package/dist/cta-split-image-logos.js +6 -2
  175. package/dist/cta-video-background-hero.cjs +6 -2
  176. package/dist/cta-video-background-hero.js +6 -2
  177. package/dist/cta-workflow-tabs.cjs +6 -2
  178. package/dist/cta-workflow-tabs.js +6 -2
  179. package/dist/dynamic-icon.cjs +27 -2
  180. package/dist/dynamic-icon.d.cts +2 -2
  181. package/dist/dynamic-icon.d.ts +2 -2
  182. package/dist/dynamic-icon.js +7 -2
  183. package/dist/expandable-case-study-cards.cjs +26 -6
  184. package/dist/expandable-case-study-cards.js +10 -5
  185. package/dist/faq-badge-support.cjs +25 -21
  186. package/dist/faq-badge-support.js +22 -18
  187. package/dist/faq-bordered-badge.cjs +9 -7
  188. package/dist/faq-bordered-badge.js +10 -5
  189. package/dist/faq-card-categories.cjs +18 -14
  190. package/dist/faq-card-categories.js +16 -12
  191. package/dist/faq-categorized-sections.cjs +9 -7
  192. package/dist/faq-categorized-sections.js +10 -5
  193. package/dist/faq-centered-accordion.cjs +9 -7
  194. package/dist/faq-centered-accordion.js +10 -5
  195. package/dist/faq-gradient-categories.cjs +18 -14
  196. package/dist/faq-gradient-categories.js +16 -12
  197. package/dist/faq-icon-benefits.cjs +18 -14
  198. package/dist/faq-icon-benefits.js +16 -12
  199. package/dist/faq-muted-cards.cjs +18 -14
  200. package/dist/faq-muted-cards.js +16 -12
  201. package/dist/faq-profile-sidebar.cjs +25 -21
  202. package/dist/faq-profile-sidebar.js +22 -18
  203. package/dist/faq-rounded-cards.cjs +18 -14
  204. package/dist/faq-rounded-cards.js +16 -12
  205. package/dist/faq-sidebar-navigation.cjs +20 -16
  206. package/dist/faq-sidebar-navigation.js +17 -13
  207. package/dist/faq-simple-accordion.cjs +18 -14
  208. package/dist/faq-simple-accordion.js +16 -12
  209. package/dist/faq-split-help.cjs +25 -21
  210. package/dist/faq-split-help.js +22 -18
  211. package/dist/faq-split-hero.cjs +9 -7
  212. package/dist/faq-split-hero.js +10 -5
  213. package/dist/feature-accordion-image.cjs +20 -16
  214. package/dist/feature-accordion-image.js +17 -13
  215. package/dist/feature-animated-carousel.cjs +35 -31
  216. package/dist/feature-animated-carousel.js +28 -24
  217. package/dist/feature-badge-grid-six.cjs +20 -16
  218. package/dist/feature-badge-grid-six.js +16 -12
  219. package/dist/feature-bento-image-grid.cjs +21 -17
  220. package/dist/feature-bento-image-grid.js +20 -16
  221. package/dist/feature-bento-utilities.cjs +19 -15
  222. package/dist/feature-bento-utilities.js +18 -14
  223. package/dist/feature-capabilities-grid.cjs +18 -14
  224. package/dist/feature-capabilities-grid.js +17 -13
  225. package/dist/feature-carousel-progress.cjs +31 -27
  226. package/dist/feature-carousel-progress.js +26 -22
  227. package/dist/feature-checklist-image.cjs +6 -2
  228. package/dist/feature-checklist-image.js +6 -2
  229. package/dist/feature-checklist-three-column.cjs +22 -18
  230. package/dist/feature-checklist-three-column.js +16 -12
  231. package/dist/feature-icon-grid-accent.cjs +26 -6
  232. package/dist/feature-icon-grid-accent.js +10 -5
  233. package/dist/feature-icon-grid-bordered.cjs +18 -14
  234. package/dist/feature-icon-grid-bordered.js +16 -12
  235. package/dist/feature-icon-grid-muted.cjs +18 -14
  236. package/dist/feature-icon-grid-muted.js +16 -12
  237. package/dist/feature-icon-tabs-content.cjs +20 -16
  238. package/dist/feature-icon-tabs-content.js +16 -12
  239. package/dist/feature-image-cards-three-column.cjs +29 -25
  240. package/dist/feature-image-cards-three-column.js +22 -18
  241. package/dist/feature-image-overlay-badge.cjs +18 -14
  242. package/dist/feature-image-overlay-badge.js +16 -12
  243. package/dist/feature-numbered-cards.cjs +20 -16
  244. package/dist/feature-numbered-cards.js +16 -12
  245. package/dist/feature-pattern-grid-links.cjs +19 -15
  246. package/dist/feature-pattern-grid-links.js +16 -12
  247. package/dist/feature-showcase.cjs +6 -2
  248. package/dist/feature-showcase.js +6 -2
  249. package/dist/feature-tabbed-content-image.cjs +21 -17
  250. package/dist/feature-tabbed-content-image.js +19 -15
  251. package/dist/feature-three-column-values.cjs +18 -14
  252. package/dist/feature-three-column-values.js +17 -13
  253. package/dist/feature-utility-cards-grid.cjs +20 -16
  254. package/dist/feature-utility-cards-grid.js +17 -13
  255. package/dist/footer-accordion-social.cjs +6 -2
  256. package/dist/footer-accordion-social.js +6 -2
  257. package/dist/footer-animated-social.cjs +6 -2
  258. package/dist/footer-animated-social.js +6 -2
  259. package/dist/footer-background-card.cjs +6 -2
  260. package/dist/footer-background-card.js +6 -2
  261. package/dist/footer-brand-description.cjs +6 -2
  262. package/dist/footer-brand-description.js +6 -2
  263. package/dist/footer-brand-links-contact.cjs +6 -2
  264. package/dist/footer-brand-links-contact.js +6 -2
  265. package/dist/footer-comprehensive-links.cjs +6 -2
  266. package/dist/footer-comprehensive-links.js +6 -2
  267. package/dist/footer-contact-card.cjs +6 -2
  268. package/dist/footer-contact-card.js +6 -2
  269. package/dist/footer-cta-banner.cjs +6 -2
  270. package/dist/footer-cta-banner.js +6 -2
  271. package/dist/footer-cta-social.cjs +24 -20
  272. package/dist/footer-cta-social.js +22 -18
  273. package/dist/footer-info-cards-accordion.cjs +24 -20
  274. package/dist/footer-info-cards-accordion.js +23 -19
  275. package/dist/footer-nav-social.cjs +6 -2
  276. package/dist/footer-nav-social.js +6 -2
  277. package/dist/footer-newsletter-contact.cjs +6 -2
  278. package/dist/footer-newsletter-contact.js +6 -2
  279. package/dist/footer-newsletter-grid.cjs +6 -2
  280. package/dist/footer-newsletter-grid.js +6 -2
  281. package/dist/footer-newsletter-minimal.cjs +27 -23
  282. package/dist/footer-newsletter-minimal.js +26 -22
  283. package/dist/footer-social-apps.cjs +26 -22
  284. package/dist/footer-social-apps.js +22 -18
  285. package/dist/footer-social-newsletter.cjs +6 -2
  286. package/dist/footer-social-newsletter.js +6 -2
  287. package/dist/footer-split-image-accordion.cjs +24 -20
  288. package/dist/footer-split-image-accordion.js +23 -19
  289. package/dist/geo-map.cjs +74 -54
  290. package/dist/geo-map.js +73 -53
  291. package/dist/hero-badge-shadow-overlay.cjs +6 -2
  292. package/dist/hero-badge-shadow-overlay.js +6 -2
  293. package/dist/hero-coming-soon-countdown.cjs +6 -2
  294. package/dist/hero-coming-soon-countdown.js +6 -2
  295. package/dist/hero-conversion-video-play.cjs +29 -25
  296. package/dist/hero-conversion-video-play.js +26 -22
  297. package/dist/hero-creative-studio-stacked.cjs +19 -15
  298. package/dist/hero-creative-studio-stacked.js +16 -12
  299. package/dist/hero-dashed-border-features.cjs +6 -2
  300. package/dist/hero-dashed-border-features.js +6 -2
  301. package/dist/hero-design-carousel-portfolio.cjs +29 -25
  302. package/dist/hero-design-carousel-portfolio.js +26 -22
  303. package/dist/hero-design-system-3d.cjs +18 -14
  304. package/dist/hero-design-system-3d.js +16 -12
  305. package/dist/hero-developer-tools-code.cjs +18 -14
  306. package/dist/hero-developer-tools-code.js +16 -12
  307. package/dist/hero-ecommerce-product-showcase.cjs +20 -16
  308. package/dist/hero-ecommerce-product-showcase.js +17 -13
  309. package/dist/hero-enterprise-security.cjs +6 -2
  310. package/dist/hero-enterprise-security.js +6 -2
  311. package/dist/hero-event-registration.cjs +21 -17
  312. package/dist/hero-event-registration.js +17 -13
  313. package/dist/hero-feature-cards-grid.cjs +6 -2
  314. package/dist/hero-feature-cards-grid.js +6 -2
  315. package/dist/hero-floating-images.cjs +26 -6
  316. package/dist/hero-floating-images.js +10 -5
  317. package/dist/hero-gradient-avatars-rating.cjs +19 -15
  318. package/dist/hero-gradient-avatars-rating.js +16 -12
  319. package/dist/hero-grid-pattern-solutions.cjs +6 -2
  320. package/dist/hero-grid-pattern-solutions.js +6 -2
  321. package/dist/hero-marketplace-scattered-images.cjs +6 -2
  322. package/dist/hero-marketplace-scattered-images.js +6 -2
  323. package/dist/hero-mentorship-video-split.cjs +6 -2
  324. package/dist/hero-mentorship-video-split.js +6 -2
  325. package/dist/hero-mobile-app-download.cjs +6 -2
  326. package/dist/hero-mobile-app-download.js +6 -2
  327. package/dist/hero-overlay-cta-grid.cjs +20 -16
  328. package/dist/hero-overlay-cta-grid.js +16 -12
  329. package/dist/hero-platform-features-grid.cjs +6 -2
  330. package/dist/hero-platform-features-grid.js +6 -2
  331. package/dist/hero-portfolio-creative.cjs +6 -2
  332. package/dist/hero-portfolio-creative.js +6 -2
  333. package/dist/hero-pricing-comparison.cjs +6 -2
  334. package/dist/hero-pricing-comparison.js +6 -2
  335. package/dist/hero-product-showcase-floating.cjs +27 -23
  336. package/dist/hero-product-showcase-floating.js +22 -18
  337. package/dist/hero-saas-dashboard-preview.cjs +6 -2
  338. package/dist/hero-saas-dashboard-preview.js +6 -2
  339. package/dist/hero-simple-centered-image.cjs +5 -5
  340. package/dist/hero-simple-centered-image.js +5 -5
  341. package/dist/hero-software-growth-video-dialog.cjs +19 -15
  342. package/dist/hero-software-growth-video-dialog.js +16 -12
  343. package/dist/hero-split-icon-cards.cjs +18 -14
  344. package/dist/hero-split-icon-cards.js +16 -12
  345. package/dist/hero-video-dialog-gradient.cjs +19 -15
  346. package/dist/hero-video-dialog-gradient.js +16 -12
  347. package/dist/hero-video-overlay-stars.cjs +18 -14
  348. package/dist/hero-video-overlay-stars.js +16 -12
  349. package/dist/index.cjs +200 -180
  350. package/dist/index.js +104 -84
  351. package/dist/industries-expandable-showcase.cjs +6 -2
  352. package/dist/industries-expandable-showcase.js +6 -2
  353. package/dist/industries-hover-reveal-grid.cjs +6 -2
  354. package/dist/industries-hover-reveal-grid.js +6 -2
  355. package/dist/industries-timeline-table.cjs +6 -2
  356. package/dist/industries-timeline-table.js +6 -2
  357. package/dist/interior-carousel.cjs +33 -29
  358. package/dist/interior-carousel.js +26 -22
  359. package/dist/link-page-bento-layout.cjs +6 -2
  360. package/dist/link-page-bento-layout.js +6 -2
  361. package/dist/link-page-grid-cards.cjs +6 -2
  362. package/dist/link-page-grid-cards.js +6 -2
  363. package/dist/link-page-minimal-profile.cjs +6 -2
  364. package/dist/link-page-minimal-profile.js +6 -2
  365. package/dist/link-page-newsletter-social.cjs +6 -2
  366. package/dist/link-page-newsletter-social.js +6 -2
  367. package/dist/link-tree-block.cjs +30 -26
  368. package/dist/link-tree-block.js +30 -26
  369. package/dist/list-achievements-showcase.cjs +6 -2
  370. package/dist/list-achievements-showcase.js +6 -2
  371. package/dist/list-feature-comparison.cjs +6 -2
  372. package/dist/list-feature-comparison.js +6 -2
  373. package/dist/list-metrics-dashboard.cjs +6 -2
  374. package/dist/list-metrics-dashboard.js +6 -2
  375. package/dist/list-searchable-grid.cjs +19 -15
  376. package/dist/list-searchable-grid.js +18 -14
  377. package/dist/list-service-category-table.cjs +26 -6
  378. package/dist/list-service-category-table.js +10 -5
  379. package/dist/navbar-animated-preview.cjs +6 -2
  380. package/dist/navbar-animated-preview.js +6 -2
  381. package/dist/navbar-centered-menu.cjs +6 -2
  382. package/dist/navbar-centered-menu.js +6 -2
  383. package/dist/navbar-dark-icons.cjs +6 -2
  384. package/dist/navbar-dark-icons.js +6 -2
  385. package/dist/navbar-dropdown-menu.cjs +6 -2
  386. package/dist/navbar-dropdown-menu.js +6 -2
  387. package/dist/navbar-education-platform.cjs +6 -2
  388. package/dist/navbar-education-platform.js +6 -2
  389. package/dist/navbar-enterprise-mega.cjs +6 -2
  390. package/dist/navbar-enterprise-mega.js +6 -2
  391. package/dist/navbar-feature-grid.cjs +6 -2
  392. package/dist/navbar-feature-grid.js +6 -2
  393. package/dist/navbar-floating-pill.cjs +6 -2
  394. package/dist/navbar-floating-pill.js +6 -2
  395. package/dist/navbar-fullscreen-menu.cjs +6 -2
  396. package/dist/navbar-fullscreen-menu.js +6 -2
  397. package/dist/navbar-icon-links.cjs +6 -2
  398. package/dist/navbar-icon-links.js +6 -2
  399. package/dist/navbar-image-preview.cjs +6 -2
  400. package/dist/navbar-image-preview.js +6 -2
  401. package/dist/navbar-mega-menu.cjs +6 -2
  402. package/dist/navbar-mega-menu.js +6 -2
  403. package/dist/navbar-multi-column-groups.cjs +6 -2
  404. package/dist/navbar-multi-column-groups.js +6 -2
  405. package/dist/navbar-platform-resources.cjs +6 -2
  406. package/dist/navbar-platform-resources.js +6 -2
  407. package/dist/navbar-search-focused.cjs +6 -2
  408. package/dist/navbar-search-focused.js +6 -2
  409. package/dist/navbar-sidebar-mobile.cjs +6 -2
  410. package/dist/navbar-sidebar-mobile.js +6 -2
  411. package/dist/navbar-simple-links.cjs +6 -2
  412. package/dist/navbar-simple-links.js +6 -2
  413. package/dist/navbar-split-cta.cjs +6 -2
  414. package/dist/navbar-split-cta.js +6 -2
  415. package/dist/navbar-sticky-compact.cjs +6 -2
  416. package/dist/navbar-sticky-compact.js +6 -2
  417. package/dist/navbar-tabbed-sections.cjs +6 -2
  418. package/dist/navbar-tabbed-sections.js +6 -2
  419. package/dist/navbar-transparent-overlay.cjs +6 -2
  420. package/dist/navbar-transparent-overlay.js +6 -2
  421. package/dist/offer-modal-membership-image.cjs +6 -2
  422. package/dist/offer-modal-membership-image.js +6 -2
  423. package/dist/offer-modal-newsletter-discount.cjs +6 -2
  424. package/dist/offer-modal-newsletter-discount.js +6 -2
  425. package/dist/offer-modal-sheet-newsletter.cjs +6 -2
  426. package/dist/offer-modal-sheet-newsletter.js +6 -2
  427. package/dist/payment-platform-icon.cjs +27 -2
  428. package/dist/payment-platform-icon.js +7 -2
  429. package/dist/pricing-addons-cards.cjs +19 -15
  430. package/dist/pricing-addons-cards.js +16 -12
  431. package/dist/pricing-addons-featured.cjs +20 -16
  432. package/dist/pricing-addons-featured.js +16 -12
  433. package/dist/pricing-collapsible-plans.cjs +19 -15
  434. package/dist/pricing-collapsible-plans.js +16 -12
  435. package/dist/pricing-columns-toggle.cjs +20 -16
  436. package/dist/pricing-columns-toggle.js +16 -12
  437. package/dist/pricing-comparison-headers.cjs +21 -17
  438. package/dist/pricing-comparison-headers.js +16 -12
  439. package/dist/pricing-comparison-table.cjs +21 -17
  440. package/dist/pricing-comparison-table.js +16 -12
  441. package/dist/pricing-discount-card.cjs +18 -14
  442. package/dist/pricing-discount-card.js +16 -12
  443. package/dist/pricing-enterprise-contact.cjs +18 -14
  444. package/dist/pricing-enterprise-contact.js +16 -12
  445. package/dist/pricing-feature-matrix.cjs +19 -15
  446. package/dist/pricing-feature-matrix.js +16 -12
  447. package/dist/pricing-four-tier-toggle.cjs +20 -16
  448. package/dist/pricing-four-tier-toggle.js +16 -12
  449. package/dist/pricing-full-comparison.cjs +19 -15
  450. package/dist/pricing-full-comparison.js +17 -13
  451. package/dist/pricing-gradient-cards.cjs +20 -16
  452. package/dist/pricing-gradient-cards.js +16 -12
  453. package/dist/pricing-icon-headers.cjs +19 -15
  454. package/dist/pricing-icon-headers.js +16 -12
  455. package/dist/pricing-minimal-cards.cjs +19 -15
  456. package/dist/pricing-minimal-cards.js +16 -12
  457. package/dist/pricing-packages-radio.cjs +18 -14
  458. package/dist/pricing-packages-radio.js +16 -12
  459. package/dist/pricing-popular-highlight.cjs +20 -16
  460. package/dist/pricing-popular-highlight.js +16 -12
  461. package/dist/pricing-radio-toggle.cjs +20 -16
  462. package/dist/pricing-radio-toggle.js +16 -12
  463. package/dist/pricing-responsive-table.cjs +18 -14
  464. package/dist/pricing-responsive-table.js +16 -12
  465. package/dist/pricing-services-cards.cjs +19 -15
  466. package/dist/pricing-services-cards.js +16 -12
  467. package/dist/pricing-simple-card.cjs +18 -14
  468. package/dist/pricing-simple-card.js +16 -12
  469. package/dist/pricing-single-card.cjs +19 -15
  470. package/dist/pricing-single-card.js +16 -12
  471. package/dist/pricing-split-layout.cjs +16 -12
  472. package/dist/pricing-split-layout.js +16 -12
  473. package/dist/pricing-spotlight-card.cjs +18 -14
  474. package/dist/pricing-spotlight-card.js +16 -12
  475. package/dist/pricing-switch-cards.cjs +20 -16
  476. package/dist/pricing-switch-cards.js +16 -12
  477. package/dist/pricing-tabs-toggle.cjs +20 -16
  478. package/dist/pricing-tabs-toggle.js +16 -12
  479. package/dist/pricing-tier-grid.cjs +19 -15
  480. package/dist/pricing-tier-grid.js +16 -12
  481. package/dist/pricing-toggle-cards.cjs +20 -16
  482. package/dist/pricing-toggle-cards.js +16 -12
  483. package/dist/pricing-toggle-period.cjs +18 -14
  484. package/dist/pricing-toggle-period.js +16 -12
  485. package/dist/pricing-two-column-basic.cjs +20 -16
  486. package/dist/pricing-two-column-basic.js +16 -12
  487. package/dist/process-expandable-timeline.cjs +6 -2
  488. package/dist/process-expandable-timeline.js +6 -2
  489. package/dist/process-icon-timeline.cjs +26 -6
  490. package/dist/process-icon-timeline.js +10 -5
  491. package/dist/process-numbered-services.cjs +6 -2
  492. package/dist/process-numbered-services.js +6 -2
  493. package/dist/process-roadmap-timeline.cjs +26 -6
  494. package/dist/process-roadmap-timeline.js +10 -5
  495. package/dist/process-scroll-image.cjs +24 -20
  496. package/dist/process-scroll-image.js +22 -18
  497. package/dist/process-steps-grid.cjs +26 -6
  498. package/dist/process-steps-grid.js +10 -5
  499. package/dist/process-sticky-steps.cjs +6 -2
  500. package/dist/process-sticky-steps.js +6 -2
  501. package/dist/project-background-reveal.cjs +17 -13
  502. package/dist/project-background-reveal.js +16 -12
  503. package/dist/project-card-overlay.cjs +26 -6
  504. package/dist/project-card-overlay.js +10 -5
  505. package/dist/project-carousel-cinematic.cjs +31 -27
  506. package/dist/project-carousel-cinematic.js +26 -22
  507. package/dist/project-carousel-detail-cards.cjs +31 -27
  508. package/dist/project-carousel-detail-cards.js +26 -22
  509. package/dist/project-carousel-minimal.cjs +31 -27
  510. package/dist/project-carousel-minimal.js +26 -22
  511. package/dist/project-detail-architecture-carousel.cjs +6 -2
  512. package/dist/project-detail-architecture-carousel.js +6 -2
  513. package/dist/project-detail-list-related.cjs +6 -2
  514. package/dist/project-detail-list-related.js +6 -2
  515. package/dist/project-detail-photography-breadcrumb.cjs +6 -2
  516. package/dist/project-detail-photography-breadcrumb.js +6 -2
  517. package/dist/project-detail-tabbed-case-study.cjs +6 -2
  518. package/dist/project-detail-tabbed-case-study.js +6 -2
  519. package/dist/project-experience-quote.cjs +17 -13
  520. package/dist/project-experience-quote.js +16 -12
  521. package/dist/project-featured-carousel.cjs +27 -23
  522. package/dist/project-featured-carousel.js +26 -22
  523. package/dist/project-horizontal-cards.cjs +17 -13
  524. package/dist/project-horizontal-cards.js +16 -12
  525. package/dist/project-interactive-hover-reveal.cjs +18 -14
  526. package/dist/project-interactive-hover-reveal.js +16 -12
  527. package/dist/project-scroll-reveal.cjs +26 -6
  528. package/dist/project-scroll-reveal.js +10 -5
  529. package/dist/project-video-carousel.cjs +31 -27
  530. package/dist/project-video-carousel.js +26 -22
  531. package/dist/project-video-hover-bento.cjs +26 -6
  532. package/dist/project-video-hover-bento.js +10 -5
  533. package/dist/project-video-hover-grid.cjs +26 -6
  534. package/dist/project-video-hover-grid.js +10 -5
  535. package/dist/project-video-hover-rounded.cjs +26 -6
  536. package/dist/project-video-hover-rounded.js +10 -5
  537. package/dist/project-video-hover-stack.cjs +26 -6
  538. package/dist/project-video-hover-stack.js +10 -5
  539. package/dist/project-video-hover-two-by-two.cjs +26 -6
  540. package/dist/project-video-hover-two-by-two.js +10 -5
  541. package/dist/project-work-showcase.cjs +17 -13
  542. package/dist/project-work-showcase.js +16 -12
  543. package/dist/project-zigzag-layout.cjs +16 -12
  544. package/dist/project-zigzag-layout.js +16 -12
  545. package/dist/registry.cjs +1742 -1722
  546. package/dist/registry.js +512 -492
  547. package/dist/resource-detail-document-sidebar.cjs +6 -2
  548. package/dist/resource-detail-document-sidebar.js +6 -2
  549. package/dist/resource-detail-whitepaper-sidebar.cjs +6 -2
  550. package/dist/resource-detail-whitepaper-sidebar.js +6 -2
  551. package/dist/resource-list-course-cards.cjs +6 -2
  552. package/dist/resource-list-course-cards.js +6 -2
  553. package/dist/resource-list-featured-articles.cjs +6 -2
  554. package/dist/resource-list-featured-articles.js +6 -2
  555. package/dist/resource-list-featured-grid.cjs +6 -2
  556. package/dist/resource-list-featured-grid.js +6 -2
  557. package/dist/resource-list-hero-filter.cjs +6 -2
  558. package/dist/resource-list-hero-filter.js +6 -2
  559. package/dist/resource-list-news-updates.cjs +6 -2
  560. package/dist/resource-list-news-updates.js +6 -2
  561. package/dist/service-detail-centered-expertise.cjs +16 -12
  562. package/dist/service-detail-centered-expertise.js +16 -12
  563. package/dist/service-detail-compact-cards.cjs +16 -12
  564. package/dist/service-detail-compact-cards.js +16 -12
  565. package/dist/service-detail-sidebar-related.cjs +16 -12
  566. package/dist/service-detail-sidebar-related.js +16 -12
  567. package/dist/service-detail-sidebar-stats.cjs +27 -7
  568. package/dist/service-detail-sidebar-stats.js +10 -5
  569. package/dist/service-hover-carousel.cjs +38 -34
  570. package/dist/service-hover-carousel.js +26 -22
  571. package/dist/services-list-accordion-benefits.cjs +16 -12
  572. package/dist/services-list-accordion-benefits.js +16 -12
  573. package/dist/services-list-accordion.cjs +10 -8
  574. package/dist/services-list-accordion.js +10 -5
  575. package/dist/services-list-cards-hover.cjs +16 -12
  576. package/dist/services-list-cards-hover.js +16 -12
  577. package/dist/services-list-category-accordion.cjs +10 -8
  578. package/dist/services-list-category-accordion.js +10 -5
  579. package/dist/services-list-centered-icons.cjs +27 -7
  580. package/dist/services-list-centered-icons.js +10 -5
  581. package/dist/services-list-culture-tabs.cjs +16 -12
  582. package/dist/services-list-culture-tabs.js +16 -12
  583. package/dist/services-list-feature-spotlight.cjs +27 -7
  584. package/dist/services-list-feature-spotlight.js +10 -5
  585. package/dist/services-list-featured-highlight.cjs +16 -12
  586. package/dist/services-list-featured-highlight.js +16 -12
  587. package/dist/services-list-hero-cards.cjs +6 -2
  588. package/dist/services-list-hero-cards.js +6 -2
  589. package/dist/services-list-icon-grid.cjs +27 -7
  590. package/dist/services-list-icon-grid.js +10 -5
  591. package/dist/services-list-image-cards.cjs +6 -2
  592. package/dist/services-list-image-cards.js +6 -2
  593. package/dist/services-list-image-overlay-grid.cjs +6 -2
  594. package/dist/services-list-image-overlay-grid.js +6 -2
  595. package/dist/services-list-masonry.cjs +16 -12
  596. package/dist/services-list-masonry.js +16 -12
  597. package/dist/services-list-methodology-steps.cjs +16 -12
  598. package/dist/services-list-methodology-steps.js +16 -12
  599. package/dist/services-list-minimal-grid.cjs +16 -12
  600. package/dist/services-list-minimal-grid.js +16 -12
  601. package/dist/services-list-muted-cards.cjs +27 -7
  602. package/dist/services-list-muted-cards.js +10 -5
  603. package/dist/services-list-numbered-steps.cjs +16 -12
  604. package/dist/services-list-numbered-steps.js +16 -12
  605. package/dist/services-list-pricing-grid.cjs +16 -12
  606. package/dist/services-list-pricing-grid.js +16 -12
  607. package/dist/services-list-progress-sidebar.cjs +16 -12
  608. package/dist/services-list-progress-sidebar.js +16 -12
  609. package/dist/services-list-split-checklist.cjs +16 -12
  610. package/dist/services-list-split-checklist.js +16 -12
  611. package/dist/services-list-sticky-image.cjs +6 -2
  612. package/dist/services-list-sticky-image.js +6 -2
  613. package/dist/services-list-table-hover.cjs +6 -2
  614. package/dist/services-list-table-hover.js +6 -2
  615. package/dist/services-list-tabs-features.cjs +10 -8
  616. package/dist/services-list-tabs-features.js +10 -5
  617. package/dist/services-list-timeline.cjs +16 -12
  618. package/dist/services-list-timeline.js +16 -12
  619. package/dist/services-list-two-column-grid.cjs +16 -12
  620. package/dist/services-list-two-column-grid.js +16 -12
  621. package/dist/services-list-vertical-tags.cjs +27 -7
  622. package/dist/services-list-vertical-tags.js +10 -5
  623. package/dist/services-list-video-showcase.cjs +18 -14
  624. package/dist/services-list-video-showcase.js +18 -14
  625. package/dist/social-link-icon.cjs +6 -2
  626. package/dist/social-link-icon.js +6 -2
  627. package/dist/stats-animated-counter.cjs +17 -13
  628. package/dist/stats-animated-counter.js +15 -11
  629. package/dist/stats-card-group.cjs +26 -6
  630. package/dist/stats-card-group.js +10 -5
  631. package/dist/stats-growth-timeline.cjs +22 -18
  632. package/dist/stats-growth-timeline.js +16 -12
  633. package/dist/stats-icon-cards.cjs +26 -6
  634. package/dist/stats-icon-cards.js +10 -5
  635. package/dist/stats-impact-grid.cjs +23 -19
  636. package/dist/stats-impact-grid.js +16 -12
  637. package/dist/stats-primary-secondary.cjs +26 -6
  638. package/dist/stats-primary-secondary.js +10 -5
  639. package/dist/stats-timeline-tabs.cjs +9 -7
  640. package/dist/stats-timeline-tabs.js +10 -5
  641. package/dist/team-alternating-bios.cjs +17 -13
  642. package/dist/team-alternating-bios.js +17 -13
  643. package/dist/team-avatar-social.cjs +17 -13
  644. package/dist/team-avatar-social.js +17 -13
  645. package/dist/team-bio-badges.cjs +17 -13
  646. package/dist/team-bio-badges.js +17 -13
  647. package/dist/team-carousel-experience.cjs +27 -23
  648. package/dist/team-carousel-experience.js +27 -23
  649. package/dist/team-contact-cards.cjs +18 -14
  650. package/dist/team-contact-cards.js +18 -14
  651. package/dist/team-filterable-search.cjs +22 -18
  652. package/dist/team-filterable-search.js +22 -18
  653. package/dist/team-gradient-cards.cjs +17 -13
  654. package/dist/team-gradient-cards.js +17 -13
  655. package/dist/team-grid-animated.cjs +18 -14
  656. package/dist/team-grid-animated.js +18 -14
  657. package/dist/team-hover-highlight.cjs +17 -13
  658. package/dist/team-hover-highlight.js +17 -13
  659. package/dist/team-hover-overlay.cjs +17 -13
  660. package/dist/team-hover-overlay.js +17 -13
  661. package/dist/team-large-images.cjs +17 -13
  662. package/dist/team-large-images.js +17 -13
  663. package/dist/team-role-filter.cjs +20 -16
  664. package/dist/team-role-filter.js +20 -16
  665. package/dist/team-skill-badges.cjs +17 -13
  666. package/dist/team-skill-badges.js +17 -13
  667. package/dist/team-social-cards.cjs +17 -13
  668. package/dist/team-social-cards.js +17 -13
  669. package/dist/team-social-grid.cjs +17 -13
  670. package/dist/team-social-grid.js +17 -13
  671. package/dist/team-testimonial-stats.cjs +17 -13
  672. package/dist/team-testimonial-stats.js +17 -13
  673. package/dist/testimonial-carousel-cards.cjs +33 -29
  674. package/dist/testimonial-carousel-cards.js +26 -22
  675. package/dist/testimonials-animated-split.cjs +9 -7
  676. package/dist/testimonials-animated-split.js +10 -5
  677. package/dist/testimonials-bento-grid.cjs +9 -7
  678. package/dist/testimonials-bento-grid.js +10 -5
  679. package/dist/testimonials-carousel-image.cjs +18 -14
  680. package/dist/testimonials-carousel-image.js +13 -9
  681. package/dist/testimonials-company-logo.cjs +26 -6
  682. package/dist/testimonials-company-logo.js +10 -5
  683. package/dist/testimonials-grid-add-review.cjs +9 -7
  684. package/dist/testimonials-grid-add-review.js +10 -5
  685. package/dist/testimonials-images-helpful.cjs +21 -17
  686. package/dist/testimonials-images-helpful.js +16 -12
  687. package/dist/testimonials-large-quote.cjs +9 -7
  688. package/dist/testimonials-large-quote.js +10 -5
  689. package/dist/testimonials-list-verified.cjs +9 -7
  690. package/dist/testimonials-list-verified.js +10 -5
  691. package/dist/testimonials-mini-dividers.cjs +9 -7
  692. package/dist/testimonials-mini-dividers.js +10 -5
  693. package/dist/testimonials-minimal-numbered.cjs +9 -7
  694. package/dist/testimonials-minimal-numbered.js +10 -5
  695. package/dist/testimonials-quote-carousel.cjs +31 -27
  696. package/dist/testimonials-quote-carousel.js +26 -22
  697. package/dist/testimonials-scrolling-columns.cjs +26 -6
  698. package/dist/testimonials-scrolling-columns.js +10 -5
  699. package/dist/testimonials-split-image.cjs +9 -7
  700. package/dist/testimonials-split-image.js +10 -5
  701. package/dist/testimonials-stats-header.cjs +9 -7
  702. package/dist/testimonials-stats-header.js +10 -5
  703. package/dist/testimonials-twitter-cards.cjs +19 -15
  704. package/dist/testimonials-twitter-cards.js +16 -12
  705. package/dist/timeline-ai-workflow-cards.cjs +27 -7
  706. package/dist/timeline-ai-workflow-cards.js +10 -5
  707. package/dist/timeline-alternating-diagonal.cjs +12 -8
  708. package/dist/timeline-alternating-diagonal.js +12 -8
  709. package/dist/timeline-horizontal-icons.cjs +10 -8
  710. package/dist/timeline-horizontal-icons.js +10 -5
  711. package/dist/timeline-productivity-list.cjs +27 -7
  712. package/dist/timeline-productivity-list.js +10 -5
  713. package/dist/timeline-stepper-animated.cjs +22 -18
  714. package/dist/timeline-stepper-animated.js +21 -17
  715. package/dist/timeline-tabbed-phases.cjs +6 -2
  716. package/dist/timeline-tabbed-phases.js +6 -2
  717. package/dist/timeline-vertical-icon-dashed.cjs +6 -2
  718. package/dist/timeline-vertical-icon-dashed.js +6 -2
  719. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React3 = require('react');
4
+ var React4 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var icon = require('@page-speed/icon');
@@ -25,7 +25,7 @@ function _interopNamespace(e) {
25
25
  return Object.freeze(n);
26
26
  }
27
27
 
28
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
28
+ var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
29
29
 
30
30
  // components/blocks/comparison/comparison-feature-grid.tsx
31
31
  function cn(...inputs) {
@@ -62,9 +62,13 @@ function getNestedCardTextColor(parentBg, options) {
62
62
  return isDark ? "text-foreground" : "";
63
63
  }
64
64
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
65
- function DynamicIcon({ apiKey, ...props }) {
65
+ var DynamicIcon = React4__namespace.memo(function DynamicIcon2({
66
+ apiKey,
67
+ ...props
68
+ }) {
66
69
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
67
- }
70
+ });
71
+ DynamicIcon.displayName = "DynamicIcon";
68
72
  var maxWidthStyles = {
69
73
  sm: "max-w-screen-sm",
70
74
  md: "max-w-screen-md",
@@ -74,7 +78,7 @@ var maxWidthStyles = {
74
78
  "4xl": "max-w-[1536px]",
75
79
  full: "max-w-full"
76
80
  };
77
- var Container = React3__namespace.default.forwardRef(
81
+ var Container = React4__namespace.default.forwardRef(
78
82
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
79
83
  const Component = as;
80
84
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -380,7 +384,7 @@ var spacingStyles = {
380
384
  };
381
385
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
382
386
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
383
- var Section = React3__namespace.default.forwardRef(
387
+ var Section = React4__namespace.default.forwardRef(
384
388
  ({
385
389
  id,
386
390
  title,
@@ -460,7 +464,7 @@ function ComparisonFeatureGrid({
460
464
  pattern,
461
465
  patternOpacity
462
466
  }) {
463
- const renderStatusIcon = React3__namespace.useCallback((status) => {
467
+ const renderStatusIcon = React4__namespace.useCallback((status) => {
464
468
  if (status === true) {
465
469
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/check", size: 20, className: "text-success" });
466
470
  }
@@ -469,7 +473,7 @@ function ComparisonFeatureGrid({
469
473
  }
470
474
  return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 20, className: "text-destructive" });
471
475
  }, []);
472
- const gridContent = React3__namespace.useMemo(() => {
476
+ const gridContent = React4__namespace.useMemo(() => {
473
477
  if (gridSlot) return gridSlot;
474
478
  if (!features || features.length === 0) return null;
475
479
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -535,14 +539,14 @@ function ComparisonFeatureGrid({
535
539
  optionBLabel,
536
540
  renderStatusIcon
537
541
  ]);
538
- const headingContent = React3__namespace.useMemo(() => {
542
+ const headingContent = React4__namespace.useMemo(() => {
539
543
  if (!heading) return null;
540
544
  if (typeof heading === "string") {
541
545
  return /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
542
546
  }
543
547
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading });
544
548
  }, [heading, headingClassName]);
545
- const descriptionContent = React3__namespace.useMemo(() => {
549
+ const descriptionContent = React4__namespace.useMemo(() => {
546
550
  if (!description) return null;
547
551
  if (typeof description === "string") {
548
552
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import * as React3 from 'react';
3
- import React3__default from 'react';
2
+ import * as React4 from 'react';
3
+ import React4__default from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Icon } from '@page-speed/icon';
@@ -41,9 +41,13 @@ function getNestedCardTextColor(parentBg, options) {
41
41
  return isDark ? "text-foreground" : "";
42
42
  }
43
43
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
44
- function DynamicIcon({ apiKey, ...props }) {
44
+ var DynamicIcon = React4.memo(function DynamicIcon2({
45
+ apiKey,
46
+ ...props
47
+ }) {
45
48
  return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
46
- }
49
+ });
50
+ DynamicIcon.displayName = "DynamicIcon";
47
51
  var maxWidthStyles = {
48
52
  sm: "max-w-screen-sm",
49
53
  md: "max-w-screen-md",
@@ -53,7 +57,7 @@ var maxWidthStyles = {
53
57
  "4xl": "max-w-[1536px]",
54
58
  full: "max-w-full"
55
59
  };
56
- var Container = React3__default.forwardRef(
60
+ var Container = React4__default.forwardRef(
57
61
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
58
62
  const Component = as;
59
63
  return /* @__PURE__ */ jsx(
@@ -359,7 +363,7 @@ var spacingStyles = {
359
363
  };
360
364
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
361
365
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
362
- var Section = React3__default.forwardRef(
366
+ var Section = React4__default.forwardRef(
363
367
  ({
364
368
  id,
365
369
  title,
@@ -439,7 +443,7 @@ function ComparisonFeatureGrid({
439
443
  pattern,
440
444
  patternOpacity
441
445
  }) {
442
- const renderStatusIcon = React3.useCallback((status) => {
446
+ const renderStatusIcon = React4.useCallback((status) => {
443
447
  if (status === true) {
444
448
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/check", size: 20, className: "text-success" });
445
449
  }
@@ -448,7 +452,7 @@ function ComparisonFeatureGrid({
448
452
  }
449
453
  return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20, className: "text-destructive" });
450
454
  }, []);
451
- const gridContent = React3.useMemo(() => {
455
+ const gridContent = React4.useMemo(() => {
452
456
  if (gridSlot) return gridSlot;
453
457
  if (!features || features.length === 0) return null;
454
458
  return /* @__PURE__ */ jsxs(
@@ -514,14 +518,14 @@ function ComparisonFeatureGrid({
514
518
  optionBLabel,
515
519
  renderStatusIcon
516
520
  ]);
517
- const headingContent = React3.useMemo(() => {
521
+ const headingContent = React4.useMemo(() => {
518
522
  if (!heading) return null;
519
523
  if (typeof heading === "string") {
520
524
  return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
521
525
  }
522
526
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
523
527
  }, [heading, headingClassName]);
524
- const descriptionContent = React3.useMemo(() => {
528
+ const descriptionContent = React4.useMemo(() => {
525
529
  if (!description) return null;
526
530
  if (typeof description === "string") {
527
531
  return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React3 = require('react');
4
+ var React4 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var icon = require('@page-speed/icon');
@@ -27,16 +27,20 @@ function _interopNamespace(e) {
27
27
  return Object.freeze(n);
28
28
  }
29
29
 
30
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
30
+ var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
31
31
 
32
32
  // components/blocks/comparison/comparison-grid-badges.tsx
33
33
  function cn(...inputs) {
34
34
  return tailwindMerge.twMerge(clsx.clsx(inputs));
35
35
  }
36
36
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
37
- function DynamicIcon({ apiKey, ...props }) {
37
+ var DynamicIcon = React4__namespace.memo(function DynamicIcon2({
38
+ apiKey,
39
+ ...props
40
+ }) {
38
41
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
39
- }
42
+ });
43
+ DynamicIcon.displayName = "DynamicIcon";
40
44
  var badgeVariants = classVarianceAuthority.cva(
41
45
  "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",
42
46
  {
@@ -78,7 +82,7 @@ var maxWidthStyles = {
78
82
  "4xl": "max-w-[1536px]",
79
83
  full: "max-w-full"
80
84
  };
81
- var Container = React3__namespace.default.forwardRef(
85
+ var Container = React4__namespace.default.forwardRef(
82
86
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
83
87
  const Component = as;
84
88
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -384,7 +388,7 @@ var spacingStyles = {
384
388
  };
385
389
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
386
390
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
387
- var Section = React3__namespace.default.forwardRef(
391
+ var Section = React4__namespace.default.forwardRef(
388
392
  ({
389
393
  id,
390
394
  title,
@@ -464,7 +468,7 @@ function ComparisonGridBadges({
464
468
  pattern,
465
469
  patternOpacity
466
470
  }) {
467
- const featuresContent = React3__namespace.useMemo(() => {
471
+ const featuresContent = React4__namespace.useMemo(() => {
468
472
  if (featuresSlot) return featuresSlot;
469
473
  if (!features || features.length === 0) return null;
470
474
  return features.map((feature, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
@@ -511,14 +515,14 @@ function ComparisonGridBadges({
511
515
  idx
512
516
  ));
513
517
  }, [featuresSlot, features, featureCardClassName, badgeClassName, optionALabel, optionBLabel]);
514
- const headingContent = React3__namespace.useMemo(() => {
518
+ const headingContent = React4__namespace.useMemo(() => {
515
519
  if (!heading) return null;
516
520
  if (typeof heading === "string") {
517
521
  return /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("mb-4 text-3xl font-bold md:text-5xl", headingClassName), children: heading });
518
522
  }
519
523
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading });
520
524
  }, [heading, headingClassName]);
521
- const descriptionContent = React3__namespace.useMemo(() => {
525
+ const descriptionContent = React4__namespace.useMemo(() => {
522
526
  if (!description) return null;
523
527
  if (typeof description === "string") {
524
528
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mx-auto max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import * as React3 from 'react';
3
- import React3__default from 'react';
2
+ import * as React4 from 'react';
3
+ import React4__default from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Icon } from '@page-speed/icon';
@@ -13,9 +13,13 @@ function cn(...inputs) {
13
13
  return twMerge(clsx(inputs));
14
14
  }
15
15
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
16
- function DynamicIcon({ apiKey, ...props }) {
16
+ var DynamicIcon = React4.memo(function DynamicIcon2({
17
+ apiKey,
18
+ ...props
19
+ }) {
17
20
  return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
18
- }
21
+ });
22
+ DynamicIcon.displayName = "DynamicIcon";
19
23
  var badgeVariants = cva(
20
24
  "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",
21
25
  {
@@ -57,7 +61,7 @@ var maxWidthStyles = {
57
61
  "4xl": "max-w-[1536px]",
58
62
  full: "max-w-full"
59
63
  };
60
- var Container = React3__default.forwardRef(
64
+ var Container = React4__default.forwardRef(
61
65
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
62
66
  const Component = as;
63
67
  return /* @__PURE__ */ jsx(
@@ -363,7 +367,7 @@ var spacingStyles = {
363
367
  };
364
368
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
365
369
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
366
- var Section = React3__default.forwardRef(
370
+ var Section = React4__default.forwardRef(
367
371
  ({
368
372
  id,
369
373
  title,
@@ -443,7 +447,7 @@ function ComparisonGridBadges({
443
447
  pattern,
444
448
  patternOpacity
445
449
  }) {
446
- const featuresContent = React3.useMemo(() => {
450
+ const featuresContent = React4.useMemo(() => {
447
451
  if (featuresSlot) return featuresSlot;
448
452
  if (!features || features.length === 0) return null;
449
453
  return features.map((feature, idx) => /* @__PURE__ */ jsxs(
@@ -490,14 +494,14 @@ function ComparisonGridBadges({
490
494
  idx
491
495
  ));
492
496
  }, [featuresSlot, features, featureCardClassName, badgeClassName, optionALabel, optionBLabel]);
493
- const headingContent = React3.useMemo(() => {
497
+ const headingContent = React4.useMemo(() => {
494
498
  if (!heading) return null;
495
499
  if (typeof heading === "string") {
496
500
  return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-3xl font-bold md:text-5xl", headingClassName), children: heading });
497
501
  }
498
502
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
499
503
  }, [heading, headingClassName]);
500
- const descriptionContent = React3.useMemo(() => {
504
+ const descriptionContent = React4.useMemo(() => {
501
505
  if (!description) return null;
502
506
  if (typeof description === "string") {
503
507
  return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React3 = require('react');
4
+ var React4 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var icon = require('@page-speed/icon');
@@ -26,7 +26,7 @@ function _interopNamespace(e) {
26
26
  return Object.freeze(n);
27
27
  }
28
28
 
29
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
29
+ var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
30
30
  var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
31
31
 
32
32
  // components/blocks/comparison/comparison-legacy-modern.tsx
@@ -64,9 +64,13 @@ function getNestedCardTextColor(parentBg, options) {
64
64
  return isDark ? "text-foreground" : "";
65
65
  }
66
66
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
67
- function DynamicIcon({ apiKey, ...props }) {
67
+ var DynamicIcon = React4__namespace.memo(function DynamicIcon2({
68
+ apiKey,
69
+ ...props
70
+ }) {
68
71
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
69
- }
72
+ });
73
+ DynamicIcon.displayName = "DynamicIcon";
70
74
  function Separator({
71
75
  className,
72
76
  orientation = "horizontal",
@@ -96,7 +100,7 @@ var maxWidthStyles = {
96
100
  "4xl": "max-w-[1536px]",
97
101
  full: "max-w-full"
98
102
  };
99
- var Container = React3__namespace.default.forwardRef(
103
+ var Container = React4__namespace.default.forwardRef(
100
104
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
101
105
  const Component = as;
102
106
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -402,7 +406,7 @@ var spacingStyles = {
402
406
  };
403
407
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
404
408
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
405
- var Section = React3__namespace.default.forwardRef(
409
+ var Section = React4__namespace.default.forwardRef(
406
410
  ({
407
411
  id,
408
412
  title,
@@ -485,7 +489,7 @@ function ComparisonLegacyModern({
485
489
  pattern,
486
490
  patternOpacity
487
491
  }) {
488
- const columnsContent = React3__namespace.useMemo(() => {
492
+ const columnsContent = React4__namespace.useMemo(() => {
489
493
  if (columnsSlot) return columnsSlot;
490
494
  if (!legacyFeatures || legacyFeatures.length === 0 || !modernFeatures || modernFeatures.length === 0)
491
495
  return null;
@@ -497,7 +501,7 @@ function ComparisonLegacyModern({
497
501
  legacyColumnClassName
498
502
  ), children: [
499
503
  legacyTitle && (typeof legacyTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-medium", children: legacyTitle }) : legacyTitle),
500
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React3__namespace.Fragment, { children: [
504
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React4__namespace.Fragment, { children: [
501
505
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
502
506
  /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/x", size: 16, className: "my-1.5 shrink-0 text-muted-foreground" }),
503
507
  /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-sm", children: feature.text })
@@ -514,7 +518,7 @@ function ComparisonLegacyModern({
514
518
  ),
515
519
  children: [
516
520
  modernTitle && (typeof modernTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-medium", children: modernTitle }) : modernTitle),
517
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React3__namespace.Fragment, { children: [
521
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxRuntime.jsxs(React4__namespace.Fragment, { children: [
518
522
  /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
519
523
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-lg", children: feature.emoji }),
520
524
  feature.text
@@ -526,7 +530,7 @@ function ComparisonLegacyModern({
526
530
  )
527
531
  ] });
528
532
  }, [columnsSlot, legacyFeatures, modernFeatures, legacyTitle, modernTitle, legacyColumnClassName, modernColumnClassName]);
529
- const headingContent = React3__namespace.useMemo(() => {
533
+ const headingContent = React4__namespace.useMemo(() => {
530
534
  if (!heading && !headingHighlight) return null;
531
535
  return /* @__PURE__ */ jsxRuntime.jsxs("h2", { className: cn("text-4xl font-medium md:text-5xl lg:text-7xl", headingClassName), children: [
532
536
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
@@ -539,7 +543,7 @@ function ComparisonLegacyModern({
539
543
  ] }) : headingHighlight)
540
544
  ] });
541
545
  }, [heading, headingHighlight, headingClassName, headingHighlightClassName]);
542
- const descriptionContent = React3__namespace.useMemo(() => {
546
+ const descriptionContent = React4__namespace.useMemo(() => {
543
547
  if (!description) return null;
544
548
  if (typeof description === "string") {
545
549
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg", descriptionClassName), children: description });
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import * as React3 from 'react';
3
- import React3__default from 'react';
2
+ import * as React4 from 'react';
3
+ import React4__default from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Icon } from '@page-speed/icon';
@@ -42,9 +42,13 @@ function getNestedCardTextColor(parentBg, options) {
42
42
  return isDark ? "text-foreground" : "";
43
43
  }
44
44
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
45
- function DynamicIcon({ apiKey, ...props }) {
45
+ var DynamicIcon = React4.memo(function DynamicIcon2({
46
+ apiKey,
47
+ ...props
48
+ }) {
46
49
  return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
47
- }
50
+ });
51
+ DynamicIcon.displayName = "DynamicIcon";
48
52
  function Separator({
49
53
  className,
50
54
  orientation = "horizontal",
@@ -74,7 +78,7 @@ var maxWidthStyles = {
74
78
  "4xl": "max-w-[1536px]",
75
79
  full: "max-w-full"
76
80
  };
77
- var Container = React3__default.forwardRef(
81
+ var Container = React4__default.forwardRef(
78
82
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
79
83
  const Component = as;
80
84
  return /* @__PURE__ */ jsx(
@@ -380,7 +384,7 @@ var spacingStyles = {
380
384
  };
381
385
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
382
386
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
383
- var Section = React3__default.forwardRef(
387
+ var Section = React4__default.forwardRef(
384
388
  ({
385
389
  id,
386
390
  title,
@@ -463,7 +467,7 @@ function ComparisonLegacyModern({
463
467
  pattern,
464
468
  patternOpacity
465
469
  }) {
466
- const columnsContent = React3.useMemo(() => {
470
+ const columnsContent = React4.useMemo(() => {
467
471
  if (columnsSlot) return columnsSlot;
468
472
  if (!legacyFeatures || legacyFeatures.length === 0 || !modernFeatures || modernFeatures.length === 0)
469
473
  return null;
@@ -475,7 +479,7 @@ function ComparisonLegacyModern({
475
479
  legacyColumnClassName
476
480
  ), children: [
477
481
  legacyTitle && (typeof legacyTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: legacyTitle }) : legacyTitle),
478
- /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React3.Fragment, { children: [
482
+ /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
479
483
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
480
484
  /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16, className: "my-1.5 shrink-0 text-muted-foreground" }),
481
485
  /* @__PURE__ */ jsx("li", { className: "text-sm", children: feature.text })
@@ -492,7 +496,7 @@ function ComparisonLegacyModern({
492
496
  ),
493
497
  children: [
494
498
  modernTitle && (typeof modernTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: modernTitle }) : modernTitle),
495
- /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React3.Fragment, { children: [
499
+ /* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
496
500
  /* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
497
501
  /* @__PURE__ */ jsx("span", { className: "text-lg", children: feature.emoji }),
498
502
  feature.text
@@ -504,7 +508,7 @@ function ComparisonLegacyModern({
504
508
  )
505
509
  ] });
506
510
  }, [columnsSlot, legacyFeatures, modernFeatures, legacyTitle, modernTitle, legacyColumnClassName, modernColumnClassName]);
507
- const headingContent = React3.useMemo(() => {
511
+ const headingContent = React4.useMemo(() => {
508
512
  if (!heading && !headingHighlight) return null;
509
513
  return /* @__PURE__ */ jsxs("h2", { className: cn("text-4xl font-medium md:text-5xl lg:text-7xl", headingClassName), children: [
510
514
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
@@ -517,7 +521,7 @@ function ComparisonLegacyModern({
517
521
  ] }) : headingHighlight)
518
522
  ] });
519
523
  }, [heading, headingHighlight, headingClassName, headingHighlightClassName]);
520
- const descriptionContent = React3.useMemo(() => {
524
+ const descriptionContent = React4.useMemo(() => {
521
525
  if (!description) return null;
522
526
  if (typeof description === "string") {
523
527
  return /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description });
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React3 = require('react');
4
+ var React4 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var icon = require('@page-speed/icon');
@@ -26,7 +26,7 @@ function _interopNamespace(e) {
26
26
  return Object.freeze(n);
27
27
  }
28
28
 
29
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
29
+ var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
30
30
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
31
31
 
32
32
  // components/blocks/comparison/comparison-table-tabs.tsx
@@ -34,9 +34,13 @@ function cn(...inputs) {
34
34
  return tailwindMerge.twMerge(clsx.clsx(inputs));
35
35
  }
36
36
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
37
- function DynamicIcon({ apiKey, ...props }) {
37
+ var DynamicIcon = React4__namespace.memo(function DynamicIcon2({
38
+ apiKey,
39
+ ...props
40
+ }) {
38
41
  return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
39
- }
42
+ });
43
+ DynamicIcon.displayName = "DynamicIcon";
40
44
  function Table({ className, ...props }) {
41
45
  return /* @__PURE__ */ jsxRuntime.jsx(
42
46
  "div",
@@ -167,7 +171,7 @@ var maxWidthStyles = {
167
171
  "4xl": "max-w-[1536px]",
168
172
  full: "max-w-full"
169
173
  };
170
- var Container = React3__namespace.default.forwardRef(
174
+ var Container = React4__namespace.default.forwardRef(
171
175
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
172
176
  const Component = as;
173
177
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -473,7 +477,7 @@ var spacingStyles = {
473
477
  };
474
478
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
475
479
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
476
- var Section = React3__namespace.default.forwardRef(
480
+ var Section = React4__namespace.default.forwardRef(
477
481
  ({
478
482
  id,
479
483
  title,
@@ -553,8 +557,8 @@ function ComparisonTableTabs({
553
557
  pattern,
554
558
  patternOpacity
555
559
  }) {
556
- const [selectedTab, setSelectedTab] = React3.useState(models?.[0]?.name || "");
557
- const renderStatusIcon = React3__namespace.useCallback((status) => {
560
+ const [selectedTab, setSelectedTab] = React4.useState(models?.[0]?.name || "");
561
+ const renderStatusIcon = React4__namespace.useCallback((status) => {
558
562
  if (status === "positive") {
559
563
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-success/10", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" }) });
560
564
  }
@@ -563,7 +567,7 @@ function ComparisonTableTabs({
563
567
  }
564
568
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-accent/10", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-minus", size: 16, className: "text-accent" }) });
565
569
  }, []);
566
- const tableContent = React3__namespace.useMemo(() => {
570
+ const tableContent = React4__namespace.useMemo(() => {
567
571
  if (tableSlot) return tableSlot;
568
572
  if (!models || models.length === 0 || !features || features.length === 0) return null;
569
573
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -622,14 +626,14 @@ function ComparisonTableTabs({
622
626
  ] }) })
623
627
  ] });
624
628
  }, [tableSlot, models, features, tabsClassName, tableClassName, tableHeaderClassName, tableCellClassName, selectedTab, renderStatusIcon]);
625
- const headingContent = React3__namespace.useMemo(() => {
629
+ const headingContent = React4__namespace.useMemo(() => {
626
630
  if (!heading) return null;
627
631
  if (typeof heading === "string") {
628
632
  return /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
629
633
  }
630
634
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading });
631
635
  }, [heading, headingClassName]);
632
- const descriptionContent = React3__namespace.useMemo(() => {
636
+ const descriptionContent = React4__namespace.useMemo(() => {
633
637
  if (!description) return null;
634
638
  if (typeof description === "string") {
635
639
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import * as React3 from 'react';
3
- import React3__default, { useState } from 'react';
2
+ import * as React4 from 'react';
3
+ import React4__default, { useState } from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Icon } from '@page-speed/icon';
@@ -12,9 +12,13 @@ function cn(...inputs) {
12
12
  return twMerge(clsx(inputs));
13
13
  }
14
14
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
15
- function DynamicIcon({ apiKey, ...props }) {
15
+ var DynamicIcon = React4.memo(function DynamicIcon2({
16
+ apiKey,
17
+ ...props
18
+ }) {
16
19
  return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
17
- }
20
+ });
21
+ DynamicIcon.displayName = "DynamicIcon";
18
22
  function Table({ className, ...props }) {
19
23
  return /* @__PURE__ */ jsx(
20
24
  "div",
@@ -145,7 +149,7 @@ var maxWidthStyles = {
145
149
  "4xl": "max-w-[1536px]",
146
150
  full: "max-w-full"
147
151
  };
148
- var Container = React3__default.forwardRef(
152
+ var Container = React4__default.forwardRef(
149
153
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
150
154
  const Component = as;
151
155
  return /* @__PURE__ */ jsx(
@@ -451,7 +455,7 @@ var spacingStyles = {
451
455
  };
452
456
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
453
457
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
454
- var Section = React3__default.forwardRef(
458
+ var Section = React4__default.forwardRef(
455
459
  ({
456
460
  id,
457
461
  title,
@@ -532,7 +536,7 @@ function ComparisonTableTabs({
532
536
  patternOpacity
533
537
  }) {
534
538
  const [selectedTab, setSelectedTab] = useState(models?.[0]?.name || "");
535
- const renderStatusIcon = React3.useCallback((status) => {
539
+ const renderStatusIcon = React4.useCallback((status) => {
536
540
  if (status === "positive") {
537
541
  return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-success/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" }) });
538
542
  }
@@ -541,7 +545,7 @@ function ComparisonTableTabs({
541
545
  }
542
546
  return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-accent/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-minus", size: 16, className: "text-accent" }) });
543
547
  }, []);
544
- const tableContent = React3.useMemo(() => {
548
+ const tableContent = React4.useMemo(() => {
545
549
  if (tableSlot) return tableSlot;
546
550
  if (!models || models.length === 0 || !features || features.length === 0) return null;
547
551
  return /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -600,14 +604,14 @@ function ComparisonTableTabs({
600
604
  ] }) })
601
605
  ] });
602
606
  }, [tableSlot, models, features, tabsClassName, tableClassName, tableHeaderClassName, tableCellClassName, selectedTab, renderStatusIcon]);
603
- const headingContent = React3.useMemo(() => {
607
+ const headingContent = React4.useMemo(() => {
604
608
  if (!heading) return null;
605
609
  if (typeof heading === "string") {
606
610
  return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
607
611
  }
608
612
  return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
609
613
  }, [heading, headingClassName]);
610
- const descriptionContent = React3.useMemo(() => {
614
+ const descriptionContent = React4.useMemo(() => {
611
615
  if (!description) return null;
612
616
  if (typeof description === "string") {
613
617
  return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });