@opensite/ui 0.8.6 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/dist/about-developer-profile.cjs +1 -1
  2. package/dist/about-developer-profile.js +1 -1
  3. package/dist/about-interactive-tabs.cjs +1 -1
  4. package/dist/about-interactive-tabs.js +1 -1
  5. package/dist/about-location-info-hero.cjs +5 -5
  6. package/dist/about-location-info-hero.js +5 -5
  7. package/dist/about-mission-features.cjs +3 -3
  8. package/dist/about-mission-features.js +3 -3
  9. package/dist/about-mission-principles.cjs +1 -1
  10. package/dist/about-mission-principles.js +1 -1
  11. package/dist/about-network-spotlight.cjs +6 -6
  12. package/dist/about-network-spotlight.js +6 -6
  13. package/dist/about-split-hero.cjs +4 -4
  14. package/dist/about-split-hero.js +4 -4
  15. package/dist/about-startup-team.cjs +3 -3
  16. package/dist/about-startup-team.js +3 -3
  17. package/dist/about-story-expertise.cjs +4 -4
  18. package/dist/about-story-expertise.js +4 -4
  19. package/dist/article-breadcrumb-social.cjs +1 -1
  20. package/dist/article-breadcrumb-social.js +1 -1
  21. package/dist/article-chapters-author.cjs +1 -1
  22. package/dist/article-chapters-author.js +1 -1
  23. package/dist/article-compact-toc.cjs +1 -1
  24. package/dist/article-compact-toc.js +1 -1
  25. package/dist/article-split-animated.cjs +1 -1
  26. package/dist/article-split-animated.js +1 -1
  27. package/dist/article-toc-sidebar.cjs +1 -1
  28. package/dist/article-toc-sidebar.js +1 -1
  29. package/dist/banner-countdown-sale.cjs +1 -1
  30. package/dist/banner-countdown-sale.js +1 -1
  31. package/dist/banner-social-follow.cjs +1 -1
  32. package/dist/banner-social-follow.js +1 -1
  33. package/dist/blog-cards-tagline-cta.cjs +1 -1
  34. package/dist/blog-cards-tagline-cta.js +1 -1
  35. package/dist/blog-horizontal-timeline.cjs +2 -2
  36. package/dist/blog-horizontal-timeline.js +2 -2
  37. package/dist/blog-tech-insights.cjs +6 -6
  38. package/dist/blog-tech-insights.js +6 -6
  39. package/dist/carousel-animated-sections.cjs +7 -8
  40. package/dist/carousel-animated-sections.js +7 -8
  41. package/dist/carousel-auto-progress-slides.cjs +7 -7
  42. package/dist/carousel-auto-progress-slides.js +7 -7
  43. package/dist/carousel-autoplay-progress.cjs +3 -3
  44. package/dist/carousel-autoplay-progress.js +3 -3
  45. package/dist/carousel-fullscreen-scroll-fx.cjs +7 -7
  46. package/dist/carousel-fullscreen-scroll-fx.js +7 -7
  47. package/dist/carousel-horizontal-cards.cjs +1 -1
  48. package/dist/carousel-horizontal-cards.js +1 -1
  49. package/dist/carousel-icon-sidebar.cjs +3 -3
  50. package/dist/carousel-icon-sidebar.js +3 -3
  51. package/dist/carousel-image-hero.cjs +2 -2
  52. package/dist/carousel-image-hero.js +2 -2
  53. package/dist/carousel-multi-step-showcase.cjs +1 -1
  54. package/dist/carousel-multi-step-showcase.js +1 -1
  55. package/dist/carousel-portfolio-hero.cjs +5 -5
  56. package/dist/carousel-portfolio-hero.js +5 -5
  57. package/dist/carousel-progress-slider.cjs +1 -1
  58. package/dist/carousel-progress-slider.js +1 -1
  59. package/dist/case-studies-image-grid.cjs +2 -2
  60. package/dist/case-studies-image-grid.js +2 -2
  61. package/dist/case-studies-stats-card.cjs +1 -1
  62. package/dist/case-studies-stats-card.js +1 -1
  63. package/dist/case-study-prose-sidebar.cjs +1 -1
  64. package/dist/case-study-prose-sidebar.js +1 -1
  65. package/dist/case-study-toc-social-sidebar.cjs +1 -1
  66. package/dist/case-study-toc-social-sidebar.js +1 -1
  67. package/dist/comparison-ai-models.cjs +15 -15
  68. package/dist/comparison-ai-models.js +15 -15
  69. package/dist/comparison-feature-cards.cjs +1 -1
  70. package/dist/comparison-feature-cards.js +1 -1
  71. package/dist/comparison-feature-grid.cjs +1 -1
  72. package/dist/comparison-feature-grid.js +1 -1
  73. package/dist/comparison-metrics-rows.cjs +6 -6
  74. package/dist/comparison-metrics-rows.js +6 -6
  75. package/dist/comparison-table-tabs.cjs +5 -5
  76. package/dist/comparison-table-tabs.js +5 -5
  77. package/dist/comparison-table-tooltips.cjs +1 -1
  78. package/dist/comparison-table-tooltips.js +1 -1
  79. package/dist/comparison-table-two-column.cjs +2 -2
  80. package/dist/comparison-table-two-column.js +2 -2
  81. package/dist/components.cjs +22 -23
  82. package/dist/components.js +22 -23
  83. package/dist/contact-emergency.cjs +1 -1
  84. package/dist/contact-emergency.js +1 -1
  85. package/dist/contact-help-center.cjs +3 -3
  86. package/dist/contact-help-center.js +3 -3
  87. package/dist/cta-background-icon-badge.cjs +1 -1
  88. package/dist/cta-background-icon-badge.js +1 -1
  89. package/dist/cta-enterprise-dark-features.cjs +5 -5
  90. package/dist/cta-enterprise-dark-features.js +5 -5
  91. package/dist/cta-fullwidth-background.cjs +1 -1
  92. package/dist/cta-fullwidth-background.js +1 -1
  93. package/dist/cta-hero-feature-cards.cjs +3 -3
  94. package/dist/cta-hero-feature-cards.js +3 -3
  95. package/dist/cta-image-overlay-arrow.cjs +1 -1
  96. package/dist/cta-image-overlay-arrow.js +1 -1
  97. package/dist/cta-image-overlay-centered.cjs +2 -2
  98. package/dist/cta-image-overlay-centered.js +2 -2
  99. package/dist/cta-split-gradient-image.cjs +1 -1
  100. package/dist/cta-split-gradient-image.js +1 -1
  101. package/dist/cta-video-background-hero.cjs +3 -3
  102. package/dist/cta-video-background-hero.js +3 -3
  103. package/dist/cta-workflow-tabs.cjs +1 -1
  104. package/dist/cta-workflow-tabs.js +1 -1
  105. package/dist/faq-badge-support.cjs +8 -3
  106. package/dist/faq-badge-support.js +8 -3
  107. package/dist/faq-bordered-badge.cjs +3 -3
  108. package/dist/faq-bordered-badge.js +3 -3
  109. package/dist/faq-card-categories.cjs +1 -1
  110. package/dist/faq-card-categories.js +1 -1
  111. package/dist/faq-categorized-sections.cjs +1 -1
  112. package/dist/faq-categorized-sections.js +1 -1
  113. package/dist/faq-centered-accordion.cjs +1 -1
  114. package/dist/faq-centered-accordion.js +1 -1
  115. package/dist/faq-gradient-categories.cjs +1 -1
  116. package/dist/faq-gradient-categories.js +1 -1
  117. package/dist/faq-muted-cards.cjs +1 -1
  118. package/dist/faq-muted-cards.js +1 -1
  119. package/dist/faq-profile-sidebar.cjs +3 -3
  120. package/dist/faq-profile-sidebar.js +3 -3
  121. package/dist/faq-rounded-cards.cjs +4 -16
  122. package/dist/faq-rounded-cards.js +4 -16
  123. package/dist/faq-sidebar-navigation.cjs +1 -1
  124. package/dist/faq-sidebar-navigation.js +1 -1
  125. package/dist/faq-simple-accordion.cjs +1 -1
  126. package/dist/faq-simple-accordion.js +1 -1
  127. package/dist/faq-split-help.cjs +46 -17
  128. package/dist/faq-split-help.js +46 -17
  129. package/dist/faq-split-hero.cjs +5 -5
  130. package/dist/faq-split-hero.js +5 -5
  131. package/dist/faq-static-list.cjs +1 -1
  132. package/dist/faq-static-list.js +1 -1
  133. package/dist/feature-accordion-image.cjs +1 -1
  134. package/dist/feature-accordion-image.js +1 -1
  135. package/dist/feature-bento-utilities.cjs +1 -1
  136. package/dist/feature-bento-utilities.js +1 -1
  137. package/dist/feature-capabilities-grid.cjs +13 -13
  138. package/dist/feature-capabilities-grid.js +13 -13
  139. package/dist/feature-icon-grid-muted.cjs +2 -2
  140. package/dist/feature-icon-grid-muted.js +2 -2
  141. package/dist/feature-icon-tabs-content.cjs +3 -3
  142. package/dist/feature-icon-tabs-content.js +3 -3
  143. package/dist/feature-image-cards-three-column.cjs +2 -2
  144. package/dist/feature-image-cards-three-column.js +2 -2
  145. package/dist/feature-image-overlay-badge.cjs +2 -2
  146. package/dist/feature-image-overlay-badge.js +2 -2
  147. package/dist/feature-integration-cards.cjs +2 -2
  148. package/dist/feature-integration-cards.js +2 -2
  149. package/dist/feature-numbered-cards.cjs +1 -1
  150. package/dist/feature-numbered-cards.js +1 -1
  151. package/dist/feature-pattern-grid-links.cjs +1 -1
  152. package/dist/feature-pattern-grid-links.js +1 -1
  153. package/dist/footer-animated-social.cjs +3 -3
  154. package/dist/footer-animated-social.js +3 -3
  155. package/dist/footer-brand-links-contact.cjs +10 -10
  156. package/dist/footer-brand-links-contact.js +10 -10
  157. package/dist/footer-comprehensive-links.cjs +20 -20
  158. package/dist/footer-comprehensive-links.js +20 -20
  159. package/dist/footer-cta-banner.cjs +4 -4
  160. package/dist/footer-cta-banner.js +4 -4
  161. package/dist/footer-cta-social.cjs +2 -2
  162. package/dist/footer-cta-social.js +2 -2
  163. package/dist/footer-newsletter-minimal.cjs +5 -5
  164. package/dist/footer-newsletter-minimal.js +5 -5
  165. package/dist/footer-simple-centered.cjs +2 -2
  166. package/dist/footer-simple-centered.js +2 -2
  167. package/dist/hero-ad-campaign-expert.cjs +2 -2
  168. package/dist/hero-ad-campaign-expert.js +2 -2
  169. package/dist/hero-agency-animated-images.cjs +2 -2
  170. package/dist/hero-agency-animated-images.js +2 -2
  171. package/dist/hero-architecture-fullscreen.cjs +2 -2
  172. package/dist/hero-architecture-fullscreen.js +2 -2
  173. package/dist/hero-billing-platform-logos.cjs +4 -4
  174. package/dist/hero-billing-platform-logos.js +4 -4
  175. package/dist/hero-business-operations-mosaic.cjs +2 -2
  176. package/dist/hero-business-operations-mosaic.js +2 -2
  177. package/dist/hero-centered-gradient-cta.cjs +1 -1
  178. package/dist/hero-centered-gradient-cta.js +1 -1
  179. package/dist/hero-coming-soon-countdown.cjs +3 -3
  180. package/dist/hero-coming-soon-countdown.js +3 -3
  181. package/dist/hero-conversation-intelligence.cjs +1 -1
  182. package/dist/hero-conversation-intelligence.js +1 -1
  183. package/dist/hero-conversion-video-play.cjs +1 -1
  184. package/dist/hero-conversion-video-play.js +1 -1
  185. package/dist/hero-crm-streamlined.cjs +2 -2
  186. package/dist/hero-crm-streamlined.js +2 -2
  187. package/dist/hero-customer-support-layered.cjs +1 -1
  188. package/dist/hero-customer-support-layered.js +1 -1
  189. package/dist/hero-design-carousel-portfolio.cjs +3 -3
  190. package/dist/hero-design-carousel-portfolio.js +3 -3
  191. package/dist/hero-design-showcase-logos.cjs +1 -1
  192. package/dist/hero-design-showcase-logos.js +1 -1
  193. package/dist/hero-developer-tools-code.cjs +1 -1
  194. package/dist/hero-developer-tools-code.js +1 -1
  195. package/dist/hero-digital-agency-fullscreen.cjs +3 -3
  196. package/dist/hero-digital-agency-fullscreen.js +3 -3
  197. package/dist/hero-ecommerce-product-showcase.cjs +2 -2
  198. package/dist/hero-ecommerce-product-showcase.js +2 -2
  199. package/dist/hero-enterprise-security.cjs +2 -2
  200. package/dist/hero-enterprise-security.js +2 -2
  201. package/dist/hero-event-registration.cjs +3 -3
  202. package/dist/hero-event-registration.js +3 -3
  203. package/dist/hero-feature-cards-grid.cjs +2 -2
  204. package/dist/hero-feature-cards-grid.js +2 -2
  205. package/dist/hero-floating-images.cjs +6 -8
  206. package/dist/hero-floating-images.js +6 -8
  207. package/dist/hero-fullscreen-background-image.cjs +3 -3
  208. package/dist/hero-fullscreen-background-image.js +3 -3
  209. package/dist/hero-fullscreen-logo-cta.cjs +2 -2
  210. package/dist/hero-fullscreen-logo-cta.js +2 -2
  211. package/dist/hero-gradient-client-focused.cjs +1 -1
  212. package/dist/hero-gradient-client-focused.js +1 -1
  213. package/dist/hero-hiring-animated-text.cjs +2 -2
  214. package/dist/hero-hiring-animated-text.js +2 -2
  215. package/dist/hero-image-slider.cjs +1 -2
  216. package/dist/hero-image-slider.js +1 -2
  217. package/dist/hero-innovation-image-grid.cjs +3 -3
  218. package/dist/hero-innovation-image-grid.js +3 -3
  219. package/dist/hero-mental-health-team.cjs +4 -4
  220. package/dist/hero-mental-health-team.js +4 -4
  221. package/dist/hero-minimal-centered-dark.cjs +1 -1
  222. package/dist/hero-minimal-centered-dark.js +1 -1
  223. package/dist/hero-mobile-app-download.cjs +2 -2
  224. package/dist/hero-mobile-app-download.js +2 -2
  225. package/dist/hero-newsletter-minimal.cjs +1 -1
  226. package/dist/hero-newsletter-minimal.js +1 -1
  227. package/dist/hero-overlay-cta-grid.cjs +5 -5
  228. package/dist/hero-overlay-cta-grid.js +5 -5
  229. package/dist/hero-portfolio-creative.cjs +3 -3
  230. package/dist/hero-portfolio-creative.js +3 -3
  231. package/dist/hero-premium-split-avatars.cjs +4 -4
  232. package/dist/hero-premium-split-avatars.js +4 -4
  233. package/dist/hero-presentation-platform-video.cjs +4 -4
  234. package/dist/hero-presentation-platform-video.js +4 -4
  235. package/dist/hero-pricing-comparison.cjs +3 -3
  236. package/dist/hero-pricing-comparison.js +3 -3
  237. package/dist/hero-product-showcase-floating.cjs +3 -3
  238. package/dist/hero-product-showcase-floating.js +3 -3
  239. package/dist/hero-productivity-launcher-video.cjs +2 -2
  240. package/dist/hero-productivity-launcher-video.js +2 -2
  241. package/dist/hero-saas-dashboard-preview.cjs +1 -1
  242. package/dist/hero-saas-dashboard-preview.js +1 -1
  243. package/dist/hero-shared-inbox-layered.cjs +1 -1
  244. package/dist/hero-shared-inbox-layered.js +1 -1
  245. package/dist/hero-software-growth-video-dialog.cjs +2 -2
  246. package/dist/hero-software-growth-video-dialog.js +2 -2
  247. package/dist/hero-split-geometric-shapes.cjs +177 -23
  248. package/dist/hero-split-geometric-shapes.d.cts +38 -5
  249. package/dist/hero-split-geometric-shapes.d.ts +38 -5
  250. package/dist/hero-split-geometric-shapes.js +178 -24
  251. package/dist/hero-split-icon-cards.cjs +2 -2
  252. package/dist/hero-split-icon-cards.js +2 -2
  253. package/dist/hero-split-image-newsletter.cjs +1 -1
  254. package/dist/hero-split-image-newsletter.js +1 -1
  255. package/dist/hero-startup-launch-cta.cjs +2 -2
  256. package/dist/hero-startup-launch-cta.js +2 -2
  257. package/dist/hero-stats-social-proof.cjs +3 -3
  258. package/dist/hero-stats-social-proof.js +3 -3
  259. package/dist/hero-task-timer-animated.cjs +2 -2
  260. package/dist/hero-task-timer-animated.js +2 -2
  261. package/dist/hero-testimonial-image-grid.cjs +1 -1
  262. package/dist/hero-testimonial-image-grid.js +1 -1
  263. package/dist/hero-therapy-testimonial-grid.cjs +3 -3
  264. package/dist/hero-therapy-testimonial-grid.js +3 -3
  265. package/dist/hero-ui-library-showcase.cjs +1 -1
  266. package/dist/hero-ui-library-showcase.js +1 -1
  267. package/dist/hero-video-background-dark.cjs +1 -1
  268. package/dist/hero-video-background-dark.js +1 -1
  269. package/dist/hero-video-dialog-gradient.cjs +1 -1
  270. package/dist/hero-video-dialog-gradient.js +1 -1
  271. package/dist/hero-welcome-asymmetric-images.cjs +38 -2
  272. package/dist/hero-welcome-asymmetric-images.js +38 -2
  273. package/dist/image-slider.cjs +1 -2
  274. package/dist/image-slider.d.cts +0 -4
  275. package/dist/image-slider.d.ts +0 -4
  276. package/dist/image-slider.js +1 -2
  277. package/dist/index.cjs +59 -23
  278. package/dist/index.d.cts +1 -1
  279. package/dist/index.d.ts +1 -1
  280. package/dist/index.js +58 -24
  281. package/dist/industries-badge-list-bordered.cjs +12 -6
  282. package/dist/industries-badge-list-bordered.js +12 -6
  283. package/dist/industries-expandable-showcase.cjs +15 -7
  284. package/dist/industries-expandable-showcase.js +15 -7
  285. package/dist/industries-hover-reveal-grid.cjs +13 -6
  286. package/dist/industries-hover-reveal-grid.js +13 -6
  287. package/dist/industries-timeline-table.cjs +11 -5
  288. package/dist/industries-timeline-table.js +11 -5
  289. package/dist/interior-carousel.cjs +2 -2
  290. package/dist/interior-carousel.js +2 -2
  291. package/dist/link-page-bento-layout.cjs +11 -14
  292. package/dist/link-page-bento-layout.js +11 -14
  293. package/dist/link-page-grid-cards.cjs +8 -12
  294. package/dist/link-page-grid-cards.js +8 -12
  295. package/dist/link-page-minimal-profile.cjs +6 -8
  296. package/dist/link-page-minimal-profile.js +6 -8
  297. package/dist/link-page-newsletter-social.cjs +10 -14
  298. package/dist/link-page-newsletter-social.js +10 -14
  299. package/dist/link-tree-block.cjs +10 -13
  300. package/dist/link-tree-block.js +10 -13
  301. package/dist/list-searchable-grid.cjs +3 -3
  302. package/dist/list-searchable-grid.js +3 -3
  303. package/dist/navbar-animated-preview.cjs +5 -5
  304. package/dist/navbar-animated-preview.js +5 -5
  305. package/dist/navbar-centered-menu.cjs +1 -1
  306. package/dist/navbar-centered-menu.js +1 -1
  307. package/dist/navbar-dark-icons.cjs +6 -6
  308. package/dist/navbar-dark-icons.js +6 -6
  309. package/dist/navbar-dropdown-menu.cjs +3 -3
  310. package/dist/navbar-dropdown-menu.js +3 -3
  311. package/dist/navbar-education-platform.cjs +1 -1
  312. package/dist/navbar-education-platform.js +1 -1
  313. package/dist/navbar-enterprise-mega.cjs +12 -12
  314. package/dist/navbar-enterprise-mega.js +12 -12
  315. package/dist/navbar-feature-grid.cjs +3 -3
  316. package/dist/navbar-feature-grid.js +3 -3
  317. package/dist/navbar-image-preview.cjs +4 -4
  318. package/dist/navbar-image-preview.js +4 -4
  319. package/dist/navbar-mega-menu.cjs +3 -3
  320. package/dist/navbar-mega-menu.js +3 -3
  321. package/dist/navbar-multi-column-groups.cjs +1 -1
  322. package/dist/navbar-multi-column-groups.js +1 -1
  323. package/dist/navbar-platform-resources.cjs +2 -2
  324. package/dist/navbar-platform-resources.js +2 -2
  325. package/dist/navbar-sidebar-mobile.cjs +1 -1
  326. package/dist/navbar-sidebar-mobile.js +1 -1
  327. package/dist/navbar-transparent-overlay.cjs +3 -3
  328. package/dist/navbar-transparent-overlay.js +3 -3
  329. package/dist/process-expandable-timeline.cjs +3 -3
  330. package/dist/process-expandable-timeline.js +3 -3
  331. package/dist/process-hover-cards.cjs +2 -2
  332. package/dist/process-hover-cards.js +2 -2
  333. package/dist/process-icon-timeline.cjs +3 -3
  334. package/dist/process-icon-timeline.js +3 -3
  335. package/dist/process-mission-principles.cjs +2 -2
  336. package/dist/process-mission-principles.js +2 -2
  337. package/dist/process-numbered-services.cjs +2 -2
  338. package/dist/process-numbered-services.js +2 -2
  339. package/dist/process-roadmap-timeline.cjs +6 -6
  340. package/dist/process-roadmap-timeline.js +6 -6
  341. package/dist/process-scroll-image.cjs +2 -2
  342. package/dist/process-scroll-image.js +2 -2
  343. package/dist/process-steps-grid.cjs +2 -2
  344. package/dist/process-steps-grid.js +2 -2
  345. package/dist/process-sticky-steps.cjs +2 -2
  346. package/dist/process-sticky-steps.js +2 -2
  347. package/dist/project-alternating-motion.cjs +1 -1
  348. package/dist/project-alternating-motion.js +1 -1
  349. package/dist/project-background-reveal.cjs +2 -2
  350. package/dist/project-background-reveal.js +2 -2
  351. package/dist/project-card-overlay.cjs +7 -7
  352. package/dist/project-card-overlay.js +7 -7
  353. package/dist/project-carousel-cinematic.cjs +2 -2
  354. package/dist/project-carousel-cinematic.js +2 -2
  355. package/dist/project-carousel-detail-cards.cjs +2 -2
  356. package/dist/project-carousel-detail-cards.js +2 -2
  357. package/dist/project-carousel-minimal.cjs +2 -2
  358. package/dist/project-carousel-minimal.js +2 -2
  359. package/dist/project-detail-architecture-carousel.cjs +4 -4
  360. package/dist/project-detail-architecture-carousel.js +4 -4
  361. package/dist/project-featured-carousel.cjs +1 -1
  362. package/dist/project-featured-carousel.js +1 -1
  363. package/dist/project-filterable-gallery.cjs +5 -5
  364. package/dist/project-filterable-gallery.js +5 -5
  365. package/dist/project-filterable-three-column.cjs +5 -5
  366. package/dist/project-filterable-three-column.js +5 -5
  367. package/dist/project-interactive-hover-reveal.cjs +7 -7
  368. package/dist/project-interactive-hover-reveal.js +7 -7
  369. package/dist/project-masonry-columns.cjs +1 -1
  370. package/dist/project-masonry-columns.js +1 -1
  371. package/dist/project-scroll-reveal.cjs +4 -4
  372. package/dist/project-scroll-reveal.js +4 -4
  373. package/dist/project-showcase-alternating.cjs +1 -1
  374. package/dist/project-showcase-alternating.js +1 -1
  375. package/dist/project-sticky-scroll.cjs +3 -3
  376. package/dist/project-sticky-scroll.js +3 -3
  377. package/dist/project-studio-hover-preview.cjs +7 -7
  378. package/dist/project-studio-hover-preview.js +7 -7
  379. package/dist/project-video-carousel.cjs +2 -2
  380. package/dist/project-video-carousel.js +2 -2
  381. package/dist/project-video-hover-bento.cjs +2 -2
  382. package/dist/project-video-hover-bento.js +2 -2
  383. package/dist/project-video-hover-grid.cjs +2 -2
  384. package/dist/project-video-hover-grid.js +2 -2
  385. package/dist/project-video-hover-rounded.cjs +3 -3
  386. package/dist/project-video-hover-rounded.js +3 -3
  387. package/dist/project-video-hover-stack.cjs +3 -3
  388. package/dist/project-video-hover-stack.js +3 -3
  389. package/dist/project-video-hover-two-by-two.cjs +3 -3
  390. package/dist/project-video-hover-two-by-two.js +3 -3
  391. package/dist/project-zigzag-layout.cjs +1 -1
  392. package/dist/project-zigzag-layout.js +1 -1
  393. package/dist/registry.cjs +1383 -1850
  394. package/dist/registry.js +1383 -1850
  395. package/dist/resource-detail-whitepaper-sidebar.cjs +6 -4
  396. package/dist/resource-detail-whitepaper-sidebar.js +6 -4
  397. package/dist/resource-list-course-cards.cjs +1 -1
  398. package/dist/resource-list-course-cards.js +1 -1
  399. package/dist/resource-list-featured-articles.cjs +6 -6
  400. package/dist/resource-list-featured-articles.js +6 -6
  401. package/dist/resource-list-hero-filter.cjs +2 -2
  402. package/dist/resource-list-hero-filter.js +2 -2
  403. package/dist/resource-list-news-updates.cjs +1 -1
  404. package/dist/resource-list-news-updates.js +1 -1
  405. package/dist/reviews-images-helpful.cjs +27 -197
  406. package/dist/reviews-images-helpful.js +28 -198
  407. package/dist/reviews-list-verified.cjs +11 -62
  408. package/dist/reviews-list-verified.js +12 -63
  409. package/dist/service-detail-image-hero.cjs +2 -2
  410. package/dist/service-detail-image-hero.js +2 -2
  411. package/dist/service-detail-stats-hero.cjs +2 -2
  412. package/dist/service-detail-stats-hero.js +2 -2
  413. package/dist/service-hover-carousel.cjs +2 -2
  414. package/dist/service-hover-carousel.js +2 -2
  415. package/dist/services-list-feature-spotlight.cjs +3 -3
  416. package/dist/services-list-feature-spotlight.js +3 -3
  417. package/dist/stats-circular-progress.cjs +1 -1
  418. package/dist/stats-circular-progress.js +1 -1
  419. package/dist/stats-icon-cards.cjs +1 -1
  420. package/dist/stats-icon-cards.js +1 -1
  421. package/dist/stats-timeline-tabs.cjs +1 -1
  422. package/dist/stats-timeline-tabs.js +1 -1
  423. package/dist/team-media-showcase.cjs +4 -4
  424. package/dist/team-media-showcase.js +4 -4
  425. package/dist/testimonial-carousel-cards.cjs +2 -2
  426. package/dist/testimonial-carousel-cards.js +2 -2
  427. package/dist/testimonials-animated-split.cjs +19 -166
  428. package/dist/testimonials-animated-split.js +19 -166
  429. package/dist/testimonials-bento-grid.cjs +11 -56
  430. package/dist/testimonials-bento-grid.js +12 -57
  431. package/dist/testimonials-carousel-image.cjs +15 -153
  432. package/dist/testimonials-carousel-image.js +15 -153
  433. package/dist/testimonials-centered-avatars.cjs +9 -37
  434. package/dist/testimonials-centered-avatars.js +10 -38
  435. package/dist/testimonials-company-logo.cjs +4 -8
  436. package/dist/testimonials-company-logo.js +4 -8
  437. package/dist/testimonials-grid-add-review.cjs +7 -47
  438. package/dist/testimonials-grid-add-review.js +8 -48
  439. package/dist/testimonials-large-quote.cjs +11 -21
  440. package/dist/testimonials-large-quote.js +12 -22
  441. package/dist/testimonials-logo-cards.cjs +9 -53
  442. package/dist/testimonials-logo-cards.js +10 -54
  443. package/dist/testimonials-marquee.cjs +15 -60
  444. package/dist/testimonials-marquee.js +16 -61
  445. package/dist/testimonials-masonry-grid.cjs +11 -71
  446. package/dist/testimonials-masonry-grid.js +12 -72
  447. package/dist/testimonials-mini-dividers.cjs +9 -61
  448. package/dist/testimonials-mini-dividers.js +10 -62
  449. package/dist/testimonials-minimal-numbered.cjs +48 -57
  450. package/dist/testimonials-minimal-numbered.js +48 -57
  451. package/dist/testimonials-parallax-number.cjs +29 -44
  452. package/dist/testimonials-parallax-number.js +29 -44
  453. package/dist/testimonials-quote-carousel.cjs +9 -48
  454. package/dist/testimonials-quote-carousel.js +10 -49
  455. package/dist/testimonials-scrolling-columns.cjs +9 -165
  456. package/dist/testimonials-scrolling-columns.js +10 -166
  457. package/dist/testimonials-simple-grid.cjs +12 -63
  458. package/dist/testimonials-simple-grid.js +13 -64
  459. package/dist/testimonials-slider-minimal.cjs +18 -41
  460. package/dist/testimonials-slider-minimal.js +18 -41
  461. package/dist/testimonials-split-image.cjs +15 -24
  462. package/dist/testimonials-split-image.js +16 -25
  463. package/dist/testimonials-stats-header.cjs +10 -35
  464. package/dist/testimonials-stats-header.js +11 -36
  465. package/dist/testimonials-twitter-cards.cjs +7 -59
  466. package/dist/testimonials-twitter-cards.js +8 -60
  467. package/dist/testimonials-wall-compact.cjs +9 -94
  468. package/dist/testimonials-wall-compact.js +10 -95
  469. package/dist/timeline-changelog-badges.cjs +4 -4
  470. package/dist/timeline-changelog-badges.js +4 -4
  471. package/dist/timeline-history-prose.cjs +4 -4
  472. package/dist/timeline-history-prose.js +4 -4
  473. package/dist/timeline-horizontal-icons.cjs +3 -3
  474. package/dist/timeline-horizontal-icons.js +3 -3
  475. package/dist/timeline-horizontal-phases.cjs +3 -3
  476. package/dist/timeline-horizontal-phases.js +3 -3
  477. package/dist/timeline-stepper-animated.cjs +3 -3
  478. package/dist/timeline-stepper-animated.js +3 -3
  479. package/dist/timeline-tabbed-phases.cjs +4 -4
  480. package/dist/timeline-tabbed-phases.js +4 -4
  481. package/dist/utils.cjs +37 -0
  482. package/dist/utils.d.cts +107 -1
  483. package/dist/utils.d.ts +107 -1
  484. package/dist/utils.js +36 -1
  485. package/package.json +1 -1
