@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
@@ -580,36 +580,10 @@ var Section = React__namespace.default.forwardRef(
580
580
  }
581
581
  );
582
582
  Section.displayName = "Section";
583
-
584
- // lib/blockBrandedIconsAndPlaceholders.ts
585
- var blockBrandedIconsAndPlaceholders = {
586
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
587
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
588
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp"};
589
- var DEFAULT_TESTIMONIALS = [
590
- {
591
- quote: "The platform has revolutionized our workflow. We've seen a 40% increase in productivity since implementation.",
592
- author: "Sarah Chen",
593
- role: "Product Manager",
594
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
595
- },
596
- {
597
- quote: "Outstanding support and an even better product. The team goes above and beyond to ensure our success.",
598
- author: "Michael Torres",
599
- role: "CEO",
600
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
601
- },
602
- {
603
- quote: "Best investment we've made this year. The ROI was visible within the first month of using the platform.",
604
- author: "Emily Watson",
605
- role: "Operations Director",
606
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
607
- }
608
- ];
609
583
  function TestimonialsStatsHeader({
610
584
  stats,
611
585
  statsSlot,
612
- testimonials = DEFAULT_TESTIMONIALS,
586
+ testimonials,
613
587
  testimonialsSlot,
614
588
  heading,
615
589
  description,
@@ -628,19 +602,19 @@ function TestimonialsStatsHeader({
628
602
  pattern,
629
603
  patternOpacity
630
604
  }) {
631
- const getAuthorName = (testimonial) => {
605
+ const getAuthorName = React.useCallback((testimonial) => {
632
606
  if (typeof testimonial.author === "string") return testimonial.author;
633
607
  return "";
634
- };
635
- const getAvatarSrc = (testimonial) => {
608
+ }, []);
609
+ const getAvatarSrc = React.useCallback((testimonial) => {
636
610
  return testimonial.avatarSrc || testimonial.avatar?.src;
637
- };
638
- const getInitials = (name) => {
611
+ }, []);
612
+ const getInitials = React.useCallback((name) => {
639
613
  return name.split(" ").map((n) => n[0]).join("");
640
- };
614
+ }, []);
641
615
  const renderedStats = React.useMemo(() => {
642
616
  if (statsSlot) return statsSlot;
643
- if (!stats) return null;
617
+ if (!stats || stats.length === 0) return null;
644
618
  return /* @__PURE__ */ jsxRuntime.jsx(
645
619
  "div",
646
620
  {
@@ -667,6 +641,7 @@ function TestimonialsStatsHeader({
667
641
  }, [statsSlot, stats, statsGridClassName, statItemClassName]);
668
642
  const renderedTestimonials = React.useMemo(() => {
669
643
  if (testimonialsSlot) return testimonialsSlot;
644
+ if (!testimonials || testimonials.length === 0) return null;
670
645
  return /* @__PURE__ */ jsxRuntime.jsx(
671
646
  "div",
672
647
  {
@@ -712,7 +687,7 @@ function TestimonialsStatsHeader({
712
687
  })
713
688
  }
714
689
  );
715
- }, [testimonialsSlot, testimonialsGridClassName, testimonials, cardClassName, quoteClassName, authorClassName]);
690
+ }, [testimonialsSlot, testimonialsGridClassName, testimonials, cardClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
716
691
  return /* @__PURE__ */ jsxRuntime.jsxs(
717
692
  Section,
718
693
  {
@@ -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';
@@ -558,36 +558,10 @@ var Section = React__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
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
566
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp"};
567
- var DEFAULT_TESTIMONIALS = [
568
- {
569
- quote: "The platform has revolutionized our workflow. We've seen a 40% increase in productivity since implementation.",
570
- author: "Sarah Chen",
571
- role: "Product Manager",
572
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
573
- },
574
- {
575
- quote: "Outstanding support and an even better product. The team goes above and beyond to ensure our success.",
576
- author: "Michael Torres",
577
- role: "CEO",
578
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
579
- },
580
- {
581
- quote: "Best investment we've made this year. The ROI was visible within the first month of using the platform.",
582
- author: "Emily Watson",
583
- role: "Operations Director",
584
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
585
- }
586
- ];
587
561
  function TestimonialsStatsHeader({
588
562
  stats,
589
563
  statsSlot,
590
- testimonials = DEFAULT_TESTIMONIALS,
564
+ testimonials,
591
565
  testimonialsSlot,
592
566
  heading,
593
567
  description,
@@ -606,19 +580,19 @@ function TestimonialsStatsHeader({
606
580
  pattern,
607
581
  patternOpacity
608
582
  }) {
609
- const getAuthorName = (testimonial) => {
583
+ const getAuthorName = useCallback((testimonial) => {
610
584
  if (typeof testimonial.author === "string") return testimonial.author;
611
585
  return "";
612
- };
613
- const getAvatarSrc = (testimonial) => {
586
+ }, []);
587
+ const getAvatarSrc = useCallback((testimonial) => {
614
588
  return testimonial.avatarSrc || testimonial.avatar?.src;
615
- };
616
- const getInitials = (name) => {
589
+ }, []);
590
+ const getInitials = useCallback((name) => {
617
591
  return name.split(" ").map((n) => n[0]).join("");
618
- };
592
+ }, []);
619
593
  const renderedStats = useMemo(() => {
620
594
  if (statsSlot) return statsSlot;
621
- if (!stats) return null;
595
+ if (!stats || stats.length === 0) return null;
622
596
  return /* @__PURE__ */ jsx(
623
597
  "div",
624
598
  {
@@ -645,6 +619,7 @@ function TestimonialsStatsHeader({
645
619
  }, [statsSlot, stats, statsGridClassName, statItemClassName]);
646
620
  const renderedTestimonials = useMemo(() => {
647
621
  if (testimonialsSlot) return testimonialsSlot;
622
+ if (!testimonials || testimonials.length === 0) return null;
648
623
  return /* @__PURE__ */ jsx(
649
624
  "div",
650
625
  {
@@ -690,7 +665,7 @@ function TestimonialsStatsHeader({
690
665
  })
691
666
  }
692
667
  );
693
- }, [testimonialsSlot, testimonialsGridClassName, testimonials, cardClassName, quoteClassName, authorClassName]);
668
+ }, [testimonialsSlot, testimonialsGridClassName, testimonials, cardClassName, quoteClassName, authorClassName, getAuthorName, getAvatarSrc, getInitials]);
694
669
  return /* @__PURE__ */ jsxs(
695
670
  Section,
696
671
  {
@@ -999,61 +999,8 @@ var Section = React__namespace.default.forwardRef(
999
999
  }
1000
1000
  );
1001
1001
  Section.displayName = "Section";
1002
-
1003
- // lib/blockBrandedIconsAndPlaceholders.ts
1004
- var blockBrandedIconsAndPlaceholders = {
1005
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
1006
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
1007
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
1008
- avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
1009
- avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp",
1010
- avatar6: "https://cdn.ing/assets/i/r/286244/t7u1jpe1phm0fvmh3ybh3flhfg6i/avatar-6.webp"};
1011
- var DEFAULT_TESTIMONIALS = [
1012
- {
1013
- content: "Just shipped our new landing page using @opensiteai components. Took us 2 hours instead of 2 weeks. The quality is incredible!",
1014
- author: "Sarah Chen",
1015
- handle: "@sarahchen",
1016
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1,
1017
- twitterUrl: "https://twitter.com/sarahchen"
1018
- },
1019
- {
1020
- content: "The attention to detail in these components is next level. Every interaction feels polished and professional.",
1021
- author: "Alex Rivera",
1022
- handle: "@alexrivera",
1023
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2,
1024
- twitterUrl: "https://twitter.com/alexrivera"
1025
- },
1026
- {
1027
- content: "Finally, a component library that doesn't require a PhD to customize. Clean code, great docs, amazing support.",
1028
- author: "Jordan Lee",
1029
- handle: "@jordanlee",
1030
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3,
1031
- twitterUrl: "https://twitter.com/jordanlee"
1032
- },
1033
- {
1034
- content: "Our design team is obsessed with the consistency across all components. Makes our job so much easier!",
1035
- author: "Maya Patel",
1036
- handle: "@mayapatel",
1037
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4,
1038
- twitterUrl: "https://twitter.com/mayapatel"
1039
- },
1040
- {
1041
- content: "Switched from building everything from scratch to using Opensite AI. Best decision we made this quarter.",
1042
- author: "Chris Wong",
1043
- handle: "@chriswong",
1044
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar5,
1045
- twitterUrl: "https://twitter.com/chriswong"
1046
- },
1047
- {
1048
- content: "The semantic component system is genius. Our AI can now pick the perfect component every time.",
1049
- author: "Emma Davis",
1050
- handle: "@emmadavis",
1051
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar6,
1052
- twitterUrl: "https://twitter.com/emmadavis"
1053
- }
1054
- ];
1055
1002
  function TestimonialsTwitterCards({
1056
- testimonials = DEFAULT_TESTIMONIALS,
1003
+ testimonials,
1057
1004
  testimonialsSlot,
1058
1005
  heading,
1059
1006
  description,
@@ -1070,15 +1017,16 @@ function TestimonialsTwitterCards({
1070
1017
  pattern,
1071
1018
  patternOpacity
1072
1019
  }) {
1073
- const getAuthorName = (testimonial) => {
1020
+ const getAuthorName = React.useCallback((testimonial) => {
1074
1021
  if (typeof testimonial.author === "string") return testimonial.author;
1075
1022
  return "";
1076
- };
1077
- const getInitials = (name) => {
1023
+ }, []);
1024
+ const getInitials = React.useCallback((name) => {
1078
1025
  return name.split(" ").map((n) => n[0]).join("");
1079
- };
1026
+ }, []);
1080
1027
  const renderedTestimonials = React.useMemo(() => {
1081
1028
  if (testimonialsSlot) return testimonialsSlot;
1029
+ if (!testimonials || testimonials.length === 0) return null;
1082
1030
  return /* @__PURE__ */ jsxRuntime.jsx(
1083
1031
  "div",
1084
1032
  {
@@ -1130,7 +1078,7 @@ function TestimonialsTwitterCards({
1130
1078
  })
1131
1079
  }
1132
1080
  );
1133
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardContentClassName, authorClassName]);
1081
+ }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardContentClassName, authorClassName, getAuthorName, getInitials]);
1134
1082
  return /* @__PURE__ */ jsxRuntime.jsxs(
1135
1083
  Section,
1136
1084
  {
@@ -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';
@@ -977,61 +977,8 @@ var Section = React__default.forwardRef(
977
977
  }
978
978
  );
979
979
  Section.displayName = "Section";
980
-
981
- // lib/blockBrandedIconsAndPlaceholders.ts
982
- var blockBrandedIconsAndPlaceholders = {
983
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
984
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
985
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
986
- avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
987
- avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp",
988
- avatar6: "https://cdn.ing/assets/i/r/286244/t7u1jpe1phm0fvmh3ybh3flhfg6i/avatar-6.webp"};
989
- var DEFAULT_TESTIMONIALS = [
990
- {
991
- content: "Just shipped our new landing page using @opensiteai components. Took us 2 hours instead of 2 weeks. The quality is incredible!",
992
- author: "Sarah Chen",
993
- handle: "@sarahchen",
994
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1,
995
- twitterUrl: "https://twitter.com/sarahchen"
996
- },
997
- {
998
- content: "The attention to detail in these components is next level. Every interaction feels polished and professional.",
999
- author: "Alex Rivera",
1000
- handle: "@alexrivera",
1001
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2,
1002
- twitterUrl: "https://twitter.com/alexrivera"
1003
- },
1004
- {
1005
- content: "Finally, a component library that doesn't require a PhD to customize. Clean code, great docs, amazing support.",
1006
- author: "Jordan Lee",
1007
- handle: "@jordanlee",
1008
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3,
1009
- twitterUrl: "https://twitter.com/jordanlee"
1010
- },
1011
- {
1012
- content: "Our design team is obsessed with the consistency across all components. Makes our job so much easier!",
1013
- author: "Maya Patel",
1014
- handle: "@mayapatel",
1015
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4,
1016
- twitterUrl: "https://twitter.com/mayapatel"
1017
- },
1018
- {
1019
- content: "Switched from building everything from scratch to using Opensite AI. Best decision we made this quarter.",
1020
- author: "Chris Wong",
1021
- handle: "@chriswong",
1022
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar5,
1023
- twitterUrl: "https://twitter.com/chriswong"
1024
- },
1025
- {
1026
- content: "The semantic component system is genius. Our AI can now pick the perfect component every time.",
1027
- author: "Emma Davis",
1028
- handle: "@emmadavis",
1029
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar6,
1030
- twitterUrl: "https://twitter.com/emmadavis"
1031
- }
1032
- ];
1033
980
  function TestimonialsTwitterCards({
1034
- testimonials = DEFAULT_TESTIMONIALS,
981
+ testimonials,
1035
982
  testimonialsSlot,
1036
983
  heading,
1037
984
  description,
@@ -1048,15 +995,16 @@ function TestimonialsTwitterCards({
1048
995
  pattern,
1049
996
  patternOpacity
1050
997
  }) {
1051
- const getAuthorName = (testimonial) => {
998
+ const getAuthorName = useCallback((testimonial) => {
1052
999
  if (typeof testimonial.author === "string") return testimonial.author;
1053
1000
  return "";
1054
- };
1055
- const getInitials = (name) => {
1001
+ }, []);
1002
+ const getInitials = useCallback((name) => {
1056
1003
  return name.split(" ").map((n) => n[0]).join("");
1057
- };
1004
+ }, []);
1058
1005
  const renderedTestimonials = useMemo(() => {
1059
1006
  if (testimonialsSlot) return testimonialsSlot;
1007
+ if (!testimonials || testimonials.length === 0) return null;
1060
1008
  return /* @__PURE__ */ jsx(
1061
1009
  "div",
1062
1010
  {
@@ -1108,7 +1056,7 @@ function TestimonialsTwitterCards({
1108
1056
  })
1109
1057
  }
1110
1058
  );
1111
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardContentClassName, authorClassName]);
1059
+ }, [testimonialsSlot, gridClassName, testimonials, cardClassName, cardContentClassName, authorClassName, getAuthorName, getInitials]);
1112
1060
  return /* @__PURE__ */ jsxs(
1113
1061
  Section,
1114
1062
  {
@@ -488,94 +488,8 @@ var Section = React__default.default.forwardRef(
488
488
  }
489
489
  );
490
490
  Section.displayName = "Section";
491
-
492
- // lib/blockBrandedIconsAndPlaceholders.ts
493
- var blockBrandedIconsAndPlaceholders = {
494
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
495
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
496
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
497
- avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
498
- avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp",
499
- avatar6: "https://cdn.ing/assets/i/r/286244/t7u1jpe1phm0fvmh3ybh3flhfg6i/avatar-6.webp",
500
- avatar7: "https://cdn.ing/assets/i/r/286245/yf2wb1scwmdgntba2on67q0t091d/avatar-7.webp",
501
- avatar8: "https://cdn.ing/assets/i/r/286246/jsrq5sf9oxi8piujnfrdjqmg5zvx/avatar-8.webp"};
502
- var DEFAULT_TESTIMONIALS = [
503
- {
504
- quote: "Game-changer for our team. Productivity up 50%!",
505
- author: "Sarah Chen",
506
- handle: "@sarahchen",
507
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1,
508
- badge: "Featured"
509
- },
510
- {
511
- quote: "Best tool I've used in years. Highly recommend.",
512
- author: "Michael Torres",
513
- handle: "@mtorres",
514
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
515
- },
516
- {
517
- quote: "Support team is incredible. Always there when needed.",
518
- author: "Emily Watson",
519
- handle: "@emilyw",
520
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
521
- },
522
- {
523
- quote: "Clean UI, powerful features. Perfect combo.",
524
- author: "David Kim",
525
- handle: "@davidkim",
526
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4,
527
- badge: "Verified"
528
- },
529
- {
530
- quote: "Switched from competitors. Never looking back.",
531
- author: "Lisa Park",
532
- handle: "@lisapark",
533
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar5
534
- },
535
- {
536
- quote: "ROI was visible in the first week. Amazing!",
537
- author: "Alex Rivera",
538
- handle: "@alexr",
539
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar6
540
- },
541
- {
542
- quote: "Documentation is top-notch. Easy to get started.",
543
- author: "Jordan Lee",
544
- handle: "@jordanlee",
545
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar7
546
- },
547
- {
548
- quote: "Our whole team adopted it instantly. Love it!",
549
- author: "Maya Patel",
550
- handle: "@mayap",
551
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar8,
552
- badge: "Power User"
553
- },
554
- {
555
- quote: "Finally, a tool that just works. No fuss.",
556
- author: "Chris Wong",
557
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
558
- },
559
- {
560
- quote: "Customer service responded in minutes. Impressed!",
561
- author: "Emma Davis",
562
- handle: "@emmad",
563
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
564
- },
565
- {
566
- quote: "Worth every penny. Quality is unmatched.",
567
- author: "Ryan Miller",
568
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
569
- },
570
- {
571
- quote: "Integrations work flawlessly. Saved us hours.",
572
- author: "Sophie Brown",
573
- handle: "@sophieb",
574
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4
575
- }
576
- ];
577
491
  function TestimonialsWallCompact({
578
- testimonials = DEFAULT_TESTIMONIALS,
492
+ testimonials,
579
493
  testimonialsSlot,
580
494
  heading,
581
495
  description,
@@ -592,18 +506,19 @@ function TestimonialsWallCompact({
592
506
  pattern,
593
507
  patternOpacity
594
508
  }) {
595
- const getAuthorName = (testimonial) => {
509
+ const getAuthorName = React.useCallback((testimonial) => {
596
510
  if (typeof testimonial.author === "string") return testimonial.author;
597
511
  return "";
598
- };
599
- const getAvatarSrc = (testimonial) => {
512
+ }, []);
513
+ const getAvatarSrc = React.useCallback((testimonial) => {
600
514
  return testimonial.avatarSrc || testimonial.avatar?.src;
601
- };
602
- const getInitials = (name) => {
515
+ }, []);
516
+ const getInitials = React.useCallback((name) => {
603
517
  return name.split(" ").map((n) => n[0]).join("");
604
- };
518
+ }, []);
605
519
  const renderedTestimonials = React.useMemo(() => {
606
520
  if (testimonialsSlot) return testimonialsSlot;
521
+ if (!testimonials || testimonials.length === 0) return null;
607
522
  return /* @__PURE__ */ jsxRuntime.jsx(
608
523
  "div",
609
524
  {
@@ -652,7 +567,7 @@ function TestimonialsWallCompact({
652
567
  })
653
568
  }
654
569
  );
655
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, authorClassName, quoteClassName]);
570
+ }, [testimonialsSlot, gridClassName, testimonials, cardClassName, authorClassName, quoteClassName, getAuthorName, getAvatarSrc, getInitials]);
656
571
  return /* @__PURE__ */ jsxRuntime.jsxs(
657
572
  Section,
658
573
  {
@@ -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';
@@ -463,94 +463,8 @@ var Section = React.forwardRef(
463
463
  }
464
464
  );
465
465
  Section.displayName = "Section";
466
-
467
- // lib/blockBrandedIconsAndPlaceholders.ts
468
- var blockBrandedIconsAndPlaceholders = {
469
- avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
470
- avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
471
- avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
472
- avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
473
- avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp",
474
- avatar6: "https://cdn.ing/assets/i/r/286244/t7u1jpe1phm0fvmh3ybh3flhfg6i/avatar-6.webp",
475
- avatar7: "https://cdn.ing/assets/i/r/286245/yf2wb1scwmdgntba2on67q0t091d/avatar-7.webp",
476
- avatar8: "https://cdn.ing/assets/i/r/286246/jsrq5sf9oxi8piujnfrdjqmg5zvx/avatar-8.webp"};
477
- var DEFAULT_TESTIMONIALS = [
478
- {
479
- quote: "Game-changer for our team. Productivity up 50%!",
480
- author: "Sarah Chen",
481
- handle: "@sarahchen",
482
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1,
483
- badge: "Featured"
484
- },
485
- {
486
- quote: "Best tool I've used in years. Highly recommend.",
487
- author: "Michael Torres",
488
- handle: "@mtorres",
489
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
490
- },
491
- {
492
- quote: "Support team is incredible. Always there when needed.",
493
- author: "Emily Watson",
494
- handle: "@emilyw",
495
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
496
- },
497
- {
498
- quote: "Clean UI, powerful features. Perfect combo.",
499
- author: "David Kim",
500
- handle: "@davidkim",
501
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4,
502
- badge: "Verified"
503
- },
504
- {
505
- quote: "Switched from competitors. Never looking back.",
506
- author: "Lisa Park",
507
- handle: "@lisapark",
508
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar5
509
- },
510
- {
511
- quote: "ROI was visible in the first week. Amazing!",
512
- author: "Alex Rivera",
513
- handle: "@alexr",
514
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar6
515
- },
516
- {
517
- quote: "Documentation is top-notch. Easy to get started.",
518
- author: "Jordan Lee",
519
- handle: "@jordanlee",
520
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar7
521
- },
522
- {
523
- quote: "Our whole team adopted it instantly. Love it!",
524
- author: "Maya Patel",
525
- handle: "@mayap",
526
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar8,
527
- badge: "Power User"
528
- },
529
- {
530
- quote: "Finally, a tool that just works. No fuss.",
531
- author: "Chris Wong",
532
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
533
- },
534
- {
535
- quote: "Customer service responded in minutes. Impressed!",
536
- author: "Emma Davis",
537
- handle: "@emmad",
538
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
539
- },
540
- {
541
- quote: "Worth every penny. Quality is unmatched.",
542
- author: "Ryan Miller",
543
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
544
- },
545
- {
546
- quote: "Integrations work flawlessly. Saved us hours.",
547
- author: "Sophie Brown",
548
- handle: "@sophieb",
549
- avatarSrc: blockBrandedIconsAndPlaceholders.avatar4
550
- }
551
- ];
552
466
  function TestimonialsWallCompact({
553
- testimonials = DEFAULT_TESTIMONIALS,
467
+ testimonials,
554
468
  testimonialsSlot,
555
469
  heading,
556
470
  description,
@@ -567,18 +481,19 @@ function TestimonialsWallCompact({
567
481
  pattern,
568
482
  patternOpacity
569
483
  }) {
570
- const getAuthorName = (testimonial) => {
484
+ const getAuthorName = useCallback((testimonial) => {
571
485
  if (typeof testimonial.author === "string") return testimonial.author;
572
486
  return "";
573
- };
574
- const getAvatarSrc = (testimonial) => {
487
+ }, []);
488
+ const getAvatarSrc = useCallback((testimonial) => {
575
489
  return testimonial.avatarSrc || testimonial.avatar?.src;
576
- };
577
- const getInitials = (name) => {
490
+ }, []);
491
+ const getInitials = useCallback((name) => {
578
492
  return name.split(" ").map((n) => n[0]).join("");
579
- };
493
+ }, []);
580
494
  const renderedTestimonials = useMemo(() => {
581
495
  if (testimonialsSlot) return testimonialsSlot;
496
+ if (!testimonials || testimonials.length === 0) return null;
582
497
  return /* @__PURE__ */ jsx(
583
498
  "div",
584
499
  {
@@ -627,7 +542,7 @@ function TestimonialsWallCompact({
627
542
  })
628
543
  }
629
544
  );
630
- }, [testimonialsSlot, gridClassName, testimonials, cardClassName, authorClassName, quoteClassName]);
545
+ }, [testimonialsSlot, gridClassName, testimonials, cardClassName, authorClassName, quoteClassName, getAuthorName, getAvatarSrc, getInitials]);
631
546
  return /* @__PURE__ */ jsxs(
632
547
  Section,
633
548
  {
@@ -521,7 +521,7 @@ function TimelineChangelogBadges({
521
521
  "h1",
522
522
  {
523
523
  className: cn(
524
- "mb-10 text-center text-3xl font-bold tracking-tighter text-foreground lg:text-6xl",
524
+ "mb-10 text-center text-3xl font-bold tracking-tighter lg:text-6xl",
525
525
  headingClassName
526
526
  ),
527
527
  children: heading
@@ -546,7 +546,7 @@ function TimelineChangelogBadges({
546
546
  "h1",
547
547
  {
548
548
  className: cn(
549
- "mb-10 text-center text-3xl font-bold tracking-tighter text-foreground lg:text-6xl",
549
+ "mb-10 text-center text-3xl font-bold tracking-tighter lg:text-6xl",
550
550
  headingClassName
551
551
  ),
552
552
  children: heading
@@ -583,7 +583,7 @@ function TimelineChangelogBadges({
583
583
  "span",
584
584
  {
585
585
  className: cn(
586
- "text-md leading-relaxed text-foreground",
586
+ "text-md leading-relaxed",
587
587
  itemClassName
588
588
  ),
589
589
  children: item.content
@@ -592,7 +592,7 @@ function TimelineChangelogBadges({
592
592
  "span",
593
593
  {
594
594
  className: cn(
595
- "text-md leading-relaxed text-foreground",
595
+ "text-md leading-relaxed",
596
596
  itemClassName
597
597
  ),
598
598
  dangerouslySetInnerHTML: {