@opensite/ui 0.8.5 → 0.8.7
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.
- package/dist/about-developer-profile.cjs +1 -1
- package/dist/about-developer-profile.js +1 -1
- package/dist/about-interactive-tabs.cjs +1 -1
- package/dist/about-interactive-tabs.js +1 -1
- package/dist/about-location-info-hero.cjs +5 -5
- package/dist/about-location-info-hero.js +5 -5
- package/dist/about-mission-features.cjs +3 -3
- package/dist/about-mission-features.js +3 -3
- package/dist/about-mission-principles.cjs +1 -1
- package/dist/about-mission-principles.js +1 -1
- package/dist/about-network-spotlight.cjs +6 -6
- package/dist/about-network-spotlight.js +6 -6
- package/dist/about-split-hero.cjs +4 -4
- package/dist/about-split-hero.js +4 -4
- package/dist/about-startup-team.cjs +3 -3
- package/dist/about-startup-team.js +3 -3
- package/dist/about-story-expertise.cjs +4 -4
- package/dist/about-story-expertise.js +4 -4
- package/dist/article-breadcrumb-social.cjs +1 -1
- package/dist/article-breadcrumb-social.js +1 -1
- package/dist/article-chapters-author.cjs +1 -1
- package/dist/article-chapters-author.js +1 -1
- package/dist/article-compact-toc.cjs +1 -1
- package/dist/article-compact-toc.js +1 -1
- package/dist/article-split-animated.cjs +1 -1
- package/dist/article-split-animated.js +1 -1
- package/dist/article-toc-sidebar.cjs +1 -1
- package/dist/article-toc-sidebar.js +1 -1
- package/dist/banner-countdown-sale.cjs +1 -1
- package/dist/banner-countdown-sale.js +1 -1
- package/dist/banner-social-follow.cjs +1 -1
- package/dist/banner-social-follow.js +1 -1
- package/dist/blog-cards-tagline-cta.cjs +1 -1
- package/dist/blog-cards-tagline-cta.js +1 -1
- package/dist/blog-horizontal-timeline.cjs +2 -2
- package/dist/blog-horizontal-timeline.js +2 -2
- package/dist/blog-tech-insights.cjs +6 -6
- package/dist/blog-tech-insights.js +6 -6
- package/dist/carousel-animated-sections.cjs +7 -8
- package/dist/carousel-animated-sections.js +7 -8
- package/dist/carousel-auto-progress-slides.cjs +7 -7
- package/dist/carousel-auto-progress-slides.js +7 -7
- package/dist/carousel-autoplay-progress.cjs +3 -3
- package/dist/carousel-autoplay-progress.js +3 -3
- package/dist/carousel-fullscreen-scroll-fx.cjs +7 -7
- package/dist/carousel-fullscreen-scroll-fx.js +7 -7
- package/dist/carousel-horizontal-cards.cjs +1 -1
- package/dist/carousel-horizontal-cards.js +1 -1
- package/dist/carousel-icon-sidebar.cjs +3 -3
- package/dist/carousel-icon-sidebar.js +3 -3
- package/dist/carousel-image-hero.cjs +2 -2
- package/dist/carousel-image-hero.js +2 -2
- package/dist/carousel-multi-step-showcase.cjs +1 -1
- package/dist/carousel-multi-step-showcase.js +1 -1
- package/dist/carousel-portfolio-hero.cjs +5 -5
- package/dist/carousel-portfolio-hero.js +5 -5
- package/dist/carousel-progress-slider.cjs +1 -1
- package/dist/carousel-progress-slider.js +1 -1
- package/dist/case-studies-image-grid.cjs +2 -2
- package/dist/case-studies-image-grid.js +2 -2
- package/dist/case-studies-stats-card.cjs +1 -1
- package/dist/case-studies-stats-card.js +1 -1
- package/dist/case-study-prose-sidebar.cjs +1 -1
- package/dist/case-study-prose-sidebar.js +1 -1
- package/dist/case-study-toc-social-sidebar.cjs +1 -1
- package/dist/case-study-toc-social-sidebar.js +1 -1
- package/dist/comparison-ai-models.cjs +15 -15
- package/dist/comparison-ai-models.js +15 -15
- package/dist/comparison-feature-cards.cjs +1 -1
- package/dist/comparison-feature-cards.js +1 -1
- package/dist/comparison-feature-grid.cjs +1 -1
- package/dist/comparison-feature-grid.js +1 -1
- package/dist/comparison-metrics-rows.cjs +6 -6
- package/dist/comparison-metrics-rows.js +6 -6
- package/dist/comparison-table-tabs.cjs +5 -5
- package/dist/comparison-table-tabs.js +5 -5
- package/dist/comparison-table-tooltips.cjs +1 -1
- package/dist/comparison-table-tooltips.js +1 -1
- package/dist/comparison-table-two-column.cjs +2 -2
- package/dist/comparison-table-two-column.js +2 -2
- package/dist/components.cjs +22 -23
- package/dist/components.js +22 -23
- package/dist/contact-emergency.cjs +1 -1
- package/dist/contact-emergency.js +1 -1
- package/dist/contact-help-center.cjs +3 -3
- package/dist/contact-help-center.js +3 -3
- package/dist/cta-background-icon-badge.cjs +1 -1
- package/dist/cta-background-icon-badge.js +1 -1
- package/dist/cta-enterprise-dark-features.cjs +5 -5
- package/dist/cta-enterprise-dark-features.js +5 -5
- package/dist/cta-fullwidth-background.cjs +1 -1
- package/dist/cta-fullwidth-background.js +1 -1
- package/dist/cta-hero-feature-cards.cjs +3 -3
- package/dist/cta-hero-feature-cards.js +3 -3
- package/dist/cta-image-overlay-arrow.cjs +1 -1
- package/dist/cta-image-overlay-arrow.js +1 -1
- package/dist/cta-image-overlay-centered.cjs +2 -2
- package/dist/cta-image-overlay-centered.js +2 -2
- package/dist/cta-split-gradient-image.cjs +1 -1
- package/dist/cta-split-gradient-image.js +1 -1
- package/dist/cta-video-background-hero.cjs +3 -3
- package/dist/cta-video-background-hero.js +3 -3
- package/dist/cta-workflow-tabs.cjs +1 -1
- package/dist/cta-workflow-tabs.js +1 -1
- package/dist/faq-badge-support.cjs +26 -8
- package/dist/faq-badge-support.js +26 -8
- package/dist/faq-bordered-badge.cjs +26 -10
- package/dist/faq-bordered-badge.js +26 -10
- package/dist/faq-card-categories.cjs +21 -5
- package/dist/faq-card-categories.js +21 -5
- package/dist/faq-categorized-sections.cjs +20 -5
- package/dist/faq-categorized-sections.js +20 -5
- package/dist/faq-centered-accordion.cjs +19 -6
- package/dist/faq-centered-accordion.js +19 -6
- package/dist/faq-gradient-categories.cjs +20 -5
- package/dist/faq-gradient-categories.js +20 -5
- package/dist/faq-icon-benefits.cjs +11 -2
- package/dist/faq-icon-benefits.js +11 -2
- package/dist/faq-muted-cards.cjs +20 -7
- package/dist/faq-muted-cards.js +20 -7
- package/dist/faq-numbered-grid.cjs +11 -3
- package/dist/faq-numbered-grid.js +11 -3
- package/dist/faq-numbered-list.cjs +11 -3
- package/dist/faq-numbered-list.js +11 -3
- package/dist/faq-profile-sidebar.cjs +60 -23
- package/dist/faq-profile-sidebar.js +60 -23
- package/dist/faq-rounded-cards.cjs +24 -29
- package/dist/faq-rounded-cards.js +24 -29
- package/dist/faq-sidebar-navigation.cjs +49 -29
- package/dist/faq-sidebar-navigation.js +49 -29
- package/dist/faq-simple-accordion.cjs +18 -5
- package/dist/faq-simple-accordion.js +18 -5
- package/dist/faq-split-help.cjs +36 -21
- package/dist/faq-split-help.js +36 -21
- package/dist/faq-split-hero.cjs +86 -186
- package/dist/faq-split-hero.d.cts +16 -18
- package/dist/faq-split-hero.d.ts +16 -18
- package/dist/faq-split-hero.js +87 -187
- package/dist/faq-static-list.cjs +10 -3
- package/dist/faq-static-list.js +10 -3
- package/dist/feature-accordion-image.cjs +9 -3
- package/dist/feature-accordion-image.js +9 -3
- package/dist/feature-bento-utilities.cjs +1 -1
- package/dist/feature-bento-utilities.js +1 -1
- package/dist/feature-capabilities-grid.cjs +13 -13
- package/dist/feature-capabilities-grid.js +13 -13
- package/dist/feature-icon-grid-muted.cjs +2 -2
- package/dist/feature-icon-grid-muted.js +2 -2
- package/dist/feature-icon-tabs-content.cjs +3 -3
- package/dist/feature-icon-tabs-content.js +3 -3
- package/dist/feature-image-cards-three-column.cjs +2 -2
- package/dist/feature-image-cards-three-column.js +2 -2
- package/dist/feature-image-overlay-badge.cjs +2 -2
- package/dist/feature-image-overlay-badge.js +2 -2
- package/dist/feature-integration-cards.cjs +2 -2
- package/dist/feature-integration-cards.js +2 -2
- package/dist/feature-numbered-cards.cjs +1 -1
- package/dist/feature-numbered-cards.js +1 -1
- package/dist/feature-pattern-grid-links.cjs +1 -1
- package/dist/feature-pattern-grid-links.js +1 -1
- package/dist/feature-showcase.cjs +1 -2
- package/dist/feature-showcase.js +1 -2
- package/dist/feature-split-image-reverse.cjs +2 -8
- package/dist/feature-split-image-reverse.js +2 -8
- package/dist/feature-split-image.cjs +2 -2
- package/dist/feature-split-image.js +2 -2
- package/dist/feature-stats-highlight.cjs +50 -13
- package/dist/feature-stats-highlight.js +50 -13
- package/dist/feature-tabbed-content-image.cjs +5 -14
- package/dist/feature-tabbed-content-image.js +5 -14
- package/dist/feature-three-column-values.cjs +4 -44
- package/dist/feature-three-column-values.js +4 -44
- package/dist/feature-utility-cards-grid.cjs +83 -36
- package/dist/feature-utility-cards-grid.js +83 -36
- package/dist/footer-animated-social.cjs +3 -3
- package/dist/footer-animated-social.js +3 -3
- package/dist/footer-brand-links-contact.cjs +10 -10
- package/dist/footer-brand-links-contact.js +10 -10
- package/dist/footer-comprehensive-links.cjs +20 -20
- package/dist/footer-comprehensive-links.js +20 -20
- package/dist/footer-cta-banner.cjs +4 -4
- package/dist/footer-cta-banner.js +4 -4
- package/dist/footer-cta-social.cjs +2 -2
- package/dist/footer-cta-social.js +2 -2
- package/dist/footer-newsletter-minimal.cjs +5 -5
- package/dist/footer-newsletter-minimal.js +5 -5
- package/dist/footer-simple-centered.cjs +2 -2
- package/dist/footer-simple-centered.js +2 -2
- package/dist/hero-ad-campaign-expert.cjs +2 -2
- package/dist/hero-ad-campaign-expert.js +2 -2
- package/dist/hero-agency-animated-images.cjs +2 -2
- package/dist/hero-agency-animated-images.js +2 -2
- package/dist/hero-architecture-fullscreen.cjs +2 -2
- package/dist/hero-architecture-fullscreen.js +2 -2
- package/dist/hero-billing-platform-logos.cjs +4 -4
- package/dist/hero-billing-platform-logos.js +4 -4
- package/dist/hero-business-operations-mosaic.cjs +2 -2
- package/dist/hero-business-operations-mosaic.js +2 -2
- package/dist/hero-centered-gradient-cta.cjs +1 -1
- package/dist/hero-centered-gradient-cta.js +1 -1
- package/dist/hero-coming-soon-countdown.cjs +3 -3
- package/dist/hero-coming-soon-countdown.js +3 -3
- package/dist/hero-conversation-intelligence.cjs +1 -1
- package/dist/hero-conversation-intelligence.js +1 -1
- package/dist/hero-conversion-video-play.cjs +1 -1
- package/dist/hero-conversion-video-play.js +1 -1
- package/dist/hero-crm-streamlined.cjs +2 -2
- package/dist/hero-crm-streamlined.js +2 -2
- package/dist/hero-customer-support-layered.cjs +1 -1
- package/dist/hero-customer-support-layered.js +1 -1
- package/dist/hero-design-carousel-portfolio.cjs +3 -3
- package/dist/hero-design-carousel-portfolio.js +3 -3
- package/dist/hero-design-showcase-logos.cjs +1 -1
- package/dist/hero-design-showcase-logos.js +1 -1
- package/dist/hero-developer-tools-code.cjs +1 -1
- package/dist/hero-developer-tools-code.js +1 -1
- package/dist/hero-digital-agency-fullscreen.cjs +3 -3
- package/dist/hero-digital-agency-fullscreen.js +3 -3
- package/dist/hero-ecommerce-product-showcase.cjs +2 -2
- package/dist/hero-ecommerce-product-showcase.js +2 -2
- package/dist/hero-enterprise-security.cjs +2 -2
- package/dist/hero-enterprise-security.js +2 -2
- package/dist/hero-event-registration.cjs +3 -3
- package/dist/hero-event-registration.js +3 -3
- package/dist/hero-feature-cards-grid.cjs +2 -2
- package/dist/hero-feature-cards-grid.js +2 -2
- package/dist/hero-floating-images.cjs +6 -8
- package/dist/hero-floating-images.js +6 -8
- package/dist/hero-fullscreen-background-image.cjs +3 -3
- package/dist/hero-fullscreen-background-image.js +3 -3
- package/dist/hero-fullscreen-logo-cta.cjs +2 -2
- package/dist/hero-fullscreen-logo-cta.js +2 -2
- package/dist/hero-gradient-client-focused.cjs +1 -1
- package/dist/hero-gradient-client-focused.js +1 -1
- package/dist/hero-hiring-animated-text.cjs +2 -2
- package/dist/hero-hiring-animated-text.js +2 -2
- package/dist/hero-image-slider.cjs +1 -2
- package/dist/hero-image-slider.js +1 -2
- package/dist/hero-innovation-image-grid.cjs +3 -3
- package/dist/hero-innovation-image-grid.js +3 -3
- package/dist/hero-mental-health-team.cjs +4 -4
- package/dist/hero-mental-health-team.js +4 -4
- package/dist/hero-minimal-centered-dark.cjs +1 -1
- package/dist/hero-minimal-centered-dark.js +1 -1
- package/dist/hero-mobile-app-download.cjs +2 -2
- package/dist/hero-mobile-app-download.js +2 -2
- package/dist/hero-newsletter-minimal.cjs +1 -1
- package/dist/hero-newsletter-minimal.js +1 -1
- package/dist/hero-overlay-cta-grid.cjs +5 -5
- package/dist/hero-overlay-cta-grid.js +5 -5
- package/dist/hero-portfolio-creative.cjs +3 -3
- package/dist/hero-portfolio-creative.js +3 -3
- package/dist/hero-premium-split-avatars.cjs +4 -4
- package/dist/hero-premium-split-avatars.js +4 -4
- package/dist/hero-presentation-platform-video.cjs +4 -4
- package/dist/hero-presentation-platform-video.js +4 -4
- package/dist/hero-pricing-comparison.cjs +3 -3
- package/dist/hero-pricing-comparison.js +3 -3
- package/dist/hero-product-showcase-floating.cjs +3 -3
- package/dist/hero-product-showcase-floating.js +3 -3
- package/dist/hero-productivity-launcher-video.cjs +2 -2
- package/dist/hero-productivity-launcher-video.js +2 -2
- package/dist/hero-saas-dashboard-preview.cjs +1 -1
- package/dist/hero-saas-dashboard-preview.js +1 -1
- package/dist/hero-shared-inbox-layered.cjs +1 -1
- package/dist/hero-shared-inbox-layered.js +1 -1
- package/dist/hero-software-growth-video-dialog.cjs +2 -2
- package/dist/hero-software-growth-video-dialog.js +2 -2
- package/dist/hero-split-geometric-shapes.cjs +177 -23
- package/dist/hero-split-geometric-shapes.d.cts +38 -5
- package/dist/hero-split-geometric-shapes.d.ts +38 -5
- package/dist/hero-split-geometric-shapes.js +178 -24
- package/dist/hero-split-icon-cards.cjs +2 -2
- package/dist/hero-split-icon-cards.js +2 -2
- package/dist/hero-split-image-newsletter.cjs +1 -1
- package/dist/hero-split-image-newsletter.js +1 -1
- package/dist/hero-startup-launch-cta.cjs +2 -2
- package/dist/hero-startup-launch-cta.js +2 -2
- package/dist/hero-stats-social-proof.cjs +3 -3
- package/dist/hero-stats-social-proof.js +3 -3
- package/dist/hero-task-timer-animated.cjs +2 -2
- package/dist/hero-task-timer-animated.js +2 -2
- package/dist/hero-testimonial-image-grid.cjs +1 -1
- package/dist/hero-testimonial-image-grid.js +1 -1
- package/dist/hero-therapy-testimonial-grid.cjs +3 -3
- package/dist/hero-therapy-testimonial-grid.js +3 -3
- package/dist/hero-ui-library-showcase.cjs +1 -1
- package/dist/hero-ui-library-showcase.js +1 -1
- package/dist/hero-video-background-dark.cjs +1 -1
- package/dist/hero-video-background-dark.js +1 -1
- package/dist/hero-video-dialog-gradient.cjs +1 -1
- package/dist/hero-video-dialog-gradient.js +1 -1
- package/dist/hero-welcome-asymmetric-images.cjs +38 -2
- package/dist/hero-welcome-asymmetric-images.js +38 -2
- package/dist/image-slider.cjs +1 -2
- package/dist/image-slider.d.cts +0 -4
- package/dist/image-slider.d.ts +0 -4
- package/dist/image-slider.js +1 -2
- package/dist/index.cjs +22 -23
- package/dist/index.js +22 -23
- package/dist/industries-badge-list-bordered.cjs +12 -6
- package/dist/industries-badge-list-bordered.js +12 -6
- package/dist/industries-expandable-showcase.cjs +15 -7
- package/dist/industries-expandable-showcase.js +15 -7
- package/dist/industries-hover-reveal-grid.cjs +13 -6
- package/dist/industries-hover-reveal-grid.js +13 -6
- package/dist/industries-timeline-table.cjs +11 -5
- package/dist/industries-timeline-table.js +11 -5
- package/dist/interior-carousel.cjs +2 -2
- package/dist/interior-carousel.js +2 -2
- package/dist/link-page-bento-layout.cjs +11 -14
- package/dist/link-page-bento-layout.js +11 -14
- package/dist/link-page-grid-cards.cjs +8 -12
- package/dist/link-page-grid-cards.js +8 -12
- package/dist/link-page-minimal-profile.cjs +6 -8
- package/dist/link-page-minimal-profile.js +6 -8
- package/dist/link-page-newsletter-social.cjs +10 -14
- package/dist/link-page-newsletter-social.js +10 -14
- package/dist/link-tree-block.cjs +10 -13
- package/dist/link-tree-block.js +10 -13
- package/dist/list-searchable-grid.cjs +3 -3
- package/dist/list-searchable-grid.js +3 -3
- package/dist/navbar-animated-preview.cjs +13 -7
- package/dist/navbar-animated-preview.js +13 -7
- package/dist/navbar-centered-menu.cjs +9 -3
- package/dist/navbar-centered-menu.js +9 -3
- package/dist/navbar-dark-icons.cjs +14 -8
- package/dist/navbar-dark-icons.js +14 -8
- package/dist/navbar-dropdown-menu.cjs +11 -5
- package/dist/navbar-dropdown-menu.js +11 -5
- package/dist/navbar-education-platform.cjs +9 -3
- package/dist/navbar-education-platform.js +9 -3
- package/dist/navbar-enterprise-mega.cjs +20 -14
- package/dist/navbar-enterprise-mega.js +20 -14
- package/dist/navbar-feature-grid.cjs +11 -5
- package/dist/navbar-feature-grid.js +11 -5
- package/dist/navbar-image-preview.cjs +4 -4
- package/dist/navbar-image-preview.js +4 -4
- package/dist/navbar-mega-menu.cjs +3 -3
- package/dist/navbar-mega-menu.js +3 -3
- package/dist/navbar-multi-column-groups.cjs +9 -3
- package/dist/navbar-multi-column-groups.js +9 -3
- package/dist/navbar-platform-resources.cjs +10 -4
- package/dist/navbar-platform-resources.js +10 -4
- package/dist/navbar-sidebar-mobile.cjs +9 -3
- package/dist/navbar-sidebar-mobile.js +9 -3
- package/dist/navbar-transparent-overlay.cjs +3 -3
- package/dist/navbar-transparent-overlay.js +3 -3
- package/dist/process-expandable-timeline.cjs +3 -3
- package/dist/process-expandable-timeline.js +3 -3
- package/dist/process-hover-cards.cjs +2 -2
- package/dist/process-hover-cards.js +2 -2
- package/dist/process-icon-timeline.cjs +3 -3
- package/dist/process-icon-timeline.js +3 -3
- package/dist/process-mission-principles.cjs +2 -2
- package/dist/process-mission-principles.js +2 -2
- package/dist/process-numbered-services.cjs +2 -2
- package/dist/process-numbered-services.js +2 -2
- package/dist/process-roadmap-timeline.cjs +6 -6
- package/dist/process-roadmap-timeline.js +6 -6
- package/dist/process-scroll-image.cjs +2 -2
- package/dist/process-scroll-image.js +2 -2
- package/dist/process-steps-grid.cjs +2 -2
- package/dist/process-steps-grid.js +2 -2
- package/dist/process-sticky-steps.cjs +2 -2
- package/dist/process-sticky-steps.js +2 -2
- package/dist/project-alternating-motion.cjs +1 -1
- package/dist/project-alternating-motion.js +1 -1
- package/dist/project-background-reveal.cjs +2 -2
- package/dist/project-background-reveal.js +2 -2
- package/dist/project-card-overlay.cjs +7 -7
- package/dist/project-card-overlay.js +7 -7
- package/dist/project-carousel-cinematic.cjs +2 -2
- package/dist/project-carousel-cinematic.js +2 -2
- package/dist/project-carousel-detail-cards.cjs +2 -2
- package/dist/project-carousel-detail-cards.js +2 -2
- package/dist/project-carousel-minimal.cjs +2 -2
- package/dist/project-carousel-minimal.js +2 -2
- package/dist/project-detail-architecture-carousel.cjs +4 -4
- package/dist/project-detail-architecture-carousel.js +4 -4
- package/dist/project-featured-carousel.cjs +1 -1
- package/dist/project-featured-carousel.js +1 -1
- package/dist/project-filterable-gallery.cjs +5 -5
- package/dist/project-filterable-gallery.js +5 -5
- package/dist/project-filterable-three-column.cjs +5 -5
- package/dist/project-filterable-three-column.js +5 -5
- package/dist/project-interactive-hover-reveal.cjs +7 -7
- package/dist/project-interactive-hover-reveal.js +7 -7
- package/dist/project-masonry-columns.cjs +1 -1
- package/dist/project-masonry-columns.js +1 -1
- package/dist/project-scroll-reveal.cjs +4 -4
- package/dist/project-scroll-reveal.js +4 -4
- package/dist/project-showcase-alternating.cjs +1 -1
- package/dist/project-showcase-alternating.js +1 -1
- package/dist/project-sticky-scroll.cjs +3 -3
- package/dist/project-sticky-scroll.js +3 -3
- package/dist/project-studio-hover-preview.cjs +7 -7
- package/dist/project-studio-hover-preview.js +7 -7
- package/dist/project-video-carousel.cjs +2 -2
- package/dist/project-video-carousel.js +2 -2
- package/dist/project-video-hover-bento.cjs +2 -2
- package/dist/project-video-hover-bento.js +2 -2
- package/dist/project-video-hover-grid.cjs +2 -2
- package/dist/project-video-hover-grid.js +2 -2
- package/dist/project-video-hover-rounded.cjs +3 -3
- package/dist/project-video-hover-rounded.js +3 -3
- package/dist/project-video-hover-stack.cjs +3 -3
- package/dist/project-video-hover-stack.js +3 -3
- package/dist/project-video-hover-two-by-two.cjs +3 -3
- package/dist/project-video-hover-two-by-two.js +3 -3
- package/dist/project-zigzag-layout.cjs +1 -1
- package/dist/project-zigzag-layout.js +1 -1
- package/dist/registry.cjs +1825 -2131
- package/dist/registry.js +1825 -2131
- package/dist/resource-detail-whitepaper-sidebar.cjs +6 -4
- package/dist/resource-detail-whitepaper-sidebar.js +6 -4
- package/dist/resource-list-course-cards.cjs +1 -1
- package/dist/resource-list-course-cards.js +1 -1
- package/dist/resource-list-featured-articles.cjs +6 -6
- package/dist/resource-list-featured-articles.js +6 -6
- package/dist/resource-list-hero-filter.cjs +2 -2
- package/dist/resource-list-hero-filter.js +2 -2
- package/dist/resource-list-news-updates.cjs +1 -1
- package/dist/resource-list-news-updates.js +1 -1
- package/dist/reviews-images-helpful.cjs +27 -197
- package/dist/reviews-images-helpful.js +28 -198
- package/dist/reviews-list-verified.cjs +11 -62
- package/dist/reviews-list-verified.js +12 -63
- package/dist/service-detail-image-hero.cjs +2 -2
- package/dist/service-detail-image-hero.js +2 -2
- package/dist/service-detail-stats-hero.cjs +2 -2
- package/dist/service-detail-stats-hero.js +2 -2
- package/dist/service-hover-carousel.cjs +2 -2
- package/dist/service-hover-carousel.js +2 -2
- package/dist/services-list-feature-spotlight.cjs +3 -3
- package/dist/services-list-feature-spotlight.js +3 -3
- package/dist/stats-circular-progress.cjs +1 -1
- package/dist/stats-circular-progress.js +1 -1
- package/dist/stats-icon-cards.cjs +1 -1
- package/dist/stats-icon-cards.js +1 -1
- package/dist/stats-timeline-tabs.cjs +1 -1
- package/dist/stats-timeline-tabs.js +1 -1
- package/dist/team-media-showcase.cjs +4 -4
- package/dist/team-media-showcase.js +4 -4
- package/dist/testimonial-carousel-cards.cjs +2 -2
- package/dist/testimonial-carousel-cards.js +2 -2
- package/dist/testimonials-animated-split.cjs +19 -166
- package/dist/testimonials-animated-split.js +19 -166
- package/dist/testimonials-bento-grid.cjs +11 -56
- package/dist/testimonials-bento-grid.js +12 -57
- package/dist/testimonials-carousel-image.cjs +15 -153
- package/dist/testimonials-carousel-image.js +15 -153
- package/dist/testimonials-centered-avatars.cjs +9 -37
- package/dist/testimonials-centered-avatars.js +10 -38
- package/dist/testimonials-company-logo.cjs +4 -8
- package/dist/testimonials-company-logo.js +4 -8
- package/dist/testimonials-grid-add-review.cjs +7 -47
- package/dist/testimonials-grid-add-review.js +8 -48
- package/dist/testimonials-large-quote.cjs +11 -21
- package/dist/testimonials-large-quote.js +12 -22
- package/dist/testimonials-logo-cards.cjs +9 -53
- package/dist/testimonials-logo-cards.js +10 -54
- package/dist/testimonials-marquee.cjs +15 -60
- package/dist/testimonials-marquee.js +16 -61
- package/dist/testimonials-masonry-grid.cjs +11 -71
- package/dist/testimonials-masonry-grid.js +12 -72
- package/dist/testimonials-mini-dividers.cjs +9 -61
- package/dist/testimonials-mini-dividers.js +10 -62
- package/dist/testimonials-minimal-numbered.cjs +48 -57
- package/dist/testimonials-minimal-numbered.js +48 -57
- package/dist/testimonials-parallax-number.cjs +29 -44
- package/dist/testimonials-parallax-number.js +29 -44
- package/dist/testimonials-quote-carousel.cjs +9 -48
- package/dist/testimonials-quote-carousel.js +10 -49
- package/dist/testimonials-scrolling-columns.cjs +9 -165
- package/dist/testimonials-scrolling-columns.js +10 -166
- package/dist/testimonials-simple-grid.cjs +12 -63
- package/dist/testimonials-simple-grid.js +13 -64
- package/dist/testimonials-slider-minimal.cjs +18 -41
- package/dist/testimonials-slider-minimal.js +18 -41
- package/dist/testimonials-split-image.cjs +15 -24
- package/dist/testimonials-split-image.js +16 -25
- package/dist/testimonials-stats-header.cjs +10 -35
- package/dist/testimonials-stats-header.js +11 -36
- package/dist/testimonials-twitter-cards.cjs +7 -59
- package/dist/testimonials-twitter-cards.js +8 -60
- package/dist/testimonials-wall-compact.cjs +9 -94
- package/dist/testimonials-wall-compact.js +10 -95
- package/dist/timeline-changelog-badges.cjs +4 -4
- package/dist/timeline-changelog-badges.js +4 -4
- package/dist/timeline-history-prose.cjs +4 -4
- package/dist/timeline-history-prose.js +4 -4
- package/dist/timeline-horizontal-icons.cjs +3 -3
- package/dist/timeline-horizontal-icons.js +3 -3
- package/dist/timeline-horizontal-phases.cjs +3 -3
- package/dist/timeline-horizontal-phases.js +3 -3
- package/dist/timeline-stepper-animated.cjs +3 -3
- package/dist/timeline-stepper-animated.js +3 -3
- package/dist/timeline-tabbed-phases.cjs +4 -4
- package/dist/timeline-tabbed-phases.js +4 -4
- package/package.json +1 -1
|
@@ -535,39 +535,10 @@ var Section = React__default.forwardRef(
|
|
|
535
535
|
}
|
|
536
536
|
);
|
|
537
537
|
Section.displayName = "Section";
|
|
538
|
-
|
|
539
|
-
// lib/blockBrandedIconsAndPlaceholders.ts
|
|
540
|
-
var blockBrandedIconsAndPlaceholders = {
|
|
541
|
-
avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
|
|
542
|
-
avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
|
|
543
|
-
avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp"};
|
|
544
|
-
var DEFAULT_TESTIMONIALS = [
|
|
545
|
-
{
|
|
546
|
-
quote: "This platform has completely transformed how we approach our daily operations. The intuitive design and powerful features have made our team significantly more productive.",
|
|
547
|
-
author: "Sarah Chen",
|
|
548
|
-
role: "Design Director",
|
|
549
|
-
company: "Linear",
|
|
550
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
|
|
551
|
-
},
|
|
552
|
-
{
|
|
553
|
-
quote: "The most elegant solution we've ever implemented. Every detail has been thoughtfully considered, and the results speak for themselves.",
|
|
554
|
-
author: "Marcus Webb",
|
|
555
|
-
role: "Creative Lead",
|
|
556
|
-
company: "Vercel",
|
|
557
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
|
|
558
|
-
},
|
|
559
|
-
{
|
|
560
|
-
quote: "Pure craftsmanship in every single detail. The attention to quality is evident throughout the entire experience.",
|
|
561
|
-
author: "Elena Frost",
|
|
562
|
-
role: "Head of Product",
|
|
563
|
-
company: "Stripe",
|
|
564
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
|
|
565
|
-
}
|
|
566
|
-
];
|
|
567
538
|
function TestimonialsMinimalNumbered({
|
|
568
|
-
testimonials
|
|
539
|
+
testimonials,
|
|
569
540
|
testimonialsSlot,
|
|
570
|
-
autoPlayInterval
|
|
541
|
+
autoPlayInterval,
|
|
571
542
|
className,
|
|
572
543
|
contentClassName,
|
|
573
544
|
numberClassName,
|
|
@@ -581,6 +552,8 @@ function TestimonialsMinimalNumbered({
|
|
|
581
552
|
}) {
|
|
582
553
|
const [active, setActive] = useState(0);
|
|
583
554
|
const [isTransitioning, setIsTransitioning] = useState(false);
|
|
555
|
+
const totalTestimonials = testimonials?.length ?? 0;
|
|
556
|
+
const effectiveAutoPlayInterval = autoPlayInterval ?? 5e3;
|
|
584
557
|
const handleChange = useCallback(
|
|
585
558
|
(index) => {
|
|
586
559
|
if (index === active || isTransitioning) return;
|
|
@@ -593,31 +566,37 @@ function TestimonialsMinimalNumbered({
|
|
|
593
566
|
[active, isTransitioning]
|
|
594
567
|
);
|
|
595
568
|
const handlePrev = useCallback(() => {
|
|
596
|
-
|
|
569
|
+
if (totalTestimonials === 0) return;
|
|
570
|
+
const newIndex = (active - 1 + totalTestimonials) % totalTestimonials;
|
|
597
571
|
handleChange(newIndex);
|
|
598
|
-
}, [active,
|
|
572
|
+
}, [active, totalTestimonials, handleChange]);
|
|
599
573
|
const handleNext = useCallback(() => {
|
|
600
|
-
|
|
574
|
+
if (totalTestimonials === 0) return;
|
|
575
|
+
const newIndex = (active + 1) % totalTestimonials;
|
|
601
576
|
handleChange(newIndex);
|
|
602
|
-
}, [active,
|
|
577
|
+
}, [active, totalTestimonials, handleChange]);
|
|
603
578
|
useEffect(() => {
|
|
604
|
-
if (
|
|
605
|
-
const interval = setInterval(handleNext,
|
|
579
|
+
if (effectiveAutoPlayInterval <= 0 || totalTestimonials === 0) return;
|
|
580
|
+
const interval = setInterval(handleNext, effectiveAutoPlayInterval);
|
|
606
581
|
return () => clearInterval(interval);
|
|
607
|
-
}, [
|
|
608
|
-
const current = testimonials[active];
|
|
609
|
-
const getAuthorName = (testimonial) => {
|
|
582
|
+
}, [effectiveAutoPlayInterval, handleNext, totalTestimonials]);
|
|
583
|
+
const current = testimonials?.[active];
|
|
584
|
+
const getAuthorName = useCallback((testimonial) => {
|
|
610
585
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
611
586
|
return "";
|
|
612
|
-
};
|
|
613
|
-
const getAvatarSrc = (
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
587
|
+
}, []);
|
|
588
|
+
const getAvatarSrc = useCallback(
|
|
589
|
+
(testimonial) => {
|
|
590
|
+
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
591
|
+
},
|
|
592
|
+
[]
|
|
593
|
+
);
|
|
594
|
+
const getInitials = useCallback((name) => {
|
|
617
595
|
return name.split(" ").map((n) => n[0]).join("");
|
|
618
|
-
};
|
|
596
|
+
}, []);
|
|
619
597
|
const renderedTestimonial = useMemo(() => {
|
|
620
598
|
if (testimonialsSlot) return testimonialsSlot;
|
|
599
|
+
if (!current) return null;
|
|
621
600
|
const authorName = getAuthorName(current);
|
|
622
601
|
const avatarSrc = getAvatarSrc(current);
|
|
623
602
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-8", contentClassName), children: [
|
|
@@ -625,7 +604,7 @@ function TestimonialsMinimalNumbered({
|
|
|
625
604
|
"span",
|
|
626
605
|
{
|
|
627
606
|
className: cn(
|
|
628
|
-
"text-8xl font-light leading-none
|
|
607
|
+
"text-8xl font-light leading-none select-none transition-all duration-500 md:text-9xl",
|
|
629
608
|
numberClassName
|
|
630
609
|
),
|
|
631
610
|
style: { fontFeatureSettings: '"tnum"' },
|
|
@@ -663,16 +642,16 @@ function TestimonialsMinimalNumbered({
|
|
|
663
642
|
authorClassName
|
|
664
643
|
),
|
|
665
644
|
children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
666
|
-
/* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-2
|
|
645
|
+
/* @__PURE__ */ jsxs(Avatar, { className: "size-12 ring-2", children: [
|
|
667
646
|
/* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: authorName }),
|
|
668
647
|
/* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(authorName) })
|
|
669
648
|
] }),
|
|
670
649
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
671
650
|
current.author && (typeof current.author === "string" ? /* @__PURE__ */ jsx("p", { className: "font-medium", children: current.author }) : current.author),
|
|
672
|
-
/* @__PURE__ */ jsxs("p", { className: "text-sm
|
|
651
|
+
/* @__PURE__ */ jsxs("p", { className: "text-sm", children: [
|
|
673
652
|
current.role && (typeof current.role === "string" ? current.role : null),
|
|
674
653
|
current.company && (typeof current.company === "string" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
675
|
-
/* @__PURE__ */ jsx("span", { className: "mx-2
|
|
654
|
+
/* @__PURE__ */ jsx("span", { className: "mx-2 ", children: "/" }),
|
|
676
655
|
/* @__PURE__ */ jsx("span", { children: current.company })
|
|
677
656
|
] }) : null)
|
|
678
657
|
] })
|
|
@@ -682,7 +661,19 @@ function TestimonialsMinimalNumbered({
|
|
|
682
661
|
)
|
|
683
662
|
] })
|
|
684
663
|
] });
|
|
685
|
-
}, [
|
|
664
|
+
}, [
|
|
665
|
+
testimonialsSlot,
|
|
666
|
+
contentClassName,
|
|
667
|
+
numberClassName,
|
|
668
|
+
active,
|
|
669
|
+
current,
|
|
670
|
+
isTransitioning,
|
|
671
|
+
quoteClassName,
|
|
672
|
+
authorClassName,
|
|
673
|
+
getAuthorName,
|
|
674
|
+
getAvatarSrc,
|
|
675
|
+
getInitials
|
|
676
|
+
]);
|
|
686
677
|
return /* @__PURE__ */ jsx(
|
|
687
678
|
Section,
|
|
688
679
|
{
|
|
@@ -701,7 +692,7 @@ function TestimonialsMinimalNumbered({
|
|
|
701
692
|
navigationClassName
|
|
702
693
|
),
|
|
703
694
|
children: [
|
|
704
|
-
/* @__PURE__ */
|
|
695
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-6", children: testimonials && testimonials.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
705
696
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: testimonials.map((_, index) => /* @__PURE__ */ jsx(
|
|
706
697
|
"button",
|
|
707
698
|
{
|
|
@@ -712,26 +703,26 @@ function TestimonialsMinimalNumbered({
|
|
|
712
703
|
{
|
|
713
704
|
className: cn(
|
|
714
705
|
"block h-px transition-all duration-500 ease-out",
|
|
715
|
-
index === active ? "w-12
|
|
706
|
+
index === active ? "w-12 " : "w-6 group-hover:w-8 "
|
|
716
707
|
)
|
|
717
708
|
}
|
|
718
709
|
)
|
|
719
710
|
},
|
|
720
711
|
index
|
|
721
712
|
)) }),
|
|
722
|
-
/* @__PURE__ */ jsxs("span", { className: "text-xs tracking-widest
|
|
713
|
+
/* @__PURE__ */ jsxs("span", { className: "text-xs tracking-widest uppercase", children: [
|
|
723
714
|
String(active + 1).padStart(2, "0"),
|
|
724
715
|
" /",
|
|
725
716
|
" ",
|
|
726
717
|
String(testimonials.length).padStart(2, "0")
|
|
727
718
|
] })
|
|
728
|
-
] }),
|
|
719
|
+
] }) }),
|
|
729
720
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
730
721
|
/* @__PURE__ */ jsx(
|
|
731
722
|
"button",
|
|
732
723
|
{
|
|
733
724
|
onClick: handlePrev,
|
|
734
|
-
className: "rounded-full p-2
|
|
725
|
+
className: "rounded-full p-2 transition-all duration-300 ",
|
|
735
726
|
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-left", size: 20 })
|
|
736
727
|
}
|
|
737
728
|
),
|
|
@@ -739,7 +730,7 @@ function TestimonialsMinimalNumbered({
|
|
|
739
730
|
"button",
|
|
740
731
|
{
|
|
741
732
|
onClick: handleNext,
|
|
742
|
-
className: "rounded-full p-2
|
|
733
|
+
className: "rounded-full p-2 transition-all duration-300 ",
|
|
743
734
|
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/chevron-right", size: 20 })
|
|
744
735
|
}
|
|
745
736
|
)
|
|
@@ -390,30 +390,10 @@ var Section = React__default.default.forwardRef(
|
|
|
390
390
|
}
|
|
391
391
|
);
|
|
392
392
|
Section.displayName = "Section";
|
|
393
|
-
var DEFAULT_TESTIMONIALS = [
|
|
394
|
-
{
|
|
395
|
-
quote: "Transformed our entire creative process overnight.",
|
|
396
|
-
author: "Sarah Chen",
|
|
397
|
-
role: "Design Director",
|
|
398
|
-
company: "Linear"
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
quote: "The most elegant solution we've ever implemented.",
|
|
402
|
-
author: "Marcus Webb",
|
|
403
|
-
role: "Creative Lead",
|
|
404
|
-
company: "Vercel"
|
|
405
|
-
},
|
|
406
|
-
{
|
|
407
|
-
quote: "Pure craftsmanship in every single detail.",
|
|
408
|
-
author: "Elena Frost",
|
|
409
|
-
role: "Head of Product",
|
|
410
|
-
company: "Stripe"
|
|
411
|
-
}
|
|
412
|
-
];
|
|
413
393
|
function TestimonialsParallaxNumber({
|
|
414
|
-
testimonials
|
|
394
|
+
testimonials,
|
|
415
395
|
testimonialsSlot,
|
|
416
|
-
autoPlayInterval
|
|
396
|
+
autoPlayInterval,
|
|
417
397
|
verticalLabel,
|
|
418
398
|
className,
|
|
419
399
|
contentClassName,
|
|
@@ -428,6 +408,8 @@ function TestimonialsParallaxNumber({
|
|
|
428
408
|
}) {
|
|
429
409
|
const [activeIndex, setActiveIndex] = React.useState(0);
|
|
430
410
|
const containerRef = React.useRef(null);
|
|
411
|
+
const totalTestimonials = testimonials?.length ?? 0;
|
|
412
|
+
const effectiveAutoPlayInterval = autoPlayInterval ?? 6e3;
|
|
431
413
|
const mouseX = framerMotion.useMotionValue(0);
|
|
432
414
|
const mouseY = framerMotion.useMotionValue(0);
|
|
433
415
|
const springConfig = { damping: 25, stiffness: 200 };
|
|
@@ -435,7 +417,7 @@ function TestimonialsParallaxNumber({
|
|
|
435
417
|
const y = framerMotion.useSpring(mouseY, springConfig);
|
|
436
418
|
const numberX = framerMotion.useTransform(x, [-200, 200], [-20, 20]);
|
|
437
419
|
const numberY = framerMotion.useTransform(y, [-200, 200], [-10, 10]);
|
|
438
|
-
const handleMouseMove = (e) => {
|
|
420
|
+
const handleMouseMove = React.useCallback((e) => {
|
|
439
421
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
440
422
|
if (rect) {
|
|
441
423
|
const centerX = rect.left + rect.width / 2;
|
|
@@ -443,35 +425,38 @@ function TestimonialsParallaxNumber({
|
|
|
443
425
|
mouseX.set(e.clientX - centerX);
|
|
444
426
|
mouseY.set(e.clientY - centerY);
|
|
445
427
|
}
|
|
446
|
-
};
|
|
428
|
+
}, [mouseX, mouseY]);
|
|
447
429
|
const goNext = React.useCallback(() => {
|
|
448
|
-
|
|
449
|
-
|
|
430
|
+
if (totalTestimonials === 0) return;
|
|
431
|
+
setActiveIndex((prev) => (prev + 1) % totalTestimonials);
|
|
432
|
+
}, [totalTestimonials]);
|
|
450
433
|
const goPrev = React.useCallback(() => {
|
|
434
|
+
if (totalTestimonials === 0) return;
|
|
451
435
|
setActiveIndex(
|
|
452
|
-
(prev) => (prev - 1 +
|
|
436
|
+
(prev) => (prev - 1 + totalTestimonials) % totalTestimonials
|
|
453
437
|
);
|
|
454
|
-
}, [
|
|
438
|
+
}, [totalTestimonials]);
|
|
455
439
|
React.useEffect(() => {
|
|
456
|
-
if (
|
|
457
|
-
const timer = setInterval(goNext,
|
|
440
|
+
if (effectiveAutoPlayInterval <= 0 || totalTestimonials === 0) return;
|
|
441
|
+
const timer = setInterval(goNext, effectiveAutoPlayInterval);
|
|
458
442
|
return () => clearInterval(timer);
|
|
459
|
-
}, [
|
|
460
|
-
const current = testimonials[activeIndex];
|
|
461
|
-
const getAuthorName = (testimonial) => {
|
|
443
|
+
}, [effectiveAutoPlayInterval, goNext, totalTestimonials]);
|
|
444
|
+
const current = testimonials?.[activeIndex];
|
|
445
|
+
const getAuthorName = React.useCallback((testimonial) => {
|
|
462
446
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
463
447
|
return "";
|
|
464
|
-
};
|
|
465
|
-
const getQuoteText = (testimonial) => {
|
|
448
|
+
}, []);
|
|
449
|
+
const getQuoteText = React.useCallback((testimonial) => {
|
|
466
450
|
if (typeof testimonial.quote === "string") return testimonial.quote;
|
|
467
451
|
return "";
|
|
468
|
-
};
|
|
469
|
-
const getCompanyName = (testimonial) => {
|
|
452
|
+
}, []);
|
|
453
|
+
const getCompanyName = React.useCallback((testimonial) => {
|
|
470
454
|
if (typeof testimonial.company === "string") return testimonial.company;
|
|
471
455
|
return "";
|
|
472
|
-
};
|
|
456
|
+
}, []);
|
|
473
457
|
const renderedTestimonial = React.useMemo(() => {
|
|
474
458
|
if (testimonialsSlot) return testimonialsSlot;
|
|
459
|
+
if (!current) return null;
|
|
475
460
|
getAuthorName(current);
|
|
476
461
|
const quoteText = getQuoteText(current);
|
|
477
462
|
const companyName = getCompanyName(current);
|
|
@@ -486,7 +471,7 @@ function TestimonialsParallaxNumber({
|
|
|
486
471
|
framerMotion.motion.div,
|
|
487
472
|
{
|
|
488
473
|
className: cn(
|
|
489
|
-
"pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter text-foreground/[0.
|
|
474
|
+
"pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter text-muted-foreground/[0.05]",
|
|
490
475
|
numberClassName
|
|
491
476
|
),
|
|
492
477
|
style: { x: numberX, y: numberY },
|
|
@@ -523,7 +508,7 @@ function TestimonialsParallaxNumber({
|
|
|
523
508
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative mt-8 h-32 w-px bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
524
509
|
framerMotion.motion.div,
|
|
525
510
|
{
|
|
526
|
-
className: "absolute left-0 top-0 w-full origin-top bg-
|
|
511
|
+
className: "absolute left-0 top-0 w-full origin-top bg-primary",
|
|
527
512
|
animate: {
|
|
528
513
|
height: `${(activeIndex + 1) / testimonials.length * 100}%`
|
|
529
514
|
},
|
|
@@ -599,7 +584,7 @@ function TestimonialsParallaxNumber({
|
|
|
599
584
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
600
585
|
framerMotion.motion.div,
|
|
601
586
|
{
|
|
602
|
-
className: "h-px w-8 bg-
|
|
587
|
+
className: "h-px w-8 bg-primary",
|
|
603
588
|
initial: { scaleX: 0 },
|
|
604
589
|
animate: { scaleX: 1 },
|
|
605
590
|
transition: { duration: 0.6, delay: 0.3 },
|
|
@@ -632,7 +617,7 @@ function TestimonialsParallaxNumber({
|
|
|
632
617
|
height: "18",
|
|
633
618
|
viewBox: "0 0 16 16",
|
|
634
619
|
fill: "none",
|
|
635
|
-
className: "relative z-10 text-foreground transition-colors group-hover:text-foreground
|
|
620
|
+
className: "relative z-10 text-muted-foreground transition-colors group-hover:text-foreground",
|
|
636
621
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
637
622
|
"path",
|
|
638
623
|
{
|
|
@@ -660,7 +645,7 @@ function TestimonialsParallaxNumber({
|
|
|
660
645
|
height: "18",
|
|
661
646
|
viewBox: "0 0 16 16",
|
|
662
647
|
fill: "none",
|
|
663
|
-
className: "relative z-10 text-foreground transition-colors group-hover:text-foreground
|
|
648
|
+
className: "relative z-10 text-muted-foreground transition-colors group-hover:text-foreground",
|
|
664
649
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
665
650
|
"path",
|
|
666
651
|
{
|
|
@@ -700,7 +685,7 @@ function TestimonialsParallaxNumber({
|
|
|
700
685
|
]
|
|
701
686
|
}
|
|
702
687
|
);
|
|
703
|
-
}, [testimonialsSlot, contentClassName, numberX, numberY, numberClassName, activeIndex, testimonials, verticalLabel, quoteClassName, authorClassName, current, navigationClassName,
|
|
688
|
+
}, [testimonialsSlot, contentClassName, numberX, numberY, numberClassName, activeIndex, testimonials, verticalLabel, quoteClassName, authorClassName, current, navigationClassName, handleMouseMove, goPrev, goNext, totalTestimonials, getAuthorName, getQuoteText, getCompanyName]);
|
|
704
689
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
705
690
|
Section,
|
|
706
691
|
{
|
|
@@ -384,30 +384,10 @@ var Section = React.forwardRef(
|
|
|
384
384
|
}
|
|
385
385
|
);
|
|
386
386
|
Section.displayName = "Section";
|
|
387
|
-
var DEFAULT_TESTIMONIALS = [
|
|
388
|
-
{
|
|
389
|
-
quote: "Transformed our entire creative process overnight.",
|
|
390
|
-
author: "Sarah Chen",
|
|
391
|
-
role: "Design Director",
|
|
392
|
-
company: "Linear"
|
|
393
|
-
},
|
|
394
|
-
{
|
|
395
|
-
quote: "The most elegant solution we've ever implemented.",
|
|
396
|
-
author: "Marcus Webb",
|
|
397
|
-
role: "Creative Lead",
|
|
398
|
-
company: "Vercel"
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
quote: "Pure craftsmanship in every single detail.",
|
|
402
|
-
author: "Elena Frost",
|
|
403
|
-
role: "Head of Product",
|
|
404
|
-
company: "Stripe"
|
|
405
|
-
}
|
|
406
|
-
];
|
|
407
387
|
function TestimonialsParallaxNumber({
|
|
408
|
-
testimonials
|
|
388
|
+
testimonials,
|
|
409
389
|
testimonialsSlot,
|
|
410
|
-
autoPlayInterval
|
|
390
|
+
autoPlayInterval,
|
|
411
391
|
verticalLabel,
|
|
412
392
|
className,
|
|
413
393
|
contentClassName,
|
|
@@ -422,6 +402,8 @@ function TestimonialsParallaxNumber({
|
|
|
422
402
|
}) {
|
|
423
403
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
424
404
|
const containerRef = useRef(null);
|
|
405
|
+
const totalTestimonials = testimonials?.length ?? 0;
|
|
406
|
+
const effectiveAutoPlayInterval = autoPlayInterval ?? 6e3;
|
|
425
407
|
const mouseX = useMotionValue(0);
|
|
426
408
|
const mouseY = useMotionValue(0);
|
|
427
409
|
const springConfig = { damping: 25, stiffness: 200 };
|
|
@@ -429,7 +411,7 @@ function TestimonialsParallaxNumber({
|
|
|
429
411
|
const y = useSpring(mouseY, springConfig);
|
|
430
412
|
const numberX = useTransform(x, [-200, 200], [-20, 20]);
|
|
431
413
|
const numberY = useTransform(y, [-200, 200], [-10, 10]);
|
|
432
|
-
const handleMouseMove = (e) => {
|
|
414
|
+
const handleMouseMove = useCallback((e) => {
|
|
433
415
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
434
416
|
if (rect) {
|
|
435
417
|
const centerX = rect.left + rect.width / 2;
|
|
@@ -437,35 +419,38 @@ function TestimonialsParallaxNumber({
|
|
|
437
419
|
mouseX.set(e.clientX - centerX);
|
|
438
420
|
mouseY.set(e.clientY - centerY);
|
|
439
421
|
}
|
|
440
|
-
};
|
|
422
|
+
}, [mouseX, mouseY]);
|
|
441
423
|
const goNext = useCallback(() => {
|
|
442
|
-
|
|
443
|
-
|
|
424
|
+
if (totalTestimonials === 0) return;
|
|
425
|
+
setActiveIndex((prev) => (prev + 1) % totalTestimonials);
|
|
426
|
+
}, [totalTestimonials]);
|
|
444
427
|
const goPrev = useCallback(() => {
|
|
428
|
+
if (totalTestimonials === 0) return;
|
|
445
429
|
setActiveIndex(
|
|
446
|
-
(prev) => (prev - 1 +
|
|
430
|
+
(prev) => (prev - 1 + totalTestimonials) % totalTestimonials
|
|
447
431
|
);
|
|
448
|
-
}, [
|
|
432
|
+
}, [totalTestimonials]);
|
|
449
433
|
useEffect(() => {
|
|
450
|
-
if (
|
|
451
|
-
const timer = setInterval(goNext,
|
|
434
|
+
if (effectiveAutoPlayInterval <= 0 || totalTestimonials === 0) return;
|
|
435
|
+
const timer = setInterval(goNext, effectiveAutoPlayInterval);
|
|
452
436
|
return () => clearInterval(timer);
|
|
453
|
-
}, [
|
|
454
|
-
const current = testimonials[activeIndex];
|
|
455
|
-
const getAuthorName = (testimonial) => {
|
|
437
|
+
}, [effectiveAutoPlayInterval, goNext, totalTestimonials]);
|
|
438
|
+
const current = testimonials?.[activeIndex];
|
|
439
|
+
const getAuthorName = useCallback((testimonial) => {
|
|
456
440
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
457
441
|
return "";
|
|
458
|
-
};
|
|
459
|
-
const getQuoteText = (testimonial) => {
|
|
442
|
+
}, []);
|
|
443
|
+
const getQuoteText = useCallback((testimonial) => {
|
|
460
444
|
if (typeof testimonial.quote === "string") return testimonial.quote;
|
|
461
445
|
return "";
|
|
462
|
-
};
|
|
463
|
-
const getCompanyName = (testimonial) => {
|
|
446
|
+
}, []);
|
|
447
|
+
const getCompanyName = useCallback((testimonial) => {
|
|
464
448
|
if (typeof testimonial.company === "string") return testimonial.company;
|
|
465
449
|
return "";
|
|
466
|
-
};
|
|
450
|
+
}, []);
|
|
467
451
|
const renderedTestimonial = useMemo(() => {
|
|
468
452
|
if (testimonialsSlot) return testimonialsSlot;
|
|
453
|
+
if (!current) return null;
|
|
469
454
|
getAuthorName(current);
|
|
470
455
|
const quoteText = getQuoteText(current);
|
|
471
456
|
const companyName = getCompanyName(current);
|
|
@@ -480,7 +465,7 @@ function TestimonialsParallaxNumber({
|
|
|
480
465
|
motion.div,
|
|
481
466
|
{
|
|
482
467
|
className: cn(
|
|
483
|
-
"pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter text-foreground/[0.
|
|
468
|
+
"pointer-events-none absolute -left-8 top-1/2 -translate-y-1/2 select-none text-[20rem] font-bold leading-none tracking-tighter text-muted-foreground/[0.05]",
|
|
484
469
|
numberClassName
|
|
485
470
|
),
|
|
486
471
|
style: { x: numberX, y: numberY },
|
|
@@ -517,7 +502,7 @@ function TestimonialsParallaxNumber({
|
|
|
517
502
|
/* @__PURE__ */ jsx("div", { className: "relative mt-8 h-32 w-px bg-border", children: /* @__PURE__ */ jsx(
|
|
518
503
|
motion.div,
|
|
519
504
|
{
|
|
520
|
-
className: "absolute left-0 top-0 w-full origin-top bg-
|
|
505
|
+
className: "absolute left-0 top-0 w-full origin-top bg-primary",
|
|
521
506
|
animate: {
|
|
522
507
|
height: `${(activeIndex + 1) / testimonials.length * 100}%`
|
|
523
508
|
},
|
|
@@ -593,7 +578,7 @@ function TestimonialsParallaxNumber({
|
|
|
593
578
|
/* @__PURE__ */ jsx(
|
|
594
579
|
motion.div,
|
|
595
580
|
{
|
|
596
|
-
className: "h-px w-8 bg-
|
|
581
|
+
className: "h-px w-8 bg-primary",
|
|
597
582
|
initial: { scaleX: 0 },
|
|
598
583
|
animate: { scaleX: 1 },
|
|
599
584
|
transition: { duration: 0.6, delay: 0.3 },
|
|
@@ -626,7 +611,7 @@ function TestimonialsParallaxNumber({
|
|
|
626
611
|
height: "18",
|
|
627
612
|
viewBox: "0 0 16 16",
|
|
628
613
|
fill: "none",
|
|
629
|
-
className: "relative z-10 text-foreground transition-colors group-hover:text-foreground
|
|
614
|
+
className: "relative z-10 text-muted-foreground transition-colors group-hover:text-foreground",
|
|
630
615
|
children: /* @__PURE__ */ jsx(
|
|
631
616
|
"path",
|
|
632
617
|
{
|
|
@@ -654,7 +639,7 @@ function TestimonialsParallaxNumber({
|
|
|
654
639
|
height: "18",
|
|
655
640
|
viewBox: "0 0 16 16",
|
|
656
641
|
fill: "none",
|
|
657
|
-
className: "relative z-10 text-foreground transition-colors group-hover:text-foreground
|
|
642
|
+
className: "relative z-10 text-muted-foreground transition-colors group-hover:text-foreground",
|
|
658
643
|
children: /* @__PURE__ */ jsx(
|
|
659
644
|
"path",
|
|
660
645
|
{
|
|
@@ -694,7 +679,7 @@ function TestimonialsParallaxNumber({
|
|
|
694
679
|
]
|
|
695
680
|
}
|
|
696
681
|
);
|
|
697
|
-
}, [testimonialsSlot, contentClassName, numberX, numberY, numberClassName, activeIndex, testimonials, verticalLabel, quoteClassName, authorClassName, current, navigationClassName,
|
|
682
|
+
}, [testimonialsSlot, contentClassName, numberX, numberY, numberClassName, activeIndex, testimonials, verticalLabel, quoteClassName, authorClassName, current, navigationClassName, handleMouseMove, goPrev, goNext, totalTestimonials, getAuthorName, getQuoteText, getCompanyName]);
|
|
698
683
|
return /* @__PURE__ */ jsx(
|
|
699
684
|
Section,
|
|
700
685
|
{
|
|
@@ -1167,48 +1167,8 @@ var Section = React4__namespace.default.forwardRef(
|
|
|
1167
1167
|
}
|
|
1168
1168
|
);
|
|
1169
1169
|
Section.displayName = "Section";
|
|
1170
|
-
|
|
1171
|
-
// lib/blockBrandedIconsAndPlaceholders.ts
|
|
1172
|
-
var blockBrandedIconsAndPlaceholders = {
|
|
1173
|
-
avatar1: "https://cdn.ing/assets/i/r/286239/ebm7o3j2kx48vw98emnwjaf5qvl6/avatar-1.webp",
|
|
1174
|
-
avatar2: "https://cdn.ing/assets/i/r/286240/vgf3rrkwn0769pfdtpal60uo5vpw/avatar-2.webp",
|
|
1175
|
-
avatar3: "https://cdn.ing/assets/i/r/286241/05vbqt3lls0q974r8fv4zn0njllq/avatar-3.webp",
|
|
1176
|
-
avatar4: "https://cdn.ing/assets/i/r/286242/y0zkazxawxrl3twwkw63twf04pdt/avatar-4.webp",
|
|
1177
|
-
avatar5: "https://cdn.ing/assets/i/r/286243/alziyfoo570m3vade3usufzlzj6x/avatar-5.webp"};
|
|
1178
|
-
var DEFAULT_TESTIMONIALS = [
|
|
1179
|
-
{
|
|
1180
|
-
quote: "Their collaborative approach and deep understanding of our industry resulted in a design that not only looks exceptional but performs brilliantly.",
|
|
1181
|
-
author: "Daniel Ramirez",
|
|
1182
|
-
role: "Product Director, NexGen",
|
|
1183
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar1
|
|
1184
|
-
},
|
|
1185
|
-
{
|
|
1186
|
-
quote: "The team's ability to translate complex requirements into clean, intuitive interfaces is remarkable. They're truly masters of their craft.",
|
|
1187
|
-
author: "Sophia Chen",
|
|
1188
|
-
role: "UX Director, Innovate AI",
|
|
1189
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar2
|
|
1190
|
-
},
|
|
1191
|
-
{
|
|
1192
|
-
quote: "Working with them was effortless. They brought fresh perspectives to challenges we'd been struggling with for months.",
|
|
1193
|
-
author: "Marcus Johnson",
|
|
1194
|
-
role: "CEO, Horizon Media",
|
|
1195
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar3
|
|
1196
|
-
},
|
|
1197
|
-
{
|
|
1198
|
-
quote: "They didn't just meet our expectations - they redefined what we thought was possible. I cannot recommend them highly enough.",
|
|
1199
|
-
author: "Olivia Thompson",
|
|
1200
|
-
role: "Brand Manager, Elevate",
|
|
1201
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar4
|
|
1202
|
-
},
|
|
1203
|
-
{
|
|
1204
|
-
quote: "The strategic thinking behind their design decisions transformed our product. We saw immediate improvements in user engagement.",
|
|
1205
|
-
author: "James Wilson",
|
|
1206
|
-
role: "CTO, TechSphere",
|
|
1207
|
-
avatarSrc: blockBrandedIconsAndPlaceholders.avatar5
|
|
1208
|
-
}
|
|
1209
|
-
];
|
|
1210
1170
|
function TestimonialsQuoteCarousel({
|
|
1211
|
-
testimonials
|
|
1171
|
+
testimonials,
|
|
1212
1172
|
testimonialsSlot,
|
|
1213
1173
|
heading,
|
|
1214
1174
|
description,
|
|
@@ -1226,16 +1186,16 @@ function TestimonialsQuoteCarousel({
|
|
|
1226
1186
|
pattern,
|
|
1227
1187
|
patternOpacity
|
|
1228
1188
|
}) {
|
|
1229
|
-
const getAuthorName = (testimonial) => {
|
|
1189
|
+
const getAuthorName = React4.useCallback((testimonial) => {
|
|
1230
1190
|
if (typeof testimonial.author === "string") return testimonial.author;
|
|
1231
1191
|
return "";
|
|
1232
|
-
};
|
|
1233
|
-
const getAvatarSrc = (testimonial) => {
|
|
1192
|
+
}, []);
|
|
1193
|
+
const getAvatarSrc = React4.useCallback((testimonial) => {
|
|
1234
1194
|
return testimonial.avatarSrc || testimonial.avatar?.src;
|
|
1235
|
-
};
|
|
1236
|
-
const getInitials = (name) => {
|
|
1195
|
+
}, []);
|
|
1196
|
+
const getInitials = React4.useCallback((name) => {
|
|
1237
1197
|
return name.split(" ").map((n) => n[0]).join("");
|
|
1238
|
-
};
|
|
1198
|
+
}, []);
|
|
1239
1199
|
const renderedHeading = React4.useMemo(() => {
|
|
1240
1200
|
if (typeof heading === "string") {
|
|
1241
1201
|
return heading.split(" ").map(
|
|
@@ -1252,6 +1212,7 @@ function TestimonialsQuoteCarousel({
|
|
|
1252
1212
|
}, [heading]);
|
|
1253
1213
|
const renderedTestimonials = React4.useMemo(() => {
|
|
1254
1214
|
if (testimonialsSlot) return testimonialsSlot;
|
|
1215
|
+
if (!testimonials || testimonials.length === 0) return null;
|
|
1255
1216
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mx-auto max-w-5xl", carouselClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1256
1217
|
Carousel,
|
|
1257
1218
|
{
|
|
@@ -1329,7 +1290,7 @@ function TestimonialsQuoteCarousel({
|
|
|
1329
1290
|
]
|
|
1330
1291
|
}
|
|
1331
1292
|
) });
|
|
1332
|
-
}, [testimonialsSlot, carouselClassName, testimonials, cardClassName, quoteClassName, authorClassName, navigationClassName]);
|
|
1293
|
+
}, [testimonialsSlot, carouselClassName, testimonials, cardClassName, quoteClassName, authorClassName, navigationClassName, getAuthorName, getAvatarSrc, getInitials]);
|
|
1333
1294
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1334
1295
|
Section,
|
|
1335
1296
|
{
|