@@ -477,65 +477,12 @@ var Section = React__default.default.forwardRef(
477
477
  }
478
478
  );
479
479
  Section.displayName = "Section";
480
-
481
- // lib/blockBrandedIconsAndPlaceholders.ts
482
- var blockBrandedIconsAndPlaceholders = {
483
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
484
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
485
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
486
- avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
487
- avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp",
488
- avatar6: "https://cdn.ing/assets/i/r/286244/t7u1jpe1phm0fvmh3ybh3flhfg6i/avatar-6.webp"};
489
- var DEFAULT_TESTIMONIALS = [
490
- {
491
- quote: "The platform exceeded all our expectations. Implementation was smooth and the results were immediate.",
492
- author: "Sarah Chen",
493
- role: "Product Manager",
494
- company: "TechCorp",
495
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
496
- },
497
- {
498
- quote: "Outstanding customer support and a product that actually delivers on its promises. Rare combination!",
499
- author: "Michael Torres",
500
- role: "CEO",
501
- company: "StartupXYZ",
502
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
503
- },
504
- {
505
- quote: "We've seen a 50% increase in efficiency since switching. The ROI speaks for itself.",
506
- author: "Emily Watson",
507
- role: "Operations Director",
508
- company: "GrowthCo",
509
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
510
- },
511
- {
512
- quote: "Clean interface, powerful features, and excellent documentation. Everything a developer could ask for.",
513
- author: "David Kim",
514
- role: "Senior Developer",
515
- company: "DevStudio",
516
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4
517
- },
518
- {
519
- quote: "The best decision we made this quarter. Our team adopted it instantly and loves using it daily.",
520
- author: "Lisa Park",
521
- role: "Team Lead",
522
- company: "InnovateLabs",
523
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar5
524
- },
525
- {
526
- quote: "Intuitive design that requires minimal training. Our onboarding time dropped significantly.",
527
- author: "Alex Rivera",
528
- role: "HR Manager",
529
- company: "PeopleCo",
530
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar6
531
- }
532
- ];
533
480
  function TestimonialsSimpleGrid({
534
- testimonials = DEFAULT_TESTIMONIALS,
481
+ testimonials,
535
482
  testimonialsSlot,
536
483
  heading,
537
484
  description,
538
- columns = 3,
485
+ columns,
539
486
  className,
540
487
  headerClassName,
541
488
  headingClassName,
@@ -554,19 +501,21 @@ function TestimonialsSimpleGrid({
554
501
  3: "sm:grid-cols-2 lg:grid-cols-3",
555
502
  4: "sm:grid-cols-2 lg:grid-cols-4"
556
503
  };
557
- const getAuthorName = (testimonial) => {
504
+ const effectiveColumns = columns || 3;
505
+ const getAuthorName = React.useCallback((testimonial) => {
558
506
  if (typeof testimonial.author === "string") return testimonial.author;
559
507
  return "";
560
- };
561
- const getAvatarSrc = (testimonial) => {
508
+ }, []);
509
+ const getAvatarSrc = React.useCallback((testimonial) => {
562
510
  return testimonial.avatarSrc || testimonial.avatar?.src;
563
- };
564
- const getInitials = (name) => {
511
+ }, []);
512
+ const getInitials = React.useCallback((name) => {
565
513
  return name.split(" ").map((n) => n[0]).join("");
566
- };
514
+ }, []);
567
515
  const renderedTestimonials = React.useMemo(() => {
568
516
  if (testimonialsSlot) return testimonialsSlot;
569
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-6", gridCols[columns], gridClassName), children: testimonials.map((testimonial, index) => {
517
+ if (!testimonials || testimonials.length === 0) return null;
518
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid gap-6", gridCols[effectiveColumns], gridClassName), children: testimonials.map((testimonial, index) => {
570
519
  const authorName = getAuthorName(testimonial);
571
520
  const avatarSrc = getAvatarSrc(testimonial);
572
521
  return /* @__PURE__ */ jsxRuntime.jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxRuntime.jsxs(CardContent, { className: "p-6", children: [
@@ -599,7 +548,7 @@ function TestimonialsSimpleGrid({
599
548
  ] })
600
549
  ] }) }, index);
601
550
  }) });
