@opensite/ui 0.8.0 → 0.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 (995) hide show
  1. package/dist/about-company-profile.d.cts +3 -3
  2. package/dist/about-company-profile.d.ts +3 -3
  3. package/dist/about-culture-tabs.d.cts +3 -3
  4. package/dist/about-culture-tabs.d.ts +3 -3
  5. package/dist/about-developer-profile.d.cts +3 -3
  6. package/dist/about-developer-profile.d.ts +3 -3
  7. package/dist/about-developer-story.d.cts +3 -3
  8. package/dist/about-developer-story.d.ts +3 -3
  9. package/dist/about-expandable-values.d.cts +3 -3
  10. package/dist/about-expandable-values.d.ts +3 -3
  11. package/dist/about-interactive-tabs.d.cts +3 -3
  12. package/dist/about-interactive-tabs.d.ts +3 -3
  13. package/dist/about-location-info-hero.d.cts +3 -3
  14. package/dist/about-location-info-hero.d.ts +3 -3
  15. package/dist/about-minimal-story.d.cts +3 -3
  16. package/dist/about-minimal-story.d.ts +3 -3
  17. package/dist/about-mission-dual-image.d.cts +3 -3
  18. package/dist/about-mission-dual-image.d.ts +3 -3
  19. package/dist/about-mission-features.d.cts +3 -3
  20. package/dist/about-mission-features.d.ts +3 -3
  21. package/dist/about-mission-principles.d.cts +3 -3
  22. package/dist/about-mission-principles.d.ts +3 -3
  23. package/dist/about-network-spotlight.d.cts +3 -3
  24. package/dist/about-network-spotlight.d.ts +3 -3
  25. package/dist/about-split-hero.d.cts +3 -3
  26. package/dist/about-split-hero.d.ts +3 -3
  27. package/dist/about-startup-team.d.cts +3 -3
  28. package/dist/about-startup-team.d.ts +3 -3
  29. package/dist/about-stats-showcase.d.cts +3 -3
  30. package/dist/about-stats-showcase.d.ts +3 -3
  31. package/dist/about-stats-sidebar.d.cts +3 -3
  32. package/dist/about-stats-sidebar.d.ts +3 -3
  33. package/dist/about-story-expertise.d.cts +3 -3
  34. package/dist/about-story-expertise.d.ts +3 -3
  35. package/dist/about-story-gallery.d.cts +3 -3
  36. package/dist/about-story-gallery.d.ts +3 -3
  37. package/dist/about-story-hero.d.cts +3 -3
  38. package/dist/about-story-hero.d.ts +3 -3
  39. package/dist/about-streamline-team.d.cts +3 -3
  40. package/dist/about-streamline-team.d.ts +3 -3
  41. package/dist/about-vision-gallery.d.cts +3 -3
  42. package/dist/about-vision-gallery.d.ts +3 -3
  43. package/dist/alternating-blocks.d.cts +3 -3
  44. package/dist/alternating-blocks.d.ts +3 -3
  45. package/dist/animated-dialog.d.cts +3 -3
  46. package/dist/animated-dialog.d.ts +3 -3
  47. package/dist/article-breadcrumb-social.d.cts +3 -3
  48. package/dist/article-breadcrumb-social.d.ts +3 -3
  49. package/dist/article-chapters-author.d.cts +3 -3
  50. package/dist/article-chapters-author.d.ts +3 -3
  51. package/dist/article-compact-toc.d.cts +3 -3
  52. package/dist/article-compact-toc.d.ts +3 -3
  53. package/dist/article-hero-prose.d.cts +3 -3
  54. package/dist/article-hero-prose.d.ts +3 -3
  55. package/dist/article-sidebar-sticky.d.cts +3 -3
  56. package/dist/article-sidebar-sticky.d.ts +3 -3
  57. package/dist/article-split-animated.d.cts +3 -3
  58. package/dist/article-split-animated.d.ts +3 -3
  59. package/dist/article-toc-sidebar.d.cts +3 -3
  60. package/dist/article-toc-sidebar.d.ts +3 -3
  61. package/dist/auto-scroll-carousel.d.cts +3 -3
  62. package/dist/auto-scroll-carousel.d.ts +3 -3
  63. package/dist/badge.d.cts +1 -1
  64. package/dist/badge.d.ts +1 -1
  65. package/dist/banner-announcement-dismissible.d.cts +2 -2
  66. package/dist/banner-announcement-dismissible.d.ts +2 -2
  67. package/dist/banner-event-promo.d.cts +2 -2
  68. package/dist/banner-event-promo.d.ts +2 -2
  69. package/dist/banner-floating-offer.d.cts +2 -2
  70. package/dist/banner-floating-offer.d.ts +2 -2
  71. package/dist/banner-gdpr-rights.d.cts +2 -2
  72. package/dist/banner-gdpr-rights.d.ts +2 -2
  73. package/dist/banner-privacy-notice.d.cts +2 -2
  74. package/dist/banner-privacy-notice.d.ts +2 -2
  75. package/dist/banner-promo-cta.d.cts +2 -2
  76. package/dist/banner-promo-cta.d.ts +2 -2
  77. package/dist/banner-social-follow.d.cts +2 -2
  78. package/dist/banner-social-follow.d.ts +2 -2
  79. package/dist/banner-survey-incentive.d.cts +2 -2
  80. package/dist/banner-survey-incentive.d.ts +2 -2
  81. package/dist/{blocks-tmd_MRJv.d.cts → blocks-Cohq4eio.d.cts} +1 -1
  82. package/dist/{blocks-DRE-f6cS.d.ts → blocks-k17uluAz.d.ts} +1 -1
  83. package/dist/blog-cards-read-time.d.cts +3 -3
  84. package/dist/blog-cards-read-time.d.ts +3 -3
  85. package/dist/blog-cards-tagline-cta.d.cts +3 -3
  86. package/dist/blog-cards-tagline-cta.d.ts +3 -3
  87. package/dist/blog-carousel-apple.d.cts +3 -3
  88. package/dist/blog-carousel-apple.d.ts +3 -3
  89. package/dist/blog-category-overlay.d.cts +3 -3
  90. package/dist/blog-category-overlay.d.ts +3 -3
  91. package/dist/blog-featured-popular.d.cts +3 -3
  92. package/dist/blog-featured-popular.d.ts +3 -3
  93. package/dist/blog-filtered-results.d.cts +3 -3
  94. package/dist/blog-filtered-results.d.ts +3 -3
  95. package/dist/blog-grid-author-cards.d.cts +3 -3
  96. package/dist/blog-grid-author-cards.d.ts +3 -3
  97. package/dist/blog-grid-nine-posts.d.cts +3 -3
  98. package/dist/blog-grid-nine-posts.d.ts +3 -3
  99. package/dist/blog-horizontal-cards.d.cts +3 -3
  100. package/dist/blog-horizontal-cards.d.ts +3 -3
  101. package/dist/blog-horizontal-timeline.d.cts +3 -3
  102. package/dist/blog-horizontal-timeline.d.ts +3 -3
  103. package/dist/blog-masonry-featured.d.cts +3 -3
  104. package/dist/blog-masonry-featured.d.ts +3 -3
  105. package/dist/blog-related-articles.d.cts +3 -3
  106. package/dist/blog-related-articles.d.ts +3 -3
  107. package/dist/blog-tech-insights.d.cts +3 -3
  108. package/dist/blog-tech-insights.d.ts +3 -3
  109. package/dist/blur-vignette-grid.d.cts +3 -3
  110. package/dist/blur-vignette-grid.d.ts +3 -3
  111. package/dist/{button-variants-8mtEHxev.d.cts → button-variants-lRElsmTc.d.cts} +1 -1
  112. package/dist/{button-variants-8mtEHxev.d.ts → button-variants-lRElsmTc.d.ts} +1 -1
  113. package/dist/button.d.cts +1 -1
  114. package/dist/button.d.ts +1 -1
  115. package/dist/carousel-animated-sections.d.cts +3 -3
  116. package/dist/carousel-animated-sections.d.ts +3 -3
  117. package/dist/carousel-auto-progress-slides.d.cts +3 -3
  118. package/dist/carousel-auto-progress-slides.d.ts +3 -3
  119. package/dist/carousel-autoplay-progress.d.cts +3 -3
  120. package/dist/carousel-autoplay-progress.d.ts +3 -3
  121. package/dist/carousel-badge-cards.d.cts +3 -3
  122. package/dist/carousel-badge-cards.d.ts +3 -3
  123. package/dist/carousel-demo-link.d.cts +3 -3
  124. package/dist/carousel-demo-link.d.ts +3 -3
  125. package/dist/carousel-feature-badge.d.cts +3 -3
  126. package/dist/carousel-feature-badge.d.ts +3 -3
  127. package/dist/carousel-fullscreen-scroll-fx.d.cts +3 -3
  128. package/dist/carousel-fullscreen-scroll-fx.d.ts +3 -3
  129. package/dist/carousel-gallery-thumbnails.d.cts +3 -3
  130. package/dist/carousel-gallery-thumbnails.d.ts +3 -3
  131. package/dist/carousel-gradient-overlay.d.cts +3 -3
  132. package/dist/carousel-gradient-overlay.d.ts +3 -3
  133. package/dist/carousel-gradient-text.d.cts +3 -3
  134. package/dist/carousel-gradient-text.d.ts +3 -3
  135. package/dist/carousel-horizontal-cards.cjs +8 -6
  136. package/dist/carousel-horizontal-cards.d.cts +3 -3
  137. package/dist/carousel-horizontal-cards.d.ts +3 -3
  138. package/dist/carousel-horizontal-cards.js +8 -6
  139. package/dist/carousel-icon-sidebar.d.cts +3 -3
  140. package/dist/carousel-icon-sidebar.d.ts +3 -3
  141. package/dist/carousel-icon-tabs.d.cts +3 -3
  142. package/dist/carousel-icon-tabs.d.ts +3 -3
  143. package/dist/carousel-image-hero.cjs +85 -160
  144. package/dist/carousel-image-hero.d.cts +4 -8
  145. package/dist/carousel-image-hero.d.ts +4 -8
  146. package/dist/carousel-image-hero.js +85 -160
  147. package/dist/carousel-multi-step-showcase.d.cts +3 -3
  148. package/dist/carousel-multi-step-showcase.d.ts +3 -3
  149. package/dist/carousel-portfolio-hero.cjs +138 -59
  150. package/dist/carousel-portfolio-hero.d.cts +3 -3
  151. package/dist/carousel-portfolio-hero.d.ts +3 -3
  152. package/dist/carousel-portfolio-hero.js +138 -59
  153. package/dist/carousel-product-feature-showcase.cjs +148 -95
  154. package/dist/carousel-product-feature-showcase.d.cts +3 -3
  155. package/dist/carousel-product-feature-showcase.d.ts +3 -3
  156. package/dist/carousel-product-feature-showcase.js +148 -95
  157. package/dist/carousel-progress-slider.cjs +13 -9
  158. package/dist/carousel-progress-slider.d.cts +3 -3
  159. package/dist/carousel-progress-slider.d.ts +3 -3
  160. package/dist/carousel-progress-slider.js +13 -9
  161. package/dist/carousel-scale-focus.d.cts +3 -3
  162. package/dist/carousel-scale-focus.d.ts +3 -3
  163. package/dist/carousel-scrolling-feature-showcase.cjs +105 -54
  164. package/dist/carousel-scrolling-feature-showcase.d.cts +3 -3
  165. package/dist/carousel-scrolling-feature-showcase.d.ts +3 -3
  166. package/dist/carousel-scrolling-feature-showcase.js +105 -54
  167. package/dist/carousel-sidebar-resources.d.cts +3 -3
  168. package/dist/carousel-sidebar-resources.d.ts +3 -3
  169. package/dist/carousel-tabs-content.d.cts +3 -3
  170. package/dist/carousel-tabs-content.d.ts +3 -3
  171. package/dist/case-studies-featured-border.d.cts +3 -3
  172. package/dist/case-studies-featured-border.d.ts +3 -3
  173. package/dist/case-studies-image-grid.d.cts +3 -3
  174. package/dist/case-studies-image-grid.d.ts +3 -3
  175. package/dist/case-studies-stats-card.d.cts +3 -3
  176. package/dist/case-studies-stats-card.d.ts +3 -3
  177. package/dist/case-studies-testimonial-stats.d.cts +3 -3
  178. package/dist/case-studies-testimonial-stats.d.ts +3 -3
  179. package/dist/case-study-prose-sidebar.d.cts +3 -3
  180. package/dist/case-study-prose-sidebar.d.ts +3 -3
  181. package/dist/case-study-stats-metrics.d.cts +3 -3
  182. package/dist/case-study-stats-metrics.d.ts +3 -3
  183. package/dist/case-study-toc-social-sidebar.d.cts +3 -3
  184. package/dist/case-study-toc-social-sidebar.d.ts +3 -3
  185. package/dist/{community-initiatives-BRz60ABw.d.ts → community-initiatives-BeWIIjA4.d.ts} +1 -1
  186. package/dist/{community-initiatives-CES_LEJI.d.cts → community-initiatives-Sm_ZSgyv.d.cts} +1 -1
  187. package/dist/community-initiatives.d.cts +3 -3
  188. package/dist/community-initiatives.d.ts +3 -3
  189. package/dist/comparison-ai-models.d.cts +3 -3
  190. package/dist/comparison-ai-models.d.ts +3 -3
  191. package/dist/comparison-feature-cards.d.cts +3 -3
  192. package/dist/comparison-feature-cards.d.ts +3 -3
  193. package/dist/comparison-feature-grid.d.cts +3 -3
  194. package/dist/comparison-feature-grid.d.ts +3 -3
  195. package/dist/comparison-grid-badges.d.cts +3 -3
  196. package/dist/comparison-grid-badges.d.ts +3 -3
  197. package/dist/comparison-image-cards.d.cts +3 -3
  198. package/dist/comparison-image-cards.d.ts +3 -3
  199. package/dist/comparison-legacy-modern.d.cts +3 -3
  200. package/dist/comparison-legacy-modern.d.ts +3 -3
  201. package/dist/comparison-metrics-rows.d.cts +3 -3
  202. package/dist/comparison-metrics-rows.d.ts +3 -3
  203. package/dist/comparison-table-tabs.d.cts +3 -3
  204. package/dist/comparison-table-tabs.d.ts +3 -3
  205. package/dist/comparison-table-tooltips.d.cts +3 -3
  206. package/dist/comparison-table-tooltips.d.ts +3 -3
  207. package/dist/comparison-table-two-column.d.cts +3 -3
  208. package/dist/comparison-table-two-column.d.ts +3 -3
  209. package/dist/components.d.cts +3 -3
  210. package/dist/components.d.ts +3 -3
  211. package/dist/contact-callback.d.cts +3 -3
  212. package/dist/contact-callback.d.ts +3 -3
  213. package/dist/contact-card.d.cts +3 -3
  214. package/dist/contact-card.d.ts +3 -3
  215. package/dist/contact-careers.d.cts +3 -3
  216. package/dist/contact-careers.d.ts +3 -3
  217. package/dist/contact-catering.d.cts +3 -3
  218. package/dist/contact-catering.d.ts +3 -3
  219. package/dist/contact-consultation.d.cts +3 -3
  220. package/dist/contact-consultation.d.ts +3 -3
  221. package/dist/contact-dark.d.cts +3 -3
  222. package/dist/contact-dark.d.ts +3 -3
  223. package/dist/contact-demo.d.cts +3 -3
  224. package/dist/contact-demo.d.ts +3 -3
  225. package/dist/contact-emergency.d.cts +3 -3
  226. package/dist/contact-emergency.d.ts +3 -3
  227. package/dist/contact-event.d.cts +3 -3
  228. package/dist/contact-event.d.ts +3 -3
  229. package/dist/contact-faq.d.cts +3 -3
  230. package/dist/contact-faq.d.ts +3 -3
  231. package/dist/contact-feedback.d.cts +3 -3
  232. package/dist/contact-feedback.d.ts +3 -3
  233. package/dist/contact-fitness.d.cts +3 -3
  234. package/dist/contact-fitness.d.ts +3 -3
  235. package/dist/contact-floating-banner.d.cts +2 -2
  236. package/dist/contact-floating-banner.d.ts +2 -2
  237. package/dist/contact-guest.d.cts +3 -3
  238. package/dist/contact-guest.d.ts +3 -3
  239. package/dist/contact-help-center.d.cts +3 -3
  240. package/dist/contact-help-center.d.ts +3 -3
  241. package/dist/contact-image.d.cts +3 -3
  242. package/dist/contact-image.d.ts +3 -3
  243. package/dist/contact-insurance.d.cts +3 -3
  244. package/dist/contact-insurance.d.ts +3 -3
  245. package/dist/contact-interview.d.cts +3 -3
  246. package/dist/contact-interview.d.ts +3 -3
  247. package/dist/contact-locations.d.cts +3 -3
  248. package/dist/contact-locations.d.ts +3 -3
  249. package/dist/contact-maintenance.d.cts +3 -3
  250. package/dist/contact-maintenance.d.ts +3 -3
  251. package/dist/contact-map.d.cts +3 -3
  252. package/dist/contact-map.d.ts +3 -3
  253. package/dist/contact-minimal.d.cts +3 -3
  254. package/dist/contact-minimal.d.ts +3 -3
  255. package/dist/contact-moving.d.cts +3 -3
  256. package/dist/contact-moving.d.ts +3 -3
  257. package/dist/contact-multistep.d.cts +3 -3
  258. package/dist/contact-multistep.d.ts +3 -3
  259. package/dist/contact-partnership.d.cts +3 -3
  260. package/dist/contact-partnership.d.ts +3 -3
  261. package/dist/contact-photography.d.cts +3 -3
  262. package/dist/contact-photography.d.ts +3 -3
  263. package/dist/contact-press.d.cts +3 -3
  264. package/dist/contact-press.d.ts +3 -3
  265. package/dist/contact-quote.d.cts +3 -3
  266. package/dist/contact-quote.d.ts +3 -3
  267. package/dist/contact-referral.d.cts +3 -3
  268. package/dist/contact-referral.d.ts +3 -3
  269. package/dist/contact-report.d.cts +3 -3
  270. package/dist/contact-report.d.ts +3 -3
  271. package/dist/contact-reservation.d.cts +3 -3
  272. package/dist/contact-reservation.d.ts +3 -3
  273. package/dist/contact-retreat.d.cts +3 -3
  274. package/dist/contact-retreat.d.ts +3 -3
  275. package/dist/contact-rsvp.d.cts +3 -3
  276. package/dist/contact-rsvp.d.ts +3 -3
  277. package/dist/contact-sales.d.cts +3 -3
  278. package/dist/contact-sales.d.ts +3 -3
  279. package/dist/contact-schedule.d.cts +3 -3
  280. package/dist/contact-schedule.d.ts +3 -3
  281. package/dist/contact-sponsorship.d.cts +3 -3
  282. package/dist/contact-sponsorship.d.ts +3 -3
  283. package/dist/contact-support.d.cts +3 -3
  284. package/dist/contact-support.d.ts +3 -3
  285. package/dist/contact-tenant.d.cts +3 -3
  286. package/dist/contact-tenant.d.ts +3 -3
  287. package/dist/contact-vendor.d.cts +3 -3
  288. package/dist/contact-vendor.d.ts +3 -3
  289. package/dist/contact-volunteer.d.cts +3 -3
  290. package/dist/contact-volunteer.d.ts +3 -3
  291. package/dist/contact-warranty.d.cts +3 -3
  292. package/dist/contact-warranty.d.ts +3 -3
  293. package/dist/contact-wedding.d.cts +3 -3
  294. package/dist/contact-wedding.d.ts +3 -3
  295. package/dist/container.d.cts +3 -3
  296. package/dist/container.d.ts +3 -3
  297. package/dist/cta-accent-background.d.cts +3 -3
  298. package/dist/cta-accent-background.d.ts +3 -3
  299. package/dist/cta-app-download-newsletter.d.cts +3 -3
  300. package/dist/cta-app-download-newsletter.d.ts +3 -3
  301. package/dist/cta-background-icon-badge.d.cts +3 -3
  302. package/dist/cta-background-icon-badge.d.ts +3 -3
  303. package/dist/cta-case-study-testimonial.d.cts +3 -3
  304. package/dist/cta-case-study-testimonial.d.ts +3 -3
  305. package/dist/cta-documentation-links.d.cts +3 -3
  306. package/dist/cta-documentation-links.d.ts +3 -3
  307. package/dist/cta-enterprise-dark-features.d.cts +3 -3
  308. package/dist/cta-enterprise-dark-features.d.ts +3 -3
  309. package/dist/cta-enterprise-split.d.cts +3 -3
  310. package/dist/cta-enterprise-split.d.ts +3 -3
  311. package/dist/cta-feature-cards-grid.d.cts +3 -3
  312. package/dist/cta-feature-cards-grid.d.ts +3 -3
  313. package/dist/cta-feature-checklist.d.cts +3 -3
  314. package/dist/cta-feature-checklist.d.ts +3 -3
  315. package/dist/cta-feature-list.d.cts +3 -3
  316. package/dist/cta-feature-list.d.ts +3 -3
  317. package/dist/cta-fullwidth-background.d.cts +3 -3
  318. package/dist/cta-fullwidth-background.d.ts +3 -3
  319. package/dist/cta-gradient-logos-floating.d.cts +3 -3
  320. package/dist/cta-gradient-logos-floating.d.ts +3 -3
  321. package/dist/cta-gradient-stats-hero.d.cts +3 -3
  322. package/dist/cta-gradient-stats-hero.d.ts +3 -3
  323. package/dist/cta-hero-feature-cards.d.cts +3 -3
  324. package/dist/cta-hero-feature-cards.d.ts +3 -3
  325. package/dist/cta-image-overlay-arrow.d.cts +3 -3
  326. package/dist/cta-image-overlay-arrow.d.ts +3 -3
  327. package/dist/cta-image-overlay-centered.d.cts +3 -3
  328. package/dist/cta-image-overlay-centered.d.ts +3 -3
  329. package/dist/cta-minimal-separator.d.cts +3 -3
  330. package/dist/cta-minimal-separator.d.ts +3 -3
  331. package/dist/cta-newsletter-features.d.cts +3 -3
  332. package/dist/cta-newsletter-features.d.ts +3 -3
  333. package/dist/cta-pattern-background.d.cts +3 -3
  334. package/dist/cta-pattern-background.d.ts +3 -3
  335. package/dist/cta-platform-demo.d.cts +3 -3
  336. package/dist/cta-platform-demo.d.ts +3 -3
  337. package/dist/cta-simple-centered.d.cts +3 -3
  338. package/dist/cta-simple-centered.d.ts +3 -3
  339. package/dist/cta-split-gradient-image.d.cts +3 -3
  340. package/dist/cta-split-gradient-image.d.ts +3 -3
  341. package/dist/cta-split-image-logos.d.cts +3 -3
  342. package/dist/cta-split-image-logos.d.ts +3 -3
  343. package/dist/cta-split-image.d.cts +3 -3
  344. package/dist/cta-split-image.d.ts +3 -3
  345. package/dist/cta-stacked-cards.d.cts +3 -3
  346. package/dist/cta-stacked-cards.d.ts +3 -3
  347. package/dist/cta-video-background-hero.d.cts +3 -3
  348. package/dist/cta-video-background-hero.d.ts +3 -3
  349. package/dist/cta-workflow-tabs.d.cts +3 -3
  350. package/dist/cta-workflow-tabs.d.ts +3 -3
  351. package/dist/expandable-case-study-cards.d.cts +3 -3
  352. package/dist/expandable-case-study-cards.d.ts +3 -3
  353. package/dist/faq-badge-support.d.cts +3 -3
  354. package/dist/faq-badge-support.d.ts +3 -3
  355. package/dist/faq-bordered-badge.d.cts +3 -3
  356. package/dist/faq-bordered-badge.d.ts +3 -3
  357. package/dist/faq-card-categories.d.cts +3 -3
  358. package/dist/faq-card-categories.d.ts +3 -3
  359. package/dist/faq-categorized-sections.d.cts +3 -3
  360. package/dist/faq-categorized-sections.d.ts +3 -3
  361. package/dist/faq-centered-accordion.d.cts +3 -3
  362. package/dist/faq-centered-accordion.d.ts +3 -3
  363. package/dist/faq-gradient-categories.d.cts +3 -3
  364. package/dist/faq-gradient-categories.d.ts +3 -3
  365. package/dist/faq-icon-benefits.d.cts +3 -3
  366. package/dist/faq-icon-benefits.d.ts +3 -3
  367. package/dist/faq-muted-cards.d.cts +3 -3
  368. package/dist/faq-muted-cards.d.ts +3 -3
  369. package/dist/faq-numbered-grid.d.cts +3 -3
  370. package/dist/faq-numbered-grid.d.ts +3 -3
  371. package/dist/faq-numbered-list.d.cts +3 -3
  372. package/dist/faq-numbered-list.d.ts +3 -3
  373. package/dist/faq-profile-sidebar.d.cts +3 -3
  374. package/dist/faq-profile-sidebar.d.ts +3 -3
  375. package/dist/faq-rounded-cards.d.cts +3 -3
  376. package/dist/faq-rounded-cards.d.ts +3 -3
  377. package/dist/faq-sidebar-navigation.d.cts +3 -3
  378. package/dist/faq-sidebar-navigation.d.ts +3 -3
  379. package/dist/faq-simple-accordion.d.cts +3 -3
  380. package/dist/faq-simple-accordion.d.ts +3 -3
  381. package/dist/faq-split-help.d.cts +3 -3
  382. package/dist/faq-split-help.d.ts +3 -3
  383. package/dist/faq-static-list.d.cts +3 -3
  384. package/dist/faq-static-list.d.ts +3 -3
  385. package/dist/feature-accordion-image.cjs +9 -8
  386. package/dist/feature-accordion-image.d.cts +3 -3
  387. package/dist/feature-accordion-image.d.ts +3 -3
  388. package/dist/feature-accordion-image.js +9 -8
  389. package/dist/feature-animated-carousel.cjs +859 -0
  390. package/dist/feature-animated-carousel.d.cts +105 -0
  391. package/dist/feature-animated-carousel.d.ts +105 -0
  392. package/dist/feature-animated-carousel.js +838 -0
  393. package/dist/feature-badge-grid-six.cjs +20 -17
  394. package/dist/feature-badge-grid-six.d.cts +3 -3
  395. package/dist/feature-badge-grid-six.d.ts +3 -3
  396. package/dist/feature-badge-grid-six.js +21 -18
  397. package/dist/feature-bento-image-grid.cjs +12 -8
  398. package/dist/feature-bento-image-grid.d.cts +3 -3
  399. package/dist/feature-bento-image-grid.d.ts +3 -3
  400. package/dist/feature-bento-image-grid.js +12 -8
  401. package/dist/feature-bento-utilities.cjs +9 -5
  402. package/dist/feature-bento-utilities.d.cts +3 -3
  403. package/dist/feature-bento-utilities.d.ts +3 -3
  404. package/dist/feature-bento-utilities.js +9 -5
  405. package/dist/feature-capabilities-grid.cjs +41 -38
  406. package/dist/feature-capabilities-grid.d.cts +3 -3
  407. package/dist/feature-capabilities-grid.d.ts +3 -3
  408. package/dist/feature-capabilities-grid.js +41 -38
  409. package/dist/feature-card-grid-linked.cjs +18 -18
  410. package/dist/feature-card-grid-linked.d.cts +3 -3
  411. package/dist/feature-card-grid-linked.d.ts +3 -3
  412. package/dist/feature-card-grid-linked.js +19 -19
  413. package/dist/feature-carousel-progress.cjs +3 -3
  414. package/dist/feature-carousel-progress.d.cts +3 -3
  415. package/dist/feature-carousel-progress.d.ts +3 -3
  416. package/dist/feature-carousel-progress.js +4 -4
  417. package/dist/feature-category-image-cards.cjs +3 -3
  418. package/dist/feature-category-image-cards.d.cts +3 -3
  419. package/dist/feature-category-image-cards.d.ts +3 -3
  420. package/dist/feature-category-image-cards.js +4 -4
  421. package/dist/feature-checklist-image.cjs +2 -2
  422. package/dist/feature-checklist-image.d.cts +3 -3
  423. package/dist/feature-checklist-image.d.ts +3 -3
  424. package/dist/feature-checklist-image.js +2 -2
  425. package/dist/feature-checklist-three-column.cjs +6 -6
  426. package/dist/feature-checklist-three-column.d.cts +3 -3
  427. package/dist/feature-checklist-three-column.d.ts +3 -3
  428. package/dist/feature-checklist-three-column.js +7 -7
  429. package/dist/feature-icon-grid-accent.cjs +2 -2
  430. package/dist/feature-icon-grid-accent.d.cts +3 -3
  431. package/dist/feature-icon-grid-accent.d.ts +3 -3
  432. package/dist/feature-icon-grid-accent.js +2 -2
  433. package/dist/feature-icon-grid-bordered.cjs +29 -31
  434. package/dist/feature-icon-grid-bordered.d.cts +12 -12
  435. package/dist/feature-icon-grid-bordered.d.ts +12 -12
  436. package/dist/feature-icon-grid-bordered.js +30 -32
  437. package/dist/feature-icon-grid-muted.cjs +6 -6
  438. package/dist/feature-icon-grid-muted.d.cts +12 -12
  439. package/dist/feature-icon-grid-muted.d.ts +12 -12
  440. package/dist/feature-icon-grid-muted.js +7 -7
  441. package/dist/feature-icon-tabs-content.cjs +8 -8
  442. package/dist/feature-icon-tabs-content.d.cts +16 -16
  443. package/dist/feature-icon-tabs-content.d.ts +16 -16
  444. package/dist/feature-icon-tabs-content.js +9 -9
  445. package/dist/feature-image-cards-three-column.cjs +26 -27
  446. package/dist/feature-image-cards-three-column.d.cts +3 -3
  447. package/dist/feature-image-cards-three-column.d.ts +3 -3
  448. package/dist/feature-image-cards-three-column.js +27 -28
  449. package/dist/feature-image-overlay-badge.cjs +23 -21
  450. package/dist/feature-image-overlay-badge.d.cts +3 -3
  451. package/dist/feature-image-overlay-badge.d.ts +3 -3
  452. package/dist/feature-image-overlay-badge.js +24 -22
  453. package/dist/feature-integration-cards.cjs +19 -18
  454. package/dist/feature-integration-cards.d.cts +3 -3
  455. package/dist/feature-integration-cards.d.ts +3 -3
  456. package/dist/feature-integration-cards.js +20 -19
  457. package/dist/feature-numbered-cards.cjs +2 -2
  458. package/dist/feature-numbered-cards.d.cts +3 -3
  459. package/dist/feature-numbered-cards.d.ts +3 -3
  460. package/dist/feature-numbered-cards.js +3 -3
  461. package/dist/feature-pattern-grid-links.cjs +26 -29
  462. package/dist/feature-pattern-grid-links.d.cts +4 -8
  463. package/dist/feature-pattern-grid-links.d.ts +4 -8
  464. package/dist/feature-pattern-grid-links.js +27 -30
  465. package/dist/feature-showcase.cjs +441 -40
  466. package/dist/feature-showcase.d.cts +65 -8
  467. package/dist/feature-showcase.d.ts +65 -8
  468. package/dist/feature-showcase.js +438 -37
  469. package/dist/feature-split-image-reverse.cjs +15 -36
  470. package/dist/feature-split-image-reverse.d.cts +3 -3
  471. package/dist/feature-split-image-reverse.d.ts +3 -3
  472. package/dist/feature-split-image-reverse.js +16 -37
  473. package/dist/feature-split-image.cjs +15 -36
  474. package/dist/feature-split-image.d.cts +3 -3
  475. package/dist/feature-split-image.d.ts +3 -3
  476. package/dist/feature-split-image.js +16 -37
  477. package/dist/feature-stats-highlight.cjs +20 -32
  478. package/dist/feature-stats-highlight.d.cts +3 -3
  479. package/dist/feature-stats-highlight.d.ts +3 -3
  480. package/dist/feature-stats-highlight.js +21 -33
  481. package/dist/feature-tabbed-content-image.cjs +11 -6
  482. package/dist/feature-tabbed-content-image.d.cts +3 -3
  483. package/dist/feature-tabbed-content-image.d.ts +3 -3
  484. package/dist/feature-tabbed-content-image.js +11 -6
  485. package/dist/feature-three-column-values.cjs +6 -6
  486. package/dist/feature-three-column-values.d.cts +3 -3
  487. package/dist/feature-three-column-values.d.ts +3 -3
  488. package/dist/feature-three-column-values.js +6 -6
  489. package/dist/feature-utility-cards-grid.cjs +17 -15
  490. package/dist/feature-utility-cards-grid.d.cts +3 -3
  491. package/dist/feature-utility-cards-grid.d.ts +3 -3
  492. package/dist/feature-utility-cards-grid.js +18 -16
  493. package/dist/footer-animated-social.d.cts +3 -3
  494. package/dist/footer-animated-social.d.ts +3 -3
  495. package/dist/footer-background-card.d.cts +3 -3
  496. package/dist/footer-background-card.d.ts +3 -3
  497. package/dist/footer-brand-description.d.cts +3 -3
  498. package/dist/footer-brand-description.d.ts +3 -3
  499. package/dist/footer-brand-links-contact.d.cts +3 -3
  500. package/dist/footer-brand-links-contact.d.ts +3 -3
  501. package/dist/footer-contact-card.d.cts +3 -3
  502. package/dist/footer-contact-card.d.ts +3 -3
  503. package/dist/footer-cta-banner.d.cts +3 -3
  504. package/dist/footer-cta-banner.d.ts +3 -3
  505. package/dist/footer-cta-social.d.cts +3 -3
  506. package/dist/footer-cta-social.d.ts +3 -3
  507. package/dist/footer-links-grid.d.cts +3 -3
  508. package/dist/footer-links-grid.d.ts +3 -3
  509. package/dist/footer-nav-social.d.cts +3 -3
  510. package/dist/footer-nav-social.d.ts +3 -3
  511. package/dist/footer-newsletter-grid.d.cts +3 -3
  512. package/dist/footer-newsletter-grid.d.ts +3 -3
  513. package/dist/footer-newsletter-minimal.d.cts +3 -3
  514. package/dist/footer-newsletter-minimal.d.ts +3 -3
  515. package/dist/footer-simple-centered.d.cts +3 -3
  516. package/dist/footer-simple-centered.d.ts +3 -3
  517. package/dist/footer-social-apps.d.cts +3 -3
  518. package/dist/footer-social-apps.d.ts +3 -3
  519. package/dist/footer-social-newsletter.d.cts +3 -3
  520. package/dist/footer-social-newsletter.d.ts +3 -3
  521. package/dist/hero-ad-campaign-expert.d.cts +3 -3
  522. package/dist/hero-ad-campaign-expert.d.ts +3 -3
  523. package/dist/hero-adaptable-product-grid.d.cts +3 -3
  524. package/dist/hero-adaptable-product-grid.d.ts +3 -3
  525. package/dist/hero-agency-animated-images.d.cts +3 -3
  526. package/dist/hero-agency-animated-images.d.ts +3 -3
  527. package/dist/hero-ai-powered-carousel.d.cts +3 -3
  528. package/dist/hero-ai-powered-carousel.d.ts +3 -3
  529. package/dist/hero-announcement-badge.d.cts +3 -3
  530. package/dist/hero-announcement-badge.d.ts +3 -3
  531. package/dist/hero-architecture-fullscreen.d.cts +3 -3
  532. package/dist/hero-architecture-fullscreen.d.ts +3 -3
  533. package/dist/hero-badge-image-split.d.cts +3 -3
  534. package/dist/hero-badge-image-split.d.ts +3 -3
  535. package/dist/hero-badge-shadow-overlay.d.cts +3 -3
  536. package/dist/hero-badge-shadow-overlay.d.ts +3 -3
  537. package/dist/hero-billing-platform-logos.d.cts +3 -3
  538. package/dist/hero-billing-platform-logos.d.ts +3 -3
  539. package/dist/hero-business-carousel-dots.d.cts +3 -3
  540. package/dist/hero-business-carousel-dots.d.ts +3 -3
  541. package/dist/hero-business-operations-mosaic.d.cts +3 -3
  542. package/dist/hero-business-operations-mosaic.d.ts +3 -3
  543. package/dist/hero-centered-gradient-cta.d.cts +3 -3
  544. package/dist/hero-centered-gradient-cta.d.ts +3 -3
  545. package/dist/hero-centered-image-grid.d.cts +3 -3
  546. package/dist/hero-centered-image-grid.d.ts +3 -3
  547. package/dist/hero-centered-screenshot.d.cts +3 -3
  548. package/dist/hero-centered-screenshot.d.ts +3 -3
  549. package/dist/hero-coming-soon-countdown.d.cts +3 -3
  550. package/dist/hero-coming-soon-countdown.d.ts +3 -3
  551. package/dist/hero-community-survey-cta.d.cts +3 -3
  552. package/dist/hero-community-survey-cta.d.ts +3 -3
  553. package/dist/hero-conversation-intelligence.d.cts +3 -3
  554. package/dist/hero-conversation-intelligence.d.ts +3 -3
  555. package/dist/hero-conversion-video-play.d.cts +3 -3
  556. package/dist/hero-conversion-video-play.d.ts +3 -3
  557. package/dist/hero-creative-studio-stacked.d.cts +3 -3
  558. package/dist/hero-creative-studio-stacked.d.ts +3 -3
  559. package/dist/hero-crm-streamlined.d.cts +3 -3
  560. package/dist/hero-crm-streamlined.d.ts +3 -3
  561. package/dist/hero-customer-support-layered.d.cts +3 -3
  562. package/dist/hero-customer-support-layered.d.ts +3 -3
  563. package/dist/hero-dashed-border-features.d.cts +3 -3
  564. package/dist/hero-dashed-border-features.d.ts +3 -3
  565. package/dist/hero-design-carousel-portfolio.d.cts +3 -3
  566. package/dist/hero-design-carousel-portfolio.d.ts +3 -3
  567. package/dist/hero-design-showcase-logos.d.cts +3 -3
  568. package/dist/hero-design-showcase-logos.d.ts +3 -3
  569. package/dist/hero-design-system-3d.d.cts +3 -3
  570. package/dist/hero-design-system-3d.d.ts +3 -3
  571. package/dist/hero-developer-tools-code.d.cts +3 -3
  572. package/dist/hero-developer-tools-code.d.ts +3 -3
  573. package/dist/hero-digital-agency-fullscreen.d.cts +3 -3
  574. package/dist/hero-digital-agency-fullscreen.d.ts +3 -3
  575. package/dist/hero-ecommerce-product-showcase.d.cts +3 -3
  576. package/dist/hero-ecommerce-product-showcase.d.ts +3 -3
  577. package/dist/hero-enterprise-security.d.cts +3 -3
  578. package/dist/hero-enterprise-security.d.ts +3 -3
  579. package/dist/hero-event-registration.d.cts +3 -3
  580. package/dist/hero-event-registration.d.ts +3 -3
  581. package/dist/hero-feature-cards-grid.d.cts +3 -3
  582. package/dist/hero-feature-cards-grid.d.ts +3 -3
  583. package/dist/hero-floating-images.d.cts +3 -3
  584. package/dist/hero-floating-images.d.ts +3 -3
  585. package/dist/hero-fullscreen-background-image.d.cts +3 -3
  586. package/dist/hero-fullscreen-background-image.d.ts +3 -3
  587. package/dist/hero-fullscreen-logo-cta.d.cts +3 -3
  588. package/dist/hero-fullscreen-logo-cta.d.ts +3 -3
  589. package/dist/hero-gradient-avatars-rating.d.cts +3 -3
  590. package/dist/hero-gradient-avatars-rating.d.ts +3 -3
  591. package/dist/hero-gradient-client-focused.d.cts +3 -3
  592. package/dist/hero-gradient-client-focused.d.ts +3 -3
  593. package/dist/hero-grid-pattern-efficiency.d.cts +3 -3
  594. package/dist/hero-grid-pattern-efficiency.d.ts +3 -3
  595. package/dist/hero-grid-pattern-solutions.d.cts +3 -3
  596. package/dist/hero-grid-pattern-solutions.d.ts +3 -3
  597. package/dist/hero-hiring-animated-text.d.cts +3 -3
  598. package/dist/hero-hiring-animated-text.d.ts +3 -3
  599. package/dist/hero-image-left-content.d.cts +3 -3
  600. package/dist/hero-image-left-content.d.ts +3 -3
  601. package/dist/hero-image-slider.d.cts +3 -3
  602. package/dist/hero-image-slider.d.ts +3 -3
  603. package/dist/hero-innovation-image-grid.d.cts +3 -3
  604. package/dist/hero-innovation-image-grid.d.ts +3 -3
  605. package/dist/hero-logo-centered-screenshot.d.cts +3 -3
  606. package/dist/hero-logo-centered-screenshot.d.ts +3 -3
  607. package/dist/hero-marketplace-scattered-images.d.cts +3 -3
  608. package/dist/hero-marketplace-scattered-images.d.ts +3 -3
  609. package/dist/hero-mental-health-team.d.cts +3 -3
  610. package/dist/hero-mental-health-team.d.ts +3 -3
  611. package/dist/hero-mentorship-video-split.d.cts +3 -3
  612. package/dist/hero-mentorship-video-split.d.ts +3 -3
  613. package/dist/hero-minimal-centered-dark.d.cts +3 -3
  614. package/dist/hero-minimal-centered-dark.d.ts +3 -3
  615. package/dist/hero-mobile-app-download.d.cts +3 -3
  616. package/dist/hero-mobile-app-download.d.ts +3 -3
  617. package/dist/hero-newsletter-minimal.d.cts +3 -3
  618. package/dist/hero-newsletter-minimal.d.ts +3 -3
  619. package/dist/hero-overlay-cta-grid.d.cts +3 -3
  620. package/dist/hero-overlay-cta-grid.d.ts +3 -3
  621. package/dist/hero-pattern-badge-logos.d.cts +3 -3
  622. package/dist/hero-pattern-badge-logos.d.ts +3 -3
  623. package/dist/hero-pattern-logo-tech-stack.d.cts +3 -3
  624. package/dist/hero-pattern-logo-tech-stack.d.ts +3 -3
  625. package/dist/hero-platform-features-grid.d.cts +3 -3
  626. package/dist/hero-platform-features-grid.d.ts +3 -3
  627. package/dist/hero-portfolio-creative.d.cts +3 -3
  628. package/dist/hero-portfolio-creative.d.ts +3 -3
  629. package/dist/hero-premium-split-avatars.d.cts +3 -3
  630. package/dist/hero-premium-split-avatars.d.ts +3 -3
  631. package/dist/hero-presentation-platform-video.d.cts +3 -3
  632. package/dist/hero-presentation-platform-video.d.ts +3 -3
  633. package/dist/hero-pricing-comparison.d.cts +3 -3
  634. package/dist/hero-pricing-comparison.d.ts +3 -3
  635. package/dist/hero-product-showcase-floating.d.cts +3 -3
  636. package/dist/hero-product-showcase-floating.d.ts +3 -3
  637. package/dist/hero-productivity-launcher-video.d.cts +3 -3
  638. package/dist/hero-productivity-launcher-video.d.ts +3 -3
  639. package/dist/hero-saas-dashboard-preview.d.cts +3 -3
  640. package/dist/hero-saas-dashboard-preview.d.ts +3 -3
  641. package/dist/hero-shared-inbox-layered.d.cts +3 -3
  642. package/dist/hero-shared-inbox-layered.d.ts +3 -3
  643. package/dist/hero-simple-centered-image.d.cts +3 -3
  644. package/dist/hero-simple-centered-image.d.ts +3 -3
  645. package/dist/hero-software-growth-video-dialog.d.cts +3 -3
  646. package/dist/hero-software-growth-video-dialog.d.ts +3 -3
  647. package/dist/hero-spiral-pattern-cards.d.cts +3 -3
  648. package/dist/hero-spiral-pattern-cards.d.ts +3 -3
  649. package/dist/hero-split-geometric-shapes.d.cts +3 -3
  650. package/dist/hero-split-geometric-shapes.d.ts +3 -3
  651. package/dist/hero-split-icon-cards.d.cts +3 -3
  652. package/dist/hero-split-icon-cards.d.ts +3 -3
  653. package/dist/hero-split-image-newsletter.d.cts +3 -3
  654. package/dist/hero-split-image-newsletter.d.ts +3 -3
  655. package/dist/hero-split-spiral-shapes.d.cts +3 -3
  656. package/dist/hero-split-spiral-shapes.d.ts +3 -3
  657. package/dist/hero-startup-launch-cta.d.cts +3 -3
  658. package/dist/hero-startup-launch-cta.d.ts +3 -3
  659. package/dist/hero-stats-social-proof.d.cts +3 -3
  660. package/dist/hero-stats-social-proof.d.ts +3 -3
  661. package/dist/hero-task-timer-animated.d.cts +3 -3
  662. package/dist/hero-task-timer-animated.d.ts +3 -3
  663. package/dist/hero-tech-carousel.d.cts +3 -3
  664. package/dist/hero-tech-carousel.d.ts +3 -3
  665. package/dist/hero-testimonial-image-grid.d.cts +3 -3
  666. package/dist/hero-testimonial-image-grid.d.ts +3 -3
  667. package/dist/hero-therapy-testimonial-grid.d.cts +3 -3
  668. package/dist/hero-therapy-testimonial-grid.d.ts +3 -3
  669. package/dist/hero-ui-library-showcase.d.cts +3 -3
  670. package/dist/hero-ui-library-showcase.d.ts +3 -3
  671. package/dist/hero-video-background-dark.d.cts +3 -3
  672. package/dist/hero-video-background-dark.d.ts +3 -3
  673. package/dist/hero-video-dialog-gradient.d.cts +3 -3
  674. package/dist/hero-video-dialog-gradient.d.ts +3 -3
  675. package/dist/hero-video-overlay-stars.d.cts +3 -3
  676. package/dist/hero-video-overlay-stars.d.ts +3 -3
  677. package/dist/hero-welcome-asymmetric-images.d.cts +3 -3
  678. package/dist/hero-welcome-asymmetric-images.d.ts +3 -3
  679. package/dist/image-slider.d.cts +2 -2
  680. package/dist/image-slider.d.ts +2 -2
  681. package/dist/index.d.cts +3 -3
  682. package/dist/index.d.ts +3 -3
  683. package/dist/industries-badge-list-bordered.d.cts +3 -3
  684. package/dist/industries-badge-list-bordered.d.ts +3 -3
  685. package/dist/industries-expandable-showcase.d.cts +3 -3
  686. package/dist/industries-expandable-showcase.d.ts +3 -3
  687. package/dist/industries-hover-reveal-grid.d.cts +3 -3
  688. package/dist/industries-hover-reveal-grid.d.ts +3 -3
  689. package/dist/industries-timeline-table.d.cts +3 -3
  690. package/dist/industries-timeline-table.d.ts +3 -3
  691. package/dist/interior-carousel.d.cts +3 -3
  692. package/dist/interior-carousel.d.ts +3 -3
  693. package/dist/link-page-bento-layout.d.cts +3 -3
  694. package/dist/link-page-bento-layout.d.ts +3 -3
  695. package/dist/link-page-grid-cards.d.cts +3 -3
  696. package/dist/link-page-grid-cards.d.ts +3 -3
  697. package/dist/link-page-minimal-profile.d.cts +3 -3
  698. package/dist/link-page-minimal-profile.d.ts +3 -3
  699. package/dist/link-page-newsletter-social.d.cts +3 -3
  700. package/dist/link-page-newsletter-social.d.ts +3 -3
  701. package/dist/link-tree-block.d.cts +3 -3
  702. package/dist/link-tree-block.d.ts +3 -3
  703. package/dist/list-searchable-grid.d.cts +3 -3
  704. package/dist/list-searchable-grid.d.ts +3 -3
  705. package/dist/logos-carousel-heading.d.cts +3 -3
  706. package/dist/logos-carousel-heading.d.ts +3 -3
  707. package/dist/logos-centered-simple.d.cts +3 -3
  708. package/dist/logos-centered-simple.d.ts +3 -3
  709. package/dist/logos-certifications-grid.d.cts +3 -3
  710. package/dist/logos-certifications-grid.d.ts +3 -3
  711. package/dist/logos-double-carousel-pattern.d.cts +3 -3
  712. package/dist/logos-double-carousel-pattern.d.ts +3 -3
  713. package/dist/logos-inline-tagline.d.cts +3 -3
  714. package/dist/logos-inline-tagline.d.ts +3 -3
  715. package/dist/logos-marquee-muted.d.cts +3 -3
  716. package/dist/logos-marquee-muted.d.ts +3 -3
  717. package/dist/logos-minimal-carousel.d.cts +3 -3
  718. package/dist/logos-minimal-carousel.d.ts +3 -3
  719. package/dist/logos-numbered-carousel.d.cts +3 -3
  720. package/dist/logos-numbered-carousel.d.ts +3 -3
  721. package/dist/logos-partner-grid-sidebar.d.cts +3 -3
  722. package/dist/logos-partner-grid-sidebar.d.ts +3 -3
  723. package/dist/logos-partner-network.d.cts +3 -3
  724. package/dist/logos-partner-network.d.ts +3 -3
  725. package/dist/logos-two-row-grid.d.cts +3 -3
  726. package/dist/logos-two-row-grid.d.ts +3 -3
  727. package/dist/masonry-motion-grid.d.cts +3 -3
  728. package/dist/masonry-motion-grid.d.ts +3 -3
  729. package/dist/media-hover-ctas.d.cts +3 -3
  730. package/dist/media-hover-ctas.d.ts +3 -3
  731. package/dist/navbar-animated-preview.d.cts +3 -3
  732. package/dist/navbar-animated-preview.d.ts +3 -3
  733. package/dist/navbar-centered-menu.d.cts +3 -3
  734. package/dist/navbar-centered-menu.d.ts +3 -3
  735. package/dist/navbar-dark-icons.d.cts +3 -3
  736. package/dist/navbar-dark-icons.d.ts +3 -3
  737. package/dist/navbar-dropdown-menu.d.cts +3 -3
  738. package/dist/navbar-dropdown-menu.d.ts +3 -3
  739. package/dist/navbar-education-platform.d.cts +3 -3
  740. package/dist/navbar-education-platform.d.ts +3 -3
  741. package/dist/navbar-enterprise-mega.d.cts +3 -3
  742. package/dist/navbar-enterprise-mega.d.ts +3 -3
  743. package/dist/navbar-feature-grid.d.cts +3 -3
  744. package/dist/navbar-feature-grid.d.ts +3 -3
  745. package/dist/navbar-floating-pill.d.cts +3 -3
  746. package/dist/navbar-floating-pill.d.ts +3 -3
  747. package/dist/navbar-fullscreen-menu.d.cts +3 -3
  748. package/dist/navbar-fullscreen-menu.d.ts +3 -3
  749. package/dist/navbar-icon-links.d.cts +3 -3
  750. package/dist/navbar-icon-links.d.ts +3 -3
  751. package/dist/navbar-image-preview.d.cts +3 -3
  752. package/dist/navbar-image-preview.d.ts +3 -3
  753. package/dist/navbar-mega-menu.d.cts +3 -3
  754. package/dist/navbar-mega-menu.d.ts +3 -3
  755. package/dist/navbar-multi-column-groups.d.cts +3 -3
  756. package/dist/navbar-multi-column-groups.d.ts +3 -3
  757. package/dist/navbar-platform-resources.d.cts +3 -3
  758. package/dist/navbar-platform-resources.d.ts +3 -3
  759. package/dist/navbar-search-focused.d.cts +3 -3
  760. package/dist/navbar-search-focused.d.ts +3 -3
  761. package/dist/navbar-sidebar-mobile.d.cts +3 -3
  762. package/dist/navbar-sidebar-mobile.d.ts +3 -3
  763. package/dist/navbar-simple-links.d.cts +3 -3
  764. package/dist/navbar-simple-links.d.ts +3 -3
  765. package/dist/navbar-split-cta.d.cts +3 -3
  766. package/dist/navbar-split-cta.d.ts +3 -3
  767. package/dist/navbar-sticky-compact.d.cts +3 -3
  768. package/dist/navbar-sticky-compact.d.ts +3 -3
  769. package/dist/navbar-tabbed-sections.cjs +23 -16
  770. package/dist/navbar-tabbed-sections.d.cts +3 -3
  771. package/dist/navbar-tabbed-sections.d.ts +3 -3
  772. package/dist/navbar-tabbed-sections.js +23 -16
  773. package/dist/navbar-transparent-overlay.d.cts +3 -3
  774. package/dist/navbar-transparent-overlay.d.ts +3 -3
  775. package/dist/page-hero-banner.d.cts +3 -3
  776. package/dist/page-hero-banner.d.ts +3 -3
  777. package/dist/pressable.d.cts +1 -1
  778. package/dist/pressable.d.ts +1 -1
  779. package/dist/process-expandable-timeline.d.cts +3 -3
  780. package/dist/process-expandable-timeline.d.ts +3 -3
  781. package/dist/process-hover-cards.d.cts +3 -3
  782. package/dist/process-hover-cards.d.ts +3 -3
  783. package/dist/process-icon-timeline.d.cts +3 -3
  784. package/dist/process-icon-timeline.d.ts +3 -3
  785. package/dist/process-mission-principles.d.cts +3 -3
  786. package/dist/process-mission-principles.d.ts +3 -3
  787. package/dist/process-numbered-services.d.cts +3 -3
  788. package/dist/process-numbered-services.d.ts +3 -3
  789. package/dist/process-roadmap-timeline.d.cts +3 -3
  790. package/dist/process-roadmap-timeline.d.ts +3 -3
  791. package/dist/process-scroll-image.d.cts +3 -3
  792. package/dist/process-scroll-image.d.ts +3 -3
  793. package/dist/process-steps-grid.d.cts +3 -3
  794. package/dist/process-steps-grid.d.ts +3 -3
  795. package/dist/process-sticky-steps.d.cts +3 -3
  796. package/dist/process-sticky-steps.d.ts +3 -3
  797. package/dist/project-alternating-motion.d.cts +3 -3
  798. package/dist/project-alternating-motion.d.ts +3 -3
  799. package/dist/project-background-reveal.d.cts +3 -3
  800. package/dist/project-background-reveal.d.ts +3 -3
  801. package/dist/project-card-overlay.d.cts +3 -3
  802. package/dist/project-card-overlay.d.ts +3 -3
  803. package/dist/project-carousel-cinematic.d.cts +3 -3
  804. package/dist/project-carousel-cinematic.d.ts +3 -3
  805. package/dist/project-carousel-detail-cards.d.cts +3 -3
  806. package/dist/project-carousel-detail-cards.d.ts +3 -3
  807. package/dist/project-carousel-minimal.d.cts +3 -3
  808. package/dist/project-carousel-minimal.d.ts +3 -3
  809. package/dist/project-detail-architecture-carousel.d.cts +3 -3
  810. package/dist/project-detail-architecture-carousel.d.ts +3 -3
  811. package/dist/project-experience-quote.d.cts +3 -3
  812. package/dist/project-experience-quote.d.ts +3 -3
  813. package/dist/project-featured-carousel.d.cts +3 -3
  814. package/dist/project-featured-carousel.d.ts +3 -3
  815. package/dist/project-filterable-gallery.d.cts +3 -3
  816. package/dist/project-filterable-gallery.d.ts +3 -3
  817. package/dist/project-filterable-three-column.d.cts +3 -3
  818. package/dist/project-filterable-three-column.d.ts +3 -3
  819. package/dist/project-grid-gallery.d.cts +3 -3
  820. package/dist/project-grid-gallery.d.ts +3 -3
  821. package/dist/project-grid-motion.d.cts +3 -3
  822. package/dist/project-grid-motion.d.ts +3 -3
  823. package/dist/project-horizontal-cards.d.cts +3 -3
  824. package/dist/project-horizontal-cards.d.ts +3 -3
  825. package/dist/project-hover-reveal-grid.d.cts +3 -3
  826. package/dist/project-hover-reveal-grid.d.ts +3 -3
  827. package/dist/project-interactive-hover-reveal.d.cts +3 -3
  828. package/dist/project-interactive-hover-reveal.d.ts +3 -3
  829. package/dist/project-masonry-columns.d.cts +3 -3
  830. package/dist/project-masonry-columns.d.ts +3 -3
  831. package/dist/project-nature-mosaic.d.cts +3 -3
  832. package/dist/project-nature-mosaic.d.ts +3 -3
  833. package/dist/project-scroll-reveal.d.cts +3 -3
  834. package/dist/project-scroll-reveal.d.ts +3 -3
  835. package/dist/project-showcase-alternating.d.cts +3 -3
  836. package/dist/project-showcase-alternating.d.ts +3 -3
  837. package/dist/project-sticky-scroll.d.cts +3 -3
  838. package/dist/project-sticky-scroll.d.ts +3 -3
  839. package/dist/project-studio-hover-preview.d.cts +3 -3
  840. package/dist/project-studio-hover-preview.d.ts +3 -3
  841. package/dist/project-table-list.d.cts +3 -3
  842. package/dist/project-table-list.d.ts +3 -3
  843. package/dist/project-video-carousel.d.cts +3 -3
  844. package/dist/project-video-carousel.d.ts +3 -3
  845. package/dist/project-video-hover-bento.d.cts +3 -3
  846. package/dist/project-video-hover-bento.d.ts +3 -3
  847. package/dist/project-video-hover-grid.d.cts +3 -3
  848. package/dist/project-video-hover-grid.d.ts +3 -3
  849. package/dist/project-video-hover-rounded.d.cts +3 -3
  850. package/dist/project-video-hover-rounded.d.ts +3 -3
  851. package/dist/project-video-hover-stack.d.cts +3 -3
  852. package/dist/project-video-hover-stack.d.ts +3 -3
  853. package/dist/project-video-hover-two-by-two.d.cts +3 -3
  854. package/dist/project-video-hover-two-by-two.d.ts +3 -3
  855. package/dist/project-work-showcase.d.cts +3 -3
  856. package/dist/project-work-showcase.d.ts +3 -3
  857. package/dist/registry.cjs +946 -706
  858. package/dist/registry.js +948 -708
  859. package/dist/resource-detail-whitepaper-sidebar.d.cts +3 -3
  860. package/dist/resource-detail-whitepaper-sidebar.d.ts +3 -3
  861. package/dist/resource-list-course-cards.d.cts +3 -3
  862. package/dist/resource-list-course-cards.d.ts +3 -3
  863. package/dist/resource-list-featured-articles.d.cts +3 -3
  864. package/dist/resource-list-featured-articles.d.ts +3 -3
  865. package/dist/resource-list-featured-grid.d.cts +3 -3
  866. package/dist/resource-list-featured-grid.d.ts +3 -3
  867. package/dist/resource-list-hero-filter.d.cts +2 -2
  868. package/dist/resource-list-hero-filter.d.ts +2 -2
  869. package/dist/resource-list-news-updates.d.cts +3 -3
  870. package/dist/resource-list-news-updates.d.ts +3 -3
  871. package/dist/reviews-images-helpful.d.cts +3 -3
  872. package/dist/reviews-images-helpful.d.ts +3 -3
  873. package/dist/reviews-list-verified.d.cts +3 -3
  874. package/dist/reviews-list-verified.d.ts +3 -3
  875. package/dist/section.d.cts +3 -3
  876. package/dist/section.d.ts +3 -3
  877. package/dist/service-detail-centered-expertise.d.cts +3 -3
  878. package/dist/service-detail-centered-expertise.d.ts +3 -3
  879. package/dist/service-detail-compact-cards.d.cts +3 -3
  880. package/dist/service-detail-compact-cards.d.ts +3 -3
  881. package/dist/service-detail-image-hero.d.cts +3 -3
  882. package/dist/service-detail-image-hero.d.ts +3 -3
  883. package/dist/service-detail-prose-minimal.d.cts +3 -3
  884. package/dist/service-detail-prose-minimal.d.ts +3 -3
  885. package/dist/service-detail-sidebar-related.d.cts +3 -3
  886. package/dist/service-detail-sidebar-related.d.ts +3 -3
  887. package/dist/service-detail-sidebar-stats.d.cts +3 -3
  888. package/dist/service-detail-sidebar-stats.d.ts +3 -3
  889. package/dist/service-detail-stats-hero.d.cts +3 -3
  890. package/dist/service-detail-stats-hero.d.ts +3 -3
  891. package/dist/service-hover-carousel.d.cts +3 -3
  892. package/dist/service-hover-carousel.d.ts +3 -3
  893. package/dist/services-list-feature-spotlight.d.cts +3 -3
  894. package/dist/services-list-feature-spotlight.d.ts +3 -3
  895. package/dist/stats-animated-counter.d.cts +3 -3
  896. package/dist/stats-animated-counter.d.ts +3 -3
  897. package/dist/stats-bar-comparison.d.cts +3 -3
  898. package/dist/stats-bar-comparison.d.ts +3 -3
  899. package/dist/stats-card-group.d.cts +3 -3
  900. package/dist/stats-card-group.d.ts +3 -3
  901. package/dist/stats-circular-progress.d.cts +3 -3
  902. package/dist/stats-circular-progress.d.ts +3 -3
  903. package/dist/stats-growth-timeline.d.cts +3 -3
  904. package/dist/stats-growth-timeline.d.ts +3 -3
  905. package/dist/stats-icon-cards.d.cts +3 -3
  906. package/dist/stats-icon-cards.d.ts +3 -3
  907. package/dist/stats-impact-grid.d.cts +3 -3
  908. package/dist/stats-impact-grid.d.ts +3 -3
  909. package/dist/stats-milestone-sidebar.d.cts +3 -3
  910. package/dist/stats-milestone-sidebar.d.ts +3 -3
  911. package/dist/stats-number-ticker.d.cts +3 -3
  912. package/dist/stats-number-ticker.d.ts +3 -3
  913. package/dist/stats-primary-secondary.d.cts +3 -3
  914. package/dist/stats-primary-secondary.d.ts +3 -3
  915. package/dist/stats-simple-grid.d.cts +3 -3
  916. package/dist/stats-simple-grid.d.ts +3 -3
  917. package/dist/stats-timeline-tabs.d.cts +3 -3
  918. package/dist/stats-timeline-tabs.d.ts +3 -3
  919. package/dist/team-media-showcase.d.cts +3 -3
  920. package/dist/team-media-showcase.d.ts +3 -3
  921. package/dist/testimonial-carousel-cards.d.cts +3 -3
  922. package/dist/testimonial-carousel-cards.d.ts +3 -3
  923. package/dist/testimonials-animated-split.d.cts +3 -3
  924. package/dist/testimonials-animated-split.d.ts +3 -3
  925. package/dist/testimonials-bento-grid.d.cts +3 -3
  926. package/dist/testimonials-bento-grid.d.ts +3 -3
  927. package/dist/testimonials-carousel-image.d.cts +2 -2
  928. package/dist/testimonials-carousel-image.d.ts +2 -2
  929. package/dist/testimonials-centered-avatars.d.cts +3 -3
  930. package/dist/testimonials-centered-avatars.d.ts +3 -3
  931. package/dist/testimonials-company-logo.d.cts +3 -3
  932. package/dist/testimonials-company-logo.d.ts +3 -3
  933. package/dist/testimonials-grid-add-review.d.cts +3 -3
  934. package/dist/testimonials-grid-add-review.d.ts +3 -3
  935. package/dist/testimonials-large-quote.d.cts +3 -3
  936. package/dist/testimonials-large-quote.d.ts +3 -3
  937. package/dist/testimonials-logo-cards.d.cts +3 -3
  938. package/dist/testimonials-logo-cards.d.ts +3 -3
  939. package/dist/testimonials-marquee.d.cts +3 -3
  940. package/dist/testimonials-marquee.d.ts +3 -3
  941. package/dist/testimonials-masonry-grid.d.cts +3 -3
  942. package/dist/testimonials-masonry-grid.d.ts +3 -3
  943. package/dist/testimonials-mini-dividers.d.cts +3 -3
  944. package/dist/testimonials-mini-dividers.d.ts +3 -3
  945. package/dist/testimonials-minimal-numbered.d.cts +3 -3
  946. package/dist/testimonials-minimal-numbered.d.ts +3 -3
  947. package/dist/testimonials-parallax-number.d.cts +3 -3
  948. package/dist/testimonials-parallax-number.d.ts +3 -3
  949. package/dist/testimonials-quote-carousel.d.cts +3 -3
  950. package/dist/testimonials-quote-carousel.d.ts +3 -3
  951. package/dist/testimonials-scrolling-columns.d.cts +3 -3
  952. package/dist/testimonials-scrolling-columns.d.ts +3 -3
  953. package/dist/testimonials-simple-grid.d.cts +3 -3
  954. package/dist/testimonials-simple-grid.d.ts +3 -3
  955. package/dist/testimonials-slider-minimal.d.cts +3 -3
  956. package/dist/testimonials-slider-minimal.d.ts +3 -3
  957. package/dist/testimonials-split-image.d.cts +3 -3
  958. package/dist/testimonials-split-image.d.ts +3 -3
  959. package/dist/testimonials-stats-header.d.cts +3 -3
  960. package/dist/testimonials-stats-header.d.ts +3 -3
  961. package/dist/testimonials-twitter-cards.d.cts +3 -3
  962. package/dist/testimonials-twitter-cards.d.ts +3 -3
  963. package/dist/testimonials-wall-compact.d.cts +3 -3
  964. package/dist/testimonials-wall-compact.d.ts +3 -3
  965. package/dist/timeline-ai-workflow-cards.d.cts +3 -3
  966. package/dist/timeline-ai-workflow-cards.d.ts +3 -3
  967. package/dist/timeline-alternating-diagonal.d.cts +3 -3
  968. package/dist/timeline-alternating-diagonal.d.ts +3 -3
  969. package/dist/timeline-changelog-badges.d.cts +3 -3
  970. package/dist/timeline-changelog-badges.d.ts +3 -3
  971. package/dist/timeline-history-prose.d.cts +3 -3
  972. package/dist/timeline-history-prose.d.ts +3 -3
  973. package/dist/timeline-horizontal-icons.d.cts +3 -3
  974. package/dist/timeline-horizontal-icons.d.ts +3 -3
  975. package/dist/timeline-horizontal-phases.d.cts +3 -3
  976. package/dist/timeline-horizontal-phases.d.ts +3 -3
  977. package/dist/timeline-product-launch.d.cts +3 -3
  978. package/dist/timeline-product-launch.d.ts +3 -3
  979. package/dist/timeline-productivity-list.d.cts +3 -3
  980. package/dist/timeline-productivity-list.d.ts +3 -3
  981. package/dist/timeline-scroll-highlight.d.cts +3 -3
  982. package/dist/timeline-scroll-highlight.d.ts +3 -3
  983. package/dist/timeline-scroll-sticky-image.d.cts +3 -3
  984. package/dist/timeline-scroll-sticky-image.d.ts +3 -3
  985. package/dist/timeline-stepper-animated.d.cts +3 -3
  986. package/dist/timeline-stepper-animated.d.ts +3 -3
  987. package/dist/timeline-tabbed-phases.d.cts +3 -3
  988. package/dist/timeline-tabbed-phases.d.ts +3 -3
  989. package/dist/timeline-two-column-featured.d.cts +3 -3
  990. package/dist/timeline-two-column-featured.d.ts +3 -3
  991. package/dist/timeline-vertical-icon-dashed.d.cts +3 -3
  992. package/dist/timeline-vertical-icon-dashed.d.ts +3 -3
  993. package/dist/types.d.cts +3 -3
  994. package/dist/types.d.ts +3 -3
  995. package/package.json +1 -1
package/dist/registry.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import * as React52 from 'react';
2
- import React52__default, { Fragment, createContext, forwardRef, useMemo as useMemo$1, useState, useCallback, useRef, useEffect, startTransition, useContext } from 'react';
2
+ import React52__default, { Fragment, createContext, useMemo as useMemo$1, forwardRef, useState, useCallback, useRef, useEffect, startTransition, useContext } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
6
6
  import { Img } from '@page-speed/img';
7
7
  import { cva } from 'class-variance-authority';
8
- import { motion, AnimatePresence, useMotionValue, useMotionTemplate, useSpring, useTransform, useInView, useScroll, useMotionValueEvent } from 'framer-motion';
8
+ import { AnimatePresence, motion, useMotionValue, useMotionTemplate, useSpring, useTransform, useInView, useScroll, useMotionValueEvent } from 'framer-motion';
9
9
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
10
10
  import { useForm, Form, Field } from '@page-speed/forms';
11
11
  import { TextInput as TextInput$1, Select, TextArea as TextArea$1, Radio } from '@page-speed/forms/inputs';
@@ -18645,19 +18645,21 @@ function CarouselHorizontalCards({
18645
18645
  "div",
18646
18646
  {
18647
18647
  className: cn(
18648
- "flex flex-row justify-start gap-4 pl-4",
18648
+ "flex flex-row justify-start gap-2",
18649
18649
  carouselClassName
18650
18650
  ),
18651
18651
  children: [
18652
18652
  items?.map((item, index) => /* @__PURE__ */ jsx(
18653
18653
  motion.div,
18654
18654
  {
18655
- className: cn(
18656
- "rounded-lg last:pr-[5%] md:last:pr-[33%]"
18657
- ),
18655
+ className: cn("rounded-lg last:pr-[5%] md:last:pr-[33%]"),
18658
18656
  initial: { opacity: 0, y: 20 },
18659
18657
  animate: { opacity: 1, y: 0 },
18660
- transition: { duration: 0.5, delay: 0.2 * index, ease: "easeOut" },
18658
+ transition: {
18659
+ duration: 0.5,
18660
+ delay: 0.2 * index,
18661
+ ease: "easeOut"
18662
+ },
18661
18663
  children: /* @__PURE__ */ jsx(
18662
18664
  "div",
18663
18665
  {
@@ -18729,7 +18731,7 @@ function CarouselHorizontalCards({
18729
18731
  onNext: scrollRight,
18730
18732
  canScrollPrevious: !isAtStart,
18731
18733
  canScrollNext: !isAtEnd,
18732
- className: cn("mr-0 md:mr-10", navigationClassName)
18734
+ className: cn("mr-0", navigationClassName)
18733
18735
  }
18734
18736
  )
18735
18737
  ] })
@@ -18744,43 +18746,43 @@ function CarouselImageHero({
18744
18746
  actions,
18745
18747
  actionsSlot,
18746
18748
  images,
18747
- autoPlayInterval = 5e3,
18749
+ autoPlayInterval = 7500,
18748
18750
  className,
18749
- containerClassName,
18751
+ containerClassName = "mx-auto w-full max-w-7xl relative z-10 rounded-2xl overflow-hidden shadow-xl",
18750
18752
  contentClassName,
18751
18753
  badgeClassName,
18752
18754
  headingClassName,
18753
18755
  descriptionClassName,
18754
18756
  actionsClassName,
18755
18757
  imageClassName,
18756
- navigationClassName,
18757
18758
  indicatorsClassName,
18758
18759
  optixFlowConfig,
18759
- background = "white",
18760
- spacing = "xl",
18760
+ background,
18761
+ spacing,
18761
18762
  pattern,
18762
18763
  patternOpacity
18763
18764
  }) {
18764
18765
  const [currentImageIndex, setCurrentImageIndex] = React52.useState(0);
18765
18766
  React52.useEffect(() => {
18766
18767
  const interval = setInterval(() => {
18767
- setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
18768
+ setCurrentImageIndex(
18769
+ (prevIndex) => (prevIndex + 1) % (images?.length ?? 1)
18770
+ );
18768
18771
  }, autoPlayInterval);
18769
18772
  return () => clearInterval(interval);
18770
18773
  }, [images?.length, autoPlayInterval]);
18771
- const goToNextImage = () => {
18772
- setCurrentImageIndex((prevIndex) => (prevIndex + 1) % (images?.length ?? 1));
18773
- };
18774
- const goToPreviousImage = () => {
18775
- setCurrentImageIndex(
18776
- (prevIndex) => (prevIndex - 1 + (images?.length ?? 1)) % (images?.length ?? 1)
18777
- );
18778
- };
18779
18774
  const renderActions = () => {
18780
18775
  if (actionsSlot) return actionsSlot;
18781
18776
  if (!actions || actions.length === 0) return null;
18782
18777
  return actions.map((action, index) => {
18783
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
18778
+ const {
18779
+ label,
18780
+ icon,
18781
+ iconAfter,
18782
+ children,
18783
+ className: actionClassName,
18784
+ ...pressableProps
18785
+ } = action;
18784
18786
  return /* @__PURE__ */ jsx(
18785
18787
  Pressable,
18786
18788
  {
@@ -18805,6 +18807,7 @@ function CarouselImageHero({
18805
18807
  className: cn("relative min-h-[600px] overflow-hidden", className),
18806
18808
  pattern,
18807
18809
  patternOpacity,
18810
+ containerClassName,
18808
18811
  children: [
18809
18812
  /* @__PURE__ */ jsxs("div", { className: cn("absolute inset-0", imageClassName), children: [
18810
18813
  images?.map((image, index) => /* @__PURE__ */ jsxs(
@@ -18830,50 +18833,79 @@ function CarouselImageHero({
18830
18833
  index
18831
18834
  )),
18832
18835
  /* @__PURE__ */ jsx(
18833
- Pressable,
18834
- {
18835
- onClick: goToPreviousImage,
18836
- asButton: true,
18837
- variant: "ghost",
18838
- size: "icon",
18839
- className: cn("absolute left-4 top-1/2 z-20 hidden -translate-y-1/2 rounded-full bg-background/30 p-2 backdrop-blur-sm transition-colors hover:bg-background/50 md:block", navigationClassName),
18840
- "aria-label": "Previous image",
18841
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 24, className: "text-white" })
18842
- }
18843
- ),
18844
- /* @__PURE__ */ jsx(
18845
- Pressable,
18846
- {
18847
- onClick: goToNextImage,
18848
- asButton: true,
18849
- variant: "ghost",
18850
- size: "icon",
18851
- className: cn("absolute right-4 top-1/2 z-20 hidden -translate-y-1/2 rounded-full bg-background/30 p-2 backdrop-blur-sm transition-colors hover:bg-background/50 md:block", navigationClassName),
18852
- "aria-label": "Next image",
18853
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 24, className: "text-white" })
18854
- }
18855
- ),
18856
- /* @__PURE__ */ jsx("div", { className: cn("absolute bottom-6 left-1/2 z-10 flex -translate-x-1/2 gap-3", indicatorsClassName), children: images?.map((_, index) => /* @__PURE__ */ jsx(
18857
- "button",
18836
+ "div",
18858
18837
  {
18859
- onClick: () => setCurrentImageIndex(index),
18860
18838
  className: cn(
18861
- "flex h-3 w-3 items-center justify-center rounded-full transition-colors",
18862
- index === currentImageIndex ? "bg-white" : "bg-white/50 hover:bg-white/80"
18839
+ "absolute bottom-6 left-1/2 z-10 flex -translate-x-1/2 gap-3",
18840
+ indicatorsClassName
18863
18841
  ),
18864
- "aria-label": `Go to image ${index + 1}`
18865
- },
18866
- index
18867
- )) })
18842
+ children: images?.map((_, index) => /* @__PURE__ */ jsx(
18843
+ "button",
18844
+ {
18845
+ onClick: () => setCurrentImageIndex(index),
18846
+ className: cn(
18847
+ "flex h-4 w-4 items-center justify-center rounded-full transition-colors",
18848
+ index === currentImageIndex ? "bg-white" : "bg-white/50 hover:bg-white/80"
18849
+ ),
18850
+ "aria-label": `Go to image ${index + 1}`
18851
+ },
18852
+ index
18853
+ ))
18854
+ }
18855
+ )
18868
18856
  ] }),
18869
- /* @__PURE__ */ jsx("div", { className: cn("container relative z-10 mx-auto flex min-h-[600px] flex-col items-center justify-center px-4 py-16 text-center md:px-6 md:py-20", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-4xl space-y-6", contentClassName), children: [
18870
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
18871
- badge && (typeof badge === "string" ? /* @__PURE__ */ jsx("div", { className: cn("inline-flex items-center rounded-full bg-white/10 px-3 py-1 text-sm font-medium text-white backdrop-blur-sm", badgeClassName), children: /* @__PURE__ */ jsx("span", { children: badge }) }) : /* @__PURE__ */ jsx("div", { className: badgeClassName, children: badge })),
18872
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight text-primary-foreground dark:text-primary sm:text-5xl md:text-6xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
18873
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl text-primary-foreground dark:text-primary", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
18874
- ] }),
18875
- (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex flex-col justify-center gap-4 sm:flex-row", actionsClassName), children: renderActions() })
18876
- ] }) })
18857
+ /* @__PURE__ */ jsx(
18858
+ "div",
18859
+ {
18860
+ className: cn(
18861
+ "relative z-10 mx-auto flex min-h-[600px] flex-col items-center justify-center px-4 py-16 text-center md:px-16 md:py-20"
18862
+ ),
18863
+ children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-4xl space-y-6", contentClassName), children: [
18864
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
18865
+ badge && (typeof badge === "string" ? /* @__PURE__ */ jsx(
18866
+ "div",
18867
+ {
18868
+ className: cn(
18869
+ "inline-flex items-center rounded-full bg-white/10 px-3 py-1 text-sm font-medium text-white backdrop-blur-sm",
18870
+ badgeClassName
18871
+ ),
18872
+ children: /* @__PURE__ */ jsx("span", { children: badge })
18873
+ }
18874
+ ) : /* @__PURE__ */ jsx("div", { className: badgeClassName, children: badge })),
18875
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
18876
+ "h1",
18877
+ {
18878
+ className: cn(
18879
+ "text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
18880
+ headingClassName
18881
+ ),
18882
+ children: heading
18883
+ }
18884
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
18885
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
18886
+ "p",
18887
+ {
18888
+ className: cn(
18889
+ "text-xl text-balance text-shadow",
18890
+ descriptionClassName
18891
+ ),
18892
+ children: description
18893
+ }
18894
+ ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
18895
+ ] }),
18896
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx(
18897
+ "div",
18898
+ {
18899
+ className: cn(
18900
+ "flex flex-col justify-center gap-4 sm:flex-row",
18901
+ actionsClassName
18902
+ ),
18903
+ children: renderActions()
18904
+ }
18905
+ )
18906
+ ] })
18907
+ }
18908
+ )
18877
18909
  ]