602
- }, [testimonialsSlot, gridCols, columns, gridClassName, testimonials, cardClassName, quoteClassName, authorClassName]);
551
+ }, [testimonialsSlot, gridCols, effectiveColumns, gridClassName, testimonials, cardClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
603
552
  return /* @__PURE__ */ jsxRuntime.jsxs(
604
553
  Section,
605
554
  {
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import React, { useMemo } from 'react';
2
+ import React, { useCallback, useMemo } from 'react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
@@ -452,65 +452,12 @@ var Section = React.forwardRef(
452
452
  }
453
453
  );
454
454
  Section.displayName = "Section";
455
-
456
- // lib/blockBrandedIconsAndPlaceholders.ts
457
- var blockBrandedIconsAndPlaceholders = {
458
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
459
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
460
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
461
- avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
462
- avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp",
463
- avatar6: "https://cdn.ing/assets/i/r/286244/t7u1jpe1phm0fvmh3ybh3flhfg6i/avatar-6.webp"};
464
- var DEFAULT_TESTIMONIALS = [
465
- {
466
- quote: "The platform exceeded all our expectations. Implementation was smooth and the results were immediate.",
467
- author: "Sarah Chen",
468
- role: "Product Manager",
469
- company: "TechCorp",
470
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
471
- },
472
- {
473
- quote: "Outstanding customer support and a product that actually delivers on its promises. Rare combination!",
474
- author: "Michael Torres",
475
- role: "CEO",
476
- company: "StartupXYZ",
477
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
478
- },
479
- {
480
- quote: "We've seen a 50% increase in efficiency since switching. The ROI speaks for itself.",
481
- author: "Emily Watson",
482
- role: "Operations Director",
483
- company: "GrowthCo",
484
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
485
- },
486
- {
487
- quote: "Clean interface, powerful features, and excellent documentation. Everything a developer could ask for.",
488
- author: "David Kim",
489
- role: "Senior Developer",
490
- company: "DevStudio",
491
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4
492
- },
493
- {
494
- quote: "The best decision we made this quarter. Our team adopted it instantly and loves using it daily.",
495
- author: "Lisa Park",
496
- role: "Team Lead",
497
- company: "InnovateLabs",
498
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar5
499
- },
500
- {
501
- quote: "Intuitive design that requires minimal training. Our onboarding time dropped significantly.",
502
- author: "Alex Rivera",
503
- role: "HR Manager",
504
- company: "PeopleCo",
505
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar6
506
- }
507
- ];
508
455
  function TestimonialsSimpleGrid({
509
- testimonials = DEFAULT_TESTIMONIALS,
456
+ testimonials,
510
457
  testimonialsSlot,
511
458
  heading,
512
459
  description,
513
- columns = 3,
460
+ columns,
514
461
  className,
515
462
  headerClassName,
516
463
  headingClassName,
@@ -529,19 +476,21 @@ function TestimonialsSimpleGrid({
529
476
  3: "sm:grid-cols-2 lg:grid-cols-3",
530
477
  4: "sm:grid-cols-2 lg:grid-cols-4"
531
478
  };
532
- const getAuthorName = (testimonial) => {
479
+ const effectiveColumns = columns || 3;
480
+ const getAuthorName = useCallback((testimonial) => {
533
481
  if (typeof testimonial.author === "string") return testimonial.author;
534
482
  return "";
535
- };
536
- const getAvatarSrc = (testimonial) => {
483
+ }, []);
484
+ const getAvatarSrc = useCallback((testimonial) => {
537
485
  return testimonial.avatarSrc || testimonial.avatar?.src;
538
- };
539
- const getInitials = (name) => {
486
+ }, []);
487
+ const getInitials = useCallback((name) => {
540
488
  return name.split(" ").map((n) => n[0]).join("");
541
- };
489
+ }, []);
542
490
  const renderedTestimonials = useMemo(() => {
543
491
  if (testimonialsSlot) return testimonialsSlot;
544
- return /* @__PURE__ */ jsx("div", { className: cn("grid gap-6", gridCols[columns], gridClassName), children: testimonials.map((testimonial, index) => {
492
+ if (!testimonials || testimonials.length === 0) return null;
493
+ return /* @__PURE__ */ jsx("div", { className: cn("grid gap-6", gridCols[effectiveColumns], gridClassName), children: testimonials.map((testimonial, index) => {
545
494
  const authorName = getAuthorName(testimonial);
546
495
  const avatarSrc = getAvatarSrc(testimonial);
547
496
  return /* @__PURE__ */ jsx(Card, { className: cardClassName, children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
@@ -574,7 +523,7 @@ function TestimonialsSimpleGrid({
574
523
  ] })
575
524
  ] }) }, index);
576
525
  }) });
577
- }, [testimonialsSlot, gridCols, columns, gridClassName, testimonials, cardClassName, quoteClassName, authorClassName]);
526
+ }, [testimonialsSlot, gridCols, effectiveColumns, gridClassName, testimonials, cardClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
578
527
  return /* @__PURE__ */ jsxs(
579
528
  Section,
580
529
  {
@@ -454,36 +454,10 @@ var Section = React__default.default.forwardRef(
454
454
  }
455
455
  );
456
456
  Section.displayName = "Section";
457
-
458
- // lib/blockBrandedIconsAndPlaceholders.ts
459
- var blockBrandedIconsAndPlaceholders = {
460
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
461
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
462
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp"};
463
- var DEFAULT_TESTIMONIALS = [
464
- {
465
- quote: "This platform has completely transformed how our team collaborates. The intuitive interface and powerful features have made us significantly more productive.",
466
- author: "Sarah Chen",
467
- role: "Product Manager at TechCorp",
468
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
469
- },
470
- {
471
- quote: "I've tried dozens of similar tools, but nothing comes close to the elegance and functionality of this solution. It's become indispensable to our workflow.",
472
- author: "Michael Torres",
473
- role: "CEO at StartupXYZ",
474
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
475
- },
476
- {
477
- quote: "The customer support is exceptional. Any time we've had questions, the team has been incredibly responsive and helpful. Truly a pleasure to work with.",
478
- author: "Emily Watson",
479
- role: "Operations Lead at GrowthCo",
480
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
481
- }
482
- ];
483
457
  function TestimonialsSliderMinimal({
484
- testimonials = DEFAULT_TESTIMONIALS,
458
+ testimonials,
485
459
  testimonialsSlot,
486
- autoPlayInterval = 5e3,
460
+ autoPlayInterval,
487
461
  className,
488
462
  contentClassName,
489
463
  quoteClassName,
@@ -497,6 +471,8 @@ function TestimonialsSliderMinimal({
497
471
  }) {
498
472
  const [currentIndex, setCurrentIndex] = React.useState(0);
499
473
  const [isTransitioning, setIsTransitioning] = React.useState(false);
474
+ const totalTestimonials = testimonials?.length ?? 0;
475
+ const effectiveAutoPlayInterval = autoPlayInterval ?? 5e3;
500
476
  const goToSlide = React.useCallback(
501
477
  (index) => {
502
478
  if (index === currentIndex) return;
@@ -509,26 +485,27 @@ function TestimonialsSliderMinimal({
509
485
  [currentIndex]
510
486
  );
511
487
  React.useEffect(() => {
512
- if (autoPlayInterval <= 0) return;
488
+ if (effectiveAutoPlayInterval <= 0 || totalTestimonials === 0) return;
513
489
  const interval = setInterval(() => {
514
- const nextIndex = (currentIndex + 1) % testimonials.length;
490
+ const nextIndex = (currentIndex + 1) % totalTestimonials;
515
491
  goToSlide(nextIndex);
516
- }, autoPlayInterval);
492
+ }, effectiveAutoPlayInterval);
517
493
  return () => clearInterval(interval);
518
- }, [currentIndex, autoPlayInterval, testimonials.length, goToSlide]);
519
- const current = testimonials[currentIndex];
520
- const getAuthorName = (testimonial) => {
494
+ }, [currentIndex, effectiveAutoPlayInterval, totalTestimonials, goToSlide]);
495
+ const current = testimonials?.[currentIndex];
496
+ const getAuthorName = React.useCallback((testimonial) => {
521
497
  if (typeof testimonial.author === "string") return testimonial.author;
522
498
  return "";
523
- };
524
- const getAvatarSrc = (testimonial) => {
499
+ }, []);
500
+ const getAvatarSrc = React.useCallback((testimonial) => {
525
501
  return testimonial.avatarSrc || testimonial.avatar?.src;
526
- };
527
- const getInitials = (name) => {
502
+ }, []);
503
+ const getInitials = React.useCallback((name) => {
528
504
  return name.split(" ").map((n) => n[0]).join("");
529
- };
505
+ }, []);
530
506
  const renderedTestimonial = React.useMemo(() => {
531
507
  if (testimonialsSlot) return testimonialsSlot;
508
+ if (!current) return null;
532
509
  const authorName = getAuthorName(current);
533
510
  const avatarSrc = getAvatarSrc(current);
534
511
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -575,7 +552,7 @@ function TestimonialsSliderMinimal({
575
552
  ]
576
553
  }
577
554
  );
578
- }, [testimonialsSlot, isTransitioning, current.quote, quoteClassName, authorClassName, avatarClassName, current.author, current.role]);
555
+ }, [testimonialsSlot, isTransitioning, current, quoteClassName, authorClassName, avatarClassName, getAuthorName, getAvatarSrc, getInitials]);
579
556
  return /* @__PURE__ */ jsxRuntime.jsx(
580
557
  Section,
581
558
  {
@@ -586,7 +563,7 @@ function TestimonialsSliderMinimal({
586
563
  className,
587
564
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mx-auto max-w-3xl text-center", contentClassName), children: [
588
565
  renderedTestimonial,
589
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center gap-2", dotsClassName), children: testimonials.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
566
+ testimonials && testimonials.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-8 flex justify-center gap-2", dotsClassName), children: testimonials.map((_, index) => /* @__PURE__ */ jsxRuntime.jsx(
590
567
  "button",
591
568
  {
592
569
  onClick: () => goToSlide(index),
@@ -429,36 +429,10 @@ var Section = React.forwardRef(
429
429
  }
430
430
  );
431
431
  Section.displayName = "Section";
432
-
433
- // lib/blockBrandedIconsAndPlaceholders.ts
434
- var blockBrandedIconsAndPlaceholders = {
435
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
436
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
437
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp"};
438
- var DEFAULT_TESTIMONIALS = [
439
- {
440
- quote: "This platform has completely transformed how our team collaborates. The intuitive interface and powerful features have made us significantly more productive.",
441
- author: "Sarah Chen",
442
- role: "Product Manager at TechCorp",
443
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
444
- },
445
- {
446
- quote: "I've tried dozens of similar tools, but nothing comes close to the elegance and functionality of this solution. It's become indispensable to our workflow.",
447
- author: "Michael Torres",
448
- role: "CEO at StartupXYZ",
449
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
450
- },
451
- {
452
- quote: "The customer support is exceptional. Any time we've had questions, the team has been incredibly responsive and helpful. Truly a pleasure to work with.",
453
- author: "Emily Watson",
454
- role: "Operations Lead at GrowthCo",
455
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
456
- }
457
- ];
458
432
  function TestimonialsSliderMinimal({
459
- testimonials = DEFAULT_TESTIMONIALS,
433
+ testimonials,
460
434
  testimonialsSlot,
461
- autoPlayInterval = 5e3,
435
+ autoPlayInterval,
462
436
  className,
463
437
  contentClassName,
464
438
  quoteClassName,
@@ -472,6 +446,8 @@ function TestimonialsSliderMinimal({
472
446
  }) {
473
447
  const [currentIndex, setCurrentIndex] = useState(0);
474
448
  const [isTransitioning, setIsTransitioning] = useState(false);
449
+ const totalTestimonials = testimonials?.length ?? 0;
450
+ const effectiveAutoPlayInterval = autoPlayInterval ?? 5e3;
475
451
  const goToSlide = useCallback(
476
452
  (index) => {
477
453
  if (index === currentIndex) return;
@@ -484,26 +460,27 @@ function TestimonialsSliderMinimal({
484
460
  [currentIndex]
485
461
  );
486
462
  useEffect(() => {
487
- if (autoPlayInterval <= 0) return;
463
+ if (effectiveAutoPlayInterval <= 0 || totalTestimonials === 0) return;
488
464
  const interval = setInterval(() => {
489
- const nextIndex = (currentIndex + 1) % testimonials.length;
465
+ const nextIndex = (currentIndex + 1) % totalTestimonials;
490
466
  goToSlide(nextIndex);
491
- }, autoPlayInterval);
467
+ }, effectiveAutoPlayInterval);
492
468
  return () => clearInterval(interval);
493
- }, [currentIndex, autoPlayInterval, testimonials.length, goToSlide]);
494
- const current = testimonials[currentIndex];
495
- const getAuthorName = (testimonial) => {
469
+ }, [currentIndex, effectiveAutoPlayInterval, totalTestimonials, goToSlide]);
470
+ const current = testimonials?.[currentIndex];
471
+ const getAuthorName = useCallback((testimonial) => {
496
472
  if (typeof testimonial.author === "string") return testimonial.author;
497
473
  return "";
498
- };
499
- const getAvatarSrc = (testimonial) => {
474
+ }, []);
475
+ const getAvatarSrc = useCallback((testimonial) => {
500
476
  return testimonial.avatarSrc || testimonial.avatar?.src;
501
- };
502
- const getInitials = (name) => {
477
+ }, []);
478
+ const getInitials = useCallback((name) => {
503
479
  return name.split(" ").map((n) => n[0]).join("");
504
- };
480
+ }, []);
505
481
  const renderedTestimonial = useMemo(() => {
506
482
  if (testimonialsSlot) return testimonialsSlot;
483
+ if (!current) return null;
507
484
  const authorName = getAuthorName(current);
508
485
  const avatarSrc = getAvatarSrc(current);
509
486
  return /* @__PURE__ */ jsxs(
@@ -550,7 +527,7 @@ function TestimonialsSliderMinimal({
550
527
  ]
551
528
  }
552
529
  );
553
- }, [testimonialsSlot, isTransitioning, current.quote, quoteClassName, authorClassName, avatarClassName, current.author, current.role]);
530
+ }, [testimonialsSlot, isTransitioning, current, quoteClassName, authorClassName, avatarClassName, getAuthorName, getAvatarSrc, getInitials]);
554
531
  return /* @__PURE__ */ jsx(
555
532
  Section,
556
533
  {
@@ -561,7 +538,7 @@ function TestimonialsSliderMinimal({
561
538
  className,
562
539
  children: /* @__PURE__ */ jsxs("div", { className: cn("mx-auto max-w-3xl text-center", contentClassName), children: [
563
540
  renderedTestimonial,
564
- /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center gap-2", dotsClassName), children: testimonials.map((_, index) => /* @__PURE__ */ jsx(
541
+ testimonials && testimonials.length > 0 && /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex justify-center gap-2", dotsClassName), children: testimonials.map((_, index) => /* @__PURE__ */ jsx(
565
542
  "button",
566
543
  {
567
544
  onClick: () => goToSlide(index),
@@ -558,23 +558,12 @@ var Section = React__namespace.default.forwardRef(
558
558
  }
559
559
  );
560
560
  Section.displayName = "Section";
561
-
562
- // lib/blockBrandedIconsAndPlaceholders.ts
563
- var blockBrandedIconsAndPlaceholders = {
564
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp"};
565
- var DEFAULT_TESTIMONIAL = {
566
- quote: "Working with this team has been transformative for our business. Their expertise and dedication to quality have helped us achieve results we never thought possible. The attention to detail and commitment to excellence is evident in everything they do.",
567
- author: "Sarah Chen",
568
- role: "Chief Executive Officer",
569
- company: "TechVentures Inc.",
570
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
571
- };
572
561
  function TestimonialsSplitImage({
573
- testimonial = DEFAULT_TESTIMONIAL,
562
+ testimonial,
574
563
  testimonialSlot,
575
564
  imageSrc,
576
565
  imageAlt,
577
- imagePosition = "left",
566
+ imagePosition,
578
567
  className,
579
568
  gridClassName,
580
569
  imageClassName,
@@ -588,18 +577,20 @@ function TestimonialsSplitImage({
588
577
  patternOpacity,
589
578
  optixFlowConfig
590
579
  }) {
591
- const getAuthorName = () => {
592
- if (typeof testimonial.author === "string") return testimonial.author;
580
+ const effectiveImagePosition = imagePosition || "left";
581
+ const getAuthorName = React.useCallback(() => {
582
+ if (typeof testimonial?.author === "string") return testimonial.author;
593
583
  return "";
594
- };
595
- const getAvatarSrc = () => {
596
- return testimonial.avatarSrc || testimonial.avatar?.src;
597
- };
598
- const getInitials = (name) => {
584
+ }, [testimonial?.author]);
585
+ const getAvatarSrc = React.useCallback(() => {
586
+ return testimonial?.avatarSrc || testimonial?.avatar?.src;
587
+ }, [testimonial?.avatarSrc, testimonial?.avatar?.src]);
588
+ const getInitials = React.useCallback((name) => {
599
589
  return name.split(" ").map((n) => n[0]).join("");
600
- };
590
+ }, []);
601
591
  const renderedTestimonial = React.useMemo(() => {
602
592
  if (testimonialSlot) return testimonialSlot;
593
+ if (!testimonial) return null;
603
594
  const authorName = getAuthorName();
604
595
  const avatarSrc = getAvatarSrc();
605
596
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -607,7 +598,7 @@ function TestimonialsSplitImage({
607
598
  {
608
599
  className: cn(
609
600
  "space-y-6",
610
- imagePosition === "right" && "lg:order-1",
601
+ effectiveImagePosition === "right" && "lg:order-1",
611
602
  contentClassName
612
603
  ),
613
604
  children: [
@@ -645,7 +636,7 @@ function TestimonialsSplitImage({
645
636
  ]
646
637
  }
647
638
  );
648
- }, [testimonialSlot, imagePosition, contentClassName, quoteIconClassName, testimonial.quote, quoteClassName, authorClassName, testimonial.author, testimonial.role, testimonial.company]);
639
+ }, [testimonialSlot, effectiveImagePosition, contentClassName, quoteIconClassName, testimonial, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
649
640
  return /* @__PURE__ */ jsxRuntime.jsx(
650
641
  Section,
651
642
  {
@@ -664,7 +655,7 @@ function TestimonialsSplitImage({
664
655
  {
665
656
  className: cn(
666
657
  "relative aspect-4/3 overflow-hidden rounded-2xl lg:aspect-square",
667
- imagePosition === "right" && "lg:order-2",
658
+ effectiveImagePosition === "right" && "lg:order-2",
668
659
  imageClassName
669
660
  ),
670
661
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import * as React from 'react';
3
- import React__default, { useMemo } from 'react';
3
+ import React__default, { useCallback, useMemo } from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -536,23 +536,12 @@ var Section = React__default.forwardRef(
536
536
  }
537
537
  );
538
538
  Section.displayName = "Section";
539
-
540
- // lib/blockBrandedIconsAndPlaceholders.ts
541
- var blockBrandedIconsAndPlaceholders = {
542
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp"};
543
- var DEFAULT_TESTIMONIAL = {
544
- quote: "Working with this team has been transformative for our business. Their expertise and dedication to quality have helped us achieve results we never thought possible. The attention to detail and commitment to excellence is evident in everything they do.",
545
- author: "Sarah Chen",
546
- role: "Chief Executive Officer",
547
- company: "TechVentures Inc.",
548
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
549
- };
550
539
  function TestimonialsSplitImage({
551
- testimonial = DEFAULT_TESTIMONIAL,
540
+ testimonial,
552
541
  testimonialSlot,
553
542
  imageSrc,
554
543
  imageAlt,
555
- imagePosition = "left",
544
+ imagePosition,
556
545
  className,
557
546
  gridClassName,
558
547
  imageClassName,
@@ -566,18 +555,20 @@ function TestimonialsSplitImage({
566
555
  patternOpacity,
567
556
  optixFlowConfig
568
557
  }) {
569
- const getAuthorName = () => {
570
- if (typeof testimonial.author === "string") return testimonial.author;
558
+ const effectiveImagePosition = imagePosition || "left";
559
+ const getAuthorName = useCallback(() => {
560
+ if (typeof testimonial?.author === "string") return testimonial.author;
571
561
  return "";
572
- };
573
- const getAvatarSrc = () => {
574
- return testimonial.avatarSrc || testimonial.avatar?.src;
575
- };
576
- const getInitials = (name) => {
562
+ }, [testimonial?.author]);
563
+ const getAvatarSrc = useCallback(() => {
564
+ return testimonial?.avatarSrc || testimonial?.avatar?.src;
565
+ }, [testimonial?.avatarSrc, testimonial?.avatar?.src]);
566
+ const getInitials = useCallback((name) => {
577
567
  return name.split(" ").map((n) => n[0]).join("");
578
- };
568
+ }, []);
579
569
  const renderedTestimonial = useMemo(() => {
580
570
  if (testimonialSlot) return testimonialSlot;
571
+ if (!testimonial) return null;
581
572
  const authorName = getAuthorName();
582
573
  const avatarSrc = getAvatarSrc();
583
574
  return /* @__PURE__ */ jsxs(
@@ -585,7 +576,7 @@ function TestimonialsSplitImage({
585
576
  {
586
577
  className: cn(
587
578
  "space-y-6",
588
- imagePosition === "right" && "lg:order-1",
579
+ effectiveImagePosition === "right" && "lg:order-1",
589
580
  contentClassName
590
581
  ),
591
582
  children: [
@@ -623,7 +614,7 @@ function TestimonialsSplitImage({
623
614
  ]
624
615
  }
625
616
  );
626
- }, [testimonialSlot, imagePosition, contentClassName, quoteIconClassName, testimonial.quote, quoteClassName, authorClassName, testimonial.author, testimonial.role, testimonial.company]);
617
+ }, [testimonialSlot, effectiveImagePosition, contentClassName, quoteIconClassName, testimonial, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
627
618
  return /* @__PURE__ */ jsx(
628
619
  Section,
629
620
  {
@@ -642,7 +633,7 @@ function TestimonialsSplitImage({
642
633
  {
643
634
  className: cn(
644
635
  "relative aspect-4/3 overflow-hidden rounded-2xl lg:aspect-square",
645
- imagePosition === "right" && "lg:order-2",
636
+ effectiveImagePosition === "right" && "lg:order-2",
646
637
  imageClassName
647
638
  ),
648
639
  children: /* @__PURE__ */ jsx(