18878
18910
  }
18879
18911
  );
@@ -19177,7 +19209,7 @@ function CarouselPortfolioHero({
19177
19209
  actionsSlot,
19178
19210
  autoPlayInterval = 5e3,
19179
19211
  className,
19180
- containerClassName,
19212
+ containerClassName = "mx-auto w-full p-0 px-0 sm:px-0 lg:px-0 max-w-full relative z-10 h-full flex flex-col justify-center",
19181
19213
  contentClassName,
19182
19214
  tagClassName,
19183
19215
  titleClassName,
@@ -19193,23 +19225,45 @@ function CarouselPortfolioHero({
19193
19225
  slideMediaBrightness = "50"
19194
19226
  }) {
19195
19227
  const [currentIndex, setCurrentIndex] = React52.useState(0);
19228
+ const intervalRef = React52.useRef(null);
19229
+ const resetInterval = React52.useCallback(() => {
19230
+ if (intervalRef.current) {
19231
+ clearInterval(intervalRef.current);
19232
+ }
19233
+ intervalRef.current = setInterval(() => {
19234
+ setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
19235
+ }, autoPlayInterval);
19236
+ }, [autoPlayInterval, slides?.length]);
19196
19237
  const goToNext = React52.useCallback(() => {
19197
19238
  setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
19198
- }, [slides?.length]);
19239
+ resetInterval();
19240
+ }, [slides?.length, resetInterval]);
19199
19241
  const goToPrev = React52.useCallback(() => {
19200
19242
  setCurrentIndex(
19201
19243
  (prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
19202
19244
  );
19203
- }, [slides?.length]);
19245
+ resetInterval();
19246
+ }, [slides?.length, resetInterval]);
19204
19247
  React52.useEffect(() => {
19205
- const interval = setInterval(goToNext, autoPlayInterval);
19206
- return () => clearInterval(interval);
19207
- }, [goToNext, autoPlayInterval]);
19248
+ resetInterval();
19249
+ return () => {
19250
+ if (intervalRef.current) {
19251
+ clearInterval(intervalRef.current);
19252
+ }
19253
+ };
19254
+ }, [resetInterval]);
19208
19255
  const renderActions = () => {
19209
19256
  if (actionsSlot) return actionsSlot;
19210
19257
  if (!actions || actions.length === 0) return null;
19211
19258
  return actions.map((action, index) => {
19212
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
19259
+ const {
19260
+ label,
19261
+ icon,
19262
+ iconAfter,
19263
+ children,
19264
+ className: actionClassName,
19265
+ ...pressableProps
19266
+ } = action;
19213
19267
  return /* @__PURE__ */ jsx(
19214
19268
  Pressable,
19215
19269
  {
@@ -19235,6 +19289,7 @@ function CarouselPortfolioHero({
19235
19289
  className: cn("relative h-screen w-full overflow-hidden", className),
19236
19290
  pattern,
19237
19291
  patternOpacity,
19292
+ containerClassName,
19238
19293
  children: [
19239
19294
  slidesSlot ? slidesSlot : slides?.map((slide, index) => /* @__PURE__ */ jsx(
19240
19295
  "div",
@@ -19260,43 +19315,99 @@ function CarouselPortfolioHero({
19260
19315
  },
19261
19316
  slide.id
19262
19317
  )),
19263
- /* @__PURE__ */ jsx("div", { className: cn("relative z-10 flex h-full w-full flex-col justify-end px-6 pb-16 text-white md:px-8 lg:px-12", containerClassName), children: /* @__PURE__ */ jsx("div", { className: "container mx-auto", children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-4xl", contentClassName), children: [
19264
- currentSlide?.tag && /* @__PURE__ */ jsx("div", { className: "mb-4", children: typeof currentSlide.tag === "string" ? /* @__PURE__ */ jsx("span", { className: cn("inline-block rounded-full bg-primary px-3 py-1 text-sm font-medium", tagClassName), children: currentSlide.tag }) : /* @__PURE__ */ jsx("div", { className: tagClassName, children: currentSlide.tag }) }),
19265
- currentSlide?.title && (typeof currentSlide.title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold sm:text-5xl md:text-6xl", titleClassName), children: currentSlide.title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: currentSlide.title })),
19266
- currentSlide?.description && (typeof currentSlide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-white/80 sm:text-xl md:max-w-2xl", descriptionClassName), children: currentSlide.description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: currentSlide.description })),
19267
- /* @__PURE__ */ jsxs("div", { className: cn("mt-8 flex items-center gap-4", actionsClassName), children: [
19268
- renderActions(),
19269
- /* @__PURE__ */ jsxs("div", { className: cn("ml-auto flex items-center gap-2", navigationClassName), children: [
19270
- /* @__PURE__ */ jsx(
19271
- Pressable,
19318
+ /* @__PURE__ */ jsx(
19319
+ "div",
19320
+ {
19321
+ className: cn(
19322
+ "relative z-10 flex h-full w-full flex-col justify-end px-6 pb-16 text-white md:px-8 lg:px-12"
19323
+ ),
19324
+ children: /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs("div", { className: cn("max-w-4xl", contentClassName), children: [
19325
+ currentSlide?.tag && /* @__PURE__ */ jsx("div", { className: "mb-4", children: typeof currentSlide.tag === "string" ? /* @__PURE__ */ jsx(
19326
+ "span",
19272
19327
  {
19273
- variant: "outline",
19274
- size: "icon",
19275
- className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
19276
- onClick: goToPrev,
19277
- asButton: true,
19278
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
19328
+ className: cn(
19329
+ "inline-block rounded-full bg-primary px-3 py-1 text-sm font-medium",
19330
+ tagClassName
19331
+ ),
19332
+ children: currentSlide.tag
19279
19333
  }
19280
- ),
19281
- /* @__PURE__ */ jsx(
19282
- Pressable,
19334
+ ) : /* @__PURE__ */ jsx("div", { className: tagClassName, children: currentSlide.tag }) }),
19335
+ currentSlide?.title && (typeof currentSlide.title === "string" ? /* @__PURE__ */ jsx(
19336
+ "h1",
19283
19337
  {
19284
- variant: "outline",
19285
- size: "icon",
19286
- className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
19287
- onClick: goToNext,
19288
- asButton: true,
19289
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
19338
+ className: cn(
19339
+ "text-4xl font-bold sm:text-5xl md:text-6xl text-balance text-shadow",
19340
+ titleClassName
19341
+ ),
19342
+ children: currentSlide.title
19290
19343
  }
19291
- ),
19292
- /* @__PURE__ */ jsxs("div", { className: cn("ml-3 text-sm text-white/80", counterClassName), children: [
19293
- currentIndex + 1,
19294
- " / ",
19295
- slides?.length ?? 0
19296
- ] })
19297
- ] })
19298
- ] })
19299
- ] }) }) })
19344
+ ) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: currentSlide.title })),
19345
+ currentSlide?.description && (typeof currentSlide.description === "string" ? /* @__PURE__ */ jsx(
19346
+ "p",
19347
+ {
19348
+ className: cn(
19349
+ "mt-4 text-lg text-white/80 sm:text-xl md:max-w-2xl text-balance text-shadow",
19350
+ descriptionClassName
19351
+ ),
19352
+ children: currentSlide.description
19353
+ }
19354
+ ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: currentSlide.description })),
19355
+ /* @__PURE__ */ jsxs(
19356
+ "div",
19357
+ {
19358
+ className: cn("mt-8 flex items-center gap-4", actionsClassName),
19359
+ children: [
19360
+ renderActions(),
19361
+ /* @__PURE__ */ jsxs(
19362
+ "div",
19363
+ {
19364
+ className: cn(
19365
+ "ml-auto flex items-center gap-2",
19366
+ navigationClassName
19367
+ ),
19368
+ children: [
19369
+ /* @__PURE__ */ jsx(
19370
+ Pressable,
19371
+ {
19372
+ variant: "outline",
19373
+ size: "icon",
19374
+ className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
19375
+ onClick: goToPrev,
19376
+ asButton: true,
19377
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
19378
+ }
19379
+ ),
19380
+ /* @__PURE__ */ jsx(
19381
+ Pressable,
19382
+ {
19383
+ variant: "outline",
19384
+ size: "icon",
19385
+ className: "rounded-full border-white/40 bg-black/30 text-white hover:bg-black/50 hover:text-white",
19386
+ onClick: goToNext,
19387
+ asButton: true,
19388
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
19389
+ }
19390
+ ),
19391
+ /* @__PURE__ */ jsxs(
19392
+ "div",
19393
+ {
19394
+ className: cn("ml-3 text-sm text-white/80", counterClassName),
19395
+ children: [
19396
+ currentIndex + 1,
19397
+ " / ",
19398
+ slides?.length ?? 0
19399
+ ]
19400
+ }
19401
+ )
19402
+ ]
19403
+ }
19404
+ )
19405
+ ]
19406
+ }
19407
+ )
19408
+ ] }) })
19409
+ }
19410
+ )
19300
19411
  ]
19301
19412
  }
19302
19413
  );
@@ -19320,8 +19431,8 @@ function CarouselProductFeatureShowcase({
19320
19431
  actionsClassName,
19321
19432
  indicatorsClassName,
19322
19433
  optixFlowConfig,
19323
- background = "white",
19324
- spacing = "xl",
19434
+ background,
19435
+ spacing,
19325
19436
  pattern,
19326
19437
  patternOpacity
19327
19438
  }) {
@@ -19365,7 +19476,14 @@ function CarouselProductFeatureShowcase({
19365
19476
  if (actionsSlot) return actionsSlot;
19366
19477
  if (!actions || actions.length === 0) return null;
19367
19478
  return /* @__PURE__ */ jsx("div", { className: "mt-8 flex flex-wrap gap-3", children: actions.map((action, index) => {
19368
- const { label, icon, iconAfter, children, className: actionClassName, ...pressableProps } = action;
19479
+ const {
19480
+ label,
19481
+ icon,
19482
+ iconAfter,
19483
+ children,
19484
+ className: actionClassName,
19485
+ ...pressableProps
19486
+ } = action;
19369
19487
  return /* @__PURE__ */ jsx(
19370
19488
  Pressable,
19371
19489
  {
@@ -19390,105 +19508,151 @@ function CarouselProductFeatureShowcase({
19390
19508
  className: cn(className),
19391
19509
  pattern,
19392
19510
  patternOpacity,
19393
- children: /* @__PURE__ */ jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
19511
+ children: /* @__PURE__ */ jsxs("div", { className: cn("relative", containerClassName), children: [
19394
19512
  /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
19395
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
19396
- subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-muted-foreground", subheadingClassName), children: subheading }) : /* @__PURE__ */ jsx("div", { className: subheadingClassName, children: subheading }))
19397
- ] }),
19398
- featuresSlot ? /* @__PURE__ */ jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2 lg:gap-12", contentClassName), children: [
19399
- /* @__PURE__ */ jsxs("div", { className: cn("relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-[4/3]", imageClassName), children: [
19400
- /* @__PURE__ */ jsx(AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsx(
19401
- motion.div,
19402
- {
19403
- custom: direction,
19404
- variants: slideVariants2,
19405
- initial: "enter",
19406
- animate: "center",
19407
- exit: "exit",
19408
- transition: { duration: 0.3, ease: "easeInOut" },
19409
- className: cn("absolute inset-0", activeFeature?.imageClassName),
19410
- children: /* @__PURE__ */ jsx(
19411
- Img,
19412
- {
19413
- src: currentImage,
19414
- alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
19415
- className: "h-full w-full object-cover",
19416
- optixFlowConfig
19417
- }
19418
- )
19419
- },
19420
- `${activeIndex}-${activeColorIndex}`
19421
- ) }),
19422
- /* @__PURE__ */ jsxs("div", { className: cn("absolute bottom-4 right-4 flex gap-2", navigationClassName), children: [
19423
- /* @__PURE__ */ jsx(
19424
- Pressable,
19425
- {
19426
- onClick: goToPrev,
19427
- asButton: true,
19428
- variant: "outline",
19429
- size: "icon",
19430
- className: "flex h-10 w-10 items-center justify-center rounded-full border-border bg-background/90 text-foreground backdrop-blur-sm hover:bg-background",
19431
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
19432
- }
19513
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
19514
+ "h2",
19515
+ {
19516
+ className: cn(
19517
+ "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl",
19518
+ headingClassName
19433
19519
  ),
19434
- /* @__PURE__ */ jsx(
19435
- Pressable,
19520
+ children: heading
19521
+ }
19522
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
19523
+ subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx(
19524
+ "p",
19525
+ {
19526
+ className: cn(
19527
+ "mt-4 text-lg text-muted-foreground",
19528
+ subheadingClassName
19529
+ ),
19530
+ children: subheading
19531
+ }
19532
+ ) : /* @__PURE__ */ jsx("div", { className: subheadingClassName, children: subheading }))
19533
+ ] }),
19534
+ featuresSlot ? /* @__PURE__ */ jsx("div", { className: contentClassName, children: featuresSlot }) : /* @__PURE__ */ jsxs(
19535
+ "div",
19536
+ {
19537
+ className: cn(
19538
+ "grid gap-8 lg:grid-cols-2 lg:gap-12",
19539
+ contentClassName
19540
+ ),
19541
+ children: [
19542
+ /* @__PURE__ */ jsxs(
19543
+ "div",
19436
19544
  {
19437
- onClick: goToNext,
19438
- asButton: true,
19439
- variant: "outline",
19440
- size: "icon",
19441
- className: "flex h-10 w-10 items-center justify-center rounded-full border-border bg-background/90 text-foreground backdrop-blur-sm hover:bg-background",
19442
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
19443
- }
19444
- )
19445
- ] })
19446
- ] }),
19447
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
19448
- /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxs(
19449
- motion.div,
19450
- {
19451
- initial: { opacity: 0, y: 20 },
19452
- animate: { opacity: 1, y: 0 },
19453
- exit: { opacity: 0, y: -20 },
19454
- transition: { duration: 0.3 },
19455
- children: [
19456
- activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsx("div", { children: activeFeature.title })),
19457
- activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: activeFeature.description })),
19458
- activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
19459
- /* @__PURE__ */ jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
19460
- /* @__PURE__ */ jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsx(
19461
- "button",
19545
+ className: cn(
19546
+ "relative aspect-square overflow-hidden rounded-2xl bg-muted lg:aspect-4/3 shadow-lg",
19547
+ imageClassName
19548
+ ),
19549
+ children: [
19550
+ /* @__PURE__ */ jsx(AnimatePresence, { initial: false, custom: direction, mode: "wait", children: /* @__PURE__ */ jsx(
19551
+ motion.div,
19462
19552
  {
19463
- onClick: () => setActiveColorIndex(index),
19553
+ custom: direction,
19554
+ variants: slideVariants2,
19555
+ initial: "enter",
19556
+ animate: "center",
19557
+ exit: "exit",
19558
+ transition: { duration: 0.3, ease: "easeInOut" },
19464
19559
  className: cn(
19465
- "h-8 w-8 rounded-full border-2 transition-all",
19466
- activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
19560
+ "absolute inset-0",
19561
+ activeFeature?.imageClassName
19467
19562
  ),
19468
- style: { backgroundColor: color.value },
19469
- title: color.name
19563
+ children: /* @__PURE__ */ jsx(
19564
+ Img,
19565
+ {
19566
+ src: currentImage,
19567
+ alt: typeof activeFeature?.title === "string" ? activeFeature.title : `Feature ${activeIndex + 1}`,
19568
+ className: "h-full w-full object-cover",
19569
+ optixFlowConfig
19570
+ }
19571
+ )
19470
19572
  },
19471
- color.name
19472
- )) })
19473
- ] }),
19474
- /* @__PURE__ */ jsx("div", { className: actionsClassName, children: renderActions() })
19475
- ]
19476
- },
19477
- activeIndex
19478
- ) }),
19479
- /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsx(
19480
- "button",
19481
- {
19482
- onClick: () => goToSlide(index),
19483
- className: cn(
19484
- "h-2 rounded-full transition-all",
19485
- activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
19486
- )
19487
- },
19488
- index
19489
- )) })
19490
- ] })
19491
- ] })
19573
+ `${activeIndex}-${activeColorIndex}`
19574
+ ) }),
19575
+ /* @__PURE__ */ jsxs(
19576
+ "div",
19577
+ {
19578
+ className: cn(
19579
+ "absolute bottom-4 right-4 flex gap-2",
19580
+ navigationClassName
19581
+ ),
19582
+ children: [
19583
+ /* @__PURE__ */ jsx(
19584
+ Pressable,
19585
+ {
19586
+ onClick: goToPrev,
19587
+ asButton: true,
19588
+ variant: "outline",
19589
+ size: "icon",
19590
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
19591
+ }
19592
+ ),
19593
+ /* @__PURE__ */ jsx(
19594
+ Pressable,
19595
+ {
19596
+ onClick: goToNext,
19597
+ asButton: true,
19598
+ variant: "outline",
19599
+ size: "icon",
19600
+ children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
19601
+ }
19602
+ )
19603
+ ]
19604
+ }
19605
+ )
19606
+ ]
19607
+ }
19608
+ ),
19609
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
19610
+ /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: /* @__PURE__ */ jsxs(
19611
+ motion.div,
19612
+ {
19613
+ initial: { opacity: 0, y: 20 },
19614
+ animate: { opacity: 1, y: 0 },
19615
+ exit: { opacity: 0, y: -20 },
19616
+ transition: { duration: 0.3 },
19617
+ children: [
19618
+ activeFeature?.title && (typeof activeFeature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold md:text-3xl", children: activeFeature.title }) : /* @__PURE__ */ jsx("div", { children: activeFeature.title })),
19619
+ activeFeature?.description && (typeof activeFeature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: activeFeature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: activeFeature.description })),
19620
+ activeFeature?.colors && activeFeature.colors.length > 0 && /* @__PURE__ */ jsxs("div", { className: cn("mt-6", colorSelectorClassName), children: [
19621
+ /* @__PURE__ */ jsx("p", { className: "mb-3 text-sm font-medium", children: "Available Colors" }),
19622
+ /* @__PURE__ */ jsx("div", { className: "flex gap-3", children: activeFeature.colors.map((color, index) => /* @__PURE__ */ jsx(
19623
+ "button",
19624
+ {
19625
+ onClick: () => setActiveColorIndex(index),
19626
+ className: cn(
19627
+ "h-8 w-8 rounded-full border-2 transition-all",
19628
+ activeColorIndex === index ? "border-primary ring-2 ring-primary ring-offset-2" : "border-transparent hover:border-muted-foreground"
19629
+ ),
19630
+ style: { backgroundColor: color.value },
19631
+ title: color.name
19632
+ },
19633
+ color.name
19634
+ )) })
19635
+ ] }),
19636
+ /* @__PURE__ */ jsx("div", { className: actionsClassName, children: renderActions() })
19637
+ ]
19638
+ },
19639
+ activeIndex
19640
+ ) }),
19641
+ /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex gap-2", indicatorsClassName), children: features?.map((_, index) => /* @__PURE__ */ jsx(
19642
+ "button",
19643
+ {
19644
+ onClick: () => goToSlide(index),
19645
+ className: cn(
19646
+ "h-2 rounded-full transition-all",
19647
+ activeIndex === index ? "w-8 bg-primary" : "w-2 bg-muted-foreground/30 hover:bg-muted-foreground/50"
19648
+ )
19649
+ },
19650
+ index
19651
+ )) })
19652
+ ] })
19653
+ ]
19654
+ }
19655
+ )
19492
19656
  ] })
19493
19657
  }
19494
19658
  );
@@ -19544,12 +19708,16 @@ function SliderBtn({
19544
19708
  }
19545
19709
  function SliderWrapper({ children, value, className }) {
19546
19710
  const { active } = useProgressSliderContext();
19547
- return /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: active === value && /* @__PURE__ */ jsx(
19711
+ return /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", initial: false, children: active === value && /* @__PURE__ */ jsx(
19548
19712
  motion.div,
19549
19713
  {
19550
- initial: { opacity: 0 },
19551
- animate: { opacity: 1 },
19552
- exit: { opacity: 0 },
19714
+ initial: { opacity: 0, scale: 0.98 },
19715
+ animate: { opacity: 1, scale: 1 },
19716
+ exit: { opacity: 0, scale: 0.98 },
19717
+ transition: {
19718
+ duration: 0.4,
19719
+ ease: [0.4, 0, 0.2, 1]
19720
+ },
19553
19721
  className: cn("", className),
19554
19722
  children
19555
19723
  },
@@ -19660,12 +19828,12 @@ function CarouselProgressSlider({
19660
19828
  pattern,
19661
19829
  patternOpacity,
19662
19830
  children: /* @__PURE__ */ jsx("div", { className: cn("relative", containerClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2", contentClassName), children: [
19663
- /* @__PURE__ */ jsxs("div", { className: cn("relative", imageClassName), children: [
19664
- slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsx(
19831
+ /* @__PURE__ */ jsxs("div", { className: cn("relative min-h-[400px]", imageClassName), children: [
19832
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0", children: slidesSlot ? slidesSlot : slides?.map((slide) => /* @__PURE__ */ jsx(
19665
19833
  SliderWrapper,
19666
19834
  {
19667
19835
  value: slide.id,
19668
- className: cn("", slide.className),
19836
+ className: cn("absolute inset-0", slide.className),
19669
19837
  children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
19670
19838
  Img,
19671
19839
  {
@@ -19680,8 +19848,8 @@ function CarouselProgressSlider({
19680
19848
  ) })
19681
19849
  },
19682
19850
  slide.id
19683
- )),
19684
- /* @__PURE__ */ jsx("div", { className: "mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsx(
19851
+ )) }),
19852
+ /* @__PURE__ */ jsx("div", { className: "relative mt-4 flex justify-center lg:justify-start", children: /* @__PURE__ */ jsx(
19685
19853
  Pressable,
19686
19854
  {
19687
19855
  onClick: togglePause,
@@ -19743,8 +19911,8 @@ function CarouselScrollingFeatureShowcase({
19743
19911
  featuresClassName,
19744
19912
  numberBadgeClassName,
19745
19913
  optixFlowConfig,
19746
- background = "white",
19747
- spacing = "xl",
19914
+ background,
19915
+ spacing = "md",
19748
19916
  pattern,
19749
19917
  patternOpacity
19750
19918
  }) {
@@ -19794,62 +19962,113 @@ function CarouselScrollingFeatureShowcase({
19794
19962
  patternOpacity,
19795
19963
  children: /* @__PURE__ */ jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
19796
19964
  /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
19797
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
19798
- subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-muted-foreground", subheadingClassName), children: subheading }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
19799
- ] }),
19800
- /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2 lg:gap-12", contentClassName), children: [
19801
- /* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsx("div", { className: cn("aspect-video overflow-hidden rounded-xl bg-muted", imageClassName), children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsx(
19802
- motion.div,
19965
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
19966
+ "h2",
19803
19967
  {
19804
- initial: { opacity: 0 },
19805
- animate: { opacity: 1 },
19806
- exit: { opacity: 0 },
19807
- transition: { duration: 0.3 },
19808
- className: "h-full w-full",
19809
- children: /* @__PURE__ */ jsx(
19810
- Img,
19811
- {
19812
- src: activeFeatureData.image,
19813
- alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
19814
- className: cn("h-full w-full object-cover", activeFeatureData.imageClassName),
19815
- optixFlowConfig
19816
- }
19817
- )
19818
- },
19819
- activeFeatureData.id
19820
- ) }) }) }) }),
19821
- /* @__PURE__ */ jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
19822
- "div",
19968
+ className: cn(
19969
+ "text-3xl font-bold tracking-tight md:text-4xl",
19970
+ headingClassName
19971
+ ),
19972
+ children: heading
19973
+ }
19974
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
19975
+ subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx(
19976
+ "p",
19823
19977
  {
19824
- ref: setFeatureRef(feature.id),
19825
- "data-feature-id": feature.id,
19826
19978
  className: cn(
19827
- "scroll-mt-24 transition-opacity duration-300",
19828
- activeFeature === feature.id ? "opacity-100" : "opacity-50",
19829
- feature.className
19979
+ "mt-4 text-lg text-muted-foreground",
19980
+ subheadingClassName
19830
19981
  ),
19831
- children: [
19832
- /* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx(
19833
- Img,
19834
- {
19835
- src: feature.image,
19836
- alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
19837
- className: cn("h-full w-full object-cover", feature.imageClassName),
19838
- optixFlowConfig
19839
- }
19840
- ) }) }),
19841
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
19842
- /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground", numberBadgeClassName), children: index + 1 }),
19843
- /* @__PURE__ */ jsxs("div", { children: [
19844
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsx("div", { children: feature.title })),
19845
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: feature.description }))
19846
- ] })
19847
- ] })
19848
- ]
19849
- },
19850
- feature.id
19851
- )) })
19852
- ] })
19982
+ children: subheading
19983
+ }
19984
+ ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
19985
+ ] }),
19986
+ /* @__PURE__ */ jsxs(
19987
+ "div",
19988
+ {
19989
+ className: cn(
19990
+ "grid gap-8 lg:grid-cols-2 lg:gap-12",
19991
+ contentClassName
19992
+ ),
19993
+ children: [
19994
+ /* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsx(
19995
+ "div",
19996
+ {
19997
+ className: cn(
19998
+ "aspect-video overflow-hidden rounded-xl bg-muted",
19999
+ imageClassName
20000
+ ),
20001
+ children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsx(
20002
+ motion.div,
20003
+ {
20004
+ initial: { opacity: 0 },
20005
+ animate: { opacity: 1 },
20006
+ exit: { opacity: 0 },
20007
+ transition: { duration: 0.3 },
20008
+ className: "h-full w-full",
20009
+ children: /* @__PURE__ */ jsx(
20010
+ Img,
20011
+ {
20012
+ src: activeFeatureData.image,
20013
+ alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
20014
+ className: cn(
20015
+ "h-full w-full object-cover",
20016
+ activeFeatureData.imageClassName
20017
+ ),
20018
+ optixFlowConfig
20019
+ }
20020
+ )
20021
+ },
20022
+ activeFeatureData.id
20023
+ ) })
20024
+ }
20025
+ ) }) }),
20026
+ /* @__PURE__ */ jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
20027
+ "div",
20028
+ {
20029
+ ref: setFeatureRef(feature.id),
20030
+ "data-feature-id": feature.id,
20031
+ className: cn(
20032
+ "scroll-mt-24 transition-opacity duration-300",
20033
+ activeFeature === feature.id ? "opacity-100" : "opacity-50",
20034
+ feature.className
20035
+ ),
20036
+ children: [
20037
+ /* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx(
20038
+ Img,
20039
+ {
20040
+ src: feature.image,
20041
+ alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
20042
+ className: cn(
20043
+ "h-full w-full object-cover",
20044
+ feature.imageClassName
20045
+ ),
20046
+ optixFlowConfig
20047
+ }
20048
+ ) }) }),
20049
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
20050
+ /* @__PURE__ */ jsx(
20051
+ "div",
20052
+ {
20053
+ className: cn(
20054
+ "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
20055
+ numberBadgeClassName
20056
+ ),
20057
+ children: index + 1
20058
+ }
20059
+ ),
20060
+ /* @__PURE__ */ jsxs("div", { children: [
20061
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsx("div", { children: feature.title })),
20062
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: feature.description }))
20063
+ ] })
20064
+ ] })
20065
+ ]
20066
+ },
20067
+ feature.id
20068
+ )) })
20069
+ ]
20070
+ }
20071
+ )
19853
20072
  ] })
19854
20073
  }
19855
20074
  );
@@ -20050,17 +20269,28 @@ function FeatureShowcase({
20050
20269
  contentClassName,
20051
20270
  mediaClassName,
20052
20271
  arrowClassName,
20053
- equalizeOnMobile = true,
20054
- stretchMediaOnMobile = true
20272
+ equalizeOnMobile,
20273
+ stretchMediaOnMobile,
20274
+ background,
20275
+ spacing,
20276
+ pattern,
20277
+ patternOpacity,
20278
+ patternClassName
20055
20279
  }) {
20056
- const baseArrowClassName = "bottom-4 top-auto size-12 translate-y-0 rounded-full border border-current bg-transparent text-current shadow-sm focus:ring-current focus:ring-offset-2 focus:ring-offset-transparent hover:bg-current/10 md:bottom-6";
20280
+ const baseArrowClassName = useMemo$1(
20281
+ () => "bottom-4 top-auto size-12 translate-y-0 rounded-full border border-current bg-transparent text-current shadow-sm focus:ring-current focus:ring-offset-2 focus:ring-offset-transparent hover:bg-current/10 md:bottom-6",
20282
+ []
20283
+ );
20057
20284
  const [mobileSlideHeight, setMobileSlideHeight] = useState(
20058
20285
  null
20059
20286
  );
20060
20287
  const slideRefs = useRef([]);
20061
- const mediaWrapperClassName = equalizeOnMobile && stretchMediaOnMobile ? "flex-1 min-h-0 md:flex-none" : "";
20288
+ const mediaWrapperClassName = useMemo$1(
20289
+ () => equalizeOnMobile && stretchMediaOnMobile ? "flex-1 min-h-0 md:flex-none" : "",
20290
+ [equalizeOnMobile, stretchMediaOnMobile]
20291
+ );
20062
20292
  useEffect(() => {
20063
- if (!equalizeOnMobile) {
20293
+ if (!equalizeOnMobile || !items || items.length === 0) {
20064
20294
  setMobileSlideHeight(null);
20065
20295
  return;
20066
20296
  }
@@ -20092,10 +20322,10 @@ function FeatureShowcase({
20092
20322
  window.removeEventListener("resize", updateHeights);
20093
20323
  resizeObserver?.disconnect();
20094
20324
  };
20095
- }, [equalizeOnMobile, items.length]);
20096
- return /* @__PURE__ */ jsxs("div", { className, children: [
20097
- children,
20098
- /* @__PURE__ */ jsxs(Carousel, { className: carouselClassName, children: [
20325
+ }, [equalizeOnMobile, items]);
20326
+ const carouselContent = useMemo$1(() => {
20327
+ if (!items || items.length === 0) return null;
20328
+ return /* @__PURE__ */ jsxs(Carousel, { className: carouselClassName, children: [
20099
20329
  /* @__PURE__ */ jsx("div", { className: "pb-18 md:pb-24", children: /* @__PURE__ */ jsx(CarouselContent, { className: "ease-in", children: items.map((item, itemIndex) => /* @__PURE__ */ jsx(CarouselItem, { children: /* @__PURE__ */ jsxs(
20100
20330
  "div",
20101
20331
  {
@@ -20108,8 +20338,8 @@ function FeatureShowcase({
20108
20338
  slideClassName
20109
20339
  ),
20110
20340
  children: [
20111
- /* @__PURE__ */ jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
20112
- /* @__PURE__ */ jsx(
20341
+ item.content && /* @__PURE__ */ jsx("div", { className: cn("w-full", contentClassName), children: item.content }),
20342
+ item.mediaComponent && /* @__PURE__ */ jsx(
20113
20343
  "div",
20114
20344
  {
20115
20345
  className: cn(
@@ -20135,8 +20365,23 @@ function FeatureShowcase({
20135
20365
  className: cn(baseArrowClassName, "right-4 md:right-6", arrowClassName)
20136
20366
  }
20137
20367
  )
20138
- ] })
20139
- ] });
20368
+ ] });
20369
+ }, [items, carouselClassName, equalizeOnMobile, mobileSlideHeight, slideClassName, contentClassName, mediaWrapperClassName, mediaClassName, baseArrowClassName, arrowClassName]);
20370
+ return /* @__PURE__ */ jsxs(
20371
+ Section,
20372
+ {
20373
+ background,
20374
+ spacing,
20375
+ pattern,
20376
+ patternOpacity,
20377
+ patternClassName,
20378
+ className,
20379
+ children: [
20380
+ children,
20381
+ carouselContent
20382
+ ]
20383
+ }
20384
+ );
20140
20385
  }
20141
20386
  function FeatureSplitImage({
20142
20387
  title,
@@ -20165,40 +20410,19 @@ function FeatureSplitImage({
20165
20410
  if (actionsSlot) return actionsSlot;
20166
20411
  if (!actions || actions.length === 0) return null;
20167
20412
  return actions.map((action, index) => {
20168
- if (action.children) {
20169
- return /* @__PURE__ */ jsx(
20170
- Pressable,
20171
- {
20172
- href: action.href,
20173
- onClick: action.onClick,
20174
- variant: action.variant,
20175
- size: action.size,
20176
- className: action.className,
20177
- "aria-label": action["aria-label"],
20178
- asButton: true,
20179
- children: action.children
20180
- },
20181
- index
20182
- );
20183
- }
20184
- return /* @__PURE__ */ jsxs(
20185
- Pressable,
20186
- {
20187
- href: action.href,
20188
- onClick: action.onClick,
20189
- variant: action.variant,
20190
- size: action.size,
20191
- className: action.className,
20192
- "aria-label": action["aria-label"],
20193
- asButton: true,
20194
- children: [
20195
- action.icon,
20196
- action.label,
20197
- action.iconAfter
20198
- ]
20199
- },
20200
- index
20201
- );
20413
+ const {
20414
+ label,
20415
+ icon,
20416
+ iconAfter,
20417
+ children,
20418
+ className: actionClassName,
20419
+ ...pressableProps
20420
+ } = action;
20421
+ return /* @__PURE__ */ jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
20422
+ icon,
20423
+ label,
20424
+ iconAfter
20425
+ ] }) }, index);
20202
20426
  });
20203
20427
  }, [actionsSlot, actions]);
20204
20428
  const imageContent = useMemo$1(() => {
@@ -20208,7 +20432,7 @@ function FeatureSplitImage({
20208
20432
  Img,
20209
20433
  {
20210
20434
  src: imageSrc,
20211
- alt: imageAlt || "Feature illustration",
20435
+ alt: imageAlt || "",
20212
20436
  className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
20213
20437
  loading: "lazy",
20214
20438
  optixFlowConfig
@@ -20229,7 +20453,7 @@ function FeatureSplitImage({
20229
20453
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
20230
20454
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
20231
20455
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
20232
- /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
20456
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
20233
20457
  ] }),
20234
20458
  imageContent
20235
20459
  ] })
@@ -20263,40 +20487,19 @@ function FeatureSplitImageReverse({
20263
20487
  if (actionsSlot) return actionsSlot;
20264
20488
  if (!actions || actions.length === 0) return null;
20265
20489
  return actions.map((action, index) => {
20266
- if (action.children) {
20267
- return /* @__PURE__ */ jsx(
20268
- Pressable,
20269
- {
20270
- href: action.href,
20271
- onClick: action.onClick,
20272
- variant: action.variant,
20273
- size: action.size,
20274
- className: action.className,
20275
- "aria-label": action["aria-label"],
20276
- asButton: true,
20277
- children: action.children
20278
- },
20279
- index
20280
- );
20281
- }
20282
- return /* @__PURE__ */ jsxs(
20283
- Pressable,
20284
- {
20285
- href: action.href,
20286
- onClick: action.onClick,
20287
- variant: action.variant,
20288
- size: action.size,
20289
- className: action.className,
20290
- "aria-label": action["aria-label"],
20291
- asButton: true,
20292
- children: [
20293
- action.icon,
20294
- action.label,
20295
- action.iconAfter
20296
- ]
20297
- },
20298
- index
20299
- );
20490
+ const {
20491
+ label,
20492
+ icon,
20493
+ iconAfter,
20494
+ children,
20495
+ className: actionClassName,
20496
+ ...pressableProps
20497
+ } = action;
20498
+ return /* @__PURE__ */ jsx(Pressable, { className: actionClassName, asButton: true, ...pressableProps, children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
20499
+ icon,
20500
+ label,
20501
+ iconAfter
20502
+ ] }) }, index);
20300
20503
  });
20301
20504
  }, [actionsSlot, actions]);
20302
20505
  const imageContent = useMemo$1(() => {
@@ -20306,7 +20509,7 @@ function FeatureSplitImageReverse({
20306
20509
  Img,
20307
20510
  {
20308
20511
  src: imageSrc,
20309
- alt: imageAlt || "Feature illustration",
20512
+ alt: imageAlt || "",
20310
20513
  className: cn("max-h-96 w-full rounded-md object-cover", imageClassName),
20311
20514
  loading: "lazy",
20312
20515
  optixFlowConfig
@@ -20328,7 +20531,7 @@ function FeatureSplitImageReverse({
20328
20531
  /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center text-center lg:items-start lg:text-left", contentClassName), children: [
20329
20532
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("my-6 mt-0 text-4xl font-semibold text-balance lg:text-5xl", titleClassName), children: title })),
20330
20533
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mb-8 max-w-xl text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
20331
- /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
20534
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col justify-center gap-2 sm:flex-row lg:justify-start", actionsClassName), children: actionsContent })
20332
20535
  ] })
20333
20536
  ] })
20334
20537
  }
@@ -20351,39 +20554,37 @@ function FeatureIconGridBordered({
20351
20554
  patternOpacity,
20352
20555
  patternClassName
20353
20556
  }) {
20557
+ const renderIcon = useCallback((feature) => {
20558
+ if (feature.icon) return feature.icon;
20559
+ if (feature.iconName) {
20560
+ return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 20, className: "md:size-6" });
20561
+ }
20562
+ return null;
20563
+ }, []);
20354
20564
  const featuresContent = useMemo$1(() => {
20355
20565
  if (featuresSlot) return featuresSlot;
20356
20566
  if (!features || features.length === 0) return null;
20357
- return features.map((feature, index) => {
20358
- const renderIcon = () => {
20359
- if (feature.icon) return feature.icon;
20360
- if (feature.iconName) {
20361
- return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 20, className: "md:size-6" });
20362
- }
20363
- return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 20, className: "md:size-6" });
20364
- };
20365
- return /* @__PURE__ */ jsxs(
20366
- "div",
20367
- {
20368
- className: cn("relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5", cardClassName, feature.className),
20369
- children: [
20370
- /* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", feature.iconClassName), children: renderIcon() }),
20371
- /* @__PURE__ */ jsxs("div", { children: [
20372
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxs("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
20373
- feature.title,
20374
- /* @__PURE__ */ jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20375
- ] }) : /* @__PURE__ */ jsxs("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
20376
- feature.title,
20377
- /* @__PURE__ */ jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20378
- ] })),
20379
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
20380
- ] })
20381
- ]
20382
- },
20383
- index
20384
- );
20385
- });
20386
- }, [featuresSlot, features, cardClassName]);
20567
+ return features.map((feature, index) => /* @__PURE__ */ jsxs(
20568
+ "div",
20569
+ {
20570
+ className: cn("relative flex gap-3 rounded-lg border-dashed md:block md:border-l md:p-5", cardClassName, feature.className),
20571
+ children: [
20572
+ (feature.icon || feature.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", feature.iconClassName), children: renderIcon(feature) }),
20573
+ /* @__PURE__ */ jsxs("div", { children: [
20574
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxs("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
20575
+ feature.title,
20576
+ /* @__PURE__ */ jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20577
+ ] }) : /* @__PURE__ */ jsxs("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.titleClassName), children: [
20578
+ feature.title,
20579
+ /* @__PURE__ */ jsx("span", { className: "absolute -left-px hidden h-6 w-px bg-primary md:inline-block" })
20580
+ ] })),
20581
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
20582
+ ] })
20583
+ ]
20584
+ },
20585
+ index
20586
+ ));
20587
+ }, [featuresSlot, features, cardClassName, renderIcon]);
20387
20588
  return /* @__PURE__ */ jsxs(
20388
20589
  Section,
20389
20590
  {
@@ -20397,7 +20598,7 @@ function FeatureIconGridBordered({
20397
20598
  children: [
20398
20599
  label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-xs text-muted-foreground", labelClassName), children: label })),
20399
20600
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
20400
- /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
20601
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 md:grid-cols-2 lg:mt-20 lg:grid-cols-4", gridClassName), children: featuresContent })
20401
20602
  ]
20402
20603
  }
20403
20604
  );
@@ -20511,8 +20712,8 @@ function FeatureChecklistImage({
20511
20712
  /* @__PURE__ */ jsxs("div", { className: cn("lg:p-10", contentClassName), children: [
20512
20713
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium text-balance md:text-5xl", titleClassName), children: title })),
20513
20714
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-1 text-muted-foreground md:mt-6", descriptionClassName), children: description })),
20514
- /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent }),
20515
- /* @__PURE__ */ jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
20715
+ actionsContent && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent }),
20716
+ checklistContent && /* @__PURE__ */ jsx("ul", { className: cn("mt-10 flex-wrap items-center gap-6 space-y-6 md:flex md:space-y-0", checklistClassName), children: checklistContent })
20516
20717
  ] })
20517
20718
  ] })
20518
20719
  }
@@ -20577,10 +20778,10 @@ function FeatureCarouselProgress({
20577
20778
  );
20578
20779
  });
20579
20780
  }, [api, slidesLength]);
20580
- const renderSlideIcon = useMemo$1(() => (slide) => {
20781
+ const renderSlideIcon = useCallback((slide) => {
20581
20782
  if (slide.icon) return slide.icon;
20582
20783
  if (slide.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: slide.iconName, size: 16 });
20583
- return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 16 });
20784
+ return null;
20584
20785
  }, []);
20585
20786
  const slidesContent = useMemo$1(() => {
20586
20787
  if (slidesSlot) return slidesSlot;
@@ -20590,7 +20791,7 @@ function FeatureCarouselProgress({
20590
20791
  {
20591
20792
  className: "basis-full md:basis-1/2 lg:basis-1/3",
20592
20793
  children: /* @__PURE__ */ jsx("div", { className: "p-1", children: /* @__PURE__ */ jsx(Card, { className: cn(cardClassName, slide.className), children: /* @__PURE__ */ jsx(CardContent, { className: "flex flex-col justify-center p-6", children: /* @__PURE__ */ jsxs("div", { children: [
20593
- /* @__PURE__ */ jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
20794
+ (slide.icon || slide.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-5 flex size-8 items-center justify-center rounded-full bg-accent lg:size-10", slide.iconClassName), children: renderSlideIcon(slide) }),
20594
20795
  slide.title && (typeof slide.title === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-xl font-semibold md:text-2xl lg:text-2xl", slide.titleClassName), children: slide.title })),
20595
20796
  slide.description && (typeof slide.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }) : /* @__PURE__ */ jsx("div", { className: cn("pt-2 text-muted-foreground", slide.descriptionClassName), children: slide.description }))
20596
20797
  ] }) }) }) })
@@ -20652,28 +20853,28 @@ function FeatureCardGridLinked({
20652
20853
  patternOpacity,
20653
20854
  patternClassName
20654
20855
  }) {
20856
+ const renderImage = useCallback((feature, imageAlt) => {
20857
+ if (feature.imageSlot) return feature.imageSlot;
20858
+ if (feature.image) {
20859
+ return /* @__PURE__ */ jsx(
20860
+ Img,
20861
+ {
20862
+ src: feature.image,
20863
+ alt: imageAlt,
20864
+ className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
20865
+ loading: "lazy",
20866
+ optixFlowConfig
20867
+ }
20868
+ );
20869
+ }
20870
+ return null;
20871
+ }, [optixFlowConfig]);
20655
20872
  const featuresContent = useMemo$1(() => {
20656
20873
  if (featuresSlot) return featuresSlot;
20657
20874
  if (!features || features.length === 0) return null;
20658
20875
  return features.map((feature, index) => {
20659
20876
  const featureKey = feature.id || `feature-${index}`;
20660
20877
  const imageAlt = feature.imageAlt || (typeof feature.heading === "string" ? feature.heading : "Feature image");
20661
- const renderImage = () => {
20662
- if (feature.imageSlot) return feature.imageSlot;
20663
- if (feature.image) {
20664
- return /* @__PURE__ */ jsx(
20665
- Img,
20666
- {
20667
- src: feature.image,
20668
- alt: imageAlt,
20669
- className: "h-full w-full rounded-t-lg object-cover transition-opacity hover:opacity-80",
20670
- loading: "lazy",
20671
- optixFlowConfig
20672
- }
20673
- );
20674
- }
20675
- return null;
20676
- };
20677
20878
  return /* @__PURE__ */ jsxs(
20678
20879
  "div",
20679
20880
  {
@@ -20684,7 +20885,7 @@ function FeatureCardGridLinked({
20684
20885
  feature.label && /* @__PURE__ */ jsx("span", { className: cn("font-mono text-xs text-muted-foreground", feature.labelClassName), children: feature.label }),
20685
20886
  feature.heading && /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: typeof feature.heading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsx("div", { className: cn("text-2xl transition-all hover:text-primary hover:opacity-80 sm:text-3xl lg:text-4xl", feature.headingClassName), children: feature.heading }) })
20686
20887
  ] }),
20687
- /* @__PURE__ */ jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: renderImage() }) })
20888
+ /* @__PURE__ */ jsx("div", { className: "md:1/3 w-2/5 shrink-0 rounded-r-lg border-l", children: /* @__PURE__ */ jsx(Pressable, { href: feature.url, children: renderImage(feature, imageAlt) }) })
20688
20889
  ] }),
20689
20890
  feature.description && /* @__PURE__ */ jsx("p", { className: cn("p-4 text-muted-foreground md:p-8", feature.descriptionClassName), children: feature.description })
20690
20891
  ]
@@ -20692,7 +20893,7 @@ function FeatureCardGridLinked({
20692
20893
  featureKey
20693
20894
  );
20694
20895
  });
20695
- }, [featuresSlot, features, cardClassName, optixFlowConfig]);
20896
+ }, [featuresSlot, features, cardClassName, renderImage]);
20696
20897
  return /* @__PURE__ */ jsxs(
20697
20898
  Section,
20698
20899
  {
@@ -20728,7 +20929,7 @@ function FeatureNumberedCards({
20728
20929
  patternOpacity,
20729
20930
  patternClassName
20730
20931
  }) {
20731
- const renderChecklistItems = (feature) => {
20932
+ const renderChecklistItems = useCallback((feature) => {
20732
20933
  if (feature.checklistSlot) return feature.checklistSlot;
20733
20934
  if (!feature.checklistItems || feature.checklistItems.length === 0) return null;
20734
20935
  return feature.checklistItems.map((item, itemIndex) => {
@@ -20748,7 +20949,7 @@ function FeatureNumberedCards({
20748
20949
  /* @__PURE__ */ jsx("p", { className: "text-sm md:text-base", children: content })
20749
20950
  ] }, itemIndex);
20750
20951
  });
20751
- };
20952
+ }, []);
20752
20953
  const featuresContent = useMemo$1(() => {
20753
20954
  if (featuresSlot) return featuresSlot;
20754
20955
  if (!features || features.length === 0) return null;
@@ -20853,12 +21054,12 @@ function FeatureIconGridAccent({
20853
21054
  className,
20854
21055
  containerClassName,
20855
21056
  children: [
20856
- /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
21057
+ (label || title || description) && /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col items-center", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center space-y-4 text-center sm:space-y-6 md:max-w-3xl md:text-center", children: [
20857
21058
  label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: labelClassName, children: label })),
20858
21059
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
20859
21060
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground md:max-w-2xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
20860
21061
  ] }) }),
20861
- /* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
21062
+ featuresContent && /* @__PURE__ */ jsx("div", { className: cn("mx-auto mt-20 grid max-w-5xl gap-6 md:grid-cols-2", gridClassName), children: featuresContent })
20862
21063
  ]
20863
21064
  }
20864
21065
  );
@@ -20880,20 +21081,20 @@ function FeatureThreeColumnValues({
20880
21081
  patternOpacity,
20881
21082
  patternClassName
20882
21083
  }) {
20883
- const renderValueIcon = (value) => {
21084
+ const renderValueIcon = React52.useCallback((value) => {
20884
21085
  if (value.icon) return value.icon;
20885
21086
  if (value.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: value.iconName, size: 24 });
20886
- return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 24 });
20887
- };
21087
+ return null;
21088
+ }, []);
20888
21089
  const valuesContent = useMemo$1(() => {
20889
21090
  if (valuesSlot) return valuesSlot;
20890
21091
  if (!values || values.length === 0) return null;
20891
21092
  return values.map((value, index) => /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg bg-accent p-5", cardClassName, value.className), children: [
20892
- /* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
21093
+ (value.icon || value.iconName) && /* @__PURE__ */ jsx("span", { className: cn("mb-8 flex size-12 items-center justify-center rounded-full bg-background", value.iconClassName), children: renderValueIcon(value) }),
20893
21094
  value.title && (typeof value.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title }) : /* @__PURE__ */ jsx("div", { className: cn("mb-2 text-xl font-medium", value.titleClassName), children: value.title })),
20894
21095
  value.description && (typeof value.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }) : /* @__PURE__ */ jsx("div", { className: cn("leading-7 text-muted-foreground", value.descriptionClassName), children: value.description }))
20895
21096
  ] }, index));
20896
- }, [valuesSlot, values, cardClassName]);
21097
+ }, [valuesSlot, values, cardClassName, renderValueIcon]);
20897
21098
  return /* @__PURE__ */ jsxs(
20898
21099
  Section,
20899
21100
  {
@@ -20907,7 +21108,7 @@ function FeatureThreeColumnValues({
20907
21108
  children: [
20908
21109
  label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label }) : /* @__PURE__ */ jsx("div", { className: cn("mb-4 text-sm text-muted-foreground lg:text-base", labelClassName), children: label })),
20909
21110
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium lg:text-4xl", titleClassName), children: title })),
20910
- /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
21111
+ (valuesSlot || values && values.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-14 grid gap-6 lg:mt-20 lg:grid-cols-3", gridClassName), children: valuesContent })
20911
21112
  ]
20912
21113
  }
20913
21114
  );
@@ -20939,7 +21140,7 @@ function FeatureBadgeGridSix({
20939
21140
  if (!label) return null;
20940
21141
  return /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: badgeClassName, children: label });
20941
21142
  }, [badgeSlot, label, badgeClassName]);
20942
- const renderFeatureIcon = (feature) => {
21143
+ const renderFeatureIcon = useCallback((feature) => {
20943
21144
  if (feature.icon) return feature.icon;
20944
21145
  if (feature.iconName) {
20945
21146
  return /* @__PURE__ */ jsx(
@@ -20952,25 +21153,28 @@ function FeatureBadgeGridSix({
20952
21153
  );
20953
21154
  }
20954
21155
  return null;
20955
- };
21156
+ }, []);
20956
21157
  const featuresContent = useMemo$1(() => {
20957
21158
  if (featuresSlot) return featuresSlot;
20958
21159
  if (!features || features.length === 0) return null;
20959
- return features.map((feature, index) => /* @__PURE__ */ jsxs(
20960
- "div",
20961
- {
20962
- className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
20963
- children: [
20964
- /* @__PURE__ */ jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", children: renderFeatureIcon(feature) }),
20965
- /* @__PURE__ */ jsxs("div", { children: [
20966
- feature.heading && (typeof feature.heading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsx("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading })),
20967
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
20968
- ] })
20969
- ]
20970
- },
20971
- index
20972
- ));
20973
- }, [featuresSlot, features, cardClassName]);
21160
+ return features.map((feature, index) => {
21161
+ const iconContent = renderFeatureIcon(feature);
21162
+ return /* @__PURE__ */ jsxs(
21163
+ "div",
21164
+ {
21165
+ className: cn("flex gap-6 space-y-4 rounded-lg md:block", cardClassName, feature.className),
21166
+ children: [
21167
+ iconContent && /* @__PURE__ */ jsx("span", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-accent md:size-12", children: iconContent }),
21168
+ /* @__PURE__ */ jsxs("div", { children: [
21169
+ feature.heading && (typeof feature.heading === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading }) : /* @__PURE__ */ jsx("div", { className: cn("font-medium md:mb-2 md:text-xl", feature.headingClassName), children: feature.heading })),
21170
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground md:text-base", feature.descriptionClassName), children: feature.description }))
21171
+ ] })
21172
+ ]
21173
+ },
21174
+ index
21175
+ );
21176
+ });
21177
+ }, [featuresSlot, features, cardClassName, renderFeatureIcon]);
20974
21178
  const actionContent = useMemo$1(() => {
20975
21179
  if (actionSlot) return actionSlot;
20976
21180
  if (!action) return null;
@@ -21031,7 +21235,6 @@ function FeatureBadgeGridSix({
21031
21235
  function FeaturePatternGridLinks({
21032
21236
  features,
21033
21237
  featuresSlot,
21034
- patternUrl = patternSvgs.dotPattern,
21035
21238
  className,
21036
21239
  containerClassName,
21037
21240
  gridClassName,
@@ -21042,26 +21245,28 @@ function FeaturePatternGridLinks({
21042
21245
  patternOpacity,
21043
21246
  patternClassName
21044
21247
  }) {
21045
- const renderFeatureIcon = (feature) => {
21248
+ const renderFeatureIcon = useCallback((feature) => {
21046
21249
  if (feature.icon) return feature.icon;
21047
21250
  if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
21048
21251
  return null;
21049
- };
21050
- const renderFeatureLink = (feature) => {
21252
+ }, []);
21253
+ const renderFeatureLink = useCallback((feature) => {
21051
21254
  if (feature.linkSlot) return feature.linkSlot;
21052
- if (!feature.link) return null;
21255
+ if (!feature.link && !feature.linkLabel) return null;
21256
+ const label = feature.linkLabel || (feature.link ? "Learn more" : null);
21257
+ if (!label) return null;
21053
21258
  return /* @__PURE__ */ jsxs(
21054
21259
  Pressable,
21055
21260
  {
21056
21261
  href: feature.link,
21057
21262
  className: cn("flex items-center gap-2 text-sm font-medium", feature.linkClassName),
21058
21263
  children: [
21059
- feature.linkLabel || "Learn more",
21264
+ label,
21060
21265
  /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
21061
21266
  ]
21062
21267
  }
21063
21268
  );
21064
- };
21269
+ }, []);
21065
21270
  const featuresContent = useMemo$1(() => {
21066
21271
  if (featuresSlot) return featuresSlot;
21067
21272
  if (!features || features.length === 0) return null;
@@ -21080,7 +21285,7 @@ function FeaturePatternGridLinks({
21080
21285
  },
21081
21286
  index
21082
21287
  ));
21083
- }, [featuresSlot, features, cardClassName]);
21288
+ }, [featuresSlot, features, cardClassName, renderFeatureIcon, renderFeatureLink]);
21084
21289
  return /* @__PURE__ */ jsx(
21085
21290
  Section,
21086
21291
  {
@@ -21089,12 +21294,8 @@ function FeaturePatternGridLinks({
21089
21294
  pattern,
21090
21295
  patternOpacity,
21091
21296
  patternClassName,
21092
- className: cn("bg-muted/30", className),
21297
+ className,
21093
21298
  containerClassName,
21094
- style: {
21095
- backgroundImage: `url(${patternUrl})`,
21096
- backgroundRepeat: "repeat"
21097
- },
21098
21299
  children: /* @__PURE__ */ jsx("div", { className: cn("grid gap-6 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: featuresContent })
21099
21300
  }
21100
21301
  );
@@ -21162,7 +21363,7 @@ function FeatureTabbedContentImage({
21162
21363
  description,
21163
21364
  slides,
21164
21365
  slidesSlot,
21165
- defaultTab = "1",
21366
+ defaultTab,
21166
21367
  className,
21167
21368
  containerClassName,
21168
21369
  headerClassName,
@@ -21181,7 +21382,7 @@ function FeatureTabbedContentImage({
21181
21382
  patternOpacity,
21182
21383
  patternClassName
21183
21384
  }) {
21184
- const renderFeatures = useMemo$1(() => (slide) => {
21385
+ const renderFeatures = React52.useCallback((slide) => {
21185
21386
  if (slide.featuresSlot) return slide.featuresSlot;
21186
21387
  if (!slide.features || slide.features.length === 0) return null;
21187
21388
  return slide.features.map((feature, index) => {
@@ -21195,7 +21396,7 @@ function FeatureTabbedContentImage({
21195
21396
  ] }, index);
21196
21397
  });
21197
21398
  }, []);
21198
- const renderActions = useMemo$1(() => (slide) => {
21399
+ const renderActions = React52.useCallback((slide) => {
21199
21400
  if (slide.actionsSlot) return slide.actionsSlot;
21200
21401
  if (!slide.actions || slide.actions.length === 0) return null;
21201
21402
  return slide.actions.map((action, index) => {
@@ -21235,7 +21436,7 @@ function FeatureTabbedContentImage({
21235
21436
  );
21236
21437
  });
21237
21438
  }, []);
21238
- const renderImage = useMemo$1(() => (slide) => {
21439
+ const renderImage = React52.useCallback((slide) => {
21239
21440
  if (slide.imageSlot) return slide.imageSlot;
21240
21441
  if (!slide.image) return null;
21241
21442
  const imageAlt = slide.imageAlt || (typeof slide.title === "string" ? slide.title : "Tab content image");
@@ -21282,6 +21483,11 @@ function FeatureTabbedContentImage({
21282
21483
  ))
21283
21484
  ] });
21284
21485
  }, [slidesSlot, slides, tabsListClassName, tabTriggerClassName, tabContentClassName, contentGridClassName, renderFeatures, renderActions, renderImage]);
21486
+ const effectiveDefaultTab = useMemo$1(() => {
21487
+ if (defaultTab) return defaultTab;
21488
+ if (slides && slides.length > 0) return slides[0].id.toString();
21489
+ return "1";
21490
+ }, [defaultTab, slides]);
21285
21491
  return /* @__PURE__ */ jsxs(
21286
21492
  Section,
21287
21493
  {
@@ -21297,10 +21503,10 @@ function FeatureTabbedContentImage({
21297
21503
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-center text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
21298
21504
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-center text-balance text-muted-foreground lg:text-xl", descriptionClassName), children: description }))
21299
21505
  ] }),
21300
- /* @__PURE__ */ jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsx(
21506
+ (slidesSlot || slides && slides.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-12", tabsWrapperClassName), children: /* @__PURE__ */ jsx(
21301
21507
  Tabs,
21302
21508
  {
21303
- defaultValue: defaultTab,
21509
+ defaultValue: effectiveDefaultTab,
21304
21510
  className: cn("mx-auto flex w-fit flex-col items-center gap-8 md:gap-12", tabsClassName),
21305
21511
  children: slidesContent
21306
21512
  }
@@ -21312,7 +21518,7 @@ function FeatureTabbedContentImage({
21312
21518
  function FeatureUtilityCardsGrid({
21313
21519
  label,
21314
21520
  labelIcon,
21315
- labelIconName = "lucide/square-dashed-mouse-pointer",
21521
+ labelIconName,
21316
21522
  title,
21317
21523
  description,
21318
21524
  learnMoreAction,
@@ -21334,11 +21540,11 @@ function FeatureUtilityCardsGrid({
21334
21540
  patternOpacity,
21335
21541
  patternClassName
21336
21542
  }) {
21337
- const renderLabelIcon = () => {
21543
+ const renderLabelIcon = useMemo$1(() => {
21338
21544
  if (labelIcon) return labelIcon;
21339
21545
  if (labelIconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20, className: "text-primary" });
21340
- return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/square-dashed-mouse-pointer", size: 20, className: "text-primary" });
21341
- };
21546
+ return null;
21547
+ }, [labelIcon, labelIconName]);
21342
21548
  const learnMoreContent = useMemo$1(() => {
21343
21549
  if (learnMoreSlot) return learnMoreSlot;
21344
21550
  if (!learnMoreAction) return null;
@@ -21369,7 +21575,7 @@ function FeatureUtilityCardsGrid({
21369
21575
  }
21370
21576
  );
21371
21577
  }, [learnMoreSlot, learnMoreAction]);
21372
- const renderUtilityImage = (utility) => {
21578
+ const renderUtilityImage = React52.useCallback((utility) => {
21373
21579
  if (utility.imageSlot) return utility.imageSlot;
21374
21580
  if (utility.image) {
21375
21581
  return /* @__PURE__ */ jsx(
@@ -21384,7 +21590,7 @@ function FeatureUtilityCardsGrid({
21384
21590
  );
21385
21591
  }
21386
21592
  return null;
21387
- };
21593
+ }, [optixFlowConfig]);
21388
21594
  const utilitiesContent = useMemo$1(() => {
21389
21595
  if (utilitiesSlot) return utilitiesSlot;
21390
21596
  if (!utilities || utilities.length === 0) return null;
@@ -21395,7 +21601,7 @@ function FeatureUtilityCardsGrid({
21395
21601
  utility.description && (typeof utility.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", utility.descriptionClassName), children: utility.description }))
21396
21602
  ] })
21397
21603
  ] }, index));
21398
- }, [utilitiesSlot, utilities, cardClassName, optixFlowConfig]);
21604
+ }, [utilitiesSlot, utilities, cardClassName, renderUtilityImage]);
21399
21605
  return /* @__PURE__ */ jsxs(
21400
21606
  Section,
21401
21607
  {
@@ -21407,26 +21613,28 @@ function FeatureUtilityCardsGrid({
21407
21613
  className,
21408
21614
  containerClassName: cn("max-w-7xl", containerClassName),
21409
21615
  children: [
21410
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
21411
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
21412
- renderLabelIcon(),
21413
- label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { children: label }) : /* @__PURE__ */ jsx("div", { children: label }))
21616
+ (label || labelIcon || labelIconName || learnMoreSlot || learnMoreAction) && /* @__PURE__ */ jsxs(Fragment$1, { children: [
21617
+ /* @__PURE__ */ jsxs("div", { className: cn("flex items-center justify-between text-sm", headerClassName), children: [
21618
+ (label || labelIcon || labelIconName) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 text-muted-foreground", labelClassName), children: [
21619
+ renderLabelIcon,
21620
+ label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { children: label }) : /* @__PURE__ */ jsx("div", { children: label }))
21621
+ ] }),
21622
+ learnMoreContent
21414
21623
  ] }),
21415
- learnMoreContent
21624
+ /* @__PURE__ */ jsx(Separator, { className: "mt-3 mb-8" })
21416
21625
  ] }),
21417
- /* @__PURE__ */ jsx(Separator, { className: "mt-3 mb-8" }),
21418
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
21626
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-between gap-6 md:flex-row", children: [
21419
21627
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-medium md:w-1/2", titleClassName), children: title })),
21420
21628
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("md:w-1/2", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("md:w-1/2", descriptionClassName), children: description }))
21421
21629
  ] }),
21422
- /* @__PURE__ */ jsx("div", { className: cn("mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: utilitiesContent })
21630
+ (utilitiesSlot || utilities && utilities.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mt-11 grid w-full grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-3", gridClassName), children: utilitiesContent })
21423
21631
  ]
21424
21632
  }
21425
21633
  );
21426
21634
  }
21427
21635
  function FeatureBentoUtilities({
21428
21636
  label,
21429
- labelIconName = "lucide/square-dashed-mouse-pointer",
21637
+ labelIconName,
21430
21638
  labelIcon,
21431
21639
  title,
21432
21640
  description,
@@ -21449,7 +21657,7 @@ function FeatureBentoUtilities({
21449
21657
  patternOpacity,
21450
21658
  patternClassName
21451
21659
  }) {
21452
- const renderCard = useMemo$1(() => (card, index) => {
21660
+ const renderCard = React52.useCallback((card, index) => {
21453
21661
  const hasImage = card.imageSrc || card.imageSlot;
21454
21662
  const cardClasses = cn(
21455
21663
  hasImage ? "overflow-hidden pt-0" : "p-6",
@@ -21495,12 +21703,16 @@ function FeatureBentoUtilities({
21495
21703
  card.description && /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: card.description })
21496
21704
  ] }, index);
21497
21705
  }, [optixFlowConfig]);
21498
- const renderColumn = useMemo$1(() => (cards, slot) => {
21706
+ const renderColumn = React52.useCallback((cards, slot) => {
21499
21707
  if (slot) return slot;
21500
21708
  if (!cards || cards.length === 0) return null;
21501
21709
  return cards.map((card, index) => renderCard(card, index));
21502
21710
  }, [renderCard]);
21503
- const labelIconElement = useMemo$1(() => labelIcon ?? (labelIconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20 }) : null), [labelIcon, labelIconName]);
21711
+ const labelIconElement = useMemo$1(() => {
21712
+ if (labelIcon) return labelIcon;
21713
+ if (labelIconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: labelIconName, size: 20 });
21714
+ return null;
21715
+ }, [labelIcon, labelIconName]);
21504
21716
  return /* @__PURE__ */ jsxs(
21505
21717
  Section,
21506
21718
  {
@@ -21512,7 +21724,7 @@ function FeatureBentoUtilities({
21512
21724
  className: cn("bg-gray-50 dark:bg-background", className),
21513
21725
  containerClassName: cn("max-w-7xl", containerClassName),
21514
21726
  children: [
21515
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
21727
+ (labelIconElement || label) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2 text-muted-foreground", labelClassName), children: [
21516
21728
  labelIconElement,
21517
21729
  label && (typeof label === "string" ? /* @__PURE__ */ jsx("p", { className: "text-sm", children: label }) : /* @__PURE__ */ jsx("div", { className: "text-sm", children: label }))
21518
21730
  ] }),
@@ -21551,15 +21763,15 @@ function FeatureChecklistThreeColumn({
21551
21763
  patternOpacity,
21552
21764
  patternClassName
21553
21765
  }) {
21554
- const getCheckItemContent = useMemo$1(() => (item) => {
21766
+ const getCheckItemContent = useCallback((item) => {
21555
21767
  if (typeof item === "string") return item;
21556
21768
  return item.content;
21557
21769
  }, []);
21558
- const getCheckItemClassName = useMemo$1(() => (item) => {
21770
+ const getCheckItemClassName = useCallback((item) => {
21559
21771
  if (typeof item === "string") return void 0;
21560
21772
  return item.className;
21561
21773
  }, []);
21562
- const renderChecklistColumn = useMemo$1(() => (items, slot, gapClass) => {
21774
+ const renderChecklistColumn = useCallback((items, slot, gapClass) => {
21563
21775
  if (slot) return slot;
21564
21776
  if (!items || items.length === 0) return null;
21565
21777
  return /* @__PURE__ */ jsx("ul", { className: cn("flex flex-col text-muted-foreground", gapClass, checklistClassName), children: items.map((item, index) => /* @__PURE__ */ jsxs("li", { className: cn("flex items-center gap-2", getCheckItemClassName(item)), children: [
@@ -21567,7 +21779,7 @@ function FeatureChecklistThreeColumn({
21567
21779
  getCheckItemContent(item)
21568
21780
  ] }, index)) });
21569
21781
  }, [checklistClassName, getCheckItemContent, getCheckItemClassName]);
21570
- const renderCardImage = useMemo$1(() => (card) => {
21782
+ const renderCardImage = useCallback((card) => {
21571
21783
  if (card.imageSlot) return card.imageSlot;
21572
21784
  if (card.image) {
21573
21785
  return /* @__PURE__ */ jsx(
@@ -21583,7 +21795,7 @@ function FeatureChecklistThreeColumn({
21583
21795
  }
21584
21796
  return null;
21585
21797
  }, [optixFlowConfig]);
21586
- const renderCardLink = useMemo$1(() => (card) => {
21798
+ const renderCardLink = useCallback((card) => {
21587
21799
  if (card.linkSlot) return card.linkSlot;
21588
21800
  if (!card.link) return null;
21589
21801
  return /* @__PURE__ */ jsxs(
@@ -21646,7 +21858,7 @@ function FeatureChecklistThreeColumn({
21646
21858
  pattern,
21647
21859
  patternOpacity,
21648
21860
  patternClassName,
21649
- className: cn("py-16 sm:py-24 md:py-32", className),
21861
+ className,
21650
21862
  containerClassName,
21651
21863
  children: [
21652
21864
  /* @__PURE__ */ jsxs("div", { className: cn("grid gap-4 sm:grid-cols-2 sm:gap-8 md:gap-12 lg:grid-cols-3 lg:gap-16", headerGridClassName), children: [
@@ -21678,26 +21890,25 @@ function FeatureIntegrationCards({
21678
21890
  patternOpacity,
21679
21891
  patternClassName
21680
21892
  }) {
21681
- const renderIntegrationIcon = useMemo$1(() => (integration) => {
21893
+ const renderIntegrationIcon = useCallback((integration) => {
21682
21894
  if (integration.iconSlot) return integration.iconSlot;
21683
- if (integration.icon) {
21684
- return /* @__PURE__ */ jsx(
21685
- Img,
21686
- {
21687
- src: integration.icon,
21688
- alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
21689
- className: cn("h-auto w-7", integration.iconClassName),
21690
- loading: "lazy",
21691
- optixFlowConfig
21692
- }
21693
- );
21694
- }
21695
- return null;
21895
+ if (!integration.icon) return null;
21896
+ return /* @__PURE__ */ jsx(
21897
+ Img,
21898
+ {
21899
+ src: integration.icon,
21900
+ alt: integration.iconAlt || (typeof integration.title === "string" ? integration.title : "Integration icon"),
21901
+ className: cn("h-auto w-7", integration.iconClassName),
21902
+ loading: "lazy",
21903
+ optixFlowConfig
21904
+ }
21905
+ );
21696
21906
  }, [optixFlowConfig]);
21697
- const renderLinkLabel = useMemo$1(() => (integration) => {
21907
+ const renderLinkLabel = useCallback((integration) => {
21698
21908
  if (integration.linkLabelSlot) return integration.linkLabelSlot;
21909
+ if (!integration.linkLabel) return null;
21699
21910
  return /* @__PURE__ */ jsxs("span", { className: cn("flex items-center gap-1 rounded-full border px-3 py-2.5 text-sm", integration.linkLabelClassName), children: [
21700
- integration.linkLabel || "Visit Website",
21911
+ integration.linkLabel,
21701
21912
  /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 16 })
21702
21913
  ] });
21703
21914
  }, []);
@@ -21705,10 +21916,12 @@ function FeatureIntegrationCards({
21705
21916
  if (integrationsSlot) return integrationsSlot;
21706
21917
  if (!integrations || integrations.length === 0) return null;
21707
21918
  return integrations.map((integration, index) => {
21919
+ const iconContent = renderIntegrationIcon(integration);
21920
+ const linkLabelContent = renderLinkLabel(integration);
21708
21921
  const cardContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [
21709
21922
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
21710
- /* @__PURE__ */ jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: renderIntegrationIcon(integration) }),
21711
- renderLinkLabel(integration)
21923
+ iconContent && /* @__PURE__ */ jsx("span", { className: "grid size-12 shrink-0 place-content-center rounded-md border", children: iconContent }),
21924
+ linkLabelContent
21712
21925
  ] }),
21713
21926
  /* @__PURE__ */ jsxs("div", { children: [
21714
21927
  integration.title && (typeof integration.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title }) : /* @__PURE__ */ jsx("div", { className: cn("font-medium md:text-lg", integration.titleClassName), children: integration.title })),
@@ -21780,12 +21993,12 @@ function FeatureIconTabsContent({
21780
21993
  patternOpacity,
21781
21994
  patternClassName
21782
21995
  }) {
21783
- const renderTabIcon = useMemo$1(() => (tab) => {
21996
+ const renderTabIcon = useCallback((tab) => {
21784
21997
  if (tab.icon) return tab.icon;
21785
21998
  if (tab.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: tab.iconName, size: 16 });
21786
- return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 16 });
21999
+ return null;
21787
22000
  }, []);
21788
- const renderTabContentActions = useMemo$1(() => (content) => {
22001
+ const renderTabContentActions = useCallback((content) => {
21789
22002
  if (content.actionsSlot) return content.actionsSlot;
21790
22003
  if (!content.actions || content.actions.length === 0) return null;
21791
22004
  return content.actions.map((action, index) => {
@@ -21825,7 +22038,7 @@ function FeatureIconTabsContent({
21825
22038
  );
21826
22039
  });
21827
22040
  }, []);
21828
- const renderTabContentImage = useMemo$1(() => (content) => {
22041
+ const renderTabContentImage = useCallback((content) => {
21829
22042
  if (content.imageSlot) return content.imageSlot;
21830
22043
  if (content.imageSrc) {
21831
22044
  return /* @__PURE__ */ jsx(
@@ -21852,7 +22065,7 @@ function FeatureIconTabsContent({
21852
22065
  value: tab.value,
21853
22066
  className: cn("flex items-center gap-2 rounded-xl px-4 py-3 text-sm font-semibold text-muted-foreground data-[state=active]:bg-muted data-[state=active]:text-primary", tabTriggerClassName, tab.className),
21854
22067
  children: [
21855
- renderTabIcon(tab),
22068
+ (tab.icon || tab.iconName) && renderTabIcon(tab),
21856
22069
  tab.label
21857
22070
  ]
21858
22071
  },
@@ -21874,9 +22087,9 @@ function FeatureIconTabsContent({
21874
22087
  content.badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: cn("w-fit bg-background", content.badgeClassName), children: content.badge }),
21875
22088
  content.title && (typeof content.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", content.titleClassName), children: content.title })),
21876
22089
  content.description && (typeof content.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", content.descriptionClassName), children: content.description })),
21877
- renderTabContentActions(content)
22090
+ (content.actionsSlot || content.actions && content.actions.length > 0) && renderTabContentActions(content)
21878
22091
  ] }),
21879
- /* @__PURE__ */ jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
22092
+ (content.imageSlot || content.imageSrc) && /* @__PURE__ */ jsx("div", { className: "relative h-[300px] w-full lg:h-[400px]", children: renderTabContentImage(content) })
21880
22093
  ]
21881
22094
  },
21882
22095
  tab.value
@@ -21895,7 +22108,7 @@ function FeatureIconTabsContent({
21895
22108
  className,
21896
22109
  containerClassName: cn("mx-auto", containerClassName),
21897
22110
  children: [
21898
- /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
22111
+ (badge || heading || description) && /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-4 text-center", headerClassName), children: [
21899
22112
  badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: badgeClassName, children: badge }),
21900
22113
  heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: cn("max-w-2xl text-3xl font-semibold md:text-4xl", headingClassName), children: heading })),
21901
22114
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
@@ -22058,28 +22271,30 @@ function FeatureImageOverlayBadge({
22058
22271
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
22059
22272
  /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
22060
22273
  ] }),
22061
- /* @__PURE__ */ jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
22274
+ imageContent && /* @__PURE__ */ jsxs("div", { className: cn("relative rounded-xl", imageWrapperClassName), children: [
22062
22275
  imageContent,
22063
- /* @__PURE__ */ jsx("div", { className: cn("absolute top-0 right-0 bottom-0 left-0 rounded-xl bg-linear-to-t from-primary via-transparent to-transparent", overlayClassName) }),
22064
- /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
22065
- /* @__PURE__ */ jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm", avatarBadgeClassName), children: [
22066
- /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
22067
- avatarBadgeText
22068
- ] }),
22069
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
22070
- overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
22071
- overlayLinkText && /* @__PURE__ */ jsxs(
22072
- Pressable,
22073
- {
22074
- href: overlayLinkUrl,
22075
- onClick: overlayLinkOnClick,
22076
- className: "flex items-center gap-1 font-medium",
22077
- children: [
22078
- overlayLinkText,
22079
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
22080
- ]
22081
- }
22082
- )
22276
+ (avatarSrc || avatarBadgeText || overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxs(Fragment$1, { children: [
22277
+ /* @__PURE__ */ jsx("div", { className: cn("absolute top-0 right-0 bottom-0 left-0 rounded-xl bg-linear-to-t from-primary via-transparent to-transparent", overlayClassName) }),
22278
+ /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
22279
+ (avatarSrc || avatarBadgeText) && /* @__PURE__ */ jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-2 rounded-full bg-background/30 px-4 py-2.5 text-sm font-semibold backdrop-blur-sm", avatarBadgeClassName), children: [
22280
+ avatarSrc && /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: "Avatar" }) }),
22281
+ avatarBadgeText
22282
+ ] }),
22283
+ (overlayTitle || overlayLinkText) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
22284
+ overlayTitle && (typeof overlayTitle === "string" ? /* @__PURE__ */ jsx("h4", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-semibold lg:text-3xl", overlayTitleClassName), children: overlayTitle })),
22285
+ overlayLinkText && /* @__PURE__ */ jsxs(
22286
+ Pressable,
22287
+ {
22288
+ href: overlayLinkUrl,
22289
+ onClick: overlayLinkOnClick,
22290
+ className: "flex items-center gap-1 font-medium",
22291
+ children: [
22292
+ overlayLinkText,
22293
+ /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 16 })
22294
+ ]
22295
+ }
22296
+ )
22297
+ ] })
22083
22298
  ] })
22084
22299
  ] })
22085
22300
  ] })
@@ -22108,7 +22323,7 @@ function FeatureCategoryImageCards({
22108
22323
  patternOpacity,
22109
22324
  patternClassName
22110
22325
  }) {
22111
- const renderFeatureImage = (feature) => {
22326
+ const renderFeatureImage = useCallback((feature) => {
22112
22327
  if (feature.imageSlot) return feature.imageSlot;
22113
22328
  if (feature.imageSrc) {
22114
22329
  return /* @__PURE__ */ jsx(
@@ -22123,7 +22338,7 @@ function FeatureCategoryImageCards({
22123
22338
  );
22124
22339
  }
22125
22340
  return null;
22126
- };
22341
+ }, [optixFlowConfig]);
22127
22342
  const featuresContent = useMemo$1(() => {
22128
22343
  if (featuresSlot) return featuresSlot;
22129
22344
  if (!features || features.length === 0) return null;
@@ -22134,7 +22349,7 @@ function FeatureCategoryImageCards({
22134
22349
  ] }),
22135
22350
  /* @__PURE__ */ jsx(CardContent, { className: "px-7 pb-7", children: renderFeatureImage(feature) })
22136
22351
  ] }, index));
22137
- }, [featuresSlot, features, cardClassName, optixFlowConfig]);
22352
+ }, [featuresSlot, features, cardClassName, renderFeatureImage]);
22138
22353
  return /* @__PURE__ */ jsxs(
22139
22354
  Section,
22140
22355
  {
@@ -22175,12 +22390,12 @@ function FeatureBentoImageGrid({
22175
22390
  patternOpacity,
22176
22391
  patternClassName
22177
22392
  }) {
22178
- const renderItemIcon = useMemo$1(() => (item) => {
22393
+ const renderItemIcon = React52.useCallback((item) => {
22179
22394
  if (item.icon) return item.icon;
22180
22395
  if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 24 });
22181
22396
  return null;
22182
22397
  }, []);
22183
- const renderItemImage = useMemo$1(() => (item, imageClassName) => {
22398
+ const renderItemImage = React52.useCallback((item, imageClassName) => {
22184
22399
  if (item.imageSlot) return item.imageSlot;
22185
22400
  if (item.imageSrc) {
22186
22401
  return /* @__PURE__ */ jsx(
@@ -22196,13 +22411,15 @@ function FeatureBentoImageGrid({
22196
22411
  }
22197
22412
  return null;
22198
22413
  }, [optixFlowConfig]);
22199
- const renderLargeCard = useMemo$1(() => (item) => {
22414
+ const renderLargeCard = React52.useCallback((item) => {
22415
+ const iconContent = renderItemIcon(item);
22416
+ const hasIconBadgeContent = iconContent || item.iconBadge;
22200
22417
  const cardContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [
22201
22418
  renderItemImage(item, "h-full max-h-[580px] w-full rounded-xl object-cover object-center"),
22202
22419
  /* @__PURE__ */ jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-20 rounded-xl bg-linear-to-t from-primary to-transparent transition-transform duration-300 group-hover:translate-y-0" }),
22203
22420
  /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
22204
- /* @__PURE__ */ jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
22205
- renderItemIcon(item),
22421
+ hasIconBadgeContent && /* @__PURE__ */ jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
22422
+ iconContent,
22206
22423
  item.iconBadge
22207
22424
  ] }),
22208
22425
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
@@ -22226,7 +22443,9 @@ function FeatureBentoImageGrid({
22226
22443
  }
22227
22444
  return /* @__PURE__ */ jsx("div", { className: cn("group relative col-span-2 row-span-3 overflow-hidden rounded-xl", largeCardClassName, item.className), children: cardContent });
22228
22445
  }, [largeCardClassName, renderItemImage, renderItemIcon]);
22229
- const renderSmallCard = useMemo$1(() => (item, index) => {
22446
+ const renderSmallCard = React52.useCallback((item, index) => {
22447
+ const iconContent = renderItemIcon(item);
22448
+ const hasIconBadgeContent = iconContent || item.iconBadge;
22230
22449
  const cardContent = /* @__PURE__ */ jsxs(Fragment$1, { children: [
22231
22450
  renderItemImage(item, cn(
22232
22451
  "h-full w-full rounded-xl object-cover object-center",
@@ -22234,8 +22453,8 @@ function FeatureBentoImageGrid({
22234
22453
  )),
22235
22454
  /* @__PURE__ */ jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-10 rounded-xl bg-linear-to-t from-primary to-transparent opacity-80 transition-transform duration-300 group-hover:translate-y-0" }),
22236
22455
  /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
22237
- /* @__PURE__ */ jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
22238
- renderItemIcon(item),
22456
+ hasIconBadgeContent && /* @__PURE__ */ jsxs("span", { className: cn("ml-auto flex w-fit items-center gap-1 p-2.5 text-sm font-semibold text-background", item.iconBadgeClassName), children: [
22457
+ iconContent,
22239
22458
  item.iconBadge
22240
22459
  ] }),
22241
22460
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-5 text-background", children: [
@@ -22323,34 +22542,33 @@ function FeatureImageCardsThreeColumn({
22323
22542
  patternOpacity,
22324
22543
  patternClassName
22325
22544
  }) {
22545
+ const renderImage = useCallback((card, imageAlt) => {
22546
+ if (card.imageSlot) return card.imageSlot;
22547
+ if (!card.imageSrc) return null;
22548
+ return /* @__PURE__ */ jsx(
22549
+ Img,
22550
+ {
22551
+ src: card.imageSrc,
22552
+ alt: imageAlt,
22553
+ className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
22554
+ loading: "lazy",
22555
+ optixFlowConfig
22556
+ }
22557
+ );
22558
+ }, [optixFlowConfig]);
22559
+ const renderBadgeIcon = useCallback((card) => {
22560
+ if (card.avatarSrc) {
22561
+ return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
22562
+ }
22563
+ if (card.icon) return card.icon;
22564
+ if (!card.iconName) return null;
22565
+ return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName, size: 24 });
22566
+ }, []);
22326
22567
  const cardsContent = useMemo$1(() => {
22327
22568
  if (cardsSlot) return cardsSlot;
22328
22569
  if (!cards || cards.length === 0) return null;
22329
22570
  return cards.map((card, index) => {
22330
22571
  const imageAlt = card.imageAlt || (typeof card.title === "string" ? card.title : "Card image");
22331
- const renderImage = () => {
22332
- if (card.imageSlot) return card.imageSlot;
22333
- if (card.imageSrc) {
22334
- return /* @__PURE__ */ jsx(
22335
- Img,
22336
- {
22337
- src: card.imageSrc,
22338
- alt: imageAlt,
22339
- className: "h-full max-h-[450px] w-full rounded-xl object-cover object-center",
22340
- loading: "lazy",
22341
- optixFlowConfig
22342
- }
22343
- );
22344
- }
22345
- return null;
22346
- };
22347
- const renderBadgeIcon = () => {
22348
- if (card.avatarSrc) {
22349
- return /* @__PURE__ */ jsx(Avatar, { className: "size-7 rounded-full", children: /* @__PURE__ */ jsx(AvatarImage, { src: card.avatarSrc, alt: "Avatar" }) });
22350
- }
22351
- if (card.icon) return card.icon;
22352
- return /* @__PURE__ */ jsx(DynamicIcon, { name: card.iconName || "lucide/zap", size: 24 });
22353
- };
22354
22572
  return /* @__PURE__ */ jsxs(
22355
22573
  Pressable,
22356
22574
  {
@@ -22358,10 +22576,10 @@ function FeatureImageCardsThreeColumn({
22358
22576
  onClick: card.onClick,
22359
22577
  className: cn("group relative overflow-hidden rounded-xl", cardClassName, card.className),
22360
22578
  children: [
22361
- renderImage(),
22579
+ renderImage(card, imageAlt),
22362
22580
  /* @__PURE__ */ jsx("div", { className: "absolute top-0 right-0 bottom-0 left-0 translate-y-20 rounded-xl bg-linear-to-t from-primary to-transparent transition-transform duration-300 group-hover:translate-y-0" }),
22363
22581
  /* @__PURE__ */ jsxs("div", { className: "absolute top-0 flex h-full w-full flex-col justify-between p-7", children: [
22364
- /* @__PURE__ */ jsxs(
22582
+ (card.badgeText || card.avatarSrc || card.icon || card.iconName) && /* @__PURE__ */ jsxs(
22365
22583
  "span",
22366
22584
  {
22367
22585
  className: cn(
@@ -22370,7 +22588,7 @@ function FeatureImageCardsThreeColumn({
22370
22588
  card.badgeClassName
22371
22589
  ),
22372
22590
  children: [
22373
- renderBadgeIcon(),
22591
+ renderBadgeIcon(card),
22374
22592
  card.badgeText
22375
22593
  ]
22376
22594
  }
@@ -22388,7 +22606,7 @@ function FeatureImageCardsThreeColumn({
22388
22606
  index
22389
22607
  );
22390
22608
  });
22391
- }, [cardsSlot, cards, cardClassName, optixFlowConfig]);
22609
+ }, [cardsSlot, cards, cardClassName, renderImage, renderBadgeIcon]);
22392
22610
  return /* @__PURE__ */ jsxs(
22393
22611
  Section,
22394
22612
  {
@@ -22425,11 +22643,11 @@ function FeatureIconGridMuted({
22425
22643
  patternOpacity,
22426
22644
  patternClassName
22427
22645
  }) {
22428
- const renderFeatureIcon = (feature) => {
22646
+ const renderFeatureIcon = useCallback((feature) => {
22429
22647
  if (feature.icon) return feature.icon;
22430
22648
  if (feature.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: feature.iconName, size: 24, className: feature.iconClassName });
22431
22649
  return null;
22432
- };
22650
+ }, []);
22433
22651
  const featuresContent = useMemo$1(() => {
22434
22652
  if (featuresSlot) return featuresSlot;
22435
22653
  if (!features || features.length === 0) return null;
@@ -22438,14 +22656,14 @@ function FeatureIconGridMuted({
22438
22656
  {
22439
22657
  className: cn("flex flex-col gap-2.5 rounded-xl border bg-background p-7", cardClassName, feature.className),
22440
22658
  children: [
22441
- renderFeatureIcon(feature),
22659
+ (feature.icon || feature.iconName) && renderFeatureIcon(feature),
22442
22660
  feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: cn("font-semibold", feature.titleClassName), children: feature.title }) : /* @__PURE__ */ jsx("div", { className: cn("font-semibold", feature.titleClassName), children: feature.title })),
22443
22661
  feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-sm text-muted-foreground", feature.descriptionClassName), children: feature.description }) : /* @__PURE__ */ jsx("div", { className: cn("text-sm text-muted-foreground", feature.descriptionClassName), children: feature.description }))
22444
22662
  ]
22445
22663
  },
22446
22664
  index
22447
22665
  ));
22448
- }, [featuresSlot, features, cardClassName]);
22666
+ }, [featuresSlot, features, cardClassName, renderFeatureIcon]);
22449
22667
  return /* @__PURE__ */ jsx(
22450
22668
  Section,
22451
22669
  {
@@ -22457,11 +22675,11 @@ function FeatureIconGridMuted({
22457
22675
  className: cn("bg-muted/60", className),
22458
22676
  containerClassName,
22459
22677
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-10", children: [
22460
- /* @__PURE__ */ jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
22678
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mx-auto flex max-w-xl flex-col gap-2.5 text-center", headerClassName), children: [
22461
22679
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-4xl font-semibold md:text-5xl", titleClassName), children: title })),
22462
22680
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground", descriptionClassName), children: description }))
22463
22681
  ] }),
22464
- /* @__PURE__ */ jsx("div", { className: cn("mx-auto grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5", gridClassName), children: featuresContent })
22682
+ (featuresSlot || features && features.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("mx-auto grid max-w-7xl gap-7 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5", gridClassName), children: featuresContent })
22465
22683
  ] })
22466
22684
  }
22467
22685
  );
@@ -22494,37 +22712,25 @@ function FeatureStatsHighlight({
22494
22712
  if (actionsSlot) return actionsSlot;
22495
22713
  if (!actions || actions.length === 0) return null;
22496
22714
  return actions.map((action, index) => {
22497
- if (action.children) {
22498
- return /* @__PURE__ */ jsx(
22499
- Pressable,
22500
- {
22501
- href: action.href,
22502
- onClick: action.onClick,
22503
- variant: action.variant,
22504
- size: action.size,
22505
- className: cn("mt-4 w-fit gap-2", action.className),
22506
- "aria-label": action["aria-label"],
22507
- asButton: true,
22508
- children: action.children
22509
- },
22510
- index
22511
- );
22512
- }
22513
- return /* @__PURE__ */ jsxs(
22715
+ const {
22716
+ label,
22717
+ icon,
22718
+ iconAfter,
22719
+ children,
22720
+ className: actionClassName,
22721
+ ...pressableProps
22722
+ } = action;
22723
+ return /* @__PURE__ */ jsx(
22514
22724
  Pressable,
22515
22725
  {
22516
- href: action.href,
22517
- onClick: action.onClick,
22518
- variant: action.variant,
22519
- size: action.size,
22520
- className: cn("mt-4 w-fit gap-2", action.className),
22521
- "aria-label": action["aria-label"],
22726
+ className: cn("mt-4 w-fit gap-2", actionClassName),
22522
22727
  asButton: true,
22523
- children: [
22524
- action.icon,
22525
- action.label,
22526
- action.iconAfter
22527
- ]
22728
+ ...pressableProps,
22729
+ children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
22730
+ icon,
22731
+ label,
22732
+ iconAfter
22733
+ ] })
22528
22734
  },
22529
22735
  index
22530
22736
  );
@@ -22538,8 +22744,8 @@ function FeatureStatsHighlight({
22538
22744
  {
22539
22745
  className: cn("flex flex-col gap-2 rounded-xl border bg-muted/30 p-6", statCardClassName, stat.className),
22540
22746
  children: [
22541
- /* @__PURE__ */ jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
22542
- /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
22747
+ stat.value && /* @__PURE__ */ jsx("span", { className: cn("text-4xl font-bold text-primary lg:text-5xl", stat.valueClassName), children: stat.value }),
22748
+ stat.label && /* @__PURE__ */ jsx("span", { className: cn("text-muted-foreground", stat.labelClassName), children: stat.label })
22543
22749
  ]
22544
22750
  },
22545
22751
  index
@@ -22560,9 +22766,9 @@ function FeatureStatsHighlight({
22560
22766
  badge && /* @__PURE__ */ jsx(Badge, { variant: "outline", className: cn("w-fit", badgeClassName), children: badge }),
22561
22767
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold lg:text-5xl", titleClassName), children: title })),
22562
22768
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("text-muted-foreground lg:text-lg", descriptionClassName), children: description })),
22563
- /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
22769
+ (actionsSlot || actions && actions.length > 0) && /* @__PURE__ */ jsx("div", { className: actionsClassName, children: actionsContent })
22564
22770
  ] }),
22565
- /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
22771
+ (statsSlot || stats && stats.length > 0) && /* @__PURE__ */ jsx("div", { className: cn("grid grid-cols-2 gap-6", statsGridClassName), children: statsContent })
22566
22772
  ] })
22567
22773
  }
22568
22774
  );
@@ -22626,7 +22832,7 @@ function FeatureAccordionImage({
22626
22832
  description,
22627
22833
  items,
22628
22834
  itemsSlot,
22629
- defaultValue = "item-0",
22835
+ defaultValue,
22630
22836
  className,
22631
22837
  containerClassName,
22632
22838
  headerClassName,
@@ -22643,24 +22849,25 @@ function FeatureAccordionImage({
22643
22849
  patternOpacity,
22644
22850
  patternClassName
22645
22851
  }) {
22646
- const [activeItem, setActiveItem] = React52.useState(defaultValue);
22852
+ const [activeItem, setActiveItem] = React52.useState(defaultValue || "item-0");
22647
22853
  const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
22648
22854
  const currentImage = items?.[activeIndex] || items?.[0];
22649
22855
  const accordionItemsContent = useMemo$1(() => {
22650
22856
  if (itemsSlot) return itemsSlot;
22651
22857
  if (!items || items.length === 0) return null;
22652
22858
  return items.map((item, index) => /* @__PURE__ */ jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
22653
- /* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
22654
- /* @__PURE__ */ jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
22859
+ item.title && /* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
22860
+ item.content && /* @__PURE__ */ jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
22655
22861
  ] }, index));
22656
22862
  }, [itemsSlot, items]);
22657
22863
  const imageContent = useMemo$1(() => {
22658
22864
  if (currentImage?.imageSlot) return currentImage.imageSlot;
22865
+ if (!currentImage?.imageSrc) return null;
22659
22866
  return /* @__PURE__ */ jsx(
22660
22867
  Img,
22661
22868
  {
22662
- src: currentImage?.imageSrc || "",
22663
- alt: currentImage?.imageAlt || "",
22869
+ src: currentImage.imageSrc,
22870
+ alt: currentImage.imageAlt || "",
22664
22871
  className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
22665
22872
  loading: "lazy",
22666
22873
  optixFlowConfig
@@ -22678,11 +22885,11 @@ function FeatureAccordionImage({
22678
22885
  className,
22679
22886
  containerClassName,
22680
22887
  children: [
22681
- /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
22888
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
22682
22889
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
22683
22890
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }))
22684
22891
  ] }),
22685
- /* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
22892
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
22686
22893
  /* @__PURE__ */ jsx(
22687
22894
  Accordion,
22688
22895
  {
@@ -22717,49 +22924,52 @@ function FeatureCapabilitiesGrid({
22717
22924
  patternOpacity,
22718
22925
  patternClassName
22719
22926
  }) {
22720
- const renderItemIcon = (item) => {
22927
+ const renderItemIcon = React52.useCallback((item) => {
22721
22928
  if (item.icon) return item.icon;
22722
22929
  if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 });
22723
- return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/star", size: 20 });
22724
- };
22930
+ return null;
22931
+ }, []);
22725
22932
  const itemsContent = useMemo$1(() => {
22726
22933
  if (itemsSlot) return itemsSlot;
22727
22934
  if (!items || items.length === 0) return null;
22728
- return items.map((item, index) => /* @__PURE__ */ jsxs(
22729
- Card,
22730
- {
22731
- className: cn("group relative overflow-visible border-white/10 bg-white/5 p-0 transition-colors duration-300 hover:border-white/20", cardClassName, item.className),
22732
- children: [
22733
- /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100", children: /* @__PURE__ */ jsx("div", { className: "absolute -inset-px rounded-xl bg-linear-to-br from-white/10 via-white/5 to-transparent" }) }),
22734
- /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl bg-linear-to-tr from-white/0 to-white/0 transition-colors group-hover:from-white/3 group-hover:to-white/6" }),
22735
- /* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
22736
- /* @__PURE__ */ jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
22737
- /* @__PURE__ */ jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
22738
- /* @__PURE__ */ jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
22739
- /* @__PURE__ */ jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
22740
- ] }),
22741
- /* @__PURE__ */ jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
22742
- /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-white/15 bg-white/5 text-white", item.iconClassName), children: renderItemIcon(item) }),
22743
- /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
22744
- item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(CardTitle, { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title })),
22745
- item.badge && /* @__PURE__ */ jsx("span", { className: cn("rounded-full border border-white/20 px-2 py-0.5 text-[10px] leading-none text-white/70", item.badgeClassName), children: item.badge })
22746
- ] }) })
22747
- ] }),
22748
- /* @__PURE__ */ jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-white/70", item.descriptionClassName), children: item.description }),
22749
- /* @__PURE__ */ jsx(
22750
- motion.div,
22751
- {
22752
- className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
22753
- initial: { opacity: 0 },
22754
- whileHover: { opacity: 1 },
22755
- transition: { duration: 0.25 }
22756
- }
22757
- )
22758
- ]
22759
- },
22760
- `${typeof item.title === "string" ? item.title : "item"}-${index}`
22761
- ));
22762
- }, [itemsSlot, items, cardClassName]);
22935
+ return items.map((item, index) => {
22936
+ const iconContent = renderItemIcon(item);
22937
+ return /* @__PURE__ */ jsxs(
22938
+ Card,
22939
+ {
22940
+ className: cn("group relative overflow-visible border-white/10 bg-white/5 p-0 transition-colors duration-300 hover:border-white/20", cardClassName, item.className),
22941
+ children: [
22942
+ /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100", children: /* @__PURE__ */ jsx("div", { className: "absolute -inset-px rounded-xl bg-linear-to-br from-white/10 via-white/5 to-transparent" }) }),
22943
+ /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 rounded-xl bg-linear-to-tr from-white/0 to-white/0 transition-colors group-hover:from-white/3 group-hover:to-white/6" }),
22944
+ /* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0 hidden group-hover:block", children: [
22945
+ /* @__PURE__ */ jsx("div", { className: "absolute -left-2 -top-2 h-3 w-3 bg-white" }),
22946
+ /* @__PURE__ */ jsx("div", { className: "absolute -right-2 -top-2 h-3 w-3 bg-white" }),
22947
+ /* @__PURE__ */ jsx("div", { className: "absolute -left-2 -bottom-2 h-3 w-3 bg-white" }),
22948
+ /* @__PURE__ */ jsx("div", { className: "absolute -right-2 -bottom-2 h-3 w-3 bg-white" })
22949
+ ] }),
22950
+ /* @__PURE__ */ jsxs(CardHeader, { className: "relative z-10 flex flex-row items-start gap-3 p-6", children: [
22951
+ iconContent && /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 items-center justify-center rounded-xl border border-white/15 bg-white/5 text-white", item.iconClassName), children: iconContent }),
22952
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
22953
+ item.title && (typeof item.title === "string" ? /* @__PURE__ */ jsx(CardTitle, { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title }) : /* @__PURE__ */ jsx("div", { className: cn("text-lg font-medium text-white", item.titleClassName), children: item.title })),
22954
+ item.badge && /* @__PURE__ */ jsx("span", { className: cn("rounded-full border border-white/20 px-2 py-0.5 text-[10px] leading-none text-white/70", item.badgeClassName), children: item.badge })
22955
+ ] }) })
22956
+ ] }),
22957
+ item.description && /* @__PURE__ */ jsx(CardContent, { className: cn("relative z-10 px-6 pb-6 text-sm text-white/70", item.descriptionClassName), children: item.description }),
22958
+ /* @__PURE__ */ jsx(
22959
+ motion.div,
22960
+ {
22961
+ className: "pointer-events-none absolute inset-0 rounded-xl ring-0 ring-white/0",
22962
+ initial: { opacity: 0 },
22963
+ whileHover: { opacity: 1 },
22964
+ transition: { duration: 0.25 }
22965
+ }
22966
+ )
22967
+ ]
22968
+ },
22969
+ `${typeof item.title === "string" ? item.title : "item"}-${index}`
22970
+ );
22971
+ });
22972
+ }, [itemsSlot, items, cardClassName, renderItemIcon]);
22763
22973
  return /* @__PURE__ */ jsxs(
22764
22974
  Section,
22765
22975
  {
@@ -39371,7 +39581,7 @@ function CommunityInitiatives({
39371
39581
  }
39372
39582
  );
39373
39583
  }
39374
- var Controls = ({
39584
+ var Controls = React52.memo(({
39375
39585
  handleNext,
39376
39586
  handlePrevious,
39377
39587
  isPreviousDisabled,
@@ -39399,9 +39609,9 @@ var Controls = ({
39399
39609
  }
39400
39610
  )
39401
39611
  ] });
39402
- };
39403
- var FeatureCard = ({ feature, isActive, onClick }) => {
39404
- const variants2 = {
39612
+ });
39613
+ var FeatureCard = React52.memo(({ feature, isActive, onClick }) => {
39614
+ const variants2 = useMemo$1(() => ({
39405
39615
  initial: {
39406
39616
  opacity: 0
39407
39617
  },
@@ -39411,7 +39621,7 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
39411
39621
  exit: {
39412
39622
  opacity: 0
39413
39623
  }
39414
- };
39624
+ }), []);
39415
39625
  return /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", children: /* @__PURE__ */ jsx(
39416
39626
  motion.div,
39417
39627
  {
@@ -39441,13 +39651,13 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
39441
39651
  ease: "easeOut"
39442
39652
  },
39443
39653
  className: "p-6 text-sm md:p-8 md:text-base",
39444
- children: /* @__PURE__ */ jsxs("p", { children: [
39445
- /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
39654
+ children: (feature.title || feature.description) && /* @__PURE__ */ jsxs("p", { children: [
39655
+ feature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
39446
39656
  feature.title,
39447
39657
  "."
39448
39658
  ] }),
39449
- " ",
39450
- /* @__PURE__ */ jsx("span", { children: feature.description })
39659
+ feature.title && feature.description && " ",
39660
+ feature.description && /* @__PURE__ */ jsx("span", { children: feature.description })
39451
39661
  ] })
39452
39662
  },
39453
39663
  `feature-description-active-${feature.title}`
@@ -39473,16 +39683,23 @@ var FeatureCard = ({ feature, isActive, onClick }) => {
39473
39683
  lineHeight: "normal"
39474
39684
  },
39475
39685
  children: [
39476
- /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/plus-circle", size: 24, className: "shrink-0" }),
39477
- /* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
39686
+ /* @__PURE__ */ jsx(
39687
+ DynamicIcon,
39688
+ {
39689
+ name: "lucide/plus-circle",
39690
+ size: 24,
39691
+ className: "shrink-0"
39692
+ }
39693
+ ),
39694
+ feature.title && /* @__PURE__ */ jsx("p", { className: "shrink-0 font-semibold", children: feature.title })
39478
39695
  ]
39479
39696
  },
39480
39697
  `feature-description-inactive-${feature.title}`
39481
39698
  )
39482
39699
  }
39483
39700
  ) });
39484
- };
39485
- var FeaturesDesktop = ({
39701
+ });
39702
+ var FeaturesDesktop = React52.memo(({
39486
39703
  features,
39487
39704
  handleNext,
39488
39705
  handlePrevious,
@@ -39513,8 +39730,8 @@ var FeaturesDesktop = ({
39513
39730
  );
39514
39731
  }) })
39515
39732
  ] });
39516
- };
39517
- var FeaturesMobile = ({
39733
+ });
39734
+ var FeaturesMobile = React52.memo(({
39518
39735
  features,
39519
39736
  handleNext,
39520
39737
  handlePrevious,
@@ -39523,7 +39740,7 @@ var FeaturesMobile = ({
39523
39740
  isPreviousDisabled,
39524
39741
  isNextDisabled
39525
39742
  }) => {
39526
- const variants2 = {
39743
+ const variants2 = useMemo$1(() => ({
39527
39744
  enter: (direction2) => ({
39528
39745
  x: direction2 > 0 ? 100 : -100,
39529
39746
  opacity: 0
@@ -39536,7 +39753,8 @@ var FeaturesMobile = ({
39536
39753
  x: direction2 < 0 ? 100 : -100,
39537
39754
  opacity: 0
39538
39755
  })
39539
- };
39756
+ }), []);
39757
+ const currentFeature = features[activeIndex];
39540
39758
  return /* @__PURE__ */ jsx("div", { className: "relative z-10 flex flex-col items-center gap-6 md:hidden", children: /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-4", children: [
39541
39759
  /* @__PURE__ */ jsx(
39542
39760
  "button",
@@ -39561,13 +39779,13 @@ var FeaturesMobile = ({
39561
39779
  opacity: { duration: 0.2 }
39562
39780
  },
39563
39781
  className: "absolute inset-0 flex items-center justify-center rounded-3xl bg-background p-4",
39564
- children: /* @__PURE__ */ jsxs("p", { className: "text-center text-sm", children: [
39565
- /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
39566
- features[activeIndex].title,
39782
+ children: (currentFeature?.title || currentFeature?.description) && /* @__PURE__ */ jsxs("p", { className: "text-center text-sm", children: [
39783
+ currentFeature.title && /* @__PURE__ */ jsxs("span", { className: "font-semibold", children: [
39784
+ currentFeature.title,
39567
39785
  "."
39568
39786
  ] }),
39569
- " ",
39570
- /* @__PURE__ */ jsx("span", { children: features[activeIndex].description })
39787
+ currentFeature.title && currentFeature.description && " ",
39788
+ currentFeature.description && /* @__PURE__ */ jsx("span", { children: currentFeature.description })
39571
39789
  ] })
39572
39790
  },
39573
39791
  activeIndex
@@ -39583,7 +39801,7 @@ var FeaturesMobile = ({
39583
39801
  }
39584
39802
  )
39585
39803
  ] }) });
39586
- };
39804
+ });
39587
39805
  function FeatureAnimatedCarousel({
39588
39806
  features,
39589
39807
  className,
@@ -39596,25 +39814,25 @@ function FeatureAnimatedCarousel({
39596
39814
  }) {
39597
39815
  const [activeIndex, setActiveIndex] = React52.useState(0);
39598
39816
  const [direction, setDirection] = React52.useState(1);
39599
- const handleNext = () => {
39600
- if (activeIndex < features.length - 1) {
39817
+ const handleNext = useCallback(() => {
39818
+ if (features && activeIndex < features.length - 1) {
39601
39819
  setDirection(1);
39602
39820
  setActiveIndex(activeIndex + 1);
39603
39821
  }
39604
- };
39605
- const handlePrevious = () => {
39822
+ }, [activeIndex, features]);
39823
+ const handlePrevious = useCallback(() => {
39606
39824
  if (activeIndex > 0) {
39607
39825
  setDirection(-1);
39608
39826
  setActiveIndex(activeIndex - 1);
39609
39827
  }
39610
- };
39611
- const handleFeatureClick = (index) => {
39828
+ }, [activeIndex]);
39829
+ const handleFeatureClick = useCallback((index) => {
39612
39830
  setDirection(index > activeIndex ? 1 : -1);
39613
39831
  setActiveIndex(index);
39614
- };
39832
+ }, [activeIndex]);
39615
39833
  const isPreviousDisabled = activeIndex === 0;
39616
- const isNextDisabled = activeIndex === features.length - 1;
39617
- const imageVariants = {
39834
+ const isNextDisabled = !features || activeIndex === features.length - 1;
39835
+ const imageVariants = useMemo$1(() => ({
39618
39836
  enter: (direction2) => ({
39619
39837
  x: direction2 > 0 ? 300 : -300,
39620
39838
  opacity: 0
@@ -39627,7 +39845,22 @@ function FeatureAnimatedCarousel({
39627
39845
  x: direction2 < 0 ? 300 : -300,
39628
39846
  opacity: 0
39629
39847
  })
39630
- };
39848
+ }), []);
39849
+ if (!features || features.length === 0) {
39850
+ return /* @__PURE__ */ jsx(
39851
+ Section,
39852
+ {
39853
+ background,
39854
+ spacing,
39855
+ pattern,
39856
+ patternOpacity,
39857
+ patternClassName,
39858
+ className,
39859
+ children: /* @__PURE__ */ jsx("div", { className: "relative flex min-h-[500px] flex-col-reverse gap-8 overflow-hidden rounded-3xl bg-muted p-6 md:flex-row md:items-center md:p-12 lg:min-h-[600px]" })
39860
+ }
39861
+ );
39862
+ }
39863
+ const currentFeature = features[activeIndex];
39631
39864
  return /* @__PURE__ */ jsx(
39632
39865
  Section,
39633
39866
  {
@@ -39662,7 +39895,7 @@ function FeatureAnimatedCarousel({
39662
39895
  isNextDisabled
39663
39896
  }
39664
39897
  ),
39665
- /* @__PURE__ */ jsx("div", { className: "relative flex-1 overflow-hidden rounded-2xl md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
39898
+ currentFeature?.image && /* @__PURE__ */ jsx("div", { className: "relative flex-1 overflow-hidden rounded-2xl md:absolute md:right-8 md:top-8 md:bottom-8 md:w-1/2", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", custom: direction, children: /* @__PURE__ */ jsx(
39666
39899
  motion.div,
39667
39900
  {
39668
39901
  custom: direction,
@@ -39678,8 +39911,8 @@ function FeatureAnimatedCarousel({
39678
39911
  children: /* @__PURE__ */ jsx(
39679
39912
  Img,
39680
39913
  {
39681
- src: features[activeIndex].image,
39682
- alt: features[activeIndex].imageAlt || (typeof features[activeIndex].title === "string" ? features[activeIndex].title : "Feature image"),
39914
+ src: currentFeature.image,
39915
+ alt: currentFeature.imageAlt || (typeof currentFeature.title === "string" ? currentFeature.title : "Feature image"),
39683
39916
  className: "h-full w-full object-cover",
39684
39917
  optixFlowConfig
39685
39918
  }
@@ -62293,22 +62526,29 @@ var NavbarTabbedSections = ({
62293
62526
  ]
62294
62527
  }
62295
62528
  ) }),
62296
- /* @__PURE__ */ jsxs(SheetContent, { side: "right", className: "w-[300px] overflow-y-auto", children: [
62297
- /* @__PURE__ */ jsx(SheetTitle, { className: "sr-only", children: "Navigation Menu" }),
62298
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 pt-8", children: [
62299
- renderMobileMenu,
62300
- /* @__PURE__ */ jsx(
62301
- "div",
62302
- {
62303
- className: cn(
62304
- "mt-4 flex flex-col gap-2 border-t pt-4",
62305
- actionsClassName
62306
- ),
62307
- children: renderAuthActions
62308
- }
62309
- )
62310
- ] })
62311
- ] })
62529
+ /* @__PURE__ */ jsxs(
62530
+ SheetContent,
62531
+ {
62532
+ side: "right",
62533
+ className: "w-[300px] overflow-y-auto",
62534
+ children: [
62535
+ /* @__PURE__ */ jsx(SheetTitle, { className: "sr-only", children: "Navigation Menu" }),
62536
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 pt-8", children: [
62537
+ renderMobileMenu,
62538
+ /* @__PURE__ */ jsx(
62539
+ "div",
62540
+ {
62541
+ className: cn(
62542
+ "mt-4 flex flex-col gap-2 border-t pt-4",
62543
+ actionsClassName
62544
+ ),
62545
+ children: renderAuthActions
62546
+ }
62547
+ )
62548
+ ] })
62549
+ ]
62550
+ }
62551
+ )
62312
62552
  ] })
62313
62553
  ]
62314
62554
  }
@@ -77267,7 +77507,7 @@ function ListSearchableGrid({
77267
77507
  }
77268
77508
  );
77269
77509
  }
77270
- var { useMemo: useMemo441 } = React52;
77510
+ var { useMemo: useMemo443 } = React52;
77271
77511
  function OfferModalNewsletterDiscount({
77272
77512
  title,
77273
77513
  emailPlaceholder,
@@ -77334,7 +77574,7 @@ function OfferModalNewsletterDiscount({
77334
77574
  });
77335
77575
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
77336
77576
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
77337
- const renderCloseButton = useMemo441(() => {
77577
+ const renderCloseButton = useMemo443(() => {
77338
77578
  if (closeButtonSlot) return closeButtonSlot;
77339
77579
  if (!closeButtonText) return null;
77340
77580
  return /* @__PURE__ */ jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
@@ -77348,12 +77588,12 @@ function OfferModalNewsletterDiscount({
77348
77588
  }
77349
77589
  ) }) });
77350
77590
  }, [closeButtonSlot, closeButtonText, closeClassName]);
77351
- const renderHeader = useMemo441(() => {
77591
+ const renderHeader = useMemo443(() => {
77352
77592
  if (headerSlot) return headerSlot;
77353
77593
  if (!title) return null;
77354
77594
  return /* @__PURE__ */ jsx(DialogHeader, { className: headerClassName, children: typeof title === "string" ? /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) : /* @__PURE__ */ jsx(DialogTitle, { className: cn("text-start font-serif text-2xl font-normal leading-snug", titleClassName), children: title }) });
77355
77595
  }, [headerSlot, title, headerClassName, titleClassName]);
77356
- const renderForm = useMemo441(() => {
77596
+ const renderForm = useMemo443(() => {
77357
77597
  if (formSlot) return formSlot;
77358
77598
  return /* @__PURE__ */ jsxs(
77359
77599
  Form,
@@ -77415,7 +77655,7 @@ function OfferModalNewsletterDiscount({
77415
77655
  }
77416
77656
  ) });
77417
77657
  }
77418
- var { useMemo: useMemo442 } = React52;
77658
+ var { useMemo: useMemo444 } = React52;
77419
77659
  function OfferModalMembershipImage({
77420
77660
  overline,
77421
77661
  title,
@@ -77491,7 +77731,7 @@ function OfferModalMembershipImage({
77491
77731
  });
77492
77732
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
77493
77733
  const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
77494
- const renderImage = useMemo442(() => {
77734
+ const renderImage = useMemo444(() => {
77495
77735
  if (imageSlot) return imageSlot;
77496
77736
  if (!image) return null;
77497
77737
  return /* @__PURE__ */ jsx("div", { className: cn("max-h-[290px] h-full overflow-hidden max-lg:hidden", imageWrapperClassName), children: /* @__PURE__ */ jsx(
@@ -77504,7 +77744,7 @@ function OfferModalMembershipImage({
77504
77744
  }
77505
77745
  ) });
77506
77746
  }, [imageSlot, image, imageWrapperClassName, imageClassName, optixFlowConfig]);
77507
- const renderCloseButton = useMemo442(() => {
77747
+ const renderCloseButton = useMemo444(() => {
77508
77748
  if (closeButtonSlot) return closeButtonSlot;
77509
77749
  return /* @__PURE__ */ jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
77510
77750
  Pressable,
@@ -77520,7 +77760,7 @@ function OfferModalMembershipImage({
77520
77760
  }
77521
77761
  ) }) });
77522
77762
  }, [closeButtonSlot, closeClassName]);
77523
- const renderForm = useMemo442(() => {
77763
+ const renderForm = useMemo444(() => {
77524
77764
  if (formSlot) return formSlot;
77525
77765
  return /* @__PURE__ */ jsxs(
77526
77766
  Form,
@@ -77583,7 +77823,7 @@ function OfferModalMembershipImage({
77583
77823
  }
77584
77824
  );
77585
77825
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
77586
- const renderFooter = useMemo442(() => {
77826
+ const renderFooter = useMemo444(() => {
77587
77827
  if (footerSlot) return footerSlot;
77588
77828
  if (!description) return null;
77589
77829
  return /* @__PURE__ */ jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsx(DialogDescription, { className: cn("text-muted-foreground text-center text-xs leading-relaxed", descriptionClassName), children: description }) });
@@ -77611,7 +77851,7 @@ function OfferModalMembershipImage({
77611
77851
  }
77612
77852
  ) });
77613
77853
  }
77614
- var { useMemo: useMemo443 } = React52;
77854
+ var { useMemo: useMemo445 } = React52;
77615
77855
  function OfferModalSheetNewsletter({
77616
77856
  logo,
77617
77857
  logoSlot,
@@ -77693,7 +77933,7 @@ function OfferModalSheetNewsletter({
77693
77933
  });
77694
77934
  const formMethod = formConfig?.method?.toLowerCase() === "get" ? "get" : "post";
77695
77935
  const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
77696
- const renderLogo = useMemo443(() => {
77936
+ const renderLogo = useMemo445(() => {
77697
77937
  if (logoSlot) return logoSlot;
77698
77938
  if (!logo) return null;
77699
77939
  const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
@@ -77707,7 +77947,7 @@ function OfferModalSheetNewsletter({
77707
77947
  }
77708
77948
  );
77709
77949
  }, [logoSlot, logo, logoClassName, optixFlowConfig]);
77710
- const renderHeader = useMemo443(() => {
77950
+ const renderHeader = useMemo445(() => {
77711
77951
  if (headerSlot) return headerSlot;
77712
77952
  return /* @__PURE__ */ jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
77713
77953
  renderLogo,
@@ -77717,7 +77957,7 @@ function OfferModalSheetNewsletter({
77717
77957
  ] })
77718
77958
  ] });
77719
77959
  }, [headerSlot, renderLogo, headerClassName, title, titleClassName, description, descriptionClassName]);
77720
- const renderForm = useMemo443(() => {
77960
+ const renderForm = useMemo445(() => {
77721
77961
  if (formSlot) return formSlot;
77722
77962
  return /* @__PURE__ */ jsx(
77723
77963
  Form,
@@ -77765,7 +78005,7 @@ function OfferModalSheetNewsletter({
77765
78005
  }
77766
78006
  );
77767
78007
  }, [formSlot, form, formConfig, formMethod, emailPlaceholder, inputClassName, submitClassName, buttonText, formClassName]);
77768
- const renderLegal = useMemo443(() => {
78008
+ const renderLegal = useMemo445(() => {
77769
78009
  if (legalSlot) return legalSlot;
77770
78010
  if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
77771
78011
  return /* @__PURE__ */ jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
@@ -77779,7 +78019,7 @@ function OfferModalSheetNewsletter({
77779
78019
  "."
77780
78020
  ] });
77781
78021
  }, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
77782
- const renderImage = useMemo443(() => {
78022
+ const renderImage = useMemo445(() => {
77783
78023
  if (imageSlot) return imageSlot;
77784
78024
  if (!image) return null;
77785
78025
  return /* @__PURE__ */ jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsx(