@opensite/ui 2.8.8 → 2.8.9
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-company-profile.d.cts +3 -3
- package/dist/about-company-profile.d.ts +3 -3
- package/dist/about-culture-tabs.cjs +174 -174
- package/dist/about-culture-tabs.d.cts +3 -3
- package/dist/about-culture-tabs.d.ts +3 -3
- package/dist/about-culture-tabs.js +174 -174
- package/dist/about-developer-profile.cjs +200 -200
- package/dist/about-developer-profile.d.cts +3 -3
- package/dist/about-developer-profile.d.ts +3 -3
- package/dist/about-developer-profile.js +198 -198
- package/dist/about-developer-story.cjs +142 -142
- package/dist/about-developer-story.d.cts +3 -3
- package/dist/about-developer-story.d.ts +3 -3
- package/dist/about-developer-story.js +142 -142
- package/dist/about-expandable-values.d.cts +3 -3
- package/dist/about-expandable-values.d.ts +3 -3
- package/dist/about-interactive-tabs.d.cts +3 -3
- package/dist/about-interactive-tabs.d.ts +3 -3
- package/dist/about-location-info-hero.d.cts +3 -3
- package/dist/about-location-info-hero.d.ts +3 -3
- package/dist/about-minimal-story.d.cts +3 -3
- package/dist/about-minimal-story.d.ts +3 -3
- package/dist/about-mission-dual-image.cjs +142 -142
- package/dist/about-mission-dual-image.d.cts +3 -3
- package/dist/about-mission-dual-image.d.ts +3 -3
- package/dist/about-mission-dual-image.js +142 -142
- package/dist/about-mission-features.cjs +142 -142
- package/dist/about-mission-features.d.cts +3 -3
- package/dist/about-mission-features.d.ts +3 -3
- package/dist/about-mission-features.js +142 -142
- package/dist/about-mission-principles.d.cts +3 -3
- package/dist/about-mission-principles.d.ts +3 -3
- package/dist/about-network-spotlight.cjs +142 -142
- package/dist/about-network-spotlight.d.cts +3 -3
- package/dist/about-network-spotlight.d.ts +3 -3
- package/dist/about-network-spotlight.js +142 -142
- package/dist/about-split-hero.d.cts +3 -3
- package/dist/about-split-hero.d.ts +3 -3
- package/dist/about-startup-team.d.cts +3 -3
- package/dist/about-startup-team.d.ts +3 -3
- package/dist/about-stats-showcase.d.cts +3 -3
- package/dist/about-stats-showcase.d.ts +3 -3
- package/dist/about-stats-sidebar.d.cts +3 -3
- package/dist/about-stats-sidebar.d.ts +3 -3
- package/dist/about-story-expertise.cjs +142 -142
- package/dist/about-story-expertise.d.cts +3 -3
- package/dist/about-story-expertise.d.ts +3 -3
- package/dist/about-story-expertise.js +142 -142
- package/dist/about-story-gallery.d.cts +3 -3
- package/dist/about-story-gallery.d.ts +3 -3
- package/dist/about-story-hero.d.cts +3 -3
- package/dist/about-story-hero.d.ts +3 -3
- package/dist/about-streamline-team.cjs +142 -142
- package/dist/about-streamline-team.d.cts +3 -3
- package/dist/about-streamline-team.d.ts +3 -3
- package/dist/about-streamline-team.js +142 -142
- package/dist/about-vision-gallery.d.cts +3 -3
- package/dist/about-vision-gallery.d.ts +3 -3
- package/dist/alternating-blocks.d.cts +3 -3
- package/dist/alternating-blocks.d.ts +3 -3
- package/dist/animated-dialog.d.cts +3 -3
- package/dist/animated-dialog.d.ts +3 -3
- package/dist/article-breadcrumb-social.d.cts +3 -3
- package/dist/article-breadcrumb-social.d.ts +3 -3
- package/dist/article-chapters-author.d.cts +3 -3
- package/dist/article-chapters-author.d.ts +3 -3
- package/dist/article-compact-toc.d.cts +3 -3
- package/dist/article-compact-toc.d.ts +3 -3
- package/dist/article-hero-prose.d.cts +3 -3
- package/dist/article-hero-prose.d.ts +3 -3
- package/dist/article-sidebar-sticky.d.cts +3 -3
- package/dist/article-sidebar-sticky.d.ts +3 -3
- package/dist/article-split-animated.d.cts +3 -3
- package/dist/article-split-animated.d.ts +3 -3
- package/dist/article-toc-sidebar.d.cts +3 -3
- package/dist/article-toc-sidebar.d.ts +3 -3
- package/dist/auto-scroll-carousel.d.cts +3 -3
- package/dist/auto-scroll-carousel.d.ts +3 -3
- package/dist/badge.d.cts +1 -1
- package/dist/badge.d.ts +1 -1
- package/dist/banner-announcement-dismissible.d.cts +3 -3
- package/dist/banner-announcement-dismissible.d.ts +3 -3
- package/dist/banner-countdown-sale.d.cts +3 -3
- package/dist/banner-countdown-sale.d.ts +3 -3
- package/dist/banner-delivery-countdown.d.cts +3 -3
- package/dist/banner-delivery-countdown.d.ts +3 -3
- package/dist/banner-event-promo.d.cts +3 -3
- package/dist/banner-event-promo.d.ts +3 -3
- package/dist/banner-floating-offer.d.cts +3 -3
- package/dist/banner-floating-offer.d.ts +3 -3
- package/dist/banner-gdpr-rights.d.cts +3 -3
- package/dist/banner-gdpr-rights.d.ts +3 -3
- package/dist/banner-privacy-notice.d.cts +3 -3
- package/dist/banner-privacy-notice.d.ts +3 -3
- package/dist/banner-promo-cta.d.cts +3 -3
- package/dist/banner-promo-cta.d.ts +3 -3
- package/dist/banner-social-follow.d.cts +3 -3
- package/dist/banner-social-follow.d.ts +3 -3
- package/dist/banner-survey-incentive.d.cts +3 -3
- package/dist/banner-survey-incentive.d.ts +3 -3
- package/dist/{blocks-BtDAbw8d.d.cts → blocks-D1hqLk46.d.cts} +1 -1
- package/dist/{blocks-BlWXj9GI.d.ts → blocks-kcru1Ogu.d.ts} +1 -1
- package/dist/blog-cards-read-time.d.cts +3 -3
- package/dist/blog-cards-read-time.d.ts +3 -3
- package/dist/blog-cards-tagline-cta.d.cts +3 -3
- package/dist/blog-cards-tagline-cta.d.ts +3 -3
- package/dist/blog-carousel-apple.d.cts +3 -3
- package/dist/blog-carousel-apple.d.ts +3 -3
- package/dist/blog-category-overlay.d.cts +3 -3
- package/dist/blog-category-overlay.d.ts +3 -3
- package/dist/blog-featured-popular.d.cts +3 -3
- package/dist/blog-featured-popular.d.ts +3 -3
- package/dist/blog-filtered-results.d.cts +3 -3
- package/dist/blog-filtered-results.d.ts +3 -3
- package/dist/blog-grid-author-cards.d.cts +3 -3
- package/dist/blog-grid-author-cards.d.ts +3 -3
- package/dist/blog-grid-nine-posts.d.cts +3 -3
- package/dist/blog-grid-nine-posts.d.ts +3 -3
- package/dist/blog-horizontal-cards.d.cts +3 -3
- package/dist/blog-horizontal-cards.d.ts +3 -3
- package/dist/blog-horizontal-timeline.d.cts +3 -3
- package/dist/blog-horizontal-timeline.d.ts +3 -3
- package/dist/blog-masonry-featured.d.cts +3 -3
- package/dist/blog-masonry-featured.d.ts +3 -3
- package/dist/blog-related-articles.d.cts +3 -3
- package/dist/blog-related-articles.d.ts +3 -3
- package/dist/blog-tech-insights.d.cts +3 -3
- package/dist/blog-tech-insights.d.ts +3 -3
- package/dist/blur-vignette-grid.d.cts +3 -3
- package/dist/blur-vignette-grid.d.ts +3 -3
- package/dist/{button-variants-8mtEHxev.d.cts → button-variants-lRElsmTc.d.cts} +1 -1
- package/dist/{button-variants-8mtEHxev.d.ts → button-variants-lRElsmTc.d.ts} +1 -1
- package/dist/button.d.cts +1 -1
- package/dist/button.d.ts +1 -1
- package/dist/carousel-animated-sections.d.cts +3 -3
- package/dist/carousel-animated-sections.d.ts +3 -3
- package/dist/carousel-auto-progress-slides.d.cts +3 -3
- package/dist/carousel-auto-progress-slides.d.ts +3 -3
- package/dist/carousel-autoplay-progress.d.cts +3 -3
- package/dist/carousel-autoplay-progress.d.ts +3 -3
- package/dist/carousel-badge-cards.d.cts +3 -3
- package/dist/carousel-badge-cards.d.ts +3 -3
- package/dist/carousel-demo-link.d.cts +3 -3
- package/dist/carousel-demo-link.d.ts +3 -3
- package/dist/carousel-feature-badge.d.cts +3 -3
- package/dist/carousel-feature-badge.d.ts +3 -3
- package/dist/carousel-fullscreen-scroll-fx.d.cts +3 -3
- package/dist/carousel-fullscreen-scroll-fx.d.ts +3 -3
- package/dist/carousel-gallery-thumbnails.d.cts +3 -3
- package/dist/carousel-gallery-thumbnails.d.ts +3 -3
- package/dist/carousel-gradient-overlay.d.cts +3 -3
- package/dist/carousel-gradient-overlay.d.ts +3 -3
- package/dist/carousel-gradient-text.d.cts +3 -3
- package/dist/carousel-gradient-text.d.ts +3 -3
- package/dist/carousel-horizontal-cards.d.cts +3 -3
- package/dist/carousel-horizontal-cards.d.ts +3 -3
- package/dist/carousel-icon-sidebar.d.cts +3 -3
- package/dist/carousel-icon-sidebar.d.ts +3 -3
- package/dist/carousel-icon-tabs.d.cts +3 -3
- package/dist/carousel-icon-tabs.d.ts +3 -3
- package/dist/carousel-image-hero.d.cts +3 -3
- package/dist/carousel-image-hero.d.ts +3 -3
- package/dist/carousel-multi-step-showcase.d.cts +3 -3
- package/dist/carousel-multi-step-showcase.d.ts +3 -3
- package/dist/carousel-portfolio-hero.d.cts +3 -3
- package/dist/carousel-portfolio-hero.d.ts +3 -3
- package/dist/carousel-product-feature-showcase.d.cts +3 -3
- package/dist/carousel-product-feature-showcase.d.ts +3 -3
- package/dist/carousel-progress-slider.d.cts +3 -3
- package/dist/carousel-progress-slider.d.ts +3 -3
- package/dist/carousel-scale-focus.d.cts +3 -3
- package/dist/carousel-scale-focus.d.ts +3 -3
- package/dist/carousel-scrolling-feature-showcase.d.cts +3 -3
- package/dist/carousel-scrolling-feature-showcase.d.ts +3 -3
- package/dist/carousel-sidebar-resources.d.cts +3 -3
- package/dist/carousel-sidebar-resources.d.ts +3 -3
- package/dist/carousel-tabs-content.d.cts +3 -3
- package/dist/carousel-tabs-content.d.ts +3 -3
- package/dist/case-studies-featured-border.d.cts +3 -3
- package/dist/case-studies-featured-border.d.ts +3 -3
- package/dist/case-studies-image-grid.d.cts +3 -3
- package/dist/case-studies-image-grid.d.ts +3 -3
- package/dist/case-studies-stats-card.d.cts +3 -3
- package/dist/case-studies-stats-card.d.ts +3 -3
- package/dist/case-studies-testimonial-stats.d.cts +3 -3
- package/dist/case-studies-testimonial-stats.d.ts +3 -3
- package/dist/case-study-prose-sidebar.d.cts +3 -3
- package/dist/case-study-prose-sidebar.d.ts +3 -3
- package/dist/case-study-stats-metrics.d.cts +3 -3
- package/dist/case-study-stats-metrics.d.ts +3 -3
- package/dist/case-study-toc-social-sidebar.d.cts +3 -3
- package/dist/case-study-toc-social-sidebar.d.ts +3 -3
- package/dist/{community-initiatives-B8KCpwXH.d.cts → community-initiatives-C3xYbyms.d.cts} +1 -1
- package/dist/{community-initiatives-rTRuDt0r.d.ts → community-initiatives-o1TkNw2C.d.ts} +1 -1
- package/dist/community-initiatives.cjs +142 -142
- package/dist/community-initiatives.d.cts +3 -3
- package/dist/community-initiatives.d.ts +3 -3
- package/dist/community-initiatives.js +142 -142
- package/dist/comparison-ai-models.d.cts +3 -3
- package/dist/comparison-ai-models.d.ts +3 -3
- package/dist/comparison-feature-cards.d.cts +3 -3
- package/dist/comparison-feature-cards.d.ts +3 -3
- package/dist/comparison-feature-grid.d.cts +3 -3
- package/dist/comparison-feature-grid.d.ts +3 -3
- package/dist/comparison-grid-badges.d.cts +3 -3
- package/dist/comparison-grid-badges.d.ts +3 -3
- package/dist/comparison-image-cards.d.cts +3 -3
- package/dist/comparison-image-cards.d.ts +3 -3
- package/dist/comparison-legacy-modern.d.cts +3 -3
- package/dist/comparison-legacy-modern.d.ts +3 -3
- package/dist/comparison-metrics-rows.d.cts +3 -3
- package/dist/comparison-metrics-rows.d.ts +3 -3
- package/dist/comparison-table-tabs.d.cts +3 -3
- package/dist/comparison-table-tabs.d.ts +3 -3
- package/dist/comparison-table-tooltips.d.cts +3 -3
- package/dist/comparison-table-tooltips.d.ts +3 -3
- package/dist/comparison-table-two-column.d.cts +3 -3
- package/dist/comparison-table-two-column.d.ts +3 -3
- package/dist/components.cjs +723 -1378
- package/dist/components.d.cts +3 -5
- package/dist/components.d.ts +3 -5
- package/dist/components.js +633 -1287
- package/dist/contact-callback.d.cts +3 -3
- package/dist/contact-callback.d.ts +3 -3
- package/dist/contact-card.d.cts +4 -4
- package/dist/contact-card.d.ts +4 -4
- package/dist/contact-careers.d.cts +3 -3
- package/dist/contact-careers.d.ts +3 -3
- package/dist/contact-catering.d.cts +3 -3
- package/dist/contact-catering.d.ts +3 -3
- package/dist/contact-consultation.d.cts +3 -3
- package/dist/contact-consultation.d.ts +3 -3
- package/dist/{contact-dark-CnLbZs_O.d.cts → contact-dark-BT8IUXg1.d.cts} +1 -1
- package/dist/{contact-dark-DEd0P5JW.d.ts → contact-dark-DmOtBZ7t.d.ts} +1 -1
- package/dist/contact-dark.d.cts +4 -4
- package/dist/contact-dark.d.ts +4 -4
- package/dist/contact-demo.d.cts +3 -3
- package/dist/contact-demo.d.ts +3 -3
- package/dist/contact-emergency.d.cts +3 -3
- package/dist/contact-emergency.d.ts +3 -3
- package/dist/contact-event.d.cts +3 -3
- package/dist/contact-event.d.ts +3 -3
- package/dist/contact-faq.d.cts +3 -3
- package/dist/contact-faq.d.ts +3 -3
- package/dist/contact-feedback.d.cts +3 -3
- package/dist/contact-feedback.d.ts +3 -3
- package/dist/contact-fitness.d.cts +3 -3
- package/dist/contact-fitness.d.ts +3 -3
- package/dist/contact-floating-banner.d.cts +3 -3
- package/dist/contact-floating-banner.d.ts +3 -3
- package/dist/contact-guest.d.cts +3 -3
- package/dist/contact-guest.d.ts +3 -3
- package/dist/contact-help-center.d.cts +3 -3
- package/dist/contact-help-center.d.ts +3 -3
- package/dist/contact-image.d.cts +3 -3
- package/dist/contact-image.d.ts +3 -3
- package/dist/contact-insurance.d.cts +3 -3
- package/dist/contact-insurance.d.ts +3 -3
- package/dist/contact-interview.d.cts +3 -3
- package/dist/contact-interview.d.ts +3 -3
- package/dist/contact-locations.d.cts +3 -3
- package/dist/contact-locations.d.ts +3 -3
- package/dist/contact-maintenance.d.cts +3 -3
- package/dist/contact-maintenance.d.ts +3 -3
- package/dist/contact-map.cjs +14 -1083
- package/dist/contact-map.d.cts +16 -6
- package/dist/contact-map.d.ts +16 -6
- package/dist/contact-map.js +14 -1083
- package/dist/contact-minimal.d.cts +3 -3
- package/dist/contact-minimal.d.ts +3 -3
- package/dist/contact-moving.d.cts +3 -3
- package/dist/contact-moving.d.ts +3 -3
- package/dist/contact-multistep.d.cts +3 -3
- package/dist/contact-multistep.d.ts +3 -3
- package/dist/contact-partnership.d.cts +3 -3
- package/dist/contact-partnership.d.ts +3 -3
- package/dist/contact-photography.d.cts +3 -3
- package/dist/contact-photography.d.ts +3 -3
- package/dist/contact-press.d.cts +3 -3
- package/dist/contact-press.d.ts +3 -3
- package/dist/contact-quote.d.cts +3 -3
- package/dist/contact-quote.d.ts +3 -3
- package/dist/contact-referral.d.cts +3 -3
- package/dist/contact-referral.d.ts +3 -3
- package/dist/contact-report.d.cts +3 -3
- package/dist/contact-report.d.ts +3 -3
- package/dist/contact-reservation.d.cts +3 -3
- package/dist/contact-reservation.d.ts +3 -3
- package/dist/contact-retreat.d.cts +3 -3
- package/dist/contact-retreat.d.ts +3 -3
- package/dist/contact-rsvp.d.cts +3 -3
- package/dist/contact-rsvp.d.ts +3 -3
- package/dist/contact-sales.d.cts +3 -3
- package/dist/contact-sales.d.ts +3 -3
- package/dist/contact-schedule.d.cts +3 -3
- package/dist/contact-schedule.d.ts +3 -3
- package/dist/contact-sponsorship.d.cts +3 -3
- package/dist/contact-sponsorship.d.ts +3 -3
- package/dist/contact-support.d.cts +3 -3
- package/dist/contact-support.d.ts +3 -3
- package/dist/contact-tenant.d.cts +3 -3
- package/dist/contact-tenant.d.ts +3 -3
- package/dist/contact-vendor.d.cts +3 -3
- package/dist/contact-vendor.d.ts +3 -3
- package/dist/contact-volunteer.d.cts +3 -3
- package/dist/contact-volunteer.d.ts +3 -3
- package/dist/contact-warranty.d.cts +3 -3
- package/dist/contact-warranty.d.ts +3 -3
- package/dist/contact-wedding.d.cts +3 -3
- package/dist/contact-wedding.d.ts +3 -3
- package/dist/container.d.cts +3 -3
- package/dist/container.d.ts +3 -3
- package/dist/cta-accent-background.d.cts +3 -3
- package/dist/cta-accent-background.d.ts +3 -3
- package/dist/cta-app-download-newsletter.d.cts +3 -3
- package/dist/cta-app-download-newsletter.d.ts +3 -3
- package/dist/cta-background-icon-badge.d.cts +3 -3
- package/dist/cta-background-icon-badge.d.ts +3 -3
- package/dist/cta-case-study-testimonial.d.cts +3 -3
- package/dist/cta-case-study-testimonial.d.ts +3 -3
- package/dist/cta-documentation-links.d.cts +3 -3
- package/dist/cta-documentation-links.d.ts +3 -3
- package/dist/cta-enterprise-dark-features.d.cts +3 -3
- package/dist/cta-enterprise-dark-features.d.ts +3 -3
- package/dist/cta-enterprise-split.d.cts +3 -3
- package/dist/cta-enterprise-split.d.ts +3 -3
- package/dist/cta-feature-cards-grid.d.cts +3 -3
- package/dist/cta-feature-cards-grid.d.ts +3 -3
- package/dist/cta-feature-checklist.cjs +142 -142
- package/dist/cta-feature-checklist.d.cts +3 -3
- package/dist/cta-feature-checklist.d.ts +3 -3
- package/dist/cta-feature-checklist.js +142 -142
- package/dist/cta-feature-list.d.cts +3 -3
- package/dist/cta-feature-list.d.ts +3 -3
- package/dist/cta-fullwidth-background.d.cts +3 -3
- package/dist/cta-fullwidth-background.d.ts +3 -3
- package/dist/cta-gradient-logos-floating.d.cts +3 -3
- package/dist/cta-gradient-logos-floating.d.ts +3 -3
- package/dist/cta-gradient-stats-hero.d.cts +3 -3
- package/dist/cta-gradient-stats-hero.d.ts +3 -3
- package/dist/cta-hero-feature-cards.d.cts +3 -3
- package/dist/cta-hero-feature-cards.d.ts +3 -3
- package/dist/cta-image-overlay-arrow.d.cts +3 -3
- package/dist/cta-image-overlay-arrow.d.ts +3 -3
- package/dist/cta-image-overlay-centered.d.cts +3 -3
- package/dist/cta-image-overlay-centered.d.ts +3 -3
- package/dist/cta-minimal-separator.d.cts +3 -3
- package/dist/cta-minimal-separator.d.ts +3 -3
- package/dist/cta-newsletter-features.d.cts +3 -3
- package/dist/cta-newsletter-features.d.ts +3 -3
- package/dist/cta-pattern-background.d.cts +3 -3
- package/dist/cta-pattern-background.d.ts +3 -3
- package/dist/cta-platform-demo.d.cts +3 -3
- package/dist/cta-platform-demo.d.ts +3 -3
- package/dist/cta-simple-centered.d.cts +3 -3
- package/dist/cta-simple-centered.d.ts +3 -3
- package/dist/cta-split-gradient-image.d.cts +3 -3
- package/dist/cta-split-gradient-image.d.ts +3 -3
- package/dist/cta-split-image-logos.d.cts +3 -3
- package/dist/cta-split-image-logos.d.ts +3 -3
- package/dist/cta-split-image.d.cts +3 -3
- package/dist/cta-split-image.d.ts +3 -3
- package/dist/cta-stacked-cards.d.cts +3 -3
- package/dist/cta-stacked-cards.d.ts +3 -3
- package/dist/cta-video-background-hero.d.cts +3 -3
- package/dist/cta-video-background-hero.d.ts +3 -3
- package/dist/cta-workflow-tabs.d.cts +3 -3
- package/dist/cta-workflow-tabs.d.ts +3 -3
- package/dist/expandable-case-study-cards.d.cts +3 -3
- package/dist/expandable-case-study-cards.d.ts +3 -3
- package/dist/faq-badge-support.d.cts +3 -3
- package/dist/faq-badge-support.d.ts +3 -3
- package/dist/faq-bordered-badge.d.cts +3 -3
- package/dist/faq-bordered-badge.d.ts +3 -3
- package/dist/faq-card-categories.d.cts +3 -3
- package/dist/faq-card-categories.d.ts +3 -3
- package/dist/faq-categorized-sections.d.cts +3 -3
- package/dist/faq-categorized-sections.d.ts +3 -3
- package/dist/faq-centered-accordion.d.cts +3 -3
- package/dist/faq-centered-accordion.d.ts +3 -3
- package/dist/faq-gradient-categories.d.cts +3 -3
- package/dist/faq-gradient-categories.d.ts +3 -3
- package/dist/faq-icon-benefits.d.cts +3 -3
- package/dist/faq-icon-benefits.d.ts +3 -3
- package/dist/faq-muted-cards.d.cts +3 -3
- package/dist/faq-muted-cards.d.ts +3 -3
- package/dist/faq-numbered-grid.cjs +142 -142
- package/dist/faq-numbered-grid.d.cts +3 -3
- package/dist/faq-numbered-grid.d.ts +3 -3
- package/dist/faq-numbered-grid.js +142 -142
- package/dist/faq-numbered-list.d.cts +3 -3
- package/dist/faq-numbered-list.d.ts +3 -3
- package/dist/faq-profile-sidebar.d.cts +3 -3
- package/dist/faq-profile-sidebar.d.ts +3 -3
- package/dist/faq-rounded-cards.d.cts +3 -3
- package/dist/faq-rounded-cards.d.ts +3 -3
- package/dist/faq-sidebar-navigation.d.cts +3 -3
- package/dist/faq-sidebar-navigation.d.ts +3 -3
- package/dist/faq-simple-accordion.d.cts +3 -3
- package/dist/faq-simple-accordion.d.ts +3 -3
- package/dist/faq-split-help.d.cts +3 -3
- package/dist/faq-split-help.d.ts +3 -3
- package/dist/faq-split-hero.d.cts +3 -3
- package/dist/faq-split-hero.d.ts +3 -3
- package/dist/faq-static-list.d.cts +3 -3
- package/dist/faq-static-list.d.ts +3 -3
- package/dist/feature-accordion-image.d.cts +3 -3
- package/dist/feature-accordion-image.d.ts +3 -3
- package/dist/feature-animated-carousel.cjs +142 -142
- package/dist/feature-animated-carousel.d.cts +3 -3
- package/dist/feature-animated-carousel.d.ts +3 -3
- package/dist/feature-animated-carousel.js +142 -142
- package/dist/feature-badge-grid-six.d.cts +3 -3
- package/dist/feature-badge-grid-six.d.ts +3 -3
- package/dist/feature-bento-image-grid.d.cts +3 -3
- package/dist/feature-bento-image-grid.d.ts +3 -3
- package/dist/feature-bento-utilities.cjs +142 -142
- package/dist/feature-bento-utilities.d.cts +3 -3
- package/dist/feature-bento-utilities.d.ts +3 -3
- package/dist/feature-bento-utilities.js +142 -142
- package/dist/feature-capabilities-grid.cjs +142 -142
- package/dist/feature-capabilities-grid.d.cts +3 -3
- package/dist/feature-capabilities-grid.d.ts +3 -3
- package/dist/feature-capabilities-grid.js +142 -142
- package/dist/feature-card-grid-linked.d.cts +3 -3
- package/dist/feature-card-grid-linked.d.ts +3 -3
- package/dist/feature-carousel-progress.d.cts +3 -3
- package/dist/feature-carousel-progress.d.ts +3 -3
- package/dist/feature-category-image-cards.cjs +142 -142
- package/dist/feature-category-image-cards.d.cts +3 -3
- package/dist/feature-category-image-cards.d.ts +3 -3
- package/dist/feature-category-image-cards.js +142 -142
- package/dist/feature-checklist-image.d.cts +3 -3
- package/dist/feature-checklist-image.d.ts +3 -3
- package/dist/feature-checklist-three-column.d.cts +3 -3
- package/dist/feature-checklist-three-column.d.ts +3 -3
- package/dist/feature-icon-grid-accent.d.cts +3 -3
- package/dist/feature-icon-grid-accent.d.ts +3 -3
- package/dist/feature-icon-grid-bordered.cjs +142 -142
- package/dist/feature-icon-grid-bordered.d.cts +3 -3
- package/dist/feature-icon-grid-bordered.d.ts +3 -3
- package/dist/feature-icon-grid-bordered.js +142 -142
- package/dist/feature-icon-grid-muted.cjs +142 -142
- package/dist/feature-icon-grid-muted.d.cts +3 -3
- package/dist/feature-icon-grid-muted.d.ts +3 -3
- package/dist/feature-icon-grid-muted.js +142 -142
- package/dist/feature-icon-tabs-content.d.cts +3 -3
- package/dist/feature-icon-tabs-content.d.ts +3 -3
- package/dist/feature-image-cards-three-column.d.cts +3 -3
- package/dist/feature-image-cards-three-column.d.ts +3 -3
- package/dist/feature-image-overlay-badge.d.cts +3 -3
- package/dist/feature-image-overlay-badge.d.ts +3 -3
- package/dist/feature-integration-cards.d.cts +3 -3
- package/dist/feature-integration-cards.d.ts +3 -3
- package/dist/feature-numbered-cards.cjs +142 -142
- package/dist/feature-numbered-cards.d.cts +3 -3
- package/dist/feature-numbered-cards.d.ts +3 -3
- package/dist/feature-numbered-cards.js +142 -142
- package/dist/feature-pattern-grid-links.d.cts +3 -3
- package/dist/feature-pattern-grid-links.d.ts +3 -3
- package/dist/feature-showcase.d.cts +4 -4
- package/dist/feature-showcase.d.ts +4 -4
- package/dist/feature-split-image-reverse.d.cts +3 -3
- package/dist/feature-split-image-reverse.d.ts +3 -3
- package/dist/feature-split-image.d.cts +3 -3
- package/dist/feature-split-image.d.ts +3 -3
- package/dist/feature-stats-highlight.d.cts +3 -3
- package/dist/feature-stats-highlight.d.ts +3 -3
- package/dist/feature-tabbed-content-image.d.cts +3 -3
- package/dist/feature-tabbed-content-image.d.ts +3 -3
- package/dist/feature-three-column-values.cjs +142 -142
- package/dist/feature-three-column-values.d.cts +3 -3
- package/dist/feature-three-column-values.d.ts +3 -3
- package/dist/feature-three-column-values.js +142 -142
- package/dist/feature-utility-cards-grid.d.cts +3 -3
- package/dist/feature-utility-cards-grid.d.ts +3 -3
- package/dist/footer-accordion-social.d.cts +3 -3
- package/dist/footer-accordion-social.d.ts +3 -3
- package/dist/footer-animated-social.d.cts +3 -3
- package/dist/footer-animated-social.d.ts +3 -3
- package/dist/footer-background-card.d.cts +3 -3
- package/dist/footer-background-card.d.ts +3 -3
- package/dist/footer-brand-description.d.cts +3 -3
- package/dist/footer-brand-description.d.ts +3 -3
- package/dist/footer-brand-links-contact.d.cts +3 -3
- package/dist/footer-brand-links-contact.d.ts +3 -3
- package/dist/footer-comprehensive-links.d.cts +3 -3
- package/dist/footer-comprehensive-links.d.ts +3 -3
- package/dist/footer-contact-card.d.cts +3 -3
- package/dist/footer-contact-card.d.ts +3 -3
- package/dist/footer-cta-banner.d.cts +3 -3
- package/dist/footer-cta-banner.d.ts +3 -3
- package/dist/footer-cta-social.d.cts +3 -3
- package/dist/footer-cta-social.d.ts +3 -3
- package/dist/footer-info-cards-accordion.d.cts +3 -3
- package/dist/footer-info-cards-accordion.d.ts +3 -3
- package/dist/footer-links-grid.d.cts +3 -3
- package/dist/footer-links-grid.d.ts +3 -3
- package/dist/footer-nav-social.d.cts +3 -3
- package/dist/footer-nav-social.d.ts +3 -3
- package/dist/footer-newsletter-contact.d.cts +3 -3
- package/dist/footer-newsletter-contact.d.ts +3 -3
- package/dist/footer-newsletter-grid.d.cts +3 -3
- package/dist/footer-newsletter-grid.d.ts +3 -3
- package/dist/footer-newsletter-minimal.d.cts +3 -3
- package/dist/footer-newsletter-minimal.d.ts +3 -3
- package/dist/footer-simple-centered.d.cts +3 -3
- package/dist/footer-simple-centered.d.ts +3 -3
- package/dist/footer-social-apps.d.cts +3 -3
- package/dist/footer-social-apps.d.ts +3 -3
- package/dist/footer-social-newsletter.d.cts +3 -3
- package/dist/footer-social-newsletter.d.ts +3 -3
- package/dist/footer-split-image-accordion.d.cts +3 -3
- package/dist/footer-split-image-accordion.d.ts +3 -3
- package/dist/hero-ad-campaign-expert.cjs +142 -142
- package/dist/hero-ad-campaign-expert.d.cts +3 -3
- package/dist/hero-ad-campaign-expert.d.ts +3 -3
- package/dist/hero-ad-campaign-expert.js +142 -142
- package/dist/hero-adaptable-product-grid.cjs +142 -142
- package/dist/hero-adaptable-product-grid.d.cts +3 -3
- package/dist/hero-adaptable-product-grid.d.ts +3 -3
- package/dist/hero-adaptable-product-grid.js +142 -142
- package/dist/hero-agency-animated-images.cjs +142 -142
- package/dist/hero-agency-animated-images.d.cts +3 -3
- package/dist/hero-agency-animated-images.d.ts +3 -3
- package/dist/hero-agency-animated-images.js +142 -142
- package/dist/hero-ai-powered-carousel.d.cts +3 -3
- package/dist/hero-ai-powered-carousel.d.ts +3 -3
- package/dist/hero-announcement-badge.cjs +142 -142
- package/dist/hero-announcement-badge.d.cts +3 -3
- package/dist/hero-announcement-badge.d.ts +3 -3
- package/dist/hero-announcement-badge.js +142 -142
- package/dist/hero-architecture-fullscreen.d.cts +3 -3
- package/dist/hero-architecture-fullscreen.d.ts +3 -3
- package/dist/hero-badge-image-split.cjs +142 -142
- package/dist/hero-badge-image-split.d.cts +3 -3
- package/dist/hero-badge-image-split.d.ts +3 -3
- package/dist/hero-badge-image-split.js +142 -142
- package/dist/hero-badge-shadow-overlay.d.cts +3 -3
- package/dist/hero-badge-shadow-overlay.d.ts +3 -3
- package/dist/hero-billing-platform-logos.d.cts +3 -3
- package/dist/hero-billing-platform-logos.d.ts +3 -3
- package/dist/hero-business-carousel-dots.cjs +142 -142
- package/dist/hero-business-carousel-dots.d.cts +3 -3
- package/dist/hero-business-carousel-dots.d.ts +3 -3
- package/dist/hero-business-carousel-dots.js +142 -142
- package/dist/hero-business-operations-mosaic.cjs +142 -142
- package/dist/hero-business-operations-mosaic.d.cts +3 -3
- package/dist/hero-business-operations-mosaic.d.ts +3 -3
- package/dist/hero-business-operations-mosaic.js +142 -142
- package/dist/hero-centered-gradient-cta.d.cts +3 -3
- package/dist/hero-centered-gradient-cta.d.ts +3 -3
- package/dist/hero-centered-image-grid.d.cts +3 -3
- package/dist/hero-centered-image-grid.d.ts +3 -3
- package/dist/hero-centered-screenshot.d.cts +3 -3
- package/dist/hero-centered-screenshot.d.ts +3 -3
- package/dist/hero-coming-soon-countdown.d.cts +3 -3
- package/dist/hero-coming-soon-countdown.d.ts +3 -3
- package/dist/hero-community-survey-cta.d.cts +3 -3
- package/dist/hero-community-survey-cta.d.ts +3 -3
- package/dist/hero-conversation-intelligence.cjs +142 -142
- package/dist/hero-conversation-intelligence.d.cts +3 -3
- package/dist/hero-conversation-intelligence.d.ts +3 -3
- package/dist/hero-conversation-intelligence.js +142 -142
- package/dist/hero-conversion-video-play.d.cts +3 -3
- package/dist/hero-conversion-video-play.d.ts +3 -3
- package/dist/hero-creative-studio-stacked.cjs +142 -142
- package/dist/hero-creative-studio-stacked.d.cts +4 -4
- package/dist/hero-creative-studio-stacked.d.ts +4 -4
- package/dist/hero-creative-studio-stacked.js +142 -142
- package/dist/hero-crm-streamlined.cjs +142 -142
- package/dist/hero-crm-streamlined.d.cts +3 -3
- package/dist/hero-crm-streamlined.d.ts +3 -3
- package/dist/hero-crm-streamlined.js +142 -142
- package/dist/hero-customer-support-layered.cjs +142 -142
- package/dist/hero-customer-support-layered.d.cts +3 -3
- package/dist/hero-customer-support-layered.d.ts +3 -3
- package/dist/hero-customer-support-layered.js +142 -142
- package/dist/hero-dashed-border-features.d.cts +3 -3
- package/dist/hero-dashed-border-features.d.ts +3 -3
- package/dist/hero-design-carousel-portfolio.d.cts +3 -3
- package/dist/hero-design-carousel-portfolio.d.ts +3 -3
- package/dist/hero-design-showcase-logos.cjs +142 -142
- package/dist/hero-design-showcase-logos.d.cts +3 -3
- package/dist/hero-design-showcase-logos.d.ts +3 -3
- package/dist/hero-design-showcase-logos.js +142 -142
- package/dist/hero-design-system-3d.cjs +142 -142
- package/dist/hero-design-system-3d.d.cts +3 -3
- package/dist/hero-design-system-3d.d.ts +3 -3
- package/dist/hero-design-system-3d.js +142 -142
- package/dist/hero-developer-tools-code.cjs +142 -142
- package/dist/hero-developer-tools-code.d.cts +3 -3
- package/dist/hero-developer-tools-code.d.ts +3 -3
- package/dist/hero-developer-tools-code.js +142 -142
- package/dist/hero-digital-agency-fullscreen.cjs +142 -142
- package/dist/hero-digital-agency-fullscreen.d.cts +3 -3
- package/dist/hero-digital-agency-fullscreen.d.ts +3 -3
- package/dist/hero-digital-agency-fullscreen.js +142 -142
- package/dist/hero-ecommerce-product-showcase.cjs +174 -174
- package/dist/hero-ecommerce-product-showcase.d.cts +3 -3
- package/dist/hero-ecommerce-product-showcase.d.ts +3 -3
- package/dist/hero-ecommerce-product-showcase.js +174 -174
- package/dist/hero-enterprise-security.d.cts +3 -3
- package/dist/hero-enterprise-security.d.ts +3 -3
- package/dist/hero-event-registration.cjs +142 -142
- package/dist/hero-event-registration.d.cts +3 -3
- package/dist/hero-event-registration.d.ts +3 -3
- package/dist/hero-event-registration.js +142 -142
- package/dist/hero-feature-cards-grid.d.cts +3 -3
- package/dist/hero-feature-cards-grid.d.ts +3 -3
- package/dist/hero-floating-images.d.cts +3 -3
- package/dist/hero-floating-images.d.ts +3 -3
- package/dist/hero-fullscreen-background-image.cjs +142 -142
- package/dist/hero-fullscreen-background-image.d.cts +3 -3
- package/dist/hero-fullscreen-background-image.d.ts +3 -3
- package/dist/hero-fullscreen-background-image.js +142 -142
- package/dist/hero-fullscreen-logo-cta.d.cts +3 -3
- package/dist/hero-fullscreen-logo-cta.d.ts +3 -3
- package/dist/hero-gradient-avatars-rating.cjs +142 -142
- package/dist/hero-gradient-avatars-rating.d.cts +3 -3
- package/dist/hero-gradient-avatars-rating.d.ts +3 -3
- package/dist/hero-gradient-avatars-rating.js +142 -142
- package/dist/hero-gradient-client-focused.cjs +142 -142
- package/dist/hero-gradient-client-focused.d.cts +3 -3
- package/dist/hero-gradient-client-focused.d.ts +3 -3
- package/dist/hero-gradient-client-focused.js +142 -142
- package/dist/hero-grid-pattern-efficiency.d.cts +3 -3
- package/dist/hero-grid-pattern-efficiency.d.ts +3 -3
- package/dist/hero-grid-pattern-solutions.d.cts +3 -3
- package/dist/hero-grid-pattern-solutions.d.ts +3 -3
- package/dist/hero-hiring-animated-text.cjs +142 -142
- package/dist/hero-hiring-animated-text.d.cts +3 -3
- package/dist/hero-hiring-animated-text.d.ts +3 -3
- package/dist/hero-hiring-animated-text.js +142 -142
- package/dist/hero-image-left-content.cjs +142 -142
- package/dist/hero-image-left-content.d.cts +3 -3
- package/dist/hero-image-left-content.d.ts +3 -3
- package/dist/hero-image-left-content.js +142 -142
- package/dist/hero-image-slider.d.cts +3 -3
- package/dist/hero-image-slider.d.ts +3 -3
- package/dist/hero-innovation-image-grid.cjs +142 -142
- package/dist/hero-innovation-image-grid.d.cts +3 -3
- package/dist/hero-innovation-image-grid.d.ts +3 -3
- package/dist/hero-innovation-image-grid.js +142 -142
- package/dist/hero-logo-centered-screenshot.d.cts +3 -3
- package/dist/hero-logo-centered-screenshot.d.ts +3 -3
- package/dist/hero-marketplace-scattered-images.d.cts +3 -3
- package/dist/hero-marketplace-scattered-images.d.ts +3 -3
- package/dist/hero-mental-health-team.cjs +142 -142
- package/dist/hero-mental-health-team.d.cts +3 -3
- package/dist/hero-mental-health-team.d.ts +3 -3
- package/dist/hero-mental-health-team.js +142 -142
- package/dist/hero-mentorship-video-split.d.cts +3 -3
- package/dist/hero-mentorship-video-split.d.ts +3 -3
- package/dist/hero-minimal-centered-dark.cjs +174 -174
- package/dist/hero-minimal-centered-dark.d.cts +3 -3
- package/dist/hero-minimal-centered-dark.d.ts +3 -3
- package/dist/hero-minimal-centered-dark.js +174 -174
- package/dist/hero-mobile-app-download.d.cts +3 -3
- package/dist/hero-mobile-app-download.d.ts +3 -3
- package/dist/hero-newsletter-minimal.d.cts +3 -3
- package/dist/hero-newsletter-minimal.d.ts +3 -3
- package/dist/hero-overlay-cta-grid.d.cts +3 -3
- package/dist/hero-overlay-cta-grid.d.ts +3 -3
- package/dist/hero-pattern-badge-logos.d.cts +3 -3
- package/dist/hero-pattern-badge-logos.d.ts +3 -3
- package/dist/hero-pattern-logo-tech-stack.d.cts +3 -3
- package/dist/hero-pattern-logo-tech-stack.d.ts +3 -3
- package/dist/hero-platform-features-grid.d.cts +3 -3
- package/dist/hero-platform-features-grid.d.ts +3 -3
- package/dist/hero-portfolio-creative.d.cts +3 -3
- package/dist/hero-portfolio-creative.d.ts +3 -3
- package/dist/hero-premium-split-avatars.d.cts +3 -3
- package/dist/hero-premium-split-avatars.d.ts +3 -3
- package/dist/hero-presentation-platform-video.cjs +142 -142
- package/dist/hero-presentation-platform-video.d.cts +3 -3
- package/dist/hero-presentation-platform-video.d.ts +3 -3
- package/dist/hero-presentation-platform-video.js +142 -142
- package/dist/hero-pricing-comparison.d.cts +3 -3
- package/dist/hero-pricing-comparison.d.ts +3 -3
- package/dist/hero-product-showcase-floating.cjs +174 -174
- package/dist/hero-product-showcase-floating.d.cts +3 -3
- package/dist/hero-product-showcase-floating.d.ts +3 -3
- package/dist/hero-product-showcase-floating.js +174 -174
- package/dist/hero-productivity-launcher-video.d.cts +3 -3
- package/dist/hero-productivity-launcher-video.d.ts +3 -3
- package/dist/hero-saas-dashboard-preview.d.cts +3 -3
- package/dist/hero-saas-dashboard-preview.d.ts +3 -3
- package/dist/hero-shared-inbox-layered.cjs +142 -142
- package/dist/hero-shared-inbox-layered.d.cts +3 -3
- package/dist/hero-shared-inbox-layered.d.ts +3 -3
- package/dist/hero-shared-inbox-layered.js +142 -142
- package/dist/hero-simple-centered-image.d.cts +3 -3
- package/dist/hero-simple-centered-image.d.ts +3 -3
- package/dist/hero-software-growth-video-dialog.cjs +142 -142
- package/dist/hero-software-growth-video-dialog.d.cts +3 -3
- package/dist/hero-software-growth-video-dialog.d.ts +3 -3
- package/dist/hero-software-growth-video-dialog.js +142 -142
- package/dist/hero-spiral-pattern-cards.cjs +174 -174
- package/dist/hero-spiral-pattern-cards.d.cts +3 -3
- package/dist/hero-spiral-pattern-cards.d.ts +3 -3
- package/dist/hero-spiral-pattern-cards.js +174 -174
- package/dist/hero-split-geometric-shapes.cjs +142 -142
- package/dist/hero-split-geometric-shapes.d.cts +3 -3
- package/dist/hero-split-geometric-shapes.d.ts +3 -3
- package/dist/hero-split-geometric-shapes.js +142 -142
- package/dist/hero-split-icon-cards.d.cts +3 -3
- package/dist/hero-split-icon-cards.d.ts +3 -3
- package/dist/hero-split-image-newsletter.d.cts +3 -3
- package/dist/hero-split-image-newsletter.d.ts +3 -3
- package/dist/hero-split-spiral-shapes.d.cts +3 -3
- package/dist/hero-split-spiral-shapes.d.ts +3 -3
- package/dist/hero-startup-launch-cta.cjs +174 -174
- package/dist/hero-startup-launch-cta.d.cts +3 -3
- package/dist/hero-startup-launch-cta.d.ts +3 -3
- package/dist/hero-startup-launch-cta.js +174 -174
- package/dist/hero-stats-social-proof.cjs +174 -174
- package/dist/hero-stats-social-proof.d.cts +3 -3
- package/dist/hero-stats-social-proof.d.ts +3 -3
- package/dist/hero-stats-social-proof.js +174 -174
- package/dist/hero-task-timer-animated.cjs +142 -142
- package/dist/hero-task-timer-animated.d.cts +3 -3
- package/dist/hero-task-timer-animated.d.ts +3 -3
- package/dist/hero-task-timer-animated.js +142 -142
- package/dist/hero-tech-carousel.d.cts +3 -3
- package/dist/hero-tech-carousel.d.ts +3 -3
- package/dist/hero-testimonial-image-grid.cjs +142 -142
- package/dist/hero-testimonial-image-grid.d.cts +3 -3
- package/dist/hero-testimonial-image-grid.d.ts +3 -3
- package/dist/hero-testimonial-image-grid.js +142 -142
- package/dist/hero-therapy-testimonial-grid.cjs +142 -142
- package/dist/hero-therapy-testimonial-grid.d.cts +3 -3
- package/dist/hero-therapy-testimonial-grid.d.ts +3 -3
- package/dist/hero-therapy-testimonial-grid.js +142 -142
- package/dist/hero-ui-library-showcase.cjs +142 -142
- package/dist/hero-ui-library-showcase.d.cts +3 -3
- package/dist/hero-ui-library-showcase.d.ts +3 -3
- package/dist/hero-ui-library-showcase.js +142 -142
- package/dist/hero-video-background-dark.cjs +174 -174
- package/dist/hero-video-background-dark.d.cts +3 -3
- package/dist/hero-video-background-dark.d.ts +3 -3
- package/dist/hero-video-background-dark.js +174 -174
- package/dist/{hero-video-dialog-gradient-BBE21gqm.d.ts → hero-video-dialog-gradient-BASu_oou.d.ts} +2 -2
- package/dist/{hero-video-dialog-gradient-Dx_H_njN.d.cts → hero-video-dialog-gradient-BG-Nc7fz.d.cts} +2 -2
- package/dist/hero-video-dialog-gradient.cjs +142 -142
- package/dist/hero-video-dialog-gradient.d.cts +4 -4
- package/dist/hero-video-dialog-gradient.d.ts +4 -4
- package/dist/hero-video-dialog-gradient.js +142 -142
- package/dist/hero-video-overlay-stars.cjs +142 -142
- package/dist/hero-video-overlay-stars.d.cts +3 -3
- package/dist/hero-video-overlay-stars.d.ts +3 -3
- package/dist/hero-video-overlay-stars.js +142 -142
- package/dist/hero-welcome-asymmetric-images.cjs +142 -142
- package/dist/hero-welcome-asymmetric-images.d.cts +3 -3
- package/dist/hero-welcome-asymmetric-images.d.ts +3 -3
- package/dist/hero-welcome-asymmetric-images.js +142 -142
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/image-slider.d.cts +2 -2
- package/dist/image-slider.d.ts +2 -2
- package/dist/index.cjs +725 -1380
- package/dist/index.d.cts +3 -5
- package/dist/index.d.ts +3 -5
- package/dist/index.js +634 -1288
- package/dist/industries-badge-list-bordered.d.cts +3 -3
- package/dist/industries-badge-list-bordered.d.ts +3 -3
- package/dist/industries-expandable-showcase.d.cts +3 -3
- package/dist/industries-expandable-showcase.d.ts +3 -3
- package/dist/industries-hover-reveal-grid.d.cts +3 -3
- package/dist/industries-hover-reveal-grid.d.ts +3 -3
- package/dist/industries-timeline-table.d.cts +3 -3
- package/dist/industries-timeline-table.d.ts +3 -3
- package/dist/interior-carousel.d.cts +3 -3
- package/dist/interior-carousel.d.ts +3 -3
- package/dist/link-page-bento-layout.d.cts +3 -3
- package/dist/link-page-bento-layout.d.ts +3 -3
- package/dist/link-page-grid-cards.d.cts +3 -3
- package/dist/link-page-grid-cards.d.ts +3 -3
- package/dist/link-page-minimal-profile.d.cts +3 -3
- package/dist/link-page-minimal-profile.d.ts +3 -3
- package/dist/link-page-newsletter-social.d.cts +3 -3
- package/dist/link-page-newsletter-social.d.ts +3 -3
- package/dist/link-tree-block.d.cts +3 -3
- package/dist/link-tree-block.d.ts +3 -3
- package/dist/list-achievements-showcase.d.cts +3 -3
- package/dist/list-achievements-showcase.d.ts +3 -3
- package/dist/list-career-timeline.d.cts +3 -3
- package/dist/list-career-timeline.d.ts +3 -3
- package/dist/list-feature-comparison.d.cts +3 -3
- package/dist/list-feature-comparison.d.ts +3 -3
- package/dist/list-metrics-dashboard.d.cts +3 -3
- package/dist/list-metrics-dashboard.d.ts +3 -3
- package/dist/list-searchable-grid.d.cts +3 -3
- package/dist/list-searchable-grid.d.ts +3 -3
- package/dist/list-service-category-table.d.cts +3 -3
- package/dist/list-service-category-table.d.ts +3 -3
- package/dist/logos-carousel-heading.d.cts +3 -3
- package/dist/logos-carousel-heading.d.ts +3 -3
- package/dist/logos-centered-simple.d.cts +3 -3
- package/dist/logos-centered-simple.d.ts +3 -3
- package/dist/logos-certifications-grid.d.cts +3 -3
- package/dist/logos-certifications-grid.d.ts +3 -3
- package/dist/logos-double-carousel-pattern.d.cts +3 -3
- package/dist/logos-double-carousel-pattern.d.ts +3 -3
- package/dist/logos-inline-tagline.d.cts +3 -3
- package/dist/logos-inline-tagline.d.ts +3 -3
- package/dist/logos-marquee-muted.d.cts +3 -3
- package/dist/logos-marquee-muted.d.ts +3 -3
- package/dist/logos-minimal-carousel.d.cts +3 -3
- package/dist/logos-minimal-carousel.d.ts +3 -3
- package/dist/logos-numbered-carousel.d.cts +3 -3
- package/dist/logos-numbered-carousel.d.ts +3 -3
- package/dist/logos-partner-grid-sidebar.d.cts +3 -3
- package/dist/logos-partner-grid-sidebar.d.ts +3 -3
- package/dist/logos-partner-network.d.cts +3 -3
- package/dist/logos-partner-network.d.ts +3 -3
- package/dist/logos-two-row-grid.d.cts +3 -3
- package/dist/logos-two-row-grid.d.ts +3 -3
- package/dist/masonry-motion-grid.d.cts +3 -3
- package/dist/masonry-motion-grid.d.ts +3 -3
- package/dist/media-hover-ctas.d.cts +3 -3
- package/dist/media-hover-ctas.d.ts +3 -3
- package/dist/navbar-animated-preview.d.cts +3 -3
- package/dist/navbar-animated-preview.d.ts +3 -3
- package/dist/navbar-centered-menu.d.cts +3 -3
- package/dist/navbar-centered-menu.d.ts +3 -3
- package/dist/navbar-dark-icons.d.cts +3 -3
- package/dist/navbar-dark-icons.d.ts +3 -3
- package/dist/navbar-dropdown-menu.d.cts +3 -3
- package/dist/navbar-dropdown-menu.d.ts +3 -3
- package/dist/navbar-education-platform.d.cts +3 -3
- package/dist/navbar-education-platform.d.ts +3 -3
- package/dist/navbar-enterprise-mega.d.cts +3 -3
- package/dist/navbar-enterprise-mega.d.ts +3 -3
- package/dist/navbar-feature-grid.d.cts +3 -3
- package/dist/navbar-feature-grid.d.ts +3 -3
- package/dist/navbar-floating-pill.d.cts +3 -3
- package/dist/navbar-floating-pill.d.ts +3 -3
- package/dist/navbar-fullscreen-menu.d.cts +3 -3
- package/dist/navbar-fullscreen-menu.d.ts +3 -3
- package/dist/navbar-icon-links.d.cts +3 -3
- package/dist/navbar-icon-links.d.ts +3 -3
- package/dist/navbar-image-preview.d.cts +3 -3
- package/dist/navbar-image-preview.d.ts +3 -3
- package/dist/navbar-mega-menu.d.cts +3 -3
- package/dist/navbar-mega-menu.d.ts +3 -3
- package/dist/navbar-multi-column-groups.d.cts +3 -3
- package/dist/navbar-multi-column-groups.d.ts +3 -3
- package/dist/navbar-platform-resources.d.cts +3 -3
- package/dist/navbar-platform-resources.d.ts +3 -3
- package/dist/navbar-search-focused.d.cts +3 -3
- package/dist/navbar-search-focused.d.ts +3 -3
- package/dist/navbar-sidebar-mobile.d.cts +3 -3
- package/dist/navbar-sidebar-mobile.d.ts +3 -3
- package/dist/navbar-simple-links.d.cts +3 -3
- package/dist/navbar-simple-links.d.ts +3 -3
- package/dist/navbar-split-cta.d.cts +3 -3
- package/dist/navbar-split-cta.d.ts +3 -3
- package/dist/navbar-sticky-compact.d.cts +3 -3
- package/dist/navbar-sticky-compact.d.ts +3 -3
- package/dist/navbar-tabbed-sections.d.cts +3 -3
- package/dist/navbar-tabbed-sections.d.ts +3 -3
- package/dist/navbar-transparent-overlay.d.cts +3 -3
- package/dist/navbar-transparent-overlay.d.ts +3 -3
- package/dist/offer-modal-membership-image.d.cts +3 -3
- package/dist/offer-modal-membership-image.d.ts +3 -3
- package/dist/offer-modal-newsletter-discount.d.cts +3 -3
- package/dist/offer-modal-newsletter-discount.d.ts +3 -3
- package/dist/offer-modal-sheet-newsletter.d.cts +3 -3
- package/dist/offer-modal-sheet-newsletter.d.ts +3 -3
- package/dist/page-hero-banner.d.cts +3 -3
- package/dist/page-hero-banner.d.ts +3 -3
- package/dist/pressable.d.cts +2 -2
- package/dist/pressable.d.ts +2 -2
- package/dist/pricing-addons-cards.d.cts +3 -3
- package/dist/pricing-addons-cards.d.ts +3 -3
- package/dist/pricing-addons-featured.d.cts +3 -3
- package/dist/pricing-addons-featured.d.ts +3 -3
- package/dist/pricing-collapsible-plans.d.cts +3 -3
- package/dist/pricing-collapsible-plans.d.ts +3 -3
- package/dist/pricing-columns-toggle.d.cts +3 -3
- package/dist/pricing-columns-toggle.d.ts +3 -3
- package/dist/pricing-comparison-headers.d.cts +3 -3
- package/dist/pricing-comparison-headers.d.ts +3 -3
- package/dist/pricing-comparison-table.d.cts +3 -3
- package/dist/pricing-comparison-table.d.ts +3 -3
- package/dist/pricing-discount-card.d.cts +3 -3
- package/dist/pricing-discount-card.d.ts +3 -3
- package/dist/pricing-enterprise-contact.d.cts +3 -3
- package/dist/pricing-enterprise-contact.d.ts +3 -3
- package/dist/pricing-feature-matrix.d.cts +3 -3
- package/dist/pricing-feature-matrix.d.ts +3 -3
- package/dist/pricing-four-tier-toggle.d.cts +3 -3
- package/dist/pricing-four-tier-toggle.d.ts +3 -3
- package/dist/pricing-full-comparison.d.cts +3 -3
- package/dist/pricing-full-comparison.d.ts +3 -3
- package/dist/pricing-gradient-cards.d.cts +3 -3
- package/dist/pricing-gradient-cards.d.ts +3 -3
- package/dist/pricing-icon-headers.d.cts +3 -3
- package/dist/pricing-icon-headers.d.ts +3 -3
- package/dist/pricing-minimal-cards.d.cts +3 -3
- package/dist/pricing-minimal-cards.d.ts +3 -3
- package/dist/pricing-packages-radio.d.cts +3 -3
- package/dist/pricing-packages-radio.d.ts +3 -3
- package/dist/pricing-popular-highlight.d.cts +3 -3
- package/dist/pricing-popular-highlight.d.ts +3 -3
- package/dist/pricing-radio-toggle.d.cts +3 -3
- package/dist/pricing-radio-toggle.d.ts +3 -3
- package/dist/pricing-responsive-table.d.cts +3 -3
- package/dist/pricing-responsive-table.d.ts +3 -3
- package/dist/pricing-services-cards.d.cts +3 -3
- package/dist/pricing-services-cards.d.ts +3 -3
- package/dist/pricing-simple-card.d.cts +3 -3
- package/dist/pricing-simple-card.d.ts +3 -3
- package/dist/pricing-single-card.d.cts +3 -3
- package/dist/pricing-single-card.d.ts +3 -3
- package/dist/pricing-split-layout.d.cts +3 -3
- package/dist/pricing-split-layout.d.ts +3 -3
- package/dist/pricing-spotlight-card.d.cts +3 -3
- package/dist/pricing-spotlight-card.d.ts +3 -3
- package/dist/pricing-switch-cards.d.cts +3 -3
- package/dist/pricing-switch-cards.d.ts +3 -3
- package/dist/pricing-tabs-toggle.d.cts +3 -3
- package/dist/pricing-tabs-toggle.d.ts +3 -3
- package/dist/pricing-tier-grid.d.cts +3 -3
- package/dist/pricing-tier-grid.d.ts +3 -3
- package/dist/pricing-toggle-cards.d.cts +3 -3
- package/dist/pricing-toggle-cards.d.ts +3 -3
- package/dist/pricing-toggle-period.d.cts +3 -3
- package/dist/pricing-toggle-period.d.ts +3 -3
- package/dist/pricing-two-column-basic.d.cts +3 -3
- package/dist/pricing-two-column-basic.d.ts +3 -3
- package/dist/process-expandable-timeline.d.cts +3 -3
- package/dist/process-expandable-timeline.d.ts +3 -3
- package/dist/process-hover-cards.d.cts +3 -3
- package/dist/process-hover-cards.d.ts +3 -3
- package/dist/process-icon-timeline.d.cts +3 -3
- package/dist/process-icon-timeline.d.ts +3 -3
- package/dist/process-mission-principles.d.cts +3 -3
- package/dist/process-mission-principles.d.ts +3 -3
- package/dist/process-numbered-services.d.cts +3 -3
- package/dist/process-numbered-services.d.ts +3 -3
- package/dist/process-roadmap-timeline.d.cts +3 -3
- package/dist/process-roadmap-timeline.d.ts +3 -3
- package/dist/process-scroll-image.d.cts +3 -3
- package/dist/process-scroll-image.d.ts +3 -3
- package/dist/process-steps-grid.d.cts +3 -3
- package/dist/process-steps-grid.d.ts +3 -3
- package/dist/process-sticky-steps.d.cts +3 -3
- package/dist/process-sticky-steps.d.ts +3 -3
- package/dist/project-alternating-motion.d.cts +3 -3
- package/dist/project-alternating-motion.d.ts +3 -3
- package/dist/project-background-reveal.d.cts +3 -3
- package/dist/project-background-reveal.d.ts +3 -3
- package/dist/project-card-overlay.d.cts +3 -3
- package/dist/project-card-overlay.d.ts +3 -3
- package/dist/project-carousel-cinematic.d.cts +3 -3
- package/dist/project-carousel-cinematic.d.ts +3 -3
- package/dist/project-carousel-detail-cards.d.cts +3 -3
- package/dist/project-carousel-detail-cards.d.ts +3 -3
- package/dist/project-carousel-minimal.d.cts +3 -3
- package/dist/project-carousel-minimal.d.ts +3 -3
- package/dist/project-detail-architecture-carousel.d.cts +3 -3
- package/dist/project-detail-architecture-carousel.d.ts +3 -3
- package/dist/project-detail-card-header.d.cts +3 -3
- package/dist/project-detail-card-header.d.ts +3 -3
- package/dist/project-detail-case-study-prose.d.cts +3 -3
- package/dist/project-detail-case-study-prose.d.ts +3 -3
- package/dist/project-detail-compact-metadata.d.cts +3 -3
- package/dist/project-detail-compact-metadata.d.ts +3 -3
- package/dist/project-detail-exhibition-sidebar.d.cts +3 -3
- package/dist/project-detail-exhibition-sidebar.d.ts +3 -3
- package/dist/project-detail-fashion-editorial.d.cts +3 -3
- package/dist/project-detail-fashion-editorial.d.ts +3 -3
- package/dist/project-detail-fullscreen-hero.d.cts +3 -3
- package/dist/project-detail-fullscreen-hero.d.ts +3 -3
- package/dist/project-detail-grid-gallery.d.cts +3 -3
- package/dist/project-detail-grid-gallery.d.ts +3 -3
- package/dist/project-detail-hero-metadata.d.cts +3 -3
- package/dist/project-detail-hero-metadata.d.ts +3 -3
- package/dist/project-detail-hover-gallery.d.cts +3 -3
- package/dist/project-detail-hover-gallery.d.ts +3 -3
- package/dist/project-detail-large-hero-featured.d.cts +3 -3
- package/dist/project-detail-large-hero-featured.d.ts +3 -3
- package/dist/project-detail-list-related.d.cts +3 -3
- package/dist/project-detail-list-related.d.ts +3 -3
- package/dist/project-detail-mask-reveal.d.cts +3 -3
- package/dist/project-detail-mask-reveal.d.ts +3 -3
- package/dist/project-detail-minimal-centered.d.cts +3 -3
- package/dist/project-detail-minimal-centered.d.ts +3 -3
- package/dist/project-detail-numbered-sections.d.cts +3 -3
- package/dist/project-detail-numbered-sections.d.ts +3 -3
- package/dist/project-detail-parallax-scroll.d.cts +3 -3
- package/dist/project-detail-parallax-scroll.d.ts +3 -3
- package/dist/project-detail-photography-breadcrumb.d.cts +3 -3
- package/dist/project-detail-photography-breadcrumb.d.ts +3 -3
- package/dist/project-detail-sculpture-showcase.d.cts +3 -3
- package/dist/project-detail-sculpture-showcase.d.ts +3 -3
- package/dist/project-detail-sidebar-navigation.d.cts +3 -3
- package/dist/project-detail-sidebar-navigation.d.ts +3 -3
- package/dist/project-detail-sidebar-sticky.d.cts +3 -3
- package/dist/project-detail-sidebar-sticky.d.ts +3 -3
- package/dist/project-detail-split-materials.d.cts +3 -3
- package/dist/project-detail-split-materials.d.ts +3 -3
- package/dist/project-detail-tabbed-case-study.d.cts +3 -3
- package/dist/project-detail-tabbed-case-study.d.ts +3 -3
- package/dist/project-experience-quote.d.cts +3 -3
- package/dist/project-experience-quote.d.ts +3 -3
- package/dist/project-featured-carousel.d.cts +3 -3
- package/dist/project-featured-carousel.d.ts +3 -3
- package/dist/project-filterable-gallery.d.cts +3 -3
- package/dist/project-filterable-gallery.d.ts +3 -3
- package/dist/project-filterable-three-column.d.cts +3 -3
- package/dist/project-filterable-three-column.d.ts +3 -3
- package/dist/project-grid-gallery.d.cts +3 -3
- package/dist/project-grid-gallery.d.ts +3 -3
- package/dist/project-grid-motion.d.cts +3 -3
- package/dist/project-grid-motion.d.ts +3 -3
- package/dist/project-horizontal-cards.d.cts +3 -3
- package/dist/project-horizontal-cards.d.ts +3 -3
- package/dist/project-hover-reveal-grid.d.cts +3 -3
- package/dist/project-hover-reveal-grid.d.ts +3 -3
- package/dist/project-interactive-hover-reveal.d.cts +3 -3
- package/dist/project-interactive-hover-reveal.d.ts +3 -3
- package/dist/project-masonry-columns.d.cts +3 -3
- package/dist/project-masonry-columns.d.ts +3 -3
- package/dist/project-nature-mosaic.d.cts +3 -3
- package/dist/project-nature-mosaic.d.ts +3 -3
- package/dist/project-scroll-reveal.d.cts +3 -3
- package/dist/project-scroll-reveal.d.ts +3 -3
- package/dist/project-showcase-alternating.d.cts +3 -3
- package/dist/project-showcase-alternating.d.ts +3 -3
- package/dist/project-sticky-scroll.d.cts +3 -3
- package/dist/project-sticky-scroll.d.ts +3 -3
- package/dist/project-studio-hover-preview.d.cts +3 -3
- package/dist/project-studio-hover-preview.d.ts +3 -3
- package/dist/project-table-list.d.cts +3 -3
- package/dist/project-table-list.d.ts +3 -3
- package/dist/project-video-carousel.d.cts +3 -3
- package/dist/project-video-carousel.d.ts +3 -3
- package/dist/project-video-hover-bento.d.cts +3 -3
- package/dist/project-video-hover-bento.d.ts +3 -3
- package/dist/project-video-hover-grid.d.cts +3 -3
- package/dist/project-video-hover-grid.d.ts +3 -3
- package/dist/project-video-hover-rounded.d.cts +3 -3
- package/dist/project-video-hover-rounded.d.ts +3 -3
- package/dist/project-video-hover-stack.d.cts +3 -3
- package/dist/project-video-hover-stack.d.ts +3 -3
- package/dist/project-video-hover-two-by-two.d.cts +3 -3
- package/dist/project-video-hover-two-by-two.d.ts +3 -3
- package/dist/project-work-showcase.d.cts +3 -3
- package/dist/project-work-showcase.d.ts +3 -3
- package/dist/project-zigzag-layout.d.cts +3 -3
- package/dist/project-zigzag-layout.d.ts +3 -3
- package/dist/registry.cjs +2125 -2775
- package/dist/registry.js +872 -1522
- package/dist/resource-detail-article-hero.d.cts +3 -3
- package/dist/resource-detail-article-hero.d.ts +3 -3
- package/dist/resource-detail-document-sidebar.d.cts +3 -3
- package/dist/resource-detail-document-sidebar.d.ts +3 -3
- package/dist/resource-detail-whitepaper-sidebar.d.cts +3 -3
- package/dist/resource-detail-whitepaper-sidebar.d.ts +3 -3
- package/dist/resource-list-course-cards.d.cts +3 -3
- package/dist/resource-list-course-cards.d.ts +3 -3
- package/dist/resource-list-featured-articles.d.cts +3 -3
- package/dist/resource-list-featured-articles.d.ts +3 -3
- package/dist/resource-list-featured-grid.d.cts +3 -3
- package/dist/resource-list-featured-grid.d.ts +3 -3
- package/dist/resource-list-hero-filter.d.cts +2 -2
- package/dist/resource-list-hero-filter.d.ts +2 -2
- package/dist/resource-list-news-updates.d.cts +3 -3
- package/dist/resource-list-news-updates.d.ts +3 -3
- package/dist/section.d.cts +3 -3
- package/dist/section.d.ts +3 -3
- package/dist/service-detail-centered-expertise.d.cts +3 -3
- package/dist/service-detail-centered-expertise.d.ts +3 -3
- package/dist/service-detail-compact-cards.d.cts +3 -3
- package/dist/service-detail-compact-cards.d.ts +3 -3
- package/dist/service-detail-image-hero.d.cts +3 -3
- package/dist/service-detail-image-hero.d.ts +3 -3
- package/dist/service-detail-prose-minimal.d.cts +3 -3
- package/dist/service-detail-prose-minimal.d.ts +3 -3
- package/dist/service-detail-sidebar-related.d.cts +3 -3
- package/dist/service-detail-sidebar-related.d.ts +3 -3
- package/dist/service-detail-sidebar-stats.d.cts +3 -3
- package/dist/service-detail-sidebar-stats.d.ts +3 -3
- package/dist/service-detail-stats-hero.d.cts +3 -3
- package/dist/service-detail-stats-hero.d.ts +3 -3
- package/dist/service-hover-carousel.d.cts +3 -3
- package/dist/service-hover-carousel.d.ts +3 -3
- package/dist/services-list-accordion-benefits.d.cts +3 -3
- package/dist/services-list-accordion-benefits.d.ts +3 -3
- package/dist/services-list-accordion.d.cts +3 -3
- package/dist/services-list-accordion.d.ts +3 -3
- package/dist/services-list-cards-hover.d.cts +3 -3
- package/dist/services-list-cards-hover.d.ts +3 -3
- package/dist/services-list-category-accordion.d.cts +3 -3
- package/dist/services-list-category-accordion.d.ts +3 -3
- package/dist/services-list-centered-icons.d.cts +3 -3
- package/dist/services-list-centered-icons.d.ts +3 -3
- package/dist/services-list-culture-tabs.d.cts +3 -3
- package/dist/services-list-culture-tabs.d.ts +3 -3
- package/dist/services-list-expandable-cards.d.cts +3 -3
- package/dist/services-list-expandable-cards.d.ts +3 -3
- package/dist/services-list-feature-spotlight.d.cts +3 -3
- package/dist/services-list-feature-spotlight.d.ts +3 -3
- package/dist/services-list-featured-highlight.d.cts +3 -3
- package/dist/services-list-featured-highlight.d.ts +3 -3
- package/dist/services-list-hero-cards.d.cts +3 -3
- package/dist/services-list-hero-cards.d.ts +3 -3
- package/dist/services-list-icon-grid.d.cts +3 -3
- package/dist/services-list-icon-grid.d.ts +3 -3
- package/dist/services-list-image-cards.d.cts +3 -3
- package/dist/services-list-image-cards.d.ts +3 -3
- package/dist/services-list-image-overlay-grid.d.cts +3 -3
- package/dist/services-list-image-overlay-grid.d.ts +3 -3
- package/dist/services-list-masonry.d.cts +3 -3
- package/dist/services-list-masonry.d.ts +3 -3
- package/dist/services-list-methodology-steps.d.cts +3 -3
- package/dist/services-list-methodology-steps.d.ts +3 -3
- package/dist/services-list-minimal-grid.d.cts +3 -3
- package/dist/services-list-minimal-grid.d.ts +3 -3
- package/dist/services-list-muted-cards.d.cts +3 -3
- package/dist/services-list-muted-cards.d.ts +3 -3
- package/dist/services-list-numbered-steps.d.cts +3 -3
- package/dist/services-list-numbered-steps.d.ts +3 -3
- package/dist/services-list-pricing-grid.d.cts +3 -3
- package/dist/services-list-pricing-grid.d.ts +3 -3
- package/dist/services-list-progress-sidebar.d.cts +3 -3
- package/dist/services-list-progress-sidebar.d.ts +3 -3
- package/dist/services-list-split-checklist.d.cts +3 -3
- package/dist/services-list-split-checklist.d.ts +3 -3
- package/dist/services-list-sticky-image.d.cts +3 -3
- package/dist/services-list-sticky-image.d.ts +3 -3
- package/dist/services-list-table-hover.d.cts +3 -3
- package/dist/services-list-table-hover.d.ts +3 -3
- package/dist/services-list-tabs-features.d.cts +3 -3
- package/dist/services-list-tabs-features.d.ts +3 -3
- package/dist/services-list-timeline.d.cts +3 -3
- package/dist/services-list-timeline.d.ts +3 -3
- package/dist/services-list-two-column-grid.d.cts +3 -3
- package/dist/services-list-two-column-grid.d.ts +3 -3
- package/dist/services-list-vertical-tags.d.cts +3 -3
- package/dist/services-list-vertical-tags.d.ts +3 -3
- package/dist/services-list-video-showcase.d.cts +3 -3
- package/dist/services-list-video-showcase.d.ts +3 -3
- package/dist/social-link-icon.d.cts +2 -2
- package/dist/social-link-icon.d.ts +2 -2
- package/dist/stats-animated-counter.d.cts +3 -3
- package/dist/stats-animated-counter.d.ts +3 -3
- package/dist/stats-bar-comparison.d.cts +3 -3
- package/dist/stats-bar-comparison.d.ts +3 -3
- package/dist/stats-card-group.d.cts +3 -3
- package/dist/stats-card-group.d.ts +3 -3
- package/dist/stats-circular-progress.d.cts +3 -3
- package/dist/stats-circular-progress.d.ts +3 -3
- package/dist/stats-growth-timeline.d.cts +3 -3
- package/dist/stats-growth-timeline.d.ts +3 -3
- package/dist/stats-icon-cards.d.cts +3 -3
- package/dist/stats-icon-cards.d.ts +3 -3
- package/dist/stats-impact-grid.d.cts +3 -3
- package/dist/stats-impact-grid.d.ts +3 -3
- package/dist/stats-milestone-sidebar.d.cts +3 -3
- package/dist/stats-milestone-sidebar.d.ts +3 -3
- package/dist/stats-number-ticker.d.cts +3 -3
- package/dist/stats-number-ticker.d.ts +3 -3
- package/dist/stats-primary-secondary.d.cts +3 -3
- package/dist/stats-primary-secondary.d.ts +3 -3
- package/dist/stats-simple-grid.d.cts +3 -3
- package/dist/stats-simple-grid.d.ts +3 -3
- package/dist/stats-timeline-tabs.d.cts +3 -3
- package/dist/stats-timeline-tabs.d.ts +3 -3
- package/dist/team-alternating-bios.d.cts +3 -3
- package/dist/team-alternating-bios.d.ts +3 -3
- package/dist/team-avatar-social.d.cts +3 -3
- package/dist/team-avatar-social.d.ts +3 -3
- package/dist/team-bio-badges.d.cts +3 -3
- package/dist/team-bio-badges.d.ts +3 -3
- package/dist/team-carousel-experience.d.cts +3 -3
- package/dist/team-carousel-experience.d.ts +3 -3
- package/dist/team-compact-cta.d.cts +3 -3
- package/dist/team-compact-cta.d.ts +3 -3
- package/dist/team-compact-grid.d.cts +3 -3
- package/dist/team-compact-grid.d.ts +3 -3
- package/dist/team-contact-cards.d.cts +3 -3
- package/dist/team-contact-cards.d.ts +3 -3
- package/dist/team-department-sections.d.cts +3 -3
- package/dist/team-department-sections.d.ts +3 -3
- package/dist/team-expertise-cards.d.cts +3 -3
- package/dist/team-expertise-cards.d.ts +3 -3
- package/dist/team-filterable-search.d.cts +3 -3
- package/dist/team-filterable-search.d.ts +3 -3
- package/dist/team-gradient-cards.d.cts +3 -3
- package/dist/team-gradient-cards.d.ts +3 -3
- package/dist/team-grid-animated.d.cts +3 -3
- package/dist/team-grid-animated.d.ts +3 -3
- package/dist/team-hover-highlight.d.cts +3 -3
- package/dist/team-hover-highlight.d.ts +3 -3
- package/dist/team-hover-overlay.d.cts +3 -3
- package/dist/team-hover-overlay.d.ts +3 -3
- package/dist/team-investor-showcase.d.cts +3 -3
- package/dist/team-investor-showcase.d.ts +3 -3
- package/dist/team-large-images.d.cts +3 -3
- package/dist/team-large-images.d.ts +3 -3
- package/dist/team-media-showcase.d.cts +3 -3
- package/dist/team-media-showcase.d.ts +3 -3
- package/dist/team-role-filter.d.cts +3 -3
- package/dist/team-role-filter.d.ts +3 -3
- package/dist/team-simple-grid.d.cts +3 -3
- package/dist/team-simple-grid.d.ts +3 -3
- package/dist/team-skill-badges.d.cts +3 -3
- package/dist/team-skill-badges.d.ts +3 -3
- package/dist/team-social-cards.d.cts +3 -3
- package/dist/team-social-cards.d.ts +3 -3
- package/dist/team-social-grid.d.cts +3 -3
- package/dist/team-social-grid.d.ts +3 -3
- package/dist/team-testimonial-stats.d.cts +3 -3
- package/dist/team-testimonial-stats.d.ts +3 -3
- package/dist/testimonial-carousel-cards.d.cts +3 -3
- package/dist/testimonial-carousel-cards.d.ts +3 -3
- package/dist/testimonials-animated-split.d.cts +3 -3
- package/dist/testimonials-animated-split.d.ts +3 -3
- package/dist/testimonials-bento-grid.d.cts +3 -3
- package/dist/testimonials-bento-grid.d.ts +3 -3
- package/dist/testimonials-carousel-image.d.cts +3 -3
- package/dist/testimonials-carousel-image.d.ts +3 -3
- package/dist/testimonials-centered-avatars.d.cts +3 -3
- package/dist/testimonials-centered-avatars.d.ts +3 -3
- package/dist/testimonials-company-logo.d.cts +3 -3
- package/dist/testimonials-company-logo.d.ts +3 -3
- package/dist/testimonials-grid-add-review.d.cts +3 -3
- package/dist/testimonials-grid-add-review.d.ts +3 -3
- package/dist/testimonials-images-helpful.d.cts +3 -3
- package/dist/testimonials-images-helpful.d.ts +3 -3
- package/dist/testimonials-large-quote.d.cts +3 -3
- package/dist/testimonials-large-quote.d.ts +3 -3
- package/dist/testimonials-list-verified.d.cts +3 -3
- package/dist/testimonials-list-verified.d.ts +3 -3
- package/dist/testimonials-logo-cards.d.cts +3 -3
- package/dist/testimonials-logo-cards.d.ts +3 -3
- package/dist/testimonials-marquee.d.cts +3 -3
- package/dist/testimonials-marquee.d.ts +3 -3
- package/dist/testimonials-masonry-grid.cjs +142 -142
- package/dist/testimonials-masonry-grid.d.cts +3 -3
- package/dist/testimonials-masonry-grid.d.ts +3 -3
- package/dist/testimonials-masonry-grid.js +142 -142
- package/dist/testimonials-mini-dividers.d.cts +3 -3
- package/dist/testimonials-mini-dividers.d.ts +3 -3
- package/dist/testimonials-minimal-numbered.d.cts +3 -3
- package/dist/testimonials-minimal-numbered.d.ts +3 -3
- package/dist/testimonials-parallax-number.d.cts +3 -3
- package/dist/testimonials-parallax-number.d.ts +3 -3
- package/dist/testimonials-quote-carousel.d.cts +3 -3
- package/dist/testimonials-quote-carousel.d.ts +3 -3
- package/dist/testimonials-scrolling-columns.d.cts +3 -3
- package/dist/testimonials-scrolling-columns.d.ts +3 -3
- package/dist/testimonials-simple-grid.d.cts +3 -3
- package/dist/testimonials-simple-grid.d.ts +3 -3
- package/dist/testimonials-slider-minimal.d.cts +3 -3
- package/dist/testimonials-slider-minimal.d.ts +3 -3
- package/dist/testimonials-split-image.d.cts +3 -3
- package/dist/testimonials-split-image.d.ts +3 -3
- package/dist/testimonials-stats-header.cjs +159 -159
- package/dist/testimonials-stats-header.d.cts +3 -3
- package/dist/testimonials-stats-header.d.ts +3 -3
- package/dist/testimonials-stats-header.js +159 -159
- package/dist/testimonials-twitter-cards.d.cts +3 -3
- package/dist/testimonials-twitter-cards.d.ts +3 -3
- package/dist/testimonials-wall-compact.d.cts +3 -3
- package/dist/testimonials-wall-compact.d.ts +3 -3
- package/dist/timeline-ai-workflow-cards.d.cts +3 -3
- package/dist/timeline-ai-workflow-cards.d.ts +3 -3
- package/dist/timeline-alternating-diagonal.d.cts +3 -3
- package/dist/timeline-alternating-diagonal.d.ts +3 -3
- package/dist/timeline-changelog-badges.d.cts +3 -3
- package/dist/timeline-changelog-badges.d.ts +3 -3
- package/dist/timeline-history-prose.d.cts +3 -3
- package/dist/timeline-history-prose.d.ts +3 -3
- package/dist/timeline-horizontal-icons.d.cts +3 -3
- package/dist/timeline-horizontal-icons.d.ts +3 -3
- package/dist/timeline-horizontal-phases.d.cts +3 -3
- package/dist/timeline-horizontal-phases.d.ts +3 -3
- package/dist/timeline-product-launch.d.cts +3 -3
- package/dist/timeline-product-launch.d.ts +3 -3
- package/dist/timeline-productivity-list.d.cts +3 -3
- package/dist/timeline-productivity-list.d.ts +3 -3
- package/dist/timeline-scroll-highlight.d.cts +3 -3
- package/dist/timeline-scroll-highlight.d.ts +3 -3
- package/dist/timeline-scroll-sticky-image.d.cts +3 -3
- package/dist/timeline-scroll-sticky-image.d.ts +3 -3
- package/dist/timeline-stepper-animated.d.cts +3 -3
- package/dist/timeline-stepper-animated.d.ts +3 -3
- package/dist/timeline-tabbed-phases.d.cts +3 -3
- package/dist/timeline-tabbed-phases.d.ts +3 -3
- package/dist/timeline-two-column-featured.d.cts +3 -3
- package/dist/timeline-two-column-featured.d.ts +3 -3
- package/dist/timeline-vertical-icon-dashed.d.cts +3 -3
- package/dist/timeline-vertical-icon-dashed.d.ts +3 -3
- package/dist/types.d.cts +3 -3
- package/dist/types.d.ts +3 -3
- package/dist/use-responsive-layout.d.cts +2 -2
- package/dist/use-responsive-layout.d.ts +2 -2
- package/dist/utils.d.cts +3 -3
- package/dist/utils.d.ts +3 -3
- package/package.json +4 -7
- package/dist/geo-map.cjs +0 -1117
- package/dist/geo-map.d.cts +0 -92
- package/dist/geo-map.d.ts +0 -92
- package/dist/geo-map.js +0 -1095
package/dist/registry.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import
|
|
1
|
+
import * as React32 from 'react';
|
|
2
|
+
import React32__default, { Fragment, createContext, useMemo, forwardRef, useCallback, useState, useEffect, useRef, startTransition, useContext } from 'react';
|
|
3
3
|
import { clsx } from 'clsx';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
5
5
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
6
6
|
import { Img } from '@page-speed/img';
|
|
7
|
-
import { MapLibre } from '@page-speed/maps';
|
|
8
|
-
import { cva } from 'class-variance-authority';
|
|
9
|
-
import { Icon } from '@page-speed/icon';
|
|
10
7
|
import { motion as motion$1, AnimatePresence as AnimatePresence$1 } from 'motion/react';
|
|
8
|
+
import { cva } from 'class-variance-authority';
|
|
11
9
|
import { Slot } from '@radix-ui/react-slot';
|
|
12
10
|
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
11
|
+
import { Icon } from '@page-speed/icon';
|
|
13
12
|
import { usePlatformFromUrl } from '@opensite/hooks/usePlatformFromUrl';
|
|
14
13
|
import * as TabsPrimitive from '@radix-ui/react-tabs';
|
|
15
14
|
import { FormEngine, useFileUpload, useContactForm, DynamicFormField, submitPageSpeedForm, PageSpeedFormSubmissionError, isValidEmail } from '@page-speed/forms/integration';
|
|
@@ -17,6 +16,7 @@ import { AnimatePresence, motion, useMotionValue, useMotionTemplate, useSpring,
|
|
|
17
16
|
import { Lightbox } from '@page-speed/lightbox';
|
|
18
17
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
19
18
|
import * as AccordionPrimitive from '@radix-ui/react-accordion';
|
|
19
|
+
import { GeoMap } from '@page-speed/maps';
|
|
20
20
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
21
21
|
import Autoplay from 'embla-carousel-autoplay';
|
|
22
22
|
import * as ProgressPrimitive from '@radix-ui/react-progress';
|
|
@@ -138,7 +138,7 @@ var maxWidthStyles = {
|
|
|
138
138
|
"4xl": "max-w-[1536px]",
|
|
139
139
|
full: "max-w-full"
|
|
140
140
|
};
|
|
141
|
-
var Container =
|
|
141
|
+
var Container = React32__default.forwardRef(
|
|
142
142
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
143
143
|
const Component = as;
|
|
144
144
|
return /* @__PURE__ */ jsx(
|
|
@@ -444,7 +444,7 @@ var spacingStyles = {
|
|
|
444
444
|
};
|
|
445
445
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
|
|
446
446
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
447
|
-
var Section =
|
|
447
|
+
var Section = React32__default.forwardRef(
|
|
448
448
|
({
|
|
449
449
|
id,
|
|
450
450
|
title,
|
|
@@ -509,12 +509,12 @@ function TextInner({ as, className, children, ...props }, ref) {
|
|
|
509
509
|
const Component = as || "span";
|
|
510
510
|
return /* @__PURE__ */ jsx(Component, { ref, className: cn(className), ...props, children });
|
|
511
511
|
}
|
|
512
|
-
var Text =
|
|
512
|
+
var Text = React32.forwardRef(TextInner);
|
|
513
513
|
Text.displayName = "Text";
|
|
514
514
|
function isContentTextItem(item) {
|
|
515
|
-
return item !== null && typeof item === "object" && !
|
|
515
|
+
return item !== null && typeof item === "object" && !React32.isValidElement(item) && "_type" in item && item._type === "text";
|
|
516
516
|
}
|
|
517
|
-
var ContentGroup =
|
|
517
|
+
var ContentGroup = React32.forwardRef(
|
|
518
518
|
({ items, className, children, ...props }, ref) => {
|
|
519
519
|
const hasContent = items && items.length > 0;
|
|
520
520
|
if (!hasContent) {
|
|
@@ -527,10 +527,10 @@ var ContentGroup = React8.forwardRef(
|
|
|
527
527
|
return /* @__PURE__ */ jsx(Text, { ...textProps }, idx);
|
|
528
528
|
}
|
|
529
529
|
const reactNode = item;
|
|
530
|
-
if (
|
|
531
|
-
return
|
|
530
|
+
if (React32.isValidElement(reactNode)) {
|
|
531
|
+
return React32.cloneElement(reactNode, { key: reactNode.key ?? idx });
|
|
532
532
|
}
|
|
533
|
-
return /* @__PURE__ */ jsx(
|
|
533
|
+
return /* @__PURE__ */ jsx(React32.Fragment, { children: reactNode }, idx);
|
|
534
534
|
}),
|
|
535
535
|
children
|
|
536
536
|
] });
|
|
@@ -644,1085 +644,6 @@ function AlternatingBlocks({
|
|
|
644
644
|
}
|
|
645
645
|
);
|
|
646
646
|
}
|
|
647
|
-
function normalizePhoneNumber(input) {
|
|
648
|
-
const trimmed = input.trim();
|
|
649
|
-
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
650
|
-
return trimmed;
|
|
651
|
-
}
|
|
652
|
-
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
653
|
-
if (match) {
|
|
654
|
-
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
655
|
-
const extension = match[3];
|
|
656
|
-
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
657
|
-
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
658
|
-
return `tel:${withExtension}`;
|
|
659
|
-
}
|
|
660
|
-
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
661
|
-
return `tel:${cleaned}`;
|
|
662
|
-
}
|
|
663
|
-
function normalizeEmail(input) {
|
|
664
|
-
const trimmed = input.trim();
|
|
665
|
-
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
666
|
-
return trimmed;
|
|
667
|
-
}
|
|
668
|
-
return `mailto:${trimmed}`;
|
|
669
|
-
}
|
|
670
|
-
function isEmail(input) {
|
|
671
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
672
|
-
return emailRegex.test(input.trim());
|
|
673
|
-
}
|
|
674
|
-
function isPhoneNumber(input) {
|
|
675
|
-
const trimmed = input.trim();
|
|
676
|
-
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
677
|
-
return true;
|
|
678
|
-
}
|
|
679
|
-
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
680
|
-
return phoneRegex.test(trimmed);
|
|
681
|
-
}
|
|
682
|
-
function isInternalUrl(href) {
|
|
683
|
-
if (typeof window === "undefined") {
|
|
684
|
-
return href.startsWith("/") && !href.startsWith("//");
|
|
685
|
-
}
|
|
686
|
-
const trimmed = href.trim();
|
|
687
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
688
|
-
return true;
|
|
689
|
-
}
|
|
690
|
-
try {
|
|
691
|
-
const url = new URL(trimmed, window.location.href);
|
|
692
|
-
const currentOrigin = window.location.origin;
|
|
693
|
-
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
694
|
-
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
695
|
-
} catch {
|
|
696
|
-
return false;
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
function toRelativePath(href) {
|
|
700
|
-
if (typeof window === "undefined") {
|
|
701
|
-
return href;
|
|
702
|
-
}
|
|
703
|
-
const trimmed = href.trim();
|
|
704
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
705
|
-
return trimmed;
|
|
706
|
-
}
|
|
707
|
-
try {
|
|
708
|
-
const url = new URL(trimmed, window.location.href);
|
|
709
|
-
const currentOrigin = window.location.origin;
|
|
710
|
-
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
711
|
-
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
712
|
-
return url.pathname + url.search + url.hash;
|
|
713
|
-
}
|
|
714
|
-
} catch {
|
|
715
|
-
}
|
|
716
|
-
return trimmed;
|
|
717
|
-
}
|
|
718
|
-
function useNavigation({
|
|
719
|
-
href,
|
|
720
|
-
onClick
|
|
721
|
-
} = {}) {
|
|
722
|
-
const linkType = React8.useMemo(() => {
|
|
723
|
-
if (!href || href.trim() === "") {
|
|
724
|
-
return onClick ? "none" : "none";
|
|
725
|
-
}
|
|
726
|
-
const trimmed = href.trim();
|
|
727
|
-
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
728
|
-
return "mailto";
|
|
729
|
-
}
|
|
730
|
-
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
731
|
-
return "tel";
|
|
732
|
-
}
|
|
733
|
-
if (isInternalUrl(trimmed)) {
|
|
734
|
-
return "internal";
|
|
735
|
-
}
|
|
736
|
-
try {
|
|
737
|
-
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
738
|
-
return "external";
|
|
739
|
-
} catch {
|
|
740
|
-
return "internal";
|
|
741
|
-
}
|
|
742
|
-
}, [href, onClick]);
|
|
743
|
-
const normalizedHref = React8.useMemo(() => {
|
|
744
|
-
if (!href || href.trim() === "") {
|
|
745
|
-
return void 0;
|
|
746
|
-
}
|
|
747
|
-
const trimmed = href.trim();
|
|
748
|
-
switch (linkType) {
|
|
749
|
-
case "tel":
|
|
750
|
-
return normalizePhoneNumber(trimmed);
|
|
751
|
-
case "mailto":
|
|
752
|
-
return normalizeEmail(trimmed);
|
|
753
|
-
case "internal":
|
|
754
|
-
return toRelativePath(trimmed);
|
|
755
|
-
case "external":
|
|
756
|
-
return trimmed;
|
|
757
|
-
default:
|
|
758
|
-
return trimmed;
|
|
759
|
-
}
|
|
760
|
-
}, [href, linkType]);
|
|
761
|
-
const target = React8.useMemo(() => {
|
|
762
|
-
switch (linkType) {
|
|
763
|
-
case "external":
|
|
764
|
-
return "_blank";
|
|
765
|
-
case "internal":
|
|
766
|
-
return "_self";
|
|
767
|
-
case "mailto":
|
|
768
|
-
case "tel":
|
|
769
|
-
return void 0;
|
|
770
|
-
default:
|
|
771
|
-
return void 0;
|
|
772
|
-
}
|
|
773
|
-
}, [linkType]);
|
|
774
|
-
const rel = React8.useMemo(() => {
|
|
775
|
-
if (linkType === "external") {
|
|
776
|
-
return "noopener noreferrer";
|
|
777
|
-
}
|
|
778
|
-
return void 0;
|
|
779
|
-
}, [linkType]);
|
|
780
|
-
const isExternal = linkType === "external";
|
|
781
|
-
const isInternal = linkType === "internal";
|
|
782
|
-
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
783
|
-
const handleClick = React8.useCallback(
|
|
784
|
-
(event) => {
|
|
785
|
-
if (onClick) {
|
|
786
|
-
try {
|
|
787
|
-
onClick(event);
|
|
788
|
-
} catch (error) {
|
|
789
|
-
console.error("Error in user onClick handler:", error);
|
|
790
|
-
}
|
|
791
|
-
}
|
|
792
|
-
if (event.defaultPrevented) {
|
|
793
|
-
return;
|
|
794
|
-
}
|
|
795
|
-
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
796
|
-
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
797
|
-
if (typeof window !== "undefined") {
|
|
798
|
-
const handler = window.__opensiteNavigationHandler;
|
|
799
|
-
if (typeof handler === "function") {
|
|
800
|
-
try {
|
|
801
|
-
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
802
|
-
if (handled !== false) {
|
|
803
|
-
event.preventDefault();
|
|
804
|
-
}
|
|
805
|
-
} catch (error) {
|
|
806
|
-
console.error("Error in navigation handler:", error);
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
},
|
|
812
|
-
[onClick, shouldUseRouter, normalizedHref]
|
|
813
|
-
);
|
|
814
|
-
return {
|
|
815
|
-
linkType,
|
|
816
|
-
normalizedHref,
|
|
817
|
-
target,
|
|
818
|
-
rel,
|
|
819
|
-
isExternal,
|
|
820
|
-
isInternal,
|
|
821
|
-
shouldUseRouter,
|
|
822
|
-
handleClick
|
|
823
|
-
};
|
|
824
|
-
}
|
|
825
|
-
var baseStyles = [
|
|
826
|
-
// Layout
|
|
827
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
828
|
-
// Typography - using CSS variables with sensible defaults
|
|
829
|
-
"font-[var(--button-font-family,inherit)]",
|
|
830
|
-
"font-[var(--button-font-weight,500)]",
|
|
831
|
-
"tracking-[var(--button-letter-spacing,0)]",
|
|
832
|
-
"leading-[var(--button-line-height,1.25)]",
|
|
833
|
-
"[text-transform:var(--button-text-transform,none)]",
|
|
834
|
-
"text-sm",
|
|
835
|
-
// Border radius
|
|
836
|
-
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
837
|
-
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
838
|
-
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
839
|
-
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
840
|
-
"[box-shadow:var(--button-shadow,none)]",
|
|
841
|
-
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
842
|
-
// Disabled state
|
|
843
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
844
|
-
// SVG handling
|
|
845
|
-
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
846
|
-
// Focus styles
|
|
847
|
-
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
848
|
-
// Invalid state
|
|
849
|
-
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
850
|
-
].join(" ");
|
|
851
|
-
var buttonVariants = cva(baseStyles, {
|
|
852
|
-
variants: {
|
|
853
|
-
variant: {
|
|
854
|
-
// Default (Primary) variant - full customization
|
|
855
|
-
default: [
|
|
856
|
-
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
857
|
-
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
858
|
-
"border-[length:var(--button-default-border-width,0px)]",
|
|
859
|
-
"border-[color:var(--button-default-border,transparent)]",
|
|
860
|
-
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
861
|
-
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
862
|
-
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
863
|
-
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
864
|
-
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
865
|
-
].join(" "),
|
|
866
|
-
// Destructive variant - full customization
|
|
867
|
-
destructive: [
|
|
868
|
-
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
869
|
-
"text-[var(--button-destructive-fg,white)]",
|
|
870
|
-
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
871
|
-
"border-[color:var(--button-destructive-border,transparent)]",
|
|
872
|
-
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
873
|
-
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
874
|
-
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
875
|
-
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
876
|
-
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
877
|
-
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
878
|
-
"dark:bg-destructive/60"
|
|
879
|
-
].join(" "),
|
|
880
|
-
// Outline variant - full customization with proper border handling
|
|
881
|
-
outline: [
|
|
882
|
-
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
883
|
-
"text-[var(--button-outline-fg,inherit)]",
|
|
884
|
-
"border-[length:var(--button-outline-border-width,1px)]",
|
|
885
|
-
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
886
|
-
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
887
|
-
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
888
|
-
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
889
|
-
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
890
|
-
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
891
|
-
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
892
|
-
].join(" "),
|
|
893
|
-
// Secondary variant - full customization
|
|
894
|
-
secondary: [
|
|
895
|
-
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
896
|
-
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
897
|
-
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
898
|
-
"border-[color:var(--button-secondary-border,transparent)]",
|
|
899
|
-
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
900
|
-
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
901
|
-
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
902
|
-
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
903
|
-
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
904
|
-
].join(" "),
|
|
905
|
-
// Ghost variant - full customization
|
|
906
|
-
ghost: [
|
|
907
|
-
"bg-[var(--button-ghost-bg,transparent)]",
|
|
908
|
-
"text-[var(--button-ghost-fg,inherit)]",
|
|
909
|
-
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
910
|
-
"border-[color:var(--button-ghost-border,transparent)]",
|
|
911
|
-
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
912
|
-
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
913
|
-
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
914
|
-
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
915
|
-
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
916
|
-
"dark:hover:bg-accent/50"
|
|
917
|
-
].join(" "),
|
|
918
|
-
// Link variant - full customization
|
|
919
|
-
link: [
|
|
920
|
-
"bg-[var(--button-link-bg,transparent)]",
|
|
921
|
-
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
922
|
-
"border-[length:var(--button-link-border-width,0px)]",
|
|
923
|
-
"border-[color:var(--button-link-border,transparent)]",
|
|
924
|
-
"[box-shadow:var(--button-link-shadow,none)]",
|
|
925
|
-
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
926
|
-
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
927
|
-
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
928
|
-
"underline-offset-4 hover:underline"
|
|
929
|
-
].join(" ")
|
|
930
|
-
},
|
|
931
|
-
size: {
|
|
932
|
-
default: [
|
|
933
|
-
"h-[var(--button-height-md,2.25rem)]",
|
|
934
|
-
"px-[var(--button-padding-x-md,1rem)]",
|
|
935
|
-
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
936
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
937
|
-
].join(" "),
|
|
938
|
-
sm: [
|
|
939
|
-
"h-[var(--button-height-sm,2rem)]",
|
|
940
|
-
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
941
|
-
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
942
|
-
"gap-1.5",
|
|
943
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
944
|
-
].join(" "),
|
|
945
|
-
md: [
|
|
946
|
-
"h-[var(--button-height-md,2.25rem)]",
|
|
947
|
-
"px-[var(--button-padding-x-md,1rem)]",
|
|
948
|
-
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
949
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
950
|
-
].join(" "),
|
|
951
|
-
lg: [
|
|
952
|
-
"h-[var(--button-height-lg,2.5rem)]",
|
|
953
|
-
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
954
|
-
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
955
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
956
|
-
].join(" "),
|
|
957
|
-
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
958
|
-
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
959
|
-
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
960
|
-
}
|
|
961
|
-
},
|
|
962
|
-
defaultVariants: {
|
|
963
|
-
variant: "default",
|
|
964
|
-
size: "default"
|
|
965
|
-
}
|
|
966
|
-
});
|
|
967
|
-
var Pressable = React8.forwardRef(
|
|
968
|
-
({
|
|
969
|
-
children,
|
|
970
|
-
className,
|
|
971
|
-
href,
|
|
972
|
-
onClick,
|
|
973
|
-
variant,
|
|
974
|
-
size,
|
|
975
|
-
asButton = false,
|
|
976
|
-
fallbackComponentType = "span",
|
|
977
|
-
componentType,
|
|
978
|
-
"aria-label": ariaLabel,
|
|
979
|
-
"aria-describedby": ariaDescribedby,
|
|
980
|
-
id,
|
|
981
|
-
...props
|
|
982
|
-
}, ref) => {
|
|
983
|
-
const navigation = useNavigation({ href, onClick });
|
|
984
|
-
const {
|
|
985
|
-
normalizedHref,
|
|
986
|
-
target,
|
|
987
|
-
rel,
|
|
988
|
-
linkType,
|
|
989
|
-
isInternal,
|
|
990
|
-
handleClick
|
|
991
|
-
} = navigation;
|
|
992
|
-
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
993
|
-
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
994
|
-
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
995
|
-
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
996
|
-
const shouldApplyButtonStyles = asButton || variant || size;
|
|
997
|
-
const combinedClassName = cn(
|
|
998
|
-
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
999
|
-
className
|
|
1000
|
-
);
|
|
1001
|
-
const dataProps = Object.fromEntries(
|
|
1002
|
-
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
1003
|
-
);
|
|
1004
|
-
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
1005
|
-
"data-slot": "button",
|
|
1006
|
-
"data-variant": variant ?? "default",
|
|
1007
|
-
"data-size": size ?? "default"
|
|
1008
|
-
} : {};
|
|
1009
|
-
const commonProps = {
|
|
1010
|
-
className: combinedClassName,
|
|
1011
|
-
onClick: handleClick,
|
|
1012
|
-
"aria-label": ariaLabel,
|
|
1013
|
-
"aria-describedby": ariaDescribedby,
|
|
1014
|
-
id,
|
|
1015
|
-
...dataProps,
|
|
1016
|
-
...buttonDataAttributes
|
|
1017
|
-
};
|
|
1018
|
-
if (finalComponentType === "a" && shouldRenderLink) {
|
|
1019
|
-
return /* @__PURE__ */ jsx(
|
|
1020
|
-
"a",
|
|
1021
|
-
{
|
|
1022
|
-
ref,
|
|
1023
|
-
href: normalizedHref,
|
|
1024
|
-
target,
|
|
1025
|
-
rel,
|
|
1026
|
-
...commonProps,
|
|
1027
|
-
...props,
|
|
1028
|
-
children
|
|
1029
|
-
}
|
|
1030
|
-
);
|
|
1031
|
-
}
|
|
1032
|
-
if (finalComponentType === "button") {
|
|
1033
|
-
return /* @__PURE__ */ jsx(
|
|
1034
|
-
"button",
|
|
1035
|
-
{
|
|
1036
|
-
ref,
|
|
1037
|
-
type: props.type || "button",
|
|
1038
|
-
...commonProps,
|
|
1039
|
-
...props,
|
|
1040
|
-
children
|
|
1041
|
-
}
|
|
1042
|
-
);
|
|
1043
|
-
}
|
|
1044
|
-
if (finalComponentType === "div") {
|
|
1045
|
-
return /* @__PURE__ */ jsx(
|
|
1046
|
-
"div",
|
|
1047
|
-
{
|
|
1048
|
-
ref,
|
|
1049
|
-
...commonProps,
|
|
1050
|
-
children
|
|
1051
|
-
}
|
|
1052
|
-
);
|
|
1053
|
-
}
|
|
1054
|
-
return /* @__PURE__ */ jsx(
|
|
1055
|
-
"span",
|
|
1056
|
-
{
|
|
1057
|
-
ref,
|
|
1058
|
-
...commonProps,
|
|
1059
|
-
children
|
|
1060
|
-
}
|
|
1061
|
-
);
|
|
1062
|
-
}
|
|
1063
|
-
);
|
|
1064
|
-
Pressable.displayName = "Pressable";
|
|
1065
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
1066
|
-
var DynamicIcon = React8.memo(function DynamicIcon2({
|
|
1067
|
-
apiKey,
|
|
1068
|
-
...props
|
|
1069
|
-
}) {
|
|
1070
|
-
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
1071
|
-
});
|
|
1072
|
-
DynamicIcon.displayName = "DynamicIcon";
|
|
1073
|
-
var PANEL_POSITION_CLASS = {
|
|
1074
|
-
"top-left": "left-4 top-4",
|
|
1075
|
-
"top-right": "right-4 top-4",
|
|
1076
|
-
"bottom-left": "bottom-4 left-4",
|
|
1077
|
-
"bottom-right": "bottom-4 right-4"
|
|
1078
|
-
};
|
|
1079
|
-
var DEFAULT_VIEW_STATE = {
|
|
1080
|
-
latitude: 39.5,
|
|
1081
|
-
longitude: -98.35,
|
|
1082
|
-
zoom: 3
|
|
1083
|
-
};
|
|
1084
|
-
var VIDEO_FILE_EXTENSION_REGEX = /\.(mp4|webm|ogg|mov|m4v|m3u8)(\?.*)?$/i;
|
|
1085
|
-
function resolveMediaType(item) {
|
|
1086
|
-
if (item.type) {
|
|
1087
|
-
return item.type;
|
|
1088
|
-
}
|
|
1089
|
-
return VIDEO_FILE_EXTENSION_REGEX.test(item.src) ? "video" : "image";
|
|
1090
|
-
}
|
|
1091
|
-
function normalizeId(value, fallback) {
|
|
1092
|
-
if (value === null || value === void 0 || value === "") {
|
|
1093
|
-
return fallback;
|
|
1094
|
-
}
|
|
1095
|
-
return String(value);
|
|
1096
|
-
}
|
|
1097
|
-
function buildClusterCenter(markers) {
|
|
1098
|
-
if (!markers.length) {
|
|
1099
|
-
return null;
|
|
1100
|
-
}
|
|
1101
|
-
const total = markers.reduce(
|
|
1102
|
-
(accumulator, marker) => ({
|
|
1103
|
-
latitude: accumulator.latitude + marker.latitude,
|
|
1104
|
-
longitude: accumulator.longitude + marker.longitude
|
|
1105
|
-
}),
|
|
1106
|
-
{ latitude: 0, longitude: 0 }
|
|
1107
|
-
);
|
|
1108
|
-
return {
|
|
1109
|
-
latitude: total.latitude / markers.length,
|
|
1110
|
-
longitude: total.longitude / markers.length
|
|
1111
|
-
};
|
|
1112
|
-
}
|
|
1113
|
-
function resolveActionKey(action, index) {
|
|
1114
|
-
if (typeof action.label === "string" && action.label.trim().length > 0) {
|
|
1115
|
-
return `label:${action.label}:${index}`;
|
|
1116
|
-
}
|
|
1117
|
-
if (action.href) {
|
|
1118
|
-
return `href:${action.href}:${index}`;
|
|
1119
|
-
}
|
|
1120
|
-
return `action:${index}`;
|
|
1121
|
-
}
|
|
1122
|
-
function MarkerActions({ actions }) {
|
|
1123
|
-
if (!actions || actions.length === 0) {
|
|
1124
|
-
return null;
|
|
1125
|
-
}
|
|
1126
|
-
return /* @__PURE__ */ jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: actions.map((action, index) => {
|
|
1127
|
-
const {
|
|
1128
|
-
label,
|
|
1129
|
-
icon,
|
|
1130
|
-
iconAfter,
|
|
1131
|
-
children,
|
|
1132
|
-
href,
|
|
1133
|
-
onClick,
|
|
1134
|
-
className: actionClassName,
|
|
1135
|
-
variant,
|
|
1136
|
-
size,
|
|
1137
|
-
asButton,
|
|
1138
|
-
...rest
|
|
1139
|
-
} = action;
|
|
1140
|
-
return /* @__PURE__ */ jsx(
|
|
1141
|
-
Pressable,
|
|
1142
|
-
{
|
|
1143
|
-
href,
|
|
1144
|
-
onClick,
|
|
1145
|
-
variant: variant ?? (index === 0 ? "default" : "outline"),
|
|
1146
|
-
size: size ?? "sm",
|
|
1147
|
-
asButton: asButton ?? true,
|
|
1148
|
-
className: cn("inline-flex items-center gap-2", actionClassName),
|
|
1149
|
-
...rest,
|
|
1150
|
-
children: children ?? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1151
|
-
icon,
|
|
1152
|
-
label,
|
|
1153
|
-
iconAfter
|
|
1154
|
-
] })
|
|
1155
|
-
},
|
|
1156
|
-
resolveActionKey(action, index)
|
|
1157
|
-
);
|
|
1158
|
-
}) });
|
|
1159
|
-
}
|
|
1160
|
-
function MarkerMediaCarousel({
|
|
1161
|
-
mediaItems,
|
|
1162
|
-
optixFlowConfig
|
|
1163
|
-
}) {
|
|
1164
|
-
const [activeIndex, setActiveIndex] = React8.useState(0);
|
|
1165
|
-
const totalItems = mediaItems.length;
|
|
1166
|
-
const mediaResetKey = React8.useMemo(
|
|
1167
|
-
() => mediaItems.map((item, index) => {
|
|
1168
|
-
const itemId = normalizeId(item.id, `media-${index}`);
|
|
1169
|
-
return `${itemId}:${item.src}:${item.type ?? ""}:${item.poster ?? ""}`;
|
|
1170
|
-
}).join("|"),
|
|
1171
|
-
[mediaItems]
|
|
1172
|
-
);
|
|
1173
|
-
const activeItemIndex = Math.min(activeIndex, Math.max(0, totalItems - 1));
|
|
1174
|
-
React8.useEffect(() => {
|
|
1175
|
-
setActiveIndex(0);
|
|
1176
|
-
}, [mediaResetKey]);
|
|
1177
|
-
return /* @__PURE__ */ jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
|
|
1178
|
-
/* @__PURE__ */ jsx("div", { className: "relative aspect-video w-full overflow-hidden", children: mediaItems.map((item, index) => {
|
|
1179
|
-
const isActive = index === activeItemIndex;
|
|
1180
|
-
const mediaType = resolveMediaType(item);
|
|
1181
|
-
return /* @__PURE__ */ jsx(
|
|
1182
|
-
"div",
|
|
1183
|
-
{
|
|
1184
|
-
"aria-hidden": !isActive,
|
|
1185
|
-
className: cn(
|
|
1186
|
-
"absolute inset-0 transition-opacity duration-500 ease-in-out",
|
|
1187
|
-
isActive ? "opacity-100 z-[1]" : "opacity-0 z-0 pointer-events-none"
|
|
1188
|
-
),
|
|
1189
|
-
children: mediaType === "video" ? /* @__PURE__ */ jsx(
|
|
1190
|
-
"video",
|
|
1191
|
-
{
|
|
1192
|
-
className: "h-full w-full object-cover",
|
|
1193
|
-
controls: isActive,
|
|
1194
|
-
preload: "metadata",
|
|
1195
|
-
poster: item.poster,
|
|
1196
|
-
tabIndex: isActive ? 0 : -1,
|
|
1197
|
-
children: /* @__PURE__ */ jsx("source", { src: item.src })
|
|
1198
|
-
}
|
|
1199
|
-
) : /* @__PURE__ */ jsx(
|
|
1200
|
-
Img,
|
|
1201
|
-
{
|
|
1202
|
-
src: item.src,
|
|
1203
|
-
alt: item.alt ?? "Map marker media",
|
|
1204
|
-
className: "h-full w-full object-cover",
|
|
1205
|
-
loading: "eager",
|
|
1206
|
-
optixFlowConfig
|
|
1207
|
-
}
|
|
1208
|
-
)
|
|
1209
|
-
},
|
|
1210
|
-
normalizeId(item.id, `media-slide-${index}`)
|
|
1211
|
-
);
|
|
1212
|
-
}) }),
|
|
1213
|
-
totalItems > 1 ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1214
|
-
/* @__PURE__ */ jsx(
|
|
1215
|
-
"button",
|
|
1216
|
-
{
|
|
1217
|
-
type: "button",
|
|
1218
|
-
"aria-label": "Show previous media",
|
|
1219
|
-
className: "absolute left-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
|
|
1220
|
-
onClick: () => {
|
|
1221
|
-
setActiveIndex(
|
|
1222
|
-
(current) => (current - 1 + totalItems) % totalItems
|
|
1223
|
-
);
|
|
1224
|
-
},
|
|
1225
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-left", size: 18 })
|
|
1226
|
-
}
|
|
1227
|
-
),
|
|
1228
|
-
/* @__PURE__ */ jsx(
|
|
1229
|
-
"button",
|
|
1230
|
-
{
|
|
1231
|
-
type: "button",
|
|
1232
|
-
"aria-label": "Show next media",
|
|
1233
|
-
className: "absolute right-4 top-1/2 inline-flex size-10 -translate-y-1/2 items-center justify-center rounded-2xl bg-card text-card-foreground shadow-lg border-4 border-black hover:border-white hover:bg-black hover:text-white transition-all duration-500 z-[2]",
|
|
1234
|
-
onClick: () => {
|
|
1235
|
-
setActiveIndex((current) => (current + 1) % totalItems);
|
|
1236
|
-
},
|
|
1237
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-right", size: 18 })
|
|
1238
|
-
}
|
|
1239
|
-
),
|
|
1240
|
-
/* @__PURE__ */ jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5 z-[2]", children: mediaItems.map((item, index) => /* @__PURE__ */ jsx(
|
|
1241
|
-
"button",
|
|
1242
|
-
{
|
|
1243
|
-
type: "button",
|
|
1244
|
-
"aria-label": `Show media item ${index + 1}`,
|
|
1245
|
-
className: cn(
|
|
1246
|
-
"h-2 rounded-full transition-all duration-300",
|
|
1247
|
-
index === activeItemIndex ? "w-6 bg-card" : "w-2 bg-card opacity-50 hover:opacity-100"
|
|
1248
|
-
),
|
|
1249
|
-
onClick: () => setActiveIndex(index)
|
|
1250
|
-
},
|
|
1251
|
-
normalizeId(item.id, `media-dot-${index}`)
|
|
1252
|
-
)) })
|
|
1253
|
-
] }) : null
|
|
1254
|
-
] });
|
|
1255
|
-
}
|
|
1256
|
-
function getMarkerTitle(marker, markerIndex) {
|
|
1257
|
-
if (marker.title !== void 0 && marker.title !== null) {
|
|
1258
|
-
return marker.title;
|
|
1259
|
-
}
|
|
1260
|
-
if (marker.label !== void 0 && marker.label !== null) {
|
|
1261
|
-
return marker.label;
|
|
1262
|
-
}
|
|
1263
|
-
return `Location ${markerIndex + 1}`;
|
|
1264
|
-
}
|
|
1265
|
-
function GeoMap({
|
|
1266
|
-
className,
|
|
1267
|
-
mapWrapperClassName,
|
|
1268
|
-
mapClassName,
|
|
1269
|
-
panelClassName,
|
|
1270
|
-
panelPosition = "top-left",
|
|
1271
|
-
stadiaApiKey = "",
|
|
1272
|
-
mapStyle = "osm-bright",
|
|
1273
|
-
styleUrl,
|
|
1274
|
-
mapLibreCssHref,
|
|
1275
|
-
markers = [],
|
|
1276
|
-
clusters = [],
|
|
1277
|
-
viewState,
|
|
1278
|
-
defaultViewState,
|
|
1279
|
-
onViewStateChange,
|
|
1280
|
-
onMapClick,
|
|
1281
|
-
onMarkerDrag,
|
|
1282
|
-
showNavigationControl = true,
|
|
1283
|
-
showGeolocateControl = false,
|
|
1284
|
-
navigationControlPosition = "top-right",
|
|
1285
|
-
geolocateControlPosition = "top-left",
|
|
1286
|
-
flyToOptions,
|
|
1287
|
-
markerFocusZoom = 14,
|
|
1288
|
-
clusterFocusZoom = 5,
|
|
1289
|
-
selectedMarkerId,
|
|
1290
|
-
initialSelectedMarkerId,
|
|
1291
|
-
onSelectionChange,
|
|
1292
|
-
clearSelectionOnMapClick = true,
|
|
1293
|
-
mapChildren,
|
|
1294
|
-
optixFlowConfig
|
|
1295
|
-
}) {
|
|
1296
|
-
const normalizedStandaloneMarkers = React8.useMemo(
|
|
1297
|
-
() => markers.map((marker, index) => ({
|
|
1298
|
-
...marker,
|
|
1299
|
-
id: normalizeId(marker.id, `marker-${index}`)
|
|
1300
|
-
})),
|
|
1301
|
-
[markers]
|
|
1302
|
-
);
|
|
1303
|
-
const normalizedClusters = React8.useMemo(() => {
|
|
1304
|
-
const results = [];
|
|
1305
|
-
clusters.forEach((cluster, clusterIndex) => {
|
|
1306
|
-
const clusterId = normalizeId(cluster.id, `cluster-${clusterIndex}`);
|
|
1307
|
-
const normalizedClusterMarkers = cluster.markers.map(
|
|
1308
|
-
(marker, markerIndex) => ({
|
|
1309
|
-
...marker,
|
|
1310
|
-
id: normalizeId(marker.id, `${clusterId}-marker-${markerIndex}`),
|
|
1311
|
-
clusterId
|
|
1312
|
-
})
|
|
1313
|
-
);
|
|
1314
|
-
const clusterCenter = cluster.latitude !== void 0 && cluster.longitude !== void 0 ? { latitude: cluster.latitude, longitude: cluster.longitude } : buildClusterCenter(normalizedClusterMarkers);
|
|
1315
|
-
if (!clusterCenter) {
|
|
1316
|
-
return;
|
|
1317
|
-
}
|
|
1318
|
-
results.push({
|
|
1319
|
-
...cluster,
|
|
1320
|
-
id: clusterId,
|
|
1321
|
-
latitude: clusterCenter.latitude,
|
|
1322
|
-
longitude: clusterCenter.longitude,
|
|
1323
|
-
markers: normalizedClusterMarkers
|
|
1324
|
-
});
|
|
1325
|
-
});
|
|
1326
|
-
return results;
|
|
1327
|
-
}, [clusters]);
|
|
1328
|
-
const markerLookup = React8.useMemo(() => {
|
|
1329
|
-
const lookup = /* @__PURE__ */ new Map();
|
|
1330
|
-
normalizedStandaloneMarkers.forEach((marker) => {
|
|
1331
|
-
lookup.set(marker.id, marker);
|
|
1332
|
-
});
|
|
1333
|
-
normalizedClusters.forEach((cluster) => {
|
|
1334
|
-
cluster.markers.forEach((marker) => {
|
|
1335
|
-
lookup.set(marker.id, marker);
|
|
1336
|
-
});
|
|
1337
|
-
});
|
|
1338
|
-
return lookup;
|
|
1339
|
-
}, [normalizedClusters, normalizedStandaloneMarkers]);
|
|
1340
|
-
const clusterLookup = React8.useMemo(() => {
|
|
1341
|
-
const lookup = /* @__PURE__ */ new Map();
|
|
1342
|
-
normalizedClusters.forEach((cluster) => {
|
|
1343
|
-
lookup.set(cluster.id, cluster);
|
|
1344
|
-
});
|
|
1345
|
-
return lookup;
|
|
1346
|
-
}, [normalizedClusters]);
|
|
1347
|
-
const firstCoordinate = React8.useMemo(() => {
|
|
1348
|
-
if (normalizedStandaloneMarkers.length > 0) {
|
|
1349
|
-
const firstStandaloneMarker = normalizedStandaloneMarkers[0];
|
|
1350
|
-
return {
|
|
1351
|
-
latitude: firstStandaloneMarker.latitude,
|
|
1352
|
-
longitude: firstStandaloneMarker.longitude
|
|
1353
|
-
};
|
|
1354
|
-
}
|
|
1355
|
-
if (normalizedClusters.length > 0) {
|
|
1356
|
-
const firstCluster = normalizedClusters[0];
|
|
1357
|
-
return {
|
|
1358
|
-
latitude: firstCluster.latitude,
|
|
1359
|
-
longitude: firstCluster.longitude
|
|
1360
|
-
};
|
|
1361
|
-
}
|
|
1362
|
-
return {
|
|
1363
|
-
latitude: DEFAULT_VIEW_STATE.latitude,
|
|
1364
|
-
longitude: DEFAULT_VIEW_STATE.longitude
|
|
1365
|
-
};
|
|
1366
|
-
}, [normalizedClusters, normalizedStandaloneMarkers]);
|
|
1367
|
-
const [uncontrolledViewState, setUncontrolledViewState] = React8.useState({
|
|
1368
|
-
latitude: defaultViewState?.latitude ?? firstCoordinate.latitude,
|
|
1369
|
-
longitude: defaultViewState?.longitude ?? firstCoordinate.longitude,
|
|
1370
|
-
zoom: defaultViewState?.zoom ?? DEFAULT_VIEW_STATE.zoom
|
|
1371
|
-
});
|
|
1372
|
-
const isControlledViewState = viewState !== void 0;
|
|
1373
|
-
const resolvedViewState = isControlledViewState ? viewState : uncontrolledViewState;
|
|
1374
|
-
const applyViewState = React8.useCallback(
|
|
1375
|
-
(nextState) => {
|
|
1376
|
-
if (!isControlledViewState) {
|
|
1377
|
-
setUncontrolledViewState((current) => {
|
|
1378
|
-
const next = { ...current, ...nextState };
|
|
1379
|
-
const hasChanged = current.latitude !== next.latitude || current.longitude !== next.longitude || current.zoom !== next.zoom;
|
|
1380
|
-
return hasChanged ? next : current;
|
|
1381
|
-
});
|
|
1382
|
-
}
|
|
1383
|
-
onViewStateChange?.(nextState);
|
|
1384
|
-
},
|
|
1385
|
-
[isControlledViewState, onViewStateChange]
|
|
1386
|
-
);
|
|
1387
|
-
const [selection, setSelection] = React8.useState(() => {
|
|
1388
|
-
if (initialSelectedMarkerId !== void 0 && initialSelectedMarkerId !== null) {
|
|
1389
|
-
return {
|
|
1390
|
-
type: "marker",
|
|
1391
|
-
markerId: String(initialSelectedMarkerId)
|
|
1392
|
-
};
|
|
1393
|
-
}
|
|
1394
|
-
return { type: "none" };
|
|
1395
|
-
});
|
|
1396
|
-
React8.useEffect(() => {
|
|
1397
|
-
if (selectedMarkerId === void 0 || selectedMarkerId === null) {
|
|
1398
|
-
return;
|
|
1399
|
-
}
|
|
1400
|
-
setSelection({
|
|
1401
|
-
type: "marker",
|
|
1402
|
-
markerId: String(selectedMarkerId)
|
|
1403
|
-
});
|
|
1404
|
-
}, [selectedMarkerId]);
|
|
1405
|
-
const selectedMarker = selection.markerId ? markerLookup.get(selection.markerId) : void 0;
|
|
1406
|
-
const selectedCluster = selection.clusterId ? clusterLookup.get(selection.clusterId) : void 0;
|
|
1407
|
-
React8.useEffect(() => {
|
|
1408
|
-
if (selection.type === "marker" && selection.markerId && !selectedMarker) {
|
|
1409
|
-
setSelection({ type: "none" });
|
|
1410
|
-
onSelectionChange?.({ type: "none" });
|
|
1411
|
-
}
|
|
1412
|
-
}, [onSelectionChange, selectedMarker, selection]);
|
|
1413
|
-
const emitSelectionChange = React8.useCallback(
|
|
1414
|
-
(nextSelection) => {
|
|
1415
|
-
if (nextSelection.type === "none") {
|
|
1416
|
-
onSelectionChange?.({ type: "none" });
|
|
1417
|
-
return;
|
|
1418
|
-
}
|
|
1419
|
-
if (nextSelection.type === "marker") {
|
|
1420
|
-
const parentCluster = nextSelection.marker.clusterId ? clusterLookup.get(nextSelection.marker.clusterId) : void 0;
|
|
1421
|
-
onSelectionChange?.({
|
|
1422
|
-
type: "marker",
|
|
1423
|
-
marker: nextSelection.marker,
|
|
1424
|
-
cluster: parentCluster
|
|
1425
|
-
});
|
|
1426
|
-
return;
|
|
1427
|
-
}
|
|
1428
|
-
onSelectionChange?.({
|
|
1429
|
-
type: "cluster",
|
|
1430
|
-
cluster: nextSelection.cluster
|
|
1431
|
-
});
|
|
1432
|
-
},
|
|
1433
|
-
[clusterLookup, onSelectionChange]
|
|
1434
|
-
);
|
|
1435
|
-
const selectMarker = React8.useCallback(
|
|
1436
|
-
(marker) => {
|
|
1437
|
-
setSelection({
|
|
1438
|
-
type: "marker",
|
|
1439
|
-
markerId: marker.id,
|
|
1440
|
-
clusterId: marker.clusterId
|
|
1441
|
-
});
|
|
1442
|
-
applyViewState({
|
|
1443
|
-
latitude: marker.latitude,
|
|
1444
|
-
longitude: marker.longitude,
|
|
1445
|
-
zoom: markerFocusZoom
|
|
1446
|
-
});
|
|
1447
|
-
emitSelectionChange({ type: "marker", marker });
|
|
1448
|
-
},
|
|
1449
|
-
[applyViewState, emitSelectionChange, markerFocusZoom]
|
|
1450
|
-
);
|
|
1451
|
-
const selectCluster = React8.useCallback(
|
|
1452
|
-
(cluster) => {
|
|
1453
|
-
setSelection({
|
|
1454
|
-
type: "cluster",
|
|
1455
|
-
clusterId: cluster.id
|
|
1456
|
-
});
|
|
1457
|
-
applyViewState({
|
|
1458
|
-
latitude: cluster.latitude,
|
|
1459
|
-
longitude: cluster.longitude,
|
|
1460
|
-
zoom: clusterFocusZoom
|
|
1461
|
-
});
|
|
1462
|
-
emitSelectionChange({ type: "cluster", cluster });
|
|
1463
|
-
},
|
|
1464
|
-
[applyViewState, clusterFocusZoom, emitSelectionChange]
|
|
1465
|
-
);
|
|
1466
|
-
const clearSelection = React8.useCallback(() => {
|
|
1467
|
-
setSelection({ type: "none" });
|
|
1468
|
-
emitSelectionChange({ type: "none" });
|
|
1469
|
-
}, [emitSelectionChange]);
|
|
1470
|
-
const mapMarkers = React8.useMemo(() => {
|
|
1471
|
-
const resolvedMarkers = [];
|
|
1472
|
-
normalizedClusters.forEach((cluster) => {
|
|
1473
|
-
const isSelected = selection.type === "cluster" && selection.clusterId === cluster.id;
|
|
1474
|
-
resolvedMarkers.push({
|
|
1475
|
-
id: `cluster-pin:${cluster.id}`,
|
|
1476
|
-
latitude: cluster.latitude,
|
|
1477
|
-
longitude: cluster.longitude,
|
|
1478
|
-
element: () => {
|
|
1479
|
-
const customMarkerElement = cluster.markerElement;
|
|
1480
|
-
const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({
|
|
1481
|
-
isSelected,
|
|
1482
|
-
count: cluster.markers.length
|
|
1483
|
-
}) : customMarkerElement;
|
|
1484
|
-
return /* @__PURE__ */ jsx(
|
|
1485
|
-
"button",
|
|
1486
|
-
{
|
|
1487
|
-
type: "button",
|
|
1488
|
-
className: "group cursor-pointer",
|
|
1489
|
-
onClick: (event) => {
|
|
1490
|
-
event.preventDefault();
|
|
1491
|
-
event.stopPropagation();
|
|
1492
|
-
selectCluster(cluster);
|
|
1493
|
-
},
|
|
1494
|
-
"aria-label": `View ${cluster.markers.length} clustered locations`,
|
|
1495
|
-
children: markerBody ?? /* @__PURE__ */ jsx(
|
|
1496
|
-
"span",
|
|
1497
|
-
{
|
|
1498
|
-
className: cn(
|
|
1499
|
-
"inline-flex min-h-10 min-w-10 items-center justify-center rounded-full border-2 border-white px-2 text-xs font-semibold text-white shadow-lg transition-transform duration-200 group-hover:scale-105",
|
|
1500
|
-
isSelected && "ring-4 ring-primary/30",
|
|
1501
|
-
cluster.pinClassName
|
|
1502
|
-
),
|
|
1503
|
-
style: {
|
|
1504
|
-
backgroundColor: cluster.pinColor ?? "var(--foreground)"
|
|
1505
|
-
},
|
|
1506
|
-
children: cluster.markers.length
|
|
1507
|
-
}
|
|
1508
|
-
)
|
|
1509
|
-
}
|
|
1510
|
-
);
|
|
1511
|
-
}
|
|
1512
|
-
});
|
|
1513
|
-
});
|
|
1514
|
-
normalizedStandaloneMarkers.forEach((marker) => {
|
|
1515
|
-
const isSelected = selection.type === "marker" && selection.markerId === marker.id;
|
|
1516
|
-
const customMarkerElement = marker.markerElement;
|
|
1517
|
-
resolvedMarkers.push({
|
|
1518
|
-
id: marker.id,
|
|
1519
|
-
latitude: marker.latitude,
|
|
1520
|
-
longitude: marker.longitude,
|
|
1521
|
-
draggable: marker.draggable,
|
|
1522
|
-
element: () => {
|
|
1523
|
-
const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({ isSelected }) : customMarkerElement;
|
|
1524
|
-
return /* @__PURE__ */ jsx(
|
|
1525
|
-
"button",
|
|
1526
|
-
{
|
|
1527
|
-
type: "button",
|
|
1528
|
-
className: "group cursor-pointer",
|
|
1529
|
-
onClick: (event) => {
|
|
1530
|
-
event.preventDefault();
|
|
1531
|
-
event.stopPropagation();
|
|
1532
|
-
selectMarker(marker);
|
|
1533
|
-
},
|
|
1534
|
-
"aria-label": typeof marker.title === "string" ? `View ${marker.title}` : "View location details",
|
|
1535
|
-
children: markerBody ?? /* @__PURE__ */ jsx(
|
|
1536
|
-
"span",
|
|
1537
|
-
{
|
|
1538
|
-
className: cn(
|
|
1539
|
-
"inline-flex h-4 w-4 rounded-full border-2 border-white shadow-md transition-transform duration-200 group-hover:scale-110",
|
|
1540
|
-
isSelected && "h-5 w-5 ring-4 ring-primary/30",
|
|
1541
|
-
marker.pinClassName
|
|
1542
|
-
),
|
|
1543
|
-
style: {
|
|
1544
|
-
backgroundColor: marker.pinColor ?? "#f43f5e"
|
|
1545
|
-
}
|
|
1546
|
-
}
|
|
1547
|
-
)
|
|
1548
|
-
}
|
|
1549
|
-
);
|
|
1550
|
-
}
|
|
1551
|
-
});
|
|
1552
|
-
});
|
|
1553
|
-
return resolvedMarkers;
|
|
1554
|
-
}, [
|
|
1555
|
-
normalizedClusters,
|
|
1556
|
-
normalizedStandaloneMarkers,
|
|
1557
|
-
selectCluster,
|
|
1558
|
-
selectMarker,
|
|
1559
|
-
selection
|
|
1560
|
-
]);
|
|
1561
|
-
const renderMarkerPanel = () => {
|
|
1562
|
-
if (selectedMarker) {
|
|
1563
|
-
const markerMediaItems = selectedMarker.mediaItems ?? [];
|
|
1564
|
-
return /* @__PURE__ */ jsxs(
|
|
1565
|
-
"div",
|
|
1566
|
-
{
|
|
1567
|
-
className: cn(
|
|
1568
|
-
"relative w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-card text-card-foreground shadow-2xl",
|
|
1569
|
-
panelClassName
|
|
1570
|
-
),
|
|
1571
|
-
children: [
|
|
1572
|
-
/* @__PURE__ */ jsx(
|
|
1573
|
-
"button",
|
|
1574
|
-
{
|
|
1575
|
-
type: "button",
|
|
1576
|
-
"aria-label": "Close marker details",
|
|
1577
|
-
className: "\n flex size-12 items-center justify-center rounded-bl-lg rounded-br-0 rounded-t-0 bg-black text-white transition-all duration-500 absolute top-0 right-0 z-10 cursor-pointer ring-4 ring-white\n",
|
|
1578
|
-
onClick: clearSelection,
|
|
1579
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
|
|
1580
|
-
}
|
|
1581
|
-
),
|
|
1582
|
-
markerMediaItems.length > 0 ? /* @__PURE__ */ jsx(
|
|
1583
|
-
MarkerMediaCarousel,
|
|
1584
|
-
{
|
|
1585
|
-
mediaItems: markerMediaItems,
|
|
1586
|
-
optixFlowConfig
|
|
1587
|
-
}
|
|
1588
|
-
) : null,
|
|
1589
|
-
/* @__PURE__ */ jsxs("div", { className: "space-y-2 p-4", children: [
|
|
1590
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-1", children: [
|
|
1591
|
-
selectedMarker.eyebrow ? /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold uppercase tracking-wide", children: selectedMarker.eyebrow }) : null,
|
|
1592
|
-
/* @__PURE__ */ jsx("div", { className: "text-base font-semibold leading-tight", children: selectedMarker.title ?? selectedMarker.label ?? "Location" })
|
|
1593
|
-
] }) }),
|
|
1594
|
-
selectedMarker.summary ? /* @__PURE__ */ jsx("div", { className: "text-sm leading-relaxed", children: selectedMarker.summary }) : null,
|
|
1595
|
-
selectedMarker.locationLine ? /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center justify-start text-sm gap-2", children: [
|
|
1596
|
-
/* @__PURE__ */ jsx(
|
|
1597
|
-
DynamicIcon,
|
|
1598
|
-
{
|
|
1599
|
-
name: "lucide:map-pin",
|
|
1600
|
-
className: "opacity-50",
|
|
1601
|
-
size: 18
|
|
1602
|
-
}
|
|
1603
|
-
),
|
|
1604
|
-
typeof selectedMarker.locationLine === "string" ? /* @__PURE__ */ jsx(
|
|
1605
|
-
Pressable,
|
|
1606
|
-
{
|
|
1607
|
-
href: selectedMarker.locationUrl,
|
|
1608
|
-
className: cn(
|
|
1609
|
-
"transition-all duration-500",
|
|
1610
|
-
"font-medium opacity-75 hover:opacity-100",
|
|
1611
|
-
selectedMarker.locationUrl ? "underline underline-offset-4" : ""
|
|
1612
|
-
),
|
|
1613
|
-
children: selectedMarker.locationLine
|
|
1614
|
-
}
|
|
1615
|
-
) : selectedMarker.locationLine
|
|
1616
|
-
] }) : null,
|
|
1617
|
-
selectedMarker.hoursLine ? /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center justify-start text-sm gap-2", children: [
|
|
1618
|
-
/* @__PURE__ */ jsx(
|
|
1619
|
-
DynamicIcon,
|
|
1620
|
-
{
|
|
1621
|
-
name: "lucide:clock",
|
|
1622
|
-
className: "opacity-50",
|
|
1623
|
-
size: 18
|
|
1624
|
-
}
|
|
1625
|
-
),
|
|
1626
|
-
typeof selectedMarker.hoursLine === "string" ? /* @__PURE__ */ jsx("div", { className: "font-medium", children: selectedMarker.hoursLine }) : selectedMarker.hoursLine
|
|
1627
|
-
] }) : null,
|
|
1628
|
-
selectedMarker.markerContentComponent ? /* @__PURE__ */ jsx("div", { className: "relative", children: selectedMarker.markerContentComponent }) : null,
|
|
1629
|
-
/* @__PURE__ */ jsx(MarkerActions, { actions: selectedMarker.actions })
|
|
1630
|
-
] })
|
|
1631
|
-
]
|
|
1632
|
-
}
|
|
1633
|
-
);
|
|
1634
|
-
}
|
|
1635
|
-
if (selectedCluster) {
|
|
1636
|
-
return /* @__PURE__ */ jsxs(
|
|
1637
|
-
"div",
|
|
1638
|
-
{
|
|
1639
|
-
className: cn(
|
|
1640
|
-
"relative w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-card text-card-foreground p-4 shadow-2xl",
|
|
1641
|
-
panelClassName
|
|
1642
|
-
),
|
|
1643
|
-
children: [
|
|
1644
|
-
/* @__PURE__ */ jsx(
|
|
1645
|
-
"button",
|
|
1646
|
-
{
|
|
1647
|
-
type: "button",
|
|
1648
|
-
"aria-label": "Close cluster details",
|
|
1649
|
-
className: "flex size-8 items-center justify-center rounded-full border border-border bg-card text-card-foreground transition hover:bg-muted hover:text-foreground absolute top-2 right-2 z-10",
|
|
1650
|
-
onClick: clearSelection,
|
|
1651
|
-
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20 })
|
|
1652
|
-
}
|
|
1653
|
-
),
|
|
1654
|
-
/* @__PURE__ */ jsx("div", { className: "mb-3 flex items-start justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
1655
|
-
selectedCluster.label ? /* @__PURE__ */ jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedCluster.label }) : null,
|
|
1656
|
-
/* @__PURE__ */ jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedCluster.title ?? "Clustered Locations" }),
|
|
1657
|
-
/* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: selectedCluster.summary ?? `${selectedCluster.markers.length} location${selectedCluster.markers.length === 1 ? "" : "s"} in this cluster.` })
|
|
1658
|
-
] }) }),
|
|
1659
|
-
/* @__PURE__ */ jsx("div", { className: "max-h-56 space-y-2 overflow-y-auto pr-1", children: selectedCluster.markers.map((marker, markerIndex) => /* @__PURE__ */ jsxs(
|
|
1660
|
-
"button",
|
|
1661
|
-
{
|
|
1662
|
-
type: "button",
|
|
1663
|
-
className: "w-full rounded-lg border border-border/60 p-3 text-left transition hover:border-border hover:bg-muted/50",
|
|
1664
|
-
onClick: () => selectMarker(marker),
|
|
1665
|
-
children: [
|
|
1666
|
-
/* @__PURE__ */ jsx("div", { className: "line-clamp-1 text-sm font-semibold text-foreground", children: getMarkerTitle(marker, markerIndex) }),
|
|
1667
|
-
marker.summary ? /* @__PURE__ */ jsx("div", { className: "mt-1 line-clamp-2 text-xs text-muted-foreground", children: marker.summary }) : null
|
|
1668
|
-
]
|
|
1669
|
-
},
|
|
1670
|
-
marker.id
|
|
1671
|
-
)) })
|
|
1672
|
-
]
|
|
1673
|
-
}
|
|
1674
|
-
);
|
|
1675
|
-
}
|
|
1676
|
-
return null;
|
|
1677
|
-
};
|
|
1678
|
-
return /* @__PURE__ */ jsxs(
|
|
1679
|
-
"div",
|
|
1680
|
-
{
|
|
1681
|
-
className: cn(
|
|
1682
|
-
"relative overflow-hidden rounded-2xl border border-border bg-background",
|
|
1683
|
-
className
|
|
1684
|
-
),
|
|
1685
|
-
children: [
|
|
1686
|
-
/* @__PURE__ */ jsx("div", { className: cn("h-[520px] w-full", mapWrapperClassName), children: /* @__PURE__ */ jsx(
|
|
1687
|
-
MapLibre,
|
|
1688
|
-
{
|
|
1689
|
-
stadiaApiKey,
|
|
1690
|
-
mapStyle,
|
|
1691
|
-
styleUrl,
|
|
1692
|
-
mapLibreCssHref,
|
|
1693
|
-
viewState: resolvedViewState,
|
|
1694
|
-
onViewStateChange: applyViewState,
|
|
1695
|
-
markers: mapMarkers,
|
|
1696
|
-
onClick: (coord) => {
|
|
1697
|
-
onMapClick?.(coord);
|
|
1698
|
-
if (clearSelectionOnMapClick) {
|
|
1699
|
-
clearSelection();
|
|
1700
|
-
}
|
|
1701
|
-
},
|
|
1702
|
-
onMarkerDrag,
|
|
1703
|
-
showNavigationControl,
|
|
1704
|
-
showGeolocateControl,
|
|
1705
|
-
navigationControlPosition,
|
|
1706
|
-
geolocateControlPosition,
|
|
1707
|
-
flyToOptions,
|
|
1708
|
-
className: cn("h-full w-full", mapClassName),
|
|
1709
|
-
children: mapChildren
|
|
1710
|
-
}
|
|
1711
|
-
) }),
|
|
1712
|
-
selection.type !== "none" ? /* @__PURE__ */ jsx(
|
|
1713
|
-
"div",
|
|
1714
|
-
{
|
|
1715
|
-
className: cn(
|
|
1716
|
-
"pointer-events-none absolute z-20",
|
|
1717
|
-
PANEL_POSITION_CLASS[panelPosition]
|
|
1718
|
-
),
|
|
1719
|
-
children: /* @__PURE__ */ jsx("div", { className: "pointer-events-auto", children: renderMarkerPanel() })
|
|
1720
|
-
}
|
|
1721
|
-
) : null
|
|
1722
|
-
]
|
|
1723
|
-
}
|
|
1724
|
-
);
|
|
1725
|
-
}
|
|
1726
647
|
var slideVariants = {
|
|
1727
648
|
initial: {
|
|
1728
649
|
scale: 0.98,
|
|
@@ -1796,10 +717,10 @@ var ImageSlider = ({
|
|
|
1796
717
|
optixFlowConfig
|
|
1797
718
|
}) => {
|
|
1798
719
|
const hasImages = images.length > 0;
|
|
1799
|
-
const [currentIndex, setCurrentIndex] =
|
|
720
|
+
const [currentIndex, setCurrentIndex] = React32.useState(
|
|
1800
721
|
() => normalizeIndex(startIndex, images.length)
|
|
1801
722
|
);
|
|
1802
|
-
const handleNext =
|
|
723
|
+
const handleNext = React32.useCallback(() => {
|
|
1803
724
|
if (!hasImages) return;
|
|
1804
725
|
setCurrentIndex((prevIndex) => {
|
|
1805
726
|
const nextIndex = prevIndex + 1 >= images.length ? 0 : prevIndex + 1;
|
|
@@ -1807,7 +728,7 @@ var ImageSlider = ({
|
|
|
1807
728
|
return nextIndex;
|
|
1808
729
|
});
|
|
1809
730
|
}, [hasImages, images.length, onSlideChange]);
|
|
1810
|
-
const handlePrevious =
|
|
731
|
+
const handlePrevious = React32.useCallback(() => {
|
|
1811
732
|
if (!hasImages) return;
|
|
1812
733
|
setCurrentIndex((prevIndex) => {
|
|
1813
734
|
const nextIndex = prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1;
|
|
@@ -1815,11 +736,11 @@ var ImageSlider = ({
|
|
|
1815
736
|
return nextIndex;
|
|
1816
737
|
});
|
|
1817
738
|
}, [hasImages, images.length, onSlideChange]);
|
|
1818
|
-
|
|
739
|
+
React32.useEffect(() => {
|
|
1819
740
|
if (!hasImages) return;
|
|
1820
741
|
setCurrentIndex(normalizeIndex(startIndex, images.length));
|
|
1821
742
|
}, [startIndex, images.length, hasImages]);
|
|
1822
|
-
|
|
743
|
+
React32.useEffect(() => {
|
|
1823
744
|
if (!enableKeyboard || !hasImages) return;
|
|
1824
745
|
const handleKeyDown = (event) => {
|
|
1825
746
|
if (event.key === "ArrowRight") {
|
|
@@ -1833,7 +754,7 @@ var ImageSlider = ({
|
|
|
1833
754
|
window.removeEventListener("keydown", handleKeyDown);
|
|
1834
755
|
};
|
|
1835
756
|
}, [enableKeyboard, handleNext, handlePrevious, hasImages]);
|
|
1836
|
-
|
|
757
|
+
React32.useEffect(() => {
|
|
1837
758
|
if (!autoplay || images.length < 2) return;
|
|
1838
759
|
const interval = window.setInterval(handleNext, autoplayIntervalMs);
|
|
1839
760
|
return () => window.clearInterval(interval);
|
|
@@ -1906,6 +827,148 @@ var ImageSlider = ({
|
|
|
1906
827
|
}
|
|
1907
828
|
);
|
|
1908
829
|
};
|
|
830
|
+
var baseStyles = [
|
|
831
|
+
// Layout
|
|
832
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
833
|
+
// Typography - using CSS variables with sensible defaults
|
|
834
|
+
"font-[var(--button-font-family,inherit)]",
|
|
835
|
+
"font-[var(--button-font-weight,500)]",
|
|
836
|
+
"tracking-[var(--button-letter-spacing,0)]",
|
|
837
|
+
"leading-[var(--button-line-height,1.25)]",
|
|
838
|
+
"[text-transform:var(--button-text-transform,none)]",
|
|
839
|
+
"text-sm",
|
|
840
|
+
// Border radius
|
|
841
|
+
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
842
|
+
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
843
|
+
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
844
|
+
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
845
|
+
"[box-shadow:var(--button-shadow,none)]",
|
|
846
|
+
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
847
|
+
// Disabled state
|
|
848
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
849
|
+
// SVG handling
|
|
850
|
+
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
851
|
+
// Focus styles
|
|
852
|
+
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
853
|
+
// Invalid state
|
|
854
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
855
|
+
].join(" ");
|
|
856
|
+
var buttonVariants = cva(baseStyles, {
|
|
857
|
+
variants: {
|
|
858
|
+
variant: {
|
|
859
|
+
// Default (Primary) variant - full customization
|
|
860
|
+
default: [
|
|
861
|
+
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
862
|
+
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
863
|
+
"border-[length:var(--button-default-border-width,0px)]",
|
|
864
|
+
"border-[color:var(--button-default-border,transparent)]",
|
|
865
|
+
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
866
|
+
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
867
|
+
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
868
|
+
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
869
|
+
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
870
|
+
].join(" "),
|
|
871
|
+
// Destructive variant - full customization
|
|
872
|
+
destructive: [
|
|
873
|
+
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
874
|
+
"text-[var(--button-destructive-fg,white)]",
|
|
875
|
+
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
876
|
+
"border-[color:var(--button-destructive-border,transparent)]",
|
|
877
|
+
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
878
|
+
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
879
|
+
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
880
|
+
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
881
|
+
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
882
|
+
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
883
|
+
"dark:bg-destructive/60"
|
|
884
|
+
].join(" "),
|
|
885
|
+
// Outline variant - full customization with proper border handling
|
|
886
|
+
outline: [
|
|
887
|
+
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
888
|
+
"text-[var(--button-outline-fg,inherit)]",
|
|
889
|
+
"border-[length:var(--button-outline-border-width,1px)]",
|
|
890
|
+
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
891
|
+
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
892
|
+
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
893
|
+
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
894
|
+
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
895
|
+
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
896
|
+
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
897
|
+
].join(" "),
|
|
898
|
+
// Secondary variant - full customization
|
|
899
|
+
secondary: [
|
|
900
|
+
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
901
|
+
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
902
|
+
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
903
|
+
"border-[color:var(--button-secondary-border,transparent)]",
|
|
904
|
+
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
905
|
+
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
906
|
+
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
907
|
+
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
908
|
+
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
909
|
+
].join(" "),
|
|
910
|
+
// Ghost variant - full customization
|
|
911
|
+
ghost: [
|
|
912
|
+
"bg-[var(--button-ghost-bg,transparent)]",
|
|
913
|
+
"text-[var(--button-ghost-fg,inherit)]",
|
|
914
|
+
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
915
|
+
"border-[color:var(--button-ghost-border,transparent)]",
|
|
916
|
+
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
917
|
+
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
918
|
+
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
919
|
+
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
920
|
+
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
921
|
+
"dark:hover:bg-accent/50"
|
|
922
|
+
].join(" "),
|
|
923
|
+
// Link variant - full customization
|
|
924
|
+
link: [
|
|
925
|
+
"bg-[var(--button-link-bg,transparent)]",
|
|
926
|
+
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
927
|
+
"border-[length:var(--button-link-border-width,0px)]",
|
|
928
|
+
"border-[color:var(--button-link-border,transparent)]",
|
|
929
|
+
"[box-shadow:var(--button-link-shadow,none)]",
|
|
930
|
+
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
931
|
+
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
932
|
+
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
933
|
+
"underline-offset-4 hover:underline"
|
|
934
|
+
].join(" ")
|
|
935
|
+
},
|
|
936
|
+
size: {
|
|
937
|
+
default: [
|
|
938
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
939
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
940
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
941
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
942
|
+
].join(" "),
|
|
943
|
+
sm: [
|
|
944
|
+
"h-[var(--button-height-sm,2rem)]",
|
|
945
|
+
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
946
|
+
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
947
|
+
"gap-1.5",
|
|
948
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
949
|
+
].join(" "),
|
|
950
|
+
md: [
|
|
951
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
952
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
953
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
954
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
955
|
+
].join(" "),
|
|
956
|
+
lg: [
|
|
957
|
+
"h-[var(--button-height-lg,2.5rem)]",
|
|
958
|
+
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
959
|
+
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
960
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
961
|
+
].join(" "),
|
|
962
|
+
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
963
|
+
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
964
|
+
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
965
|
+
}
|
|
966
|
+
},
|
|
967
|
+
defaultVariants: {
|
|
968
|
+
variant: "default",
|
|
969
|
+
size: "default"
|
|
970
|
+
}
|
|
971
|
+
});
|
|
1909
972
|
function Card({ className, ...props }) {
|
|
1910
973
|
return /* @__PURE__ */ jsx(
|
|
1911
974
|
"div",
|
|
@@ -2034,6 +1097,14 @@ function PopoverContent({
|
|
|
2034
1097
|
}
|
|
2035
1098
|
) });
|
|
2036
1099
|
}
|
|
1100
|
+
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
1101
|
+
var DynamicIcon = React32.memo(function DynamicIcon2({
|
|
1102
|
+
apiKey,
|
|
1103
|
+
...props
|
|
1104
|
+
}) {
|
|
1105
|
+
return /* @__PURE__ */ jsx(Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
1106
|
+
});
|
|
1107
|
+
DynamicIcon.displayName = "DynamicIcon";
|
|
2037
1108
|
function StarRating({
|
|
2038
1109
|
rating,
|
|
2039
1110
|
size = 18,
|
|
@@ -2051,6 +1122,282 @@ function StarRating({
|
|
|
2051
1122
|
star
|
|
2052
1123
|
)) });
|
|
2053
1124
|
}
|
|
1125
|
+
function normalizePhoneNumber(input) {
|
|
1126
|
+
const trimmed = input.trim();
|
|
1127
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
1128
|
+
return trimmed;
|
|
1129
|
+
}
|
|
1130
|
+
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
1131
|
+
if (match) {
|
|
1132
|
+
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
1133
|
+
const extension = match[3];
|
|
1134
|
+
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
1135
|
+
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
1136
|
+
return `tel:${withExtension}`;
|
|
1137
|
+
}
|
|
1138
|
+
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
1139
|
+
return `tel:${cleaned}`;
|
|
1140
|
+
}
|
|
1141
|
+
function normalizeEmail(input) {
|
|
1142
|
+
const trimmed = input.trim();
|
|
1143
|
+
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
1144
|
+
return trimmed;
|
|
1145
|
+
}
|
|
1146
|
+
return `mailto:${trimmed}`;
|
|
1147
|
+
}
|
|
1148
|
+
function isEmail(input) {
|
|
1149
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1150
|
+
return emailRegex.test(input.trim());
|
|
1151
|
+
}
|
|
1152
|
+
function isPhoneNumber(input) {
|
|
1153
|
+
const trimmed = input.trim();
|
|
1154
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
1155
|
+
return true;
|
|
1156
|
+
}
|
|
1157
|
+
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
1158
|
+
return phoneRegex.test(trimmed);
|
|
1159
|
+
}
|
|
1160
|
+
function isInternalUrl(href) {
|
|
1161
|
+
if (typeof window === "undefined") {
|
|
1162
|
+
return href.startsWith("/") && !href.startsWith("//");
|
|
1163
|
+
}
|
|
1164
|
+
const trimmed = href.trim();
|
|
1165
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
1166
|
+
return true;
|
|
1167
|
+
}
|
|
1168
|
+
try {
|
|
1169
|
+
const url = new URL(trimmed, window.location.href);
|
|
1170
|
+
const currentOrigin = window.location.origin;
|
|
1171
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
1172
|
+
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
1173
|
+
} catch {
|
|
1174
|
+
return false;
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
function toRelativePath(href) {
|
|
1178
|
+
if (typeof window === "undefined") {
|
|
1179
|
+
return href;
|
|
1180
|
+
}
|
|
1181
|
+
const trimmed = href.trim();
|
|
1182
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
1183
|
+
return trimmed;
|
|
1184
|
+
}
|
|
1185
|
+
try {
|
|
1186
|
+
const url = new URL(trimmed, window.location.href);
|
|
1187
|
+
const currentOrigin = window.location.origin;
|
|
1188
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
1189
|
+
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
1190
|
+
return url.pathname + url.search + url.hash;
|
|
1191
|
+
}
|
|
1192
|
+
} catch {
|
|
1193
|
+
}
|
|
1194
|
+
return trimmed;
|
|
1195
|
+
}
|
|
1196
|
+
function useNavigation({
|
|
1197
|
+
href,
|
|
1198
|
+
onClick
|
|
1199
|
+
} = {}) {
|
|
1200
|
+
const linkType = React32.useMemo(() => {
|
|
1201
|
+
if (!href || href.trim() === "") {
|
|
1202
|
+
return onClick ? "none" : "none";
|
|
1203
|
+
}
|
|
1204
|
+
const trimmed = href.trim();
|
|
1205
|
+
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
1206
|
+
return "mailto";
|
|
1207
|
+
}
|
|
1208
|
+
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
1209
|
+
return "tel";
|
|
1210
|
+
}
|
|
1211
|
+
if (isInternalUrl(trimmed)) {
|
|
1212
|
+
return "internal";
|
|
1213
|
+
}
|
|
1214
|
+
try {
|
|
1215
|
+
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
1216
|
+
return "external";
|
|
1217
|
+
} catch {
|
|
1218
|
+
return "internal";
|
|
1219
|
+
}
|
|
1220
|
+
}, [href, onClick]);
|
|
1221
|
+
const normalizedHref = React32.useMemo(() => {
|
|
1222
|
+
if (!href || href.trim() === "") {
|
|
1223
|
+
return void 0;
|
|
1224
|
+
}
|
|
1225
|
+
const trimmed = href.trim();
|
|
1226
|
+
switch (linkType) {
|
|
1227
|
+
case "tel":
|
|
1228
|
+
return normalizePhoneNumber(trimmed);
|
|
1229
|
+
case "mailto":
|
|
1230
|
+
return normalizeEmail(trimmed);
|
|
1231
|
+
case "internal":
|
|
1232
|
+
return toRelativePath(trimmed);
|
|
1233
|
+
case "external":
|
|
1234
|
+
return trimmed;
|
|
1235
|
+
default:
|
|
1236
|
+
return trimmed;
|
|
1237
|
+
}
|
|
1238
|
+
}, [href, linkType]);
|
|
1239
|
+
const target = React32.useMemo(() => {
|
|
1240
|
+
switch (linkType) {
|
|
1241
|
+
case "external":
|
|
1242
|
+
return "_blank";
|
|
1243
|
+
case "internal":
|
|
1244
|
+
return "_self";
|
|
1245
|
+
case "mailto":
|
|
1246
|
+
case "tel":
|
|
1247
|
+
return void 0;
|
|
1248
|
+
default:
|
|
1249
|
+
return void 0;
|
|
1250
|
+
}
|
|
1251
|
+
}, [linkType]);
|
|
1252
|
+
const rel = React32.useMemo(() => {
|
|
1253
|
+
if (linkType === "external") {
|
|
1254
|
+
return "noopener noreferrer";
|
|
1255
|
+
}
|
|
1256
|
+
return void 0;
|
|
1257
|
+
}, [linkType]);
|
|
1258
|
+
const isExternal = linkType === "external";
|
|
1259
|
+
const isInternal = linkType === "internal";
|
|
1260
|
+
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
1261
|
+
const handleClick = React32.useCallback(
|
|
1262
|
+
(event) => {
|
|
1263
|
+
if (onClick) {
|
|
1264
|
+
try {
|
|
1265
|
+
onClick(event);
|
|
1266
|
+
} catch (error) {
|
|
1267
|
+
console.error("Error in user onClick handler:", error);
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
if (event.defaultPrevented) {
|
|
1271
|
+
return;
|
|
1272
|
+
}
|
|
1273
|
+
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
1274
|
+
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
1275
|
+
if (typeof window !== "undefined") {
|
|
1276
|
+
const handler = window.__opensiteNavigationHandler;
|
|
1277
|
+
if (typeof handler === "function") {
|
|
1278
|
+
try {
|
|
1279
|
+
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
1280
|
+
if (handled !== false) {
|
|
1281
|
+
event.preventDefault();
|
|
1282
|
+
}
|
|
1283
|
+
} catch (error) {
|
|
1284
|
+
console.error("Error in navigation handler:", error);
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
},
|
|
1290
|
+
[onClick, shouldUseRouter, normalizedHref]
|
|
1291
|
+
);
|
|
1292
|
+
return {
|
|
1293
|
+
linkType,
|
|
1294
|
+
normalizedHref,
|
|
1295
|
+
target,
|
|
1296
|
+
rel,
|
|
1297
|
+
isExternal,
|
|
1298
|
+
isInternal,
|
|
1299
|
+
shouldUseRouter,
|
|
1300
|
+
handleClick
|
|
1301
|
+
};
|
|
1302
|
+
}
|
|
1303
|
+
var Pressable = React32.forwardRef(
|
|
1304
|
+
({
|
|
1305
|
+
children,
|
|
1306
|
+
className,
|
|
1307
|
+
href,
|
|
1308
|
+
onClick,
|
|
1309
|
+
variant,
|
|
1310
|
+
size,
|
|
1311
|
+
asButton = false,
|
|
1312
|
+
fallbackComponentType = "span",
|
|
1313
|
+
componentType,
|
|
1314
|
+
"aria-label": ariaLabel,
|
|
1315
|
+
"aria-describedby": ariaDescribedby,
|
|
1316
|
+
id,
|
|
1317
|
+
...props
|
|
1318
|
+
}, ref) => {
|
|
1319
|
+
const navigation = useNavigation({ href, onClick });
|
|
1320
|
+
const {
|
|
1321
|
+
normalizedHref,
|
|
1322
|
+
target,
|
|
1323
|
+
rel,
|
|
1324
|
+
linkType,
|
|
1325
|
+
isInternal,
|
|
1326
|
+
handleClick
|
|
1327
|
+
} = navigation;
|
|
1328
|
+
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
1329
|
+
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
1330
|
+
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
1331
|
+
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
1332
|
+
const shouldApplyButtonStyles = asButton || variant || size;
|
|
1333
|
+
const combinedClassName = cn(
|
|
1334
|
+
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
1335
|
+
className
|
|
1336
|
+
);
|
|
1337
|
+
const dataProps = Object.fromEntries(
|
|
1338
|
+
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
1339
|
+
);
|
|
1340
|
+
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
1341
|
+
"data-slot": "button",
|
|
1342
|
+
"data-variant": variant ?? "default",
|
|
1343
|
+
"data-size": size ?? "default"
|
|
1344
|
+
} : {};
|
|
1345
|
+
const commonProps = {
|
|
1346
|
+
className: combinedClassName,
|
|
1347
|
+
onClick: handleClick,
|
|
1348
|
+
"aria-label": ariaLabel,
|
|
1349
|
+
"aria-describedby": ariaDescribedby,
|
|
1350
|
+
id,
|
|
1351
|
+
...dataProps,
|
|
1352
|
+
...buttonDataAttributes
|
|
1353
|
+
};
|
|
1354
|
+
if (finalComponentType === "a" && shouldRenderLink) {
|
|
1355
|
+
return /* @__PURE__ */ jsx(
|
|
1356
|
+
"a",
|
|
1357
|
+
{
|
|
1358
|
+
ref,
|
|
1359
|
+
href: normalizedHref,
|
|
1360
|
+
target,
|
|
1361
|
+
rel,
|
|
1362
|
+
...commonProps,
|
|
1363
|
+
...props,
|
|
1364
|
+
children
|
|
1365
|
+
}
|
|
1366
|
+
);
|
|
1367
|
+
}
|
|
1368
|
+
if (finalComponentType === "button") {
|
|
1369
|
+
return /* @__PURE__ */ jsx(
|
|
1370
|
+
"button",
|
|
1371
|
+
{
|
|
1372
|
+
ref,
|
|
1373
|
+
type: props.type || "button",
|
|
1374
|
+
...commonProps,
|
|
1375
|
+
...props,
|
|
1376
|
+
children
|
|
1377
|
+
}
|
|
1378
|
+
);
|
|
1379
|
+
}
|
|
1380
|
+
if (finalComponentType === "div") {
|
|
1381
|
+
return /* @__PURE__ */ jsx(
|
|
1382
|
+
"div",
|
|
1383
|
+
{
|
|
1384
|
+
ref,
|
|
1385
|
+
...commonProps,
|
|
1386
|
+
children
|
|
1387
|
+
}
|
|
1388
|
+
);
|
|
1389
|
+
}
|
|
1390
|
+
return /* @__PURE__ */ jsx(
|
|
1391
|
+
"span",
|
|
1392
|
+
{
|
|
1393
|
+
ref,
|
|
1394
|
+
...commonProps,
|
|
1395
|
+
children
|
|
1396
|
+
}
|
|
1397
|
+
);
|
|
1398
|
+
}
|
|
1399
|
+
);
|
|
1400
|
+
Pressable.displayName = "Pressable";
|
|
2054
1401
|
var BUTTON_SIZES = {
|
|
2055
1402
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
2056
1403
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -2142,7 +1489,7 @@ var platformIconMap = {
|
|
|
2142
1489
|
dribbble: "cib/dribbble",
|
|
2143
1490
|
unknown: "icon-park-solid/circular-connection"
|
|
2144
1491
|
};
|
|
2145
|
-
var SocialLinkIcon =
|
|
1492
|
+
var SocialLinkIcon = React32.forwardRef(
|
|
2146
1493
|
({
|
|
2147
1494
|
platformName,
|
|
2148
1495
|
label,
|
|
@@ -2156,16 +1503,16 @@ var SocialLinkIcon = React8.forwardRef(
|
|
|
2156
1503
|
...pressableProps
|
|
2157
1504
|
}, ref) => {
|
|
2158
1505
|
const platform = usePlatformFromUrl(href);
|
|
2159
|
-
const smartPlatformName =
|
|
1506
|
+
const smartPlatformName = React32.useMemo(() => {
|
|
2160
1507
|
return platform || platformName;
|
|
2161
1508
|
}, [platform, platformName]);
|
|
2162
|
-
const iconName =
|
|
1509
|
+
const iconName = React32.useMemo(() => {
|
|
2163
1510
|
return iconNameOverride || platformIconMap[smartPlatformName];
|
|
2164
1511
|
}, [iconNameOverride, smartPlatformName]);
|
|
2165
|
-
const accessibleLabel =
|
|
1512
|
+
const accessibleLabel = React32.useMemo(() => {
|
|
2166
1513
|
return label || platformName;
|
|
2167
1514
|
}, [label, platformName]);
|
|
2168
|
-
const icon =
|
|
1515
|
+
const icon = React32.useMemo(() => {
|
|
2169
1516
|
return /* @__PURE__ */ jsx(
|
|
2170
1517
|
DynamicIcon,
|
|
2171
1518
|
{
|
|
@@ -2652,7 +1999,7 @@ function AboutExpandableValues({
|
|
|
2652
1999
|
pattern,
|
|
2653
2000
|
patternOpacity
|
|
2654
2001
|
}) {
|
|
2655
|
-
const [expandedValue, setExpandedValue] =
|
|
2002
|
+
const [expandedValue, setExpandedValue] = React32.useState(null);
|
|
2656
2003
|
const toggleExpand = useCallback((id) => {
|
|
2657
2004
|
setExpandedValue((prev) => prev === id ? null : id);
|
|
2658
2005
|
}, []);
|
|
@@ -2888,7 +2235,7 @@ function CommunityInitiatives({
|
|
|
2888
2235
|
pattern,
|
|
2889
2236
|
patternOpacity
|
|
2890
2237
|
}) {
|
|
2891
|
-
const [activeCategory, setActiveCategory] =
|
|
2238
|
+
const [activeCategory, setActiveCategory] = React32.useState(
|
|
2892
2239
|
categories?.[0]?.id || ""
|
|
2893
2240
|
);
|
|
2894
2241
|
const currentCategory = categories?.find((category) => category.id === activeCategory) || categories?.[0];
|
|
@@ -3152,7 +2499,7 @@ function AboutCultureTabs({
|
|
|
3152
2499
|
patternOpacity
|
|
3153
2500
|
}) {
|
|
3154
2501
|
const resolvedAspects = aspects ?? [];
|
|
3155
|
-
const [activeTab, setActiveTab] =
|
|
2502
|
+
const [activeTab, setActiveTab] = React32.useState(
|
|
3156
2503
|
resolvedAspects[0]?.id || ""
|
|
3157
2504
|
);
|
|
3158
2505
|
const headerItems = useMemo(() => {
|
|
@@ -3685,7 +3032,7 @@ function BannerDeliveryCountdown({
|
|
|
3685
3032
|
}, [prefixText, timerContent, middleText, deliveryDateContent]);
|
|
3686
3033
|
return /* @__PURE__ */ jsx(Section, { background, spacing: "none", className: cn("bg-accent text-accent-foreground", className), children: /* @__PURE__ */ jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-3 text-sm", contentClassName), children: /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", messageClassName), children: [
|
|
3687
3034
|
iconContent,
|
|
3688
|
-
messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(
|
|
3035
|
+
messageParts.length > 0 && /* @__PURE__ */ jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
3689
3036
|
index > 0 ? " " : null,
|
|
3690
3037
|
part
|
|
3691
3038
|
] }, index)) })
|
|
@@ -4956,8 +4303,8 @@ var BrandAttribution = ({
|
|
|
4956
4303
|
}
|
|
4957
4304
|
const { prefix = "", anchorText, href, suffix = "" } = options[optionIndex];
|
|
4958
4305
|
const ContainerEl = variant;
|
|
4959
|
-
const [trackedHref, setTrackedHref] =
|
|
4960
|
-
|
|
4306
|
+
const [trackedHref, setTrackedHref] = React32.useState(href);
|
|
4307
|
+
React32.useEffect(() => {
|
|
4961
4308
|
setTrackedHref(buildTrackedHref(href));
|
|
4962
4309
|
}, [href]);
|
|
4963
4310
|
return /* @__PURE__ */ jsxs(ContainerEl, { className: containerClassName, children: [
|
|
@@ -5077,7 +4424,7 @@ function FooterSocialNewsletter({
|
|
|
5077
4424
|
patternOpacity,
|
|
5078
4425
|
optixFlowConfig
|
|
5079
4426
|
}) {
|
|
5080
|
-
const renderForm =
|
|
4427
|
+
const renderForm = React32.useMemo(() => {
|
|
5081
4428
|
if (!formEngineSetup) return null;
|
|
5082
4429
|
const action = {
|
|
5083
4430
|
variant: "default",
|
|
@@ -5366,7 +4713,7 @@ function FooterSimpleCentered({
|
|
|
5366
4713
|
]);
|
|
5367
4714
|
const bottomLinksContent = useMemo(() => {
|
|
5368
4715
|
if (!bottomLinks || bottomLinks.length === 0) return null;
|
|
5369
|
-
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsx(
|
|
4716
|
+
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsx(React32.Fragment, { children: /* @__PURE__ */ jsx(
|
|
5370
4717
|
Pressable,
|
|
5371
4718
|
{
|
|
5372
4719
|
href: link.href,
|
|
@@ -6713,7 +6060,7 @@ function FooterNewsletterMinimal({
|
|
|
6713
6060
|
buttonAction,
|
|
6714
6061
|
formSlot
|
|
6715
6062
|
}) {
|
|
6716
|
-
const navLinksContent =
|
|
6063
|
+
const navLinksContent = React32.useMemo(() => {
|
|
6717
6064
|
if (!navLinks || navLinks.length === 0) return null;
|
|
6718
6065
|
return navLinks.map((item, idx) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
6719
6066
|
Pressable,
|
|
@@ -6724,7 +6071,7 @@ function FooterNewsletterMinimal({
|
|
|
6724
6071
|
}
|
|
6725
6072
|
) }, idx));
|
|
6726
6073
|
}, [navLinks, navLinkClassName]);
|
|
6727
|
-
const socialLinksContent =
|
|
6074
|
+
const socialLinksContent = React32.useMemo(() => {
|
|
6728
6075
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6729
6076
|
return socialLinks.map((item, idx) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
6730
6077
|
SocialLinkIcon,
|
|
@@ -6740,7 +6087,7 @@ function FooterNewsletterMinimal({
|
|
|
6740
6087
|
}
|
|
6741
6088
|
) }, idx));
|
|
6742
6089
|
}, [socialLinks, socialLinkClassName]);
|
|
6743
|
-
const footerLinksContent =
|
|
6090
|
+
const footerLinksContent = React32.useMemo(() => {
|
|
6744
6091
|
if (!footerLinks || footerLinks.length === 0) return null;
|
|
6745
6092
|
return footerLinks.map((item) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
6746
6093
|
Pressable,
|
|
@@ -6754,7 +6101,7 @@ function FooterNewsletterMinimal({
|
|
|
6754
6101
|
}
|
|
6755
6102
|
) }, item.label));
|
|
6756
6103
|
}, [footerLinks, footerLinkClassName]);
|
|
6757
|
-
const renderForm =
|
|
6104
|
+
const renderForm = React32.useMemo(() => {
|
|
6758
6105
|
if (formSlot) return formSlot;
|
|
6759
6106
|
if (!formEngineSetup) return null;
|
|
6760
6107
|
const defaultButtonAction = {
|
|
@@ -9394,7 +8741,7 @@ function AboutInteractiveTabs({
|
|
|
9394
8741
|
pattern,
|
|
9395
8742
|
patternOpacity
|
|
9396
8743
|
}) {
|
|
9397
|
-
const [activeTab, setActiveTab] =
|
|
8744
|
+
const [activeTab, setActiveTab] = React32.useState(tabs?.[0]?.id ?? "");
|
|
9398
8745
|
const activeContent = useMemo(() => {
|
|
9399
8746
|
return tabs?.find((tab) => tab.id === activeTab)?.content;
|
|
9400
8747
|
}, [tabs, activeTab]);
|
|
@@ -9543,7 +8890,7 @@ function AboutMissionDualImage({
|
|
|
9543
8890
|
pattern,
|
|
9544
8891
|
patternOpacity
|
|
9545
8892
|
}) {
|
|
9546
|
-
const renderTextContent =
|
|
8893
|
+
const renderTextContent = React32.useCallback(
|
|
9547
8894
|
(primaryHeading, primaryClassName, secondaryContent, secondaryClassname) => {
|
|
9548
8895
|
if (!primaryHeading || !secondaryContent) {
|
|
9549
8896
|
return null;
|
|
@@ -12233,7 +11580,7 @@ function CtaAppDownloadNewsletter({
|
|
|
12233
11580
|
buttonAction,
|
|
12234
11581
|
formSlot
|
|
12235
11582
|
}) {
|
|
12236
|
-
const renderForm =
|
|
11583
|
+
const renderForm = React32.useMemo(() => {
|
|
12237
11584
|
if (formSlot) return formSlot;
|
|
12238
11585
|
if (!formEngineSetup) return null;
|
|
12239
11586
|
const defaultButtonAction = {
|
|
@@ -12266,7 +11613,7 @@ function CtaAppDownloadNewsletter({
|
|
|
12266
11613
|
}
|
|
12267
11614
|
);
|
|
12268
11615
|
}, [formSlot, formEngineSetup, buttonAction, formClassName]);
|
|
12269
|
-
const appActionsContent =
|
|
11616
|
+
const appActionsContent = React32.useMemo(() => {
|
|
12270
11617
|
if (appActionsSlot) return appActionsSlot;
|
|
12271
11618
|
if (!appActions || appActions.length === 0) return null;
|
|
12272
11619
|
return /* @__PURE__ */ jsx(
|
|
@@ -12407,7 +11754,7 @@ function CtaNewsletterFeatures({
|
|
|
12407
11754
|
formEngineSetup,
|
|
12408
11755
|
buttonAction
|
|
12409
11756
|
}) {
|
|
12410
|
-
const renderForm =
|
|
11757
|
+
const renderForm = React32.useMemo(() => {
|
|
12411
11758
|
if (formSlot) return formSlot;
|
|
12412
11759
|
if (!formEngineSetup) return null;
|
|
12413
11760
|
const defaultButtonAction = {
|
|
@@ -12440,7 +11787,7 @@ function CtaNewsletterFeatures({
|
|
|
12440
11787
|
}
|
|
12441
11788
|
);
|
|
12442
11789
|
}, [formSlot, formEngineSetup, buttonAction, formClassName]);
|
|
12443
|
-
const featuresContent =
|
|
11790
|
+
const featuresContent = React32.useMemo(() => {
|
|
12444
11791
|
if (featuresSlot) return featuresSlot;
|
|
12445
11792
|
if (!features || features.length === 0) return null;
|
|
12446
11793
|
return /* @__PURE__ */ jsx(
|
|
@@ -13212,7 +12559,7 @@ function CtaVideoBackgroundHero({
|
|
|
13212
12559
|
pattern,
|
|
13213
12560
|
patternOpacity
|
|
13214
12561
|
}) {
|
|
13215
|
-
const [isModalOpen, setIsModalOpen] =
|
|
12562
|
+
const [isModalOpen, setIsModalOpen] = React32.useState(false);
|
|
13216
12563
|
const handleOpenModal = () => {
|
|
13217
12564
|
setIsModalOpen(true);
|
|
13218
12565
|
onModalOpen?.();
|
|
@@ -13400,7 +12747,7 @@ function CtaWorkflowTabs({
|
|
|
13400
12747
|
patternOpacity,
|
|
13401
12748
|
optixFlowConfig
|
|
13402
12749
|
}) {
|
|
13403
|
-
const [activeTab, setActiveTab] =
|
|
12750
|
+
const [activeTab, setActiveTab] = React32.useState(tabs?.[0]?.id || "");
|
|
13404
12751
|
const activeTabData = tabs?.find((tab) => tab.id === activeTab) || tabs?.[0];
|
|
13405
12752
|
const actionsContent = useMemo(() => {
|
|
13406
12753
|
if (actionsSlot) return actionsSlot;
|
|
@@ -14008,7 +13355,7 @@ function ContactFloatingBanner({
|
|
|
14008
13355
|
pattern,
|
|
14009
13356
|
patternOpacity
|
|
14010
13357
|
}) {
|
|
14011
|
-
const actionsContent =
|
|
13358
|
+
const actionsContent = React32.useMemo(() => {
|
|
14012
13359
|
if (actionsSlot) return actionsSlot;
|
|
14013
13360
|
if (actions && actions.length > 0) {
|
|
14014
13361
|
return actions.map((action, index) => {
|
|
@@ -14352,7 +13699,7 @@ function ContactCard({
|
|
|
14352
13699
|
pattern,
|
|
14353
13700
|
patternOpacity
|
|
14354
13701
|
}) {
|
|
14355
|
-
const contactOptionsContent =
|
|
13702
|
+
const contactOptionsContent = React32.useMemo(() => {
|
|
14356
13703
|
if (contactOptionsSlot) return contactOptionsSlot;
|
|
14357
13704
|
if (contactOptions && contactOptions.length > 0) {
|
|
14358
13705
|
return contactOptions.map((option, key) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
@@ -14376,7 +13723,7 @@ function ContactCard({
|
|
|
14376
13723
|
}
|
|
14377
13724
|
return null;
|
|
14378
13725
|
}, [contactOptionsSlot, contactOptions]);
|
|
14379
|
-
const socialLinksContent =
|
|
13726
|
+
const socialLinksContent = React32.useMemo(() => {
|
|
14380
13727
|
if (socialLinksSlot) return socialLinksSlot;
|
|
14381
13728
|
if (socialLinks && socialLinks.length > 0) {
|
|
14382
13729
|
return socialLinks.map((social, key) => /* @__PURE__ */ jsx(
|
|
@@ -15283,7 +14630,7 @@ function ContactDark({
|
|
|
15283
14630
|
pattern,
|
|
15284
14631
|
patternOpacity
|
|
15285
14632
|
}) {
|
|
15286
|
-
const contactOptionsContent =
|
|
14633
|
+
const contactOptionsContent = React32.useMemo(() => {
|
|
15287
14634
|
if (contactOptionsSlot) return contactOptionsSlot;
|
|
15288
14635
|
if (contactOptions && contactOptions.length > 0) {
|
|
15289
14636
|
return contactOptions.map((option, key) => /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
@@ -15307,7 +14654,7 @@ function ContactDark({
|
|
|
15307
14654
|
}
|
|
15308
14655
|
return null;
|
|
15309
14656
|
}, [contactOptionsSlot, contactOptions]);
|
|
15310
|
-
const socialLinksContent =
|
|
14657
|
+
const socialLinksContent = React32.useMemo(() => {
|
|
15311
14658
|
if (socialLinksSlot) return socialLinksSlot;
|
|
15312
14659
|
if (socialLinks && socialLinks.length > 0) {
|
|
15313
14660
|
return socialLinks.map((social, key) => /* @__PURE__ */ jsx(
|
|
@@ -16602,7 +15949,7 @@ function ContactImage({
|
|
|
16602
15949
|
description,
|
|
16603
15950
|
descriptionClassName
|
|
16604
15951
|
]);
|
|
16605
|
-
const contactOverlaysContent =
|
|
15952
|
+
const contactOverlaysContent = React32.useMemo(() => {
|
|
16606
15953
|
if (contactOverlaysSlot) return contactOverlaysSlot;
|
|
16607
15954
|
if (!contactOverlays || contactOverlays.length === 0) return null;
|
|
16608
15955
|
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-3", contactOverlaysClassName), children: contactOverlays.map((item, index) => {
|
|
@@ -17234,7 +16581,7 @@ function ContactMap({
|
|
|
17234
16581
|
mapProps,
|
|
17235
16582
|
optixFlowConfig
|
|
17236
16583
|
}) {
|
|
17237
|
-
const renderForm =
|
|
16584
|
+
const renderForm = React32.useMemo(() => {
|
|
17238
16585
|
if (!formEngineSetup) {
|
|
17239
16586
|
return null;
|
|
17240
16587
|
}
|
|
@@ -17247,13 +16594,16 @@ function ContactMap({
|
|
|
17247
16594
|
}
|
|
17248
16595
|
);
|
|
17249
16596
|
}, [formEngineSetup]);
|
|
17250
|
-
const resolvedMapProps =
|
|
16597
|
+
const resolvedMapProps = React32.useMemo(() => {
|
|
17251
16598
|
return {
|
|
17252
16599
|
mapWrapperClassName: "h-[420px] md:h-[520px]",
|
|
17253
16600
|
panelPosition: "top-left",
|
|
17254
16601
|
...mapProps,
|
|
17255
16602
|
className: cn("h-full w-full", mapClassName, mapProps?.className),
|
|
17256
|
-
optixFlowConfig
|
|
16603
|
+
optixFlowConfig,
|
|
16604
|
+
// Provide icon and image components for rich marker panels
|
|
16605
|
+
IconComponent: DynamicIcon,
|
|
16606
|
+
ImgComponent: Img
|
|
17257
16607
|
};
|
|
17258
16608
|
}, [mapClassName, mapProps, optixFlowConfig]);
|
|
17259
16609
|
return /* @__PURE__ */ jsx(
|
|
@@ -17842,13 +17192,13 @@ function ContactPhotography({
|
|
|
17842
17192
|
}
|
|
17843
17193
|
return items;
|
|
17844
17194
|
}, [heading, headingClassName, description, descriptionClassName]);
|
|
17845
|
-
const desktopOrder =
|
|
17195
|
+
const desktopOrder = React32.useMemo(() => {
|
|
17846
17196
|
return directionConfig.desktop === "mediaRight" ? "lg:flex-row" : "lg:flex-row-reverse";
|
|
17847
17197
|
}, [directionConfig?.desktop]);
|
|
17848
|
-
const mobileOrder =
|
|
17198
|
+
const mobileOrder = React32.useMemo(() => {
|
|
17849
17199
|
return directionConfig?.mobile === "mediaTop" ? "flex-col" : "flex-col-reverse";
|
|
17850
17200
|
}, [directionConfig?.mobile]);
|
|
17851
|
-
const imageArea =
|
|
17201
|
+
const imageArea = React32.useMemo(() => {
|
|
17852
17202
|
if (!image?.src) {
|
|
17853
17203
|
return null;
|
|
17854
17204
|
}
|
|
@@ -19834,16 +19184,16 @@ function CarouselAnimatedSections({
|
|
|
19834
19184
|
pattern = "diagonalCrossBasic",
|
|
19835
19185
|
patternOpacity = 0.033
|
|
19836
19186
|
}) {
|
|
19837
|
-
const [currentIndex, setCurrentIndex] =
|
|
19838
|
-
const [direction, setDirection] =
|
|
19839
|
-
const [isAnimating, setIsAnimating] =
|
|
19840
|
-
const goToNext =
|
|
19187
|
+
const [currentIndex, setCurrentIndex] = React32.useState(0);
|
|
19188
|
+
const [direction, setDirection] = React32.useState(0);
|
|
19189
|
+
const [isAnimating, setIsAnimating] = React32.useState(false);
|
|
19190
|
+
const goToNext = React32.useCallback(() => {
|
|
19841
19191
|
if (isAnimating || currentIndex >= (sections?.length ?? 0) - 1) return;
|
|
19842
19192
|
setIsAnimating(true);
|
|
19843
19193
|
setDirection(1);
|
|
19844
19194
|
setCurrentIndex((prev) => prev + 1);
|
|
19845
19195
|
}, [currentIndex, isAnimating, sections?.length]);
|
|
19846
|
-
const goToPrev =
|
|
19196
|
+
const goToPrev = React32.useCallback(() => {
|
|
19847
19197
|
if (isAnimating || currentIndex <= 0) return;
|
|
19848
19198
|
setIsAnimating(true);
|
|
19849
19199
|
setDirection(-1);
|
|
@@ -19855,7 +19205,7 @@ function CarouselAnimatedSections({
|
|
|
19855
19205
|
setDirection(index > currentIndex ? 1 : -1);
|
|
19856
19206
|
setCurrentIndex(index);
|
|
19857
19207
|
};
|
|
19858
|
-
|
|
19208
|
+
React32.useEffect(() => {
|
|
19859
19209
|
const handleKeyDown = (e) => {
|
|
19860
19210
|
if (e.key === "ArrowDown" || e.key === "ArrowRight") {
|
|
19861
19211
|
goToNext();
|
|
@@ -19881,7 +19231,7 @@ function CarouselAnimatedSections({
|
|
|
19881
19231
|
})
|
|
19882
19232
|
};
|
|
19883
19233
|
const currentSection = sections?.[currentIndex];
|
|
19884
|
-
const actionElements =
|
|
19234
|
+
const actionElements = React32.useMemo(() => {
|
|
19885
19235
|
if (actionsSlot) return actionsSlot;
|
|
19886
19236
|
if (actions && actions.length > 0) {
|
|
19887
19237
|
return actions.map((action, index) => /* @__PURE__ */ jsxs(
|
|
@@ -20131,11 +19481,11 @@ function CarouselAutoProgressSlides({
|
|
|
20131
19481
|
pattern,
|
|
20132
19482
|
patternOpacity
|
|
20133
19483
|
}) {
|
|
20134
|
-
const [currentIndex, setCurrentIndex] =
|
|
19484
|
+
const [currentIndex, setCurrentIndex] = React32.useState(0);
|
|
20135
19485
|
const progress = useMotionValue(100);
|
|
20136
|
-
const [direction, setDirection] =
|
|
19486
|
+
const [direction, setDirection] = React32.useState(1);
|
|
20137
19487
|
const clipPath = useMotionTemplate`inset(0 ${progress}% 0 0 round 10px)`;
|
|
20138
|
-
|
|
19488
|
+
React32.useEffect(() => {
|
|
20139
19489
|
const interval = setInterval(() => {
|
|
20140
19490
|
const currentProgress = progress.get();
|
|
20141
19491
|
if (currentProgress > 0) {
|
|
@@ -20314,22 +19664,22 @@ function CarouselAutoProgressSlides({
|
|
|
20314
19664
|
);
|
|
20315
19665
|
}
|
|
20316
19666
|
function useDotButton(emblaApi) {
|
|
20317
|
-
const [selectedIndex, setSelectedIndex] =
|
|
20318
|
-
const [scrollSnaps, setScrollSnaps] =
|
|
20319
|
-
const onDotButtonClick =
|
|
19667
|
+
const [selectedIndex, setSelectedIndex] = React32.useState(0);
|
|
19668
|
+
const [scrollSnaps, setScrollSnaps] = React32.useState([]);
|
|
19669
|
+
const onDotButtonClick = React32.useCallback(
|
|
20320
19670
|
(index) => {
|
|
20321
19671
|
if (!emblaApi) return;
|
|
20322
19672
|
emblaApi.scrollTo(index);
|
|
20323
19673
|
},
|
|
20324
19674
|
[emblaApi]
|
|
20325
19675
|
);
|
|
20326
|
-
const onInit =
|
|
19676
|
+
const onInit = React32.useCallback((api) => {
|
|
20327
19677
|
setScrollSnaps(api.scrollSnapList());
|
|
20328
19678
|
}, []);
|
|
20329
|
-
const onSelect =
|
|
19679
|
+
const onSelect = React32.useCallback((api) => {
|
|
20330
19680
|
setSelectedIndex(api.selectedScrollSnap());
|
|
20331
19681
|
}, []);
|
|
20332
|
-
|
|
19682
|
+
React32.useEffect(() => {
|
|
20333
19683
|
if (!emblaApi) return;
|
|
20334
19684
|
onInit(emblaApi);
|
|
20335
19685
|
onSelect(emblaApi);
|
|
@@ -20338,8 +19688,8 @@ function useDotButton(emblaApi) {
|
|
|
20338
19688
|
return { selectedIndex, scrollSnaps, onDotButtonClick };
|
|
20339
19689
|
}
|
|
20340
19690
|
function useAutoplay(emblaApi) {
|
|
20341
|
-
const [autoplayIsPlaying, setAutoplayIsPlaying] =
|
|
20342
|
-
const onAutoplayButtonClick =
|
|
19691
|
+
const [autoplayIsPlaying, setAutoplayIsPlaying] = React32.useState(false);
|
|
19692
|
+
const onAutoplayButtonClick = React32.useCallback(
|
|
20343
19693
|
(callback) => {
|
|
20344
19694
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
20345
19695
|
if (!autoplay) return;
|
|
@@ -20349,13 +19699,13 @@ function useAutoplay(emblaApi) {
|
|
|
20349
19699
|
},
|
|
20350
19700
|
[emblaApi]
|
|
20351
19701
|
);
|
|
20352
|
-
const toggleAutoplay =
|
|
19702
|
+
const toggleAutoplay = React32.useCallback(() => {
|
|
20353
19703
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
20354
19704
|
if (!autoplay) return;
|
|
20355
19705
|
const playOrStop = autoplay.isPlaying() ? autoplay.stop : autoplay.play;
|
|
20356
19706
|
playOrStop();
|
|
20357
19707
|
}, [emblaApi]);
|
|
20358
|
-
|
|
19708
|
+
React32.useEffect(() => {
|
|
20359
19709
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
20360
19710
|
if (!autoplay) return;
|
|
20361
19711
|
setAutoplayIsPlaying(autoplay.isPlaying());
|
|
@@ -20364,11 +19714,11 @@ function useAutoplay(emblaApi) {
|
|
|
20364
19714
|
return { autoplayIsPlaying, toggleAutoplay, onAutoplayButtonClick };
|
|
20365
19715
|
}
|
|
20366
19716
|
function useAutoplayProgress(emblaApi, progressNode) {
|
|
20367
|
-
const [showAutoplayProgress, setShowAutoplayProgress] =
|
|
20368
|
-
const animationName =
|
|
20369
|
-
const timeoutId =
|
|
20370
|
-
const rafId =
|
|
20371
|
-
const startProgress =
|
|
19717
|
+
const [showAutoplayProgress, setShowAutoplayProgress] = React32.useState(false);
|
|
19718
|
+
const animationName = React32.useRef("");
|
|
19719
|
+
const timeoutId = React32.useRef(0);
|
|
19720
|
+
const rafId = React32.useRef(0);
|
|
19721
|
+
const startProgress = React32.useCallback(
|
|
20372
19722
|
(timeUntilNext) => {
|
|
20373
19723
|
const node = progressNode.current;
|
|
20374
19724
|
if (!node || timeUntilNext === null) return;
|
|
@@ -20388,12 +19738,12 @@ function useAutoplayProgress(emblaApi, progressNode) {
|
|
|
20388
19738
|
},
|
|
20389
19739
|
[progressNode]
|
|
20390
19740
|
);
|
|
20391
|
-
|
|
19741
|
+
React32.useEffect(() => {
|
|
20392
19742
|
const autoplay = emblaApi?.plugins()?.autoplay;
|
|
20393
19743
|
if (!autoplay) return;
|
|
20394
19744
|
emblaApi.on("autoplay:timerset", () => startProgress(autoplay.timeUntilNext())).on("autoplay:timerstopped", () => setShowAutoplayProgress(false));
|
|
20395
19745
|
}, [emblaApi, startProgress]);
|
|
20396
|
-
|
|
19746
|
+
React32.useEffect(() => {
|
|
20397
19747
|
return () => {
|
|
20398
19748
|
cancelAnimationFrame(rafId.current);
|
|
20399
19749
|
clearTimeout(timeoutId.current);
|
|
@@ -20420,7 +19770,7 @@ function CarouselAutoplayProgress({
|
|
|
20420
19770
|
pattern,
|
|
20421
19771
|
patternOpacity
|
|
20422
19772
|
}) {
|
|
20423
|
-
const progressNode =
|
|
19773
|
+
const progressNode = React32.useRef(null);
|
|
20424
19774
|
const [emblaRef, emblaApi] = useEmblaCarousel(options, [
|
|
20425
19775
|
Autoplay({ playOnInit: true, delay: autoplayDelay })
|
|
20426
19776
|
]);
|
|
@@ -20543,20 +19893,20 @@ function CarouselFeatureBadge({
|
|
|
20543
19893
|
containerMaxWidth = "2xl"
|
|
20544
19894
|
}) {
|
|
20545
19895
|
const [emblaRef, emblaApi] = useEmblaCarousel();
|
|
20546
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
20547
|
-
const [canScrollNext, setCanScrollNext] =
|
|
20548
|
-
const scrollPrev =
|
|
19896
|
+
const [canScrollPrev, setCanScrollPrev] = React32.useState(false);
|
|
19897
|
+
const [canScrollNext, setCanScrollNext] = React32.useState(false);
|
|
19898
|
+
const scrollPrev = React32.useCallback(() => {
|
|
20549
19899
|
emblaApi?.scrollPrev();
|
|
20550
19900
|
}, [emblaApi]);
|
|
20551
|
-
const scrollNext =
|
|
19901
|
+
const scrollNext = React32.useCallback(() => {
|
|
20552
19902
|
emblaApi?.scrollNext();
|
|
20553
19903
|
}, [emblaApi]);
|
|
20554
|
-
const onSelect =
|
|
19904
|
+
const onSelect = React32.useCallback(() => {
|
|
20555
19905
|
if (!emblaApi) return;
|
|
20556
19906
|
setCanScrollPrev(emblaApi.canScrollPrev());
|
|
20557
19907
|
setCanScrollNext(emblaApi.canScrollNext());
|
|
20558
19908
|
}, [emblaApi]);
|
|
20559
|
-
|
|
19909
|
+
React32.useEffect(() => {
|
|
20560
19910
|
if (!emblaApi) return;
|
|
20561
19911
|
onSelect();
|
|
20562
19912
|
emblaApi.on("reInit", onSelect);
|
|
@@ -20676,10 +20026,10 @@ function CarouselFullscreenScrollFx({
|
|
|
20676
20026
|
pattern = "diagonalCrossBasic",
|
|
20677
20027
|
patternOpacity = 0.033
|
|
20678
20028
|
}) {
|
|
20679
|
-
const containerRef =
|
|
20680
|
-
const scrollContainerRef =
|
|
20681
|
-
const [activeIndex, setActiveIndex] =
|
|
20682
|
-
|
|
20029
|
+
const containerRef = React32.useRef(null);
|
|
20030
|
+
const scrollContainerRef = React32.useRef(null);
|
|
20031
|
+
const [activeIndex, setActiveIndex] = React32.useState(0);
|
|
20032
|
+
React32.useEffect(() => {
|
|
20683
20033
|
const scrollContainer = scrollContainerRef.current;
|
|
20684
20034
|
if (!scrollContainer || !slides?.length) return;
|
|
20685
20035
|
const handleScroll = () => {
|
|
@@ -20691,7 +20041,7 @@ function CarouselFullscreenScrollFx({
|
|
|
20691
20041
|
scrollContainer.addEventListener("scroll", handleScroll);
|
|
20692
20042
|
return () => scrollContainer.removeEventListener("scroll", handleScroll);
|
|
20693
20043
|
}, [slides]);
|
|
20694
|
-
const scrollToSlide =
|
|
20044
|
+
const scrollToSlide = React32.useCallback((index) => {
|
|
20695
20045
|
const scrollContainer = scrollContainerRef.current;
|
|
20696
20046
|
if (!scrollContainer) return;
|
|
20697
20047
|
const slideHeight = scrollContainer.clientHeight;
|
|
@@ -20774,7 +20124,7 @@ function CarouselFullscreenScrollFx({
|
|
|
20774
20124
|
className: "flex h-screen flex-col snap-y snap-mandatory overflow-x-hidden overflow-y-auto scroll-smooth",
|
|
20775
20125
|
style: { scrollbarWidth: "none", msOverflowStyle: "none" },
|
|
20776
20126
|
children: slidesSlot ? slidesSlot : slides?.map((slide, index) => {
|
|
20777
|
-
const renderActions =
|
|
20127
|
+
const renderActions = React32.useMemo(() => {
|
|
20778
20128
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
20779
20129
|
return slide.actions.map((action, actionIndex) => {
|
|
20780
20130
|
const {
|
|
@@ -20908,25 +20258,25 @@ function CarouselGalleryThumbnails({
|
|
|
20908
20258
|
slideMediaBrightness,
|
|
20909
20259
|
slideMediaOverlayIntensity = "default"
|
|
20910
20260
|
}) {
|
|
20911
|
-
const [currentIndex, setCurrentIndex] =
|
|
20912
|
-
const prevSlide =
|
|
20261
|
+
const [currentIndex, setCurrentIndex] = React32.useState(0);
|
|
20262
|
+
const prevSlide = React32.useCallback(() => {
|
|
20913
20263
|
setCurrentIndex(
|
|
20914
20264
|
(prev) => prev === 0 ? (images?.length ?? 0) - 1 : prev - 1
|
|
20915
20265
|
);
|
|
20916
20266
|
}, [images?.length]);
|
|
20917
|
-
const nextSlide =
|
|
20267
|
+
const nextSlide = React32.useCallback(() => {
|
|
20918
20268
|
setCurrentIndex(
|
|
20919
20269
|
(prev) => prev === (images?.length ?? 0) - 1 ? 0 : prev + 1
|
|
20920
20270
|
);
|
|
20921
20271
|
}, [images?.length]);
|
|
20922
|
-
|
|
20272
|
+
React32.useEffect(() => {
|
|
20923
20273
|
if (!autoPlay) return;
|
|
20924
20274
|
const interval = setInterval(() => {
|
|
20925
20275
|
nextSlide();
|
|
20926
20276
|
}, autoPlayInterval);
|
|
20927
20277
|
return () => clearInterval(interval);
|
|
20928
20278
|
}, [currentIndex, autoPlay, autoPlayInterval, nextSlide]);
|
|
20929
|
-
|
|
20279
|
+
React32.useEffect(() => {
|
|
20930
20280
|
const handleKeyDown = (e) => {
|
|
20931
20281
|
if (e.key === "ArrowRight") {
|
|
20932
20282
|
nextSlide();
|
|
@@ -21073,9 +20423,9 @@ function CarouselHorizontalCards({
|
|
|
21073
20423
|
pattern,
|
|
21074
20424
|
patternOpacity
|
|
21075
20425
|
}) {
|
|
21076
|
-
const carouselRef =
|
|
21077
|
-
const [isAtStart, setIsAtStart] =
|
|
21078
|
-
const [isAtEnd, setIsAtEnd] =
|
|
20426
|
+
const carouselRef = React32.useRef(null);
|
|
20427
|
+
const [isAtStart, setIsAtStart] = React32.useState(true);
|
|
20428
|
+
const [isAtEnd, setIsAtEnd] = React32.useState(false);
|
|
21079
20429
|
const scrollLeft = () => {
|
|
21080
20430
|
if (carouselRef.current) {
|
|
21081
20431
|
carouselRef.current.scrollBy({ left: -300, behavior: "smooth" });
|
|
@@ -21086,7 +20436,7 @@ function CarouselHorizontalCards({
|
|
|
21086
20436
|
carouselRef.current.scrollBy({ left: 300, behavior: "smooth" });
|
|
21087
20437
|
}
|
|
21088
20438
|
};
|
|
21089
|
-
|
|
20439
|
+
React32.useEffect(() => {
|
|
21090
20440
|
const checkScrollPosition = () => {
|
|
21091
20441
|
if (carouselRef.current) {
|
|
21092
20442
|
const { scrollLeft: scrollLeft2, scrollWidth, clientWidth } = carouselRef.current;
|
|
@@ -21286,13 +20636,13 @@ function CarouselImageHero({
|
|
|
21286
20636
|
pattern,
|
|
21287
20637
|
patternOpacity
|
|
21288
20638
|
}) {
|
|
21289
|
-
const hasImages =
|
|
20639
|
+
const hasImages = React32.useMemo(() => {
|
|
21290
20640
|
return images && images?.length > 0;
|
|
21291
20641
|
}, [images]);
|
|
21292
|
-
const [currentImageIndex, setCurrentImageIndex] =
|
|
20642
|
+
const [currentImageIndex, setCurrentImageIndex] = React32.useState(0);
|
|
21293
20643
|
const progress = useMotionValue(100);
|
|
21294
20644
|
const clipPath = useMotionTemplate`inset(0 ${progress}% 0 0 round 10px)`;
|
|
21295
|
-
|
|
20645
|
+
React32.useEffect(() => {
|
|
21296
20646
|
if (!hasImages || (images?.length ?? 0) < 2) return;
|
|
21297
20647
|
const tickInterval = autoPlayInterval / 100;
|
|
21298
20648
|
const interval = setInterval(() => {
|
|
@@ -21314,19 +20664,19 @@ function CarouselImageHero({
|
|
|
21314
20664
|
autoPlayInterval,
|
|
21315
20665
|
hasImages
|
|
21316
20666
|
]);
|
|
21317
|
-
const handlePrev =
|
|
20667
|
+
const handlePrev = React32.useCallback(() => {
|
|
21318
20668
|
progress.set(100);
|
|
21319
20669
|
setCurrentImageIndex(
|
|
21320
20670
|
(prevIndex) => prevIndex > 0 ? prevIndex - 1 : (images?.length ?? 1) - 1
|
|
21321
20671
|
);
|
|
21322
20672
|
}, [images?.length, progress]);
|
|
21323
|
-
const handleNext =
|
|
20673
|
+
const handleNext = React32.useCallback(() => {
|
|
21324
20674
|
progress.set(100);
|
|
21325
20675
|
setCurrentImageIndex(
|
|
21326
20676
|
(prevIndex) => prevIndex < (images?.length ?? 0) - 1 ? prevIndex + 1 : 0
|
|
21327
20677
|
);
|
|
21328
20678
|
}, [images?.length, progress]);
|
|
21329
|
-
const handleDotClick =
|
|
20679
|
+
const handleDotClick = React32.useCallback(
|
|
21330
20680
|
(index) => {
|
|
21331
20681
|
progress.set(100);
|
|
21332
20682
|
setCurrentImageIndex(index);
|
|
@@ -21503,8 +20853,8 @@ function CarouselMultiStepShowcase({
|
|
|
21503
20853
|
pattern,
|
|
21504
20854
|
patternOpacity
|
|
21505
20855
|
}) {
|
|
21506
|
-
const [activeStep, setActiveStep] =
|
|
21507
|
-
const [direction, setDirection] =
|
|
20856
|
+
const [activeStep, setActiveStep] = React32.useState(0);
|
|
20857
|
+
const [direction, setDirection] = React32.useState(0);
|
|
21508
20858
|
const goToStep = (index) => {
|
|
21509
20859
|
setDirection(index > activeStep ? 1 : -1);
|
|
21510
20860
|
setActiveStep(index);
|
|
@@ -21797,9 +21147,9 @@ function CarouselPortfolioHero({
|
|
|
21797
21147
|
slideMediaBrightness,
|
|
21798
21148
|
slideMediaOverlayIntensity = "high"
|
|
21799
21149
|
}) {
|
|
21800
|
-
const [currentIndex, setCurrentIndex] =
|
|
21801
|
-
const intervalRef =
|
|
21802
|
-
const resetInterval =
|
|
21150
|
+
const [currentIndex, setCurrentIndex] = React32.useState(0);
|
|
21151
|
+
const intervalRef = React32.useRef(null);
|
|
21152
|
+
const resetInterval = React32.useCallback(() => {
|
|
21803
21153
|
if (intervalRef.current) {
|
|
21804
21154
|
clearInterval(intervalRef.current);
|
|
21805
21155
|
}
|
|
@@ -21807,17 +21157,17 @@ function CarouselPortfolioHero({
|
|
|
21807
21157
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
21808
21158
|
}, autoPlayInterval);
|
|
21809
21159
|
}, [autoPlayInterval, slides?.length]);
|
|
21810
|
-
const goToNext =
|
|
21160
|
+
const goToNext = React32.useCallback(() => {
|
|
21811
21161
|
setCurrentIndex((prevIndex) => (prevIndex + 1) % (slides?.length ?? 1));
|
|
21812
21162
|
resetInterval();
|
|
21813
21163
|
}, [slides?.length, resetInterval]);
|
|
21814
|
-
const goToPrev =
|
|
21164
|
+
const goToPrev = React32.useCallback(() => {
|
|
21815
21165
|
setCurrentIndex(
|
|
21816
21166
|
(prevIndex) => (prevIndex - 1 + (slides?.length ?? 1)) % (slides?.length ?? 1)
|
|
21817
21167
|
);
|
|
21818
21168
|
resetInterval();
|
|
21819
21169
|
}, [slides?.length, resetInterval]);
|
|
21820
|
-
|
|
21170
|
+
React32.useEffect(() => {
|
|
21821
21171
|
resetInterval();
|
|
21822
21172
|
return () => {
|
|
21823
21173
|
if (intervalRef.current) {
|
|
@@ -21988,9 +21338,9 @@ function CarouselProductFeatureShowcase({
|
|
|
21988
21338
|
pattern,
|
|
21989
21339
|
patternOpacity
|
|
21990
21340
|
}) {
|
|
21991
|
-
const [activeIndex, setActiveIndex] =
|
|
21992
|
-
const [activeColorIndex, setActiveColorIndex] =
|
|
21993
|
-
const [direction, setDirection] =
|
|
21341
|
+
const [activeIndex, setActiveIndex] = React32.useState(0);
|
|
21342
|
+
const [activeColorIndex, setActiveColorIndex] = React32.useState(0);
|
|
21343
|
+
const [direction, setDirection] = React32.useState(0);
|
|
21994
21344
|
const activeFeature = features?.[activeIndex];
|
|
21995
21345
|
const goToNext = () => {
|
|
21996
21346
|
setDirection(1);
|
|
@@ -22210,9 +21560,9 @@ function CarouselProductFeatureShowcase({
|
|
|
22210
21560
|
}
|
|
22211
21561
|
);
|
|
22212
21562
|
}
|
|
22213
|
-
var ProgressSliderContext =
|
|
21563
|
+
var ProgressSliderContext = React32.createContext(void 0);
|
|
22214
21564
|
function useProgressSliderContext() {
|
|
22215
|
-
const context =
|
|
21565
|
+
const context = React32.useContext(ProgressSliderContext);
|
|
22216
21566
|
if (!context) {
|
|
22217
21567
|
throw new Error(
|
|
22218
21568
|
"useProgressSliderContext must be used within a ProgressSlider"
|
|
@@ -22298,19 +21648,19 @@ function CarouselProgressSlider({
|
|
|
22298
21648
|
pattern,
|
|
22299
21649
|
patternOpacity
|
|
22300
21650
|
}) {
|
|
22301
|
-
const [active, setActive] =
|
|
22302
|
-
const [progress, setProgress] =
|
|
22303
|
-
const [isFastForward, setIsFastForward] =
|
|
22304
|
-
const [isPaused, setIsPaused] =
|
|
22305
|
-
const frame =
|
|
22306
|
-
const firstFrameTime =
|
|
22307
|
-
const targetValue =
|
|
22308
|
-
const pausedProgress =
|
|
22309
|
-
const sliderValues =
|
|
21651
|
+
const [active, setActive] = React32.useState(slides?.[0]?.id ?? "");
|
|
21652
|
+
const [progress, setProgress] = React32.useState(0);
|
|
21653
|
+
const [isFastForward, setIsFastForward] = React32.useState(false);
|
|
21654
|
+
const [isPaused, setIsPaused] = React32.useState(false);
|
|
21655
|
+
const frame = React32.useRef(0);
|
|
21656
|
+
const firstFrameTime = React32.useRef(performance.now());
|
|
21657
|
+
const targetValue = React32.useRef(null);
|
|
21658
|
+
const pausedProgress = React32.useRef(0);
|
|
21659
|
+
const sliderValues = React32.useMemo(
|
|
22310
21660
|
() => slides?.map((slide) => slide.id),
|
|
22311
21661
|
[slides]
|
|
22312
21662
|
);
|
|
22313
|
-
|
|
21663
|
+
React32.useEffect(() => {
|
|
22314
21664
|
if ((sliderValues?.length ?? 0) > 0 && !isPaused) {
|
|
22315
21665
|
firstFrameTime.current = performance.now();
|
|
22316
21666
|
if (pausedProgress.current > 0) {
|
|
@@ -22476,11 +21826,11 @@ function CarouselScrollingFeatureShowcase({
|
|
|
22476
21826
|
patternOpacity,
|
|
22477
21827
|
patternClassName
|
|
22478
21828
|
}) {
|
|
22479
|
-
const [activeFeature, setActiveFeature] =
|
|
21829
|
+
const [activeFeature, setActiveFeature] = React32.useState(
|
|
22480
21830
|
features?.[0]?.id ?? ""
|
|
22481
21831
|
);
|
|
22482
|
-
const featureRefs =
|
|
22483
|
-
|
|
21832
|
+
const featureRefs = React32.useRef(/* @__PURE__ */ new Map());
|
|
21833
|
+
React32.useEffect(() => {
|
|
22484
21834
|
if (!features || features.length === 0) return;
|
|
22485
21835
|
const observerOptions = {
|
|
22486
21836
|
root: null,
|
|
@@ -23397,9 +22747,9 @@ function FeatureChecklistImage({
|
|
|
23397
22747
|
}
|
|
23398
22748
|
);
|
|
23399
22749
|
}
|
|
23400
|
-
var CarouselContext =
|
|
22750
|
+
var CarouselContext = React32.createContext(null);
|
|
23401
22751
|
function useCarousel() {
|
|
23402
|
-
const context =
|
|
22752
|
+
const context = React32.useContext(CarouselContext);
|
|
23403
22753
|
if (!context) {
|
|
23404
22754
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
23405
22755
|
}
|
|
@@ -23421,20 +22771,20 @@ function Carousel({
|
|
|
23421
22771
|
},
|
|
23422
22772
|
plugins
|
|
23423
22773
|
);
|
|
23424
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
23425
|
-
const [canScrollNext, setCanScrollNext] =
|
|
23426
|
-
const onSelect =
|
|
22774
|
+
const [canScrollPrev, setCanScrollPrev] = React32.useState(false);
|
|
22775
|
+
const [canScrollNext, setCanScrollNext] = React32.useState(false);
|
|
22776
|
+
const onSelect = React32.useCallback((api2) => {
|
|
23427
22777
|
if (!api2) return;
|
|
23428
22778
|
setCanScrollPrev(api2.canScrollPrev());
|
|
23429
22779
|
setCanScrollNext(api2.canScrollNext());
|
|
23430
22780
|
}, []);
|
|
23431
|
-
const scrollPrev =
|
|
22781
|
+
const scrollPrev = React32.useCallback(() => {
|
|
23432
22782
|
api?.scrollPrev();
|
|
23433
22783
|
}, [api]);
|
|
23434
|
-
const scrollNext =
|
|
22784
|
+
const scrollNext = React32.useCallback(() => {
|
|
23435
22785
|
api?.scrollNext();
|
|
23436
22786
|
}, [api]);
|
|
23437
|
-
const handleKeyDown =
|
|
22787
|
+
const handleKeyDown = React32.useCallback(
|
|
23438
22788
|
(event) => {
|
|
23439
22789
|
if (event.key === "ArrowLeft") {
|
|
23440
22790
|
event.preventDefault();
|
|
@@ -23446,11 +22796,11 @@ function Carousel({
|
|
|
23446
22796
|
},
|
|
23447
22797
|
[scrollPrev, scrollNext]
|
|
23448
22798
|
);
|
|
23449
|
-
|
|
22799
|
+
React32.useEffect(() => {
|
|
23450
22800
|
if (!api || !setApi) return;
|
|
23451
22801
|
setApi(api);
|
|
23452
22802
|
}, [api, setApi]);
|
|
23453
|
-
|
|
22803
|
+
React32.useEffect(() => {
|
|
23454
22804
|
if (!api) return;
|
|
23455
22805
|
onSelect(api);
|
|
23456
22806
|
api.on("reInit", onSelect);
|
|
@@ -24350,7 +23700,7 @@ function FeatureThreeColumnValues({
|
|
|
24350
23700
|
patternOpacity,
|
|
24351
23701
|
patternClassName
|
|
24352
23702
|
}) {
|
|
24353
|
-
const renderValueIcon =
|
|
23703
|
+
const renderValueIcon = React32.useCallback(
|
|
24354
23704
|
(value) => {
|
|
24355
23705
|
if (value.icon) return value.icon;
|
|
24356
23706
|
if (value.iconName)
|
|
@@ -24841,7 +24191,7 @@ function FeatureTabbedContentImage({
|
|
|
24841
24191
|
patternOpacity,
|
|
24842
24192
|
patternClassName
|
|
24843
24193
|
}) {
|
|
24844
|
-
const renderFeatures =
|
|
24194
|
+
const renderFeatures = React32.useCallback(
|
|
24845
24195
|
(slide) => {
|
|
24846
24196
|
if (slide.featuresSlot) return slide.featuresSlot;
|
|
24847
24197
|
if (!slide.features || slide.features.length === 0) return null;
|
|
@@ -24865,7 +24215,7 @@ function FeatureTabbedContentImage({
|
|
|
24865
24215
|
},
|
|
24866
24216
|
[]
|
|
24867
24217
|
);
|
|
24868
|
-
const renderActions =
|
|
24218
|
+
const renderActions = React32.useCallback(
|
|
24869
24219
|
(slide) => {
|
|
24870
24220
|
if (slide.actionsSlot) return slide.actionsSlot;
|
|
24871
24221
|
if (!slide.actions || slide.actions.length === 0) return null;
|
|
@@ -24908,7 +24258,7 @@ function FeatureTabbedContentImage({
|
|
|
24908
24258
|
},
|
|
24909
24259
|
[]
|
|
24910
24260
|
);
|
|
24911
|
-
const renderImage =
|
|
24261
|
+
const renderImage = React32.useCallback(
|
|
24912
24262
|
(slide) => {
|
|
24913
24263
|
if (slide.imageSlot) return slide.imageSlot;
|
|
24914
24264
|
if (!slide.image) return null;
|
|
@@ -25144,7 +24494,7 @@ function FeatureUtilityCardsGrid({
|
|
|
25144
24494
|
}
|
|
25145
24495
|
);
|
|
25146
24496
|
}, [learnMoreSlot, learnMoreAction, background]);
|
|
25147
|
-
const renderUtilityImage =
|
|
24497
|
+
const renderUtilityImage = React32.useCallback(
|
|
25148
24498
|
(utility) => {
|
|
25149
24499
|
if (utility.imageSlot) return utility.imageSlot;
|
|
25150
24500
|
if (utility.image) {
|
|
@@ -25322,7 +24672,7 @@ function FeatureBentoUtilities({
|
|
|
25322
24672
|
patternOpacity,
|
|
25323
24673
|
patternClassName
|
|
25324
24674
|
}) {
|
|
25325
|
-
const renderCard =
|
|
24675
|
+
const renderCard = React32.useCallback(
|
|
25326
24676
|
(card, index) => {
|
|
25327
24677
|
const hasImage = card.imageSrc || card.imageSlot;
|
|
25328
24678
|
const cardClasses = cn(
|
|
@@ -25378,7 +24728,7 @@ function FeatureBentoUtilities({
|
|
|
25378
24728
|
},
|
|
25379
24729
|
[optixFlowConfig]
|
|
25380
24730
|
);
|
|
25381
|
-
const renderColumn =
|
|
24731
|
+
const renderColumn = React32.useCallback(
|
|
25382
24732
|
(cards, slot) => {
|
|
25383
24733
|
if (slot) return slot;
|
|
25384
24734
|
if (!cards || cards.length === 0) return null;
|
|
@@ -26614,7 +25964,7 @@ function FeatureBentoImageGrid({
|
|
|
26614
25964
|
patternOpacity,
|
|
26615
25965
|
patternClassName
|
|
26616
25966
|
}) {
|
|
26617
|
-
const renderItemIcon =
|
|
25967
|
+
const renderItemIcon = React32.useCallback(
|
|
26618
25968
|
(item) => {
|
|
26619
25969
|
if (item.icon) return item.icon;
|
|
26620
25970
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 24 });
|
|
@@ -26622,7 +25972,7 @@ function FeatureBentoImageGrid({
|
|
|
26622
25972
|
},
|
|
26623
25973
|
[]
|
|
26624
25974
|
);
|
|
26625
|
-
const renderItemImage =
|
|
25975
|
+
const renderItemImage = React32.useCallback(
|
|
26626
25976
|
(item, imageClassName) => {
|
|
26627
25977
|
if (item.imageSlot) return item.imageSlot;
|
|
26628
25978
|
if (item.imageSrc) {
|
|
@@ -26641,7 +25991,7 @@ function FeatureBentoImageGrid({
|
|
|
26641
25991
|
},
|
|
26642
25992
|
[optixFlowConfig]
|
|
26643
25993
|
);
|
|
26644
|
-
const renderLargeCard =
|
|
25994
|
+
const renderLargeCard = React32.useCallback(
|
|
26645
25995
|
(item) => {
|
|
26646
25996
|
const iconContent = renderItemIcon(item);
|
|
26647
25997
|
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
@@ -26720,7 +26070,7 @@ function FeatureBentoImageGrid({
|
|
|
26720
26070
|
},
|
|
26721
26071
|
[largeCardClassName, renderItemImage, renderItemIcon]
|
|
26722
26072
|
);
|
|
26723
|
-
const renderSmallCard =
|
|
26073
|
+
const renderSmallCard = React32.useCallback(
|
|
26724
26074
|
(item, index) => {
|
|
26725
26075
|
const iconContent = renderItemIcon(item);
|
|
26726
26076
|
const hasIconBadgeContent = iconContent || item.iconBadge;
|
|
@@ -27370,7 +26720,7 @@ function FeatureAccordionImage({
|
|
|
27370
26720
|
patternOpacity,
|
|
27371
26721
|
patternClassName
|
|
27372
26722
|
}) {
|
|
27373
|
-
const [activeItem, setActiveItem] =
|
|
26723
|
+
const [activeItem, setActiveItem] = React32.useState(defaultValue || "item-0");
|
|
27374
26724
|
const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
|
|
27375
26725
|
const accordionItemsContent = useMemo(() => {
|
|
27376
26726
|
if (itemsSlot) return itemsSlot;
|
|
@@ -27543,7 +26893,7 @@ function FeatureCapabilitiesGrid({
|
|
|
27543
26893
|
patternOpacity,
|
|
27544
26894
|
patternClassName
|
|
27545
26895
|
}) {
|
|
27546
|
-
const renderItemIcon =
|
|
26896
|
+
const renderItemIcon = React32.useCallback(
|
|
27547
26897
|
(item) => {
|
|
27548
26898
|
if (item.icon) return item.icon;
|
|
27549
26899
|
if (item.iconName) return /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20 });
|
|
@@ -27695,7 +27045,7 @@ function FeatureCapabilitiesGrid({
|
|
|
27695
27045
|
}
|
|
27696
27046
|
);
|
|
27697
27047
|
}
|
|
27698
|
-
var TeamMemberBackgroundImageCard =
|
|
27048
|
+
var TeamMemberBackgroundImageCard = React32.forwardRef(
|
|
27699
27049
|
({ className, imageUrl, imageAlt, children, optixFlowConfig, background, ...props }, ref) => {
|
|
27700
27050
|
return /* @__PURE__ */ jsxs(
|
|
27701
27051
|
"div",
|
|
@@ -27743,7 +27093,7 @@ function TeamMediaShowcase({
|
|
|
27743
27093
|
actionClassName,
|
|
27744
27094
|
optixFlowConfig
|
|
27745
27095
|
}) {
|
|
27746
|
-
const renderItems =
|
|
27096
|
+
const renderItems = React32.useMemo(() => {
|
|
27747
27097
|
if (itemsSlot) return itemsSlot;
|
|
27748
27098
|
return items.map((member, idx) => {
|
|
27749
27099
|
const imageAlt = member.imageAlt || (member.name && typeof member.name === "string" && member.name.trim() !== "" ? member.name : `member-${idx}`);
|
|
@@ -27841,7 +27191,7 @@ function TeamSimpleGrid({
|
|
|
27841
27191
|
memberNameClassName,
|
|
27842
27192
|
memberRoleClassName
|
|
27843
27193
|
}) {
|
|
27844
|
-
const renderMembers =
|
|
27194
|
+
const renderMembers = React32.useMemo(() => {
|
|
27845
27195
|
if (membersSlot) return membersSlot;
|
|
27846
27196
|
if (!members || members.length === 0) return null;
|
|
27847
27197
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -28003,7 +27353,7 @@ function FooterBrandLinksContact({
|
|
|
28003
27353
|
linkListClassName,
|
|
28004
27354
|
linkItemClassName
|
|
28005
27355
|
]);
|
|
28006
|
-
const contactItemsContent =
|
|
27356
|
+
const contactItemsContent = React32.useMemo(() => {
|
|
28007
27357
|
if (!contactItems || contactItems.length === 0) return null;
|
|
28008
27358
|
return contactItems.map((item, idx) => /* @__PURE__ */ jsxs(
|
|
28009
27359
|
"div",
|
|
@@ -28361,7 +27711,7 @@ function TeamSocialGrid({
|
|
|
28361
27711
|
memberRoleClassName,
|
|
28362
27712
|
socialLinksClassName
|
|
28363
27713
|
}) {
|
|
28364
|
-
const renderMembers =
|
|
27714
|
+
const renderMembers = React32.useMemo(() => {
|
|
28365
27715
|
if (membersSlot) return membersSlot;
|
|
28366
27716
|
if (!members || members.length === 0) return null;
|
|
28367
27717
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -28497,7 +27847,7 @@ function TeamGradientCards({
|
|
|
28497
27847
|
memberRoleClassName,
|
|
28498
27848
|
socialLinksClassName
|
|
28499
27849
|
}) {
|
|
28500
|
-
const renderMembers =
|
|
27850
|
+
const renderMembers = React32.useMemo(() => {
|
|
28501
27851
|
if (membersSlot) return membersSlot;
|
|
28502
27852
|
if (!members || members.length === 0) return null;
|
|
28503
27853
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -28653,7 +28003,7 @@ function TeamBioBadges({
|
|
|
28653
28003
|
memberBioClassName,
|
|
28654
28004
|
socialLinksClassName
|
|
28655
28005
|
}) {
|
|
28656
|
-
const renderMembers =
|
|
28006
|
+
const renderMembers = React32.useMemo(() => {
|
|
28657
28007
|
if (membersSlot) return membersSlot;
|
|
28658
28008
|
if (!members || members.length === 0) return null;
|
|
28659
28009
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -28830,7 +28180,7 @@ function TeamExpertiseCards({
|
|
|
28830
28180
|
ctaDescriptionClassName,
|
|
28831
28181
|
ctaButtonClassName
|
|
28832
28182
|
}) {
|
|
28833
|
-
const renderMembers =
|
|
28183
|
+
const renderMembers = React32.useMemo(() => {
|
|
28834
28184
|
if (membersSlot) return membersSlot;
|
|
28835
28185
|
if (!members || members.length === 0) return null;
|
|
28836
28186
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -28907,7 +28257,7 @@ function TeamExpertiseCards({
|
|
|
28907
28257
|
member.id
|
|
28908
28258
|
));
|
|
28909
28259
|
}, [membersSlot, members, background, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, departmentBadgeClassName, memberDescriptionClassName, expertiseClassName]);
|
|
28910
|
-
const renderCta =
|
|
28260
|
+
const renderCta = React32.useMemo(() => {
|
|
28911
28261
|
if (ctaSlot) return ctaSlot;
|
|
28912
28262
|
return /* @__PURE__ */ jsxs(
|
|
28913
28263
|
"div",
|
|
@@ -29023,7 +28373,7 @@ function TeamCompactGrid({
|
|
|
29023
28373
|
ctaDescriptionClassName,
|
|
29024
28374
|
ctaButtonClassName
|
|
29025
28375
|
}) {
|
|
29026
|
-
const renderMembers =
|
|
28376
|
+
const renderMembers = React32.useMemo(() => {
|
|
29027
28377
|
if (membersSlot) return membersSlot;
|
|
29028
28378
|
if (!members || members.length === 0) return null;
|
|
29029
28379
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -29078,7 +28428,7 @@ function TeamCompactGrid({
|
|
|
29078
28428
|
member.id
|
|
29079
28429
|
));
|
|
29080
28430
|
}, [membersSlot, members, background, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, departmentBadgeClassName]);
|
|
29081
|
-
const renderCta =
|
|
28431
|
+
const renderCta = React32.useMemo(() => {
|
|
29082
28432
|
if (ctaSlot) return ctaSlot;
|
|
29083
28433
|
return /* @__PURE__ */ jsxs(
|
|
29084
28434
|
"div",
|
|
@@ -29182,7 +28532,7 @@ function TeamInvestorShowcase({
|
|
|
29182
28532
|
investorCompanyClassName,
|
|
29183
28533
|
optixFlowConfig
|
|
29184
28534
|
}) {
|
|
29185
|
-
const renderInvestors =
|
|
28535
|
+
const renderInvestors = React32.useMemo(() => {
|
|
29186
28536
|
if (investorsSlot) return investorsSlot;
|
|
29187
28537
|
if (!investors || investors.length === 0) return null;
|
|
29188
28538
|
return investors.map((investor) => /* @__PURE__ */ jsxs("div", { className: investorCardClassName, children: [
|
|
@@ -29256,7 +28606,7 @@ function TeamCarouselExperience({
|
|
|
29256
28606
|
memberRoleClassName,
|
|
29257
28607
|
optixFlowConfig
|
|
29258
28608
|
}) {
|
|
29259
|
-
const renderMembers =
|
|
28609
|
+
const renderMembers = React32.useMemo(() => {
|
|
29260
28610
|
if (membersSlot) return membersSlot;
|
|
29261
28611
|
if (!members || members.length === 0) return null;
|
|
29262
28612
|
return members.map((member, idx) => /* @__PURE__ */ jsx(CarouselItem, { className: "max-w-72", children: /* @__PURE__ */ jsxs(
|
|
@@ -29406,20 +28756,20 @@ function TeamFilterableSearch({
|
|
|
29406
28756
|
emptyStateClassName,
|
|
29407
28757
|
emptyStateMessage
|
|
29408
28758
|
}) {
|
|
29409
|
-
const [searchQuery, setSearchQuery] =
|
|
29410
|
-
const [selectedDepartment, setSelectedDepartment] =
|
|
29411
|
-
const departments =
|
|
28759
|
+
const [searchQuery, setSearchQuery] = React32.useState("");
|
|
28760
|
+
const [selectedDepartment, setSelectedDepartment] = React32.useState("All");
|
|
28761
|
+
const departments = React32.useMemo(() => {
|
|
29412
28762
|
const depts = new Set(members.map((m) => m.department));
|
|
29413
28763
|
return ["All", ...Array.from(depts)];
|
|
29414
28764
|
}, [members]);
|
|
29415
|
-
const filteredMembers =
|
|
28765
|
+
const filteredMembers = React32.useMemo(() => {
|
|
29416
28766
|
return members.filter((member) => {
|
|
29417
28767
|
const matchesSearch = searchQuery === "" || member.name.toLowerCase().includes(searchQuery.toLowerCase()) || member.role.toLowerCase().includes(searchQuery.toLowerCase()) || member.description.toLowerCase().includes(searchQuery.toLowerCase());
|
|
29418
28768
|
const matchesDepartment = selectedDepartment === "All" || member.department === selectedDepartment;
|
|
29419
28769
|
return matchesSearch && matchesDepartment;
|
|
29420
28770
|
});
|
|
29421
28771
|
}, [members, searchQuery, selectedDepartment]);
|
|
29422
|
-
const renderFilters =
|
|
28772
|
+
const renderFilters = React32.useMemo(() => {
|
|
29423
28773
|
if (filtersSlot) return filtersSlot;
|
|
29424
28774
|
return /* @__PURE__ */ jsxs(
|
|
29425
28775
|
"div",
|
|
@@ -29474,7 +28824,7 @@ function TeamFilterableSearch({
|
|
|
29474
28824
|
selectedDepartment,
|
|
29475
28825
|
filterButtonClassName
|
|
29476
28826
|
]);
|
|
29477
|
-
const renderMembers =
|
|
28827
|
+
const renderMembers = React32.useMemo(() => {
|
|
29478
28828
|
if (membersSlot) return membersSlot;
|
|
29479
28829
|
return filteredMembers.map((member) => /* @__PURE__ */ jsx(
|
|
29480
28830
|
"div",
|
|
@@ -29661,7 +29011,7 @@ function TeamCompactCta({
|
|
|
29661
29011
|
memberRoleClassName,
|
|
29662
29012
|
ctaClassName
|
|
29663
29013
|
}) {
|
|
29664
|
-
const renderMembers =
|
|
29014
|
+
const renderMembers = React32.useMemo(() => {
|
|
29665
29015
|
if (membersSlot) return membersSlot;
|
|
29666
29016
|
if (!members || members.length === 0) return null;
|
|
29667
29017
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -29689,7 +29039,7 @@ function TeamCompactCta({
|
|
|
29689
29039
|
member.id
|
|
29690
29040
|
));
|
|
29691
29041
|
}, [membersSlot, members, memberCardClassName, avatarClassName, memberNameClassName, memberRoleClassName, background]);
|
|
29692
|
-
const renderCta =
|
|
29042
|
+
const renderCta = React32.useMemo(() => {
|
|
29693
29043
|
if (ctaSlot) return ctaSlot;
|
|
29694
29044
|
return /* @__PURE__ */ jsx(
|
|
29695
29045
|
Pressable,
|
|
@@ -29780,7 +29130,7 @@ function TeamHoverHighlight({
|
|
|
29780
29130
|
socialLinksClassName,
|
|
29781
29131
|
optixFlowConfig
|
|
29782
29132
|
}) {
|
|
29783
|
-
const renderMembers =
|
|
29133
|
+
const renderMembers = React32.useMemo(() => {
|
|
29784
29134
|
if (membersSlot) return membersSlot;
|
|
29785
29135
|
if (!members || members.length === 0) return null;
|
|
29786
29136
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -29929,7 +29279,7 @@ function TeamSocialCards({
|
|
|
29929
29279
|
socialLinksClassName,
|
|
29930
29280
|
optixFlowConfig
|
|
29931
29281
|
}) {
|
|
29932
|
-
const renderMembers =
|
|
29282
|
+
const renderMembers = React32.useMemo(() => {
|
|
29933
29283
|
if (membersSlot) return membersSlot;
|
|
29934
29284
|
if (!members || members.length === 0) return null;
|
|
29935
29285
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -30099,7 +29449,7 @@ function TeamGridAnimated({
|
|
|
30099
29449
|
"hsl(var(--muted))",
|
|
30100
29450
|
"hsl(var(--warning)/0.2)"
|
|
30101
29451
|
];
|
|
30102
|
-
const renderMembers =
|
|
29452
|
+
const renderMembers = React32.useMemo(() => {
|
|
30103
29453
|
if (membersSlot) return membersSlot;
|
|
30104
29454
|
if (!members || members.length === 0) return null;
|
|
30105
29455
|
return members.map((member, index) => /* @__PURE__ */ jsxs(
|
|
@@ -30199,7 +29549,7 @@ function TeamGridAnimated({
|
|
|
30199
29549
|
memberDesignationClassName,
|
|
30200
29550
|
socialLinksClassName
|
|
30201
29551
|
]);
|
|
30202
|
-
const renderSocialLinksMain =
|
|
29552
|
+
const renderSocialLinksMain = React32.useMemo(() => {
|
|
30203
29553
|
if (socialLinksMainSlot) return socialLinksMainSlot;
|
|
30204
29554
|
if (!socialLinksMain || socialLinksMain.length === 0) return null;
|
|
30205
29555
|
return /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-center gap-4 py-4 md:justify-center", children: [
|
|
@@ -30316,7 +29666,7 @@ function TeamDepartmentSections({
|
|
|
30316
29666
|
memberRoleClassName,
|
|
30317
29667
|
optixFlowConfig
|
|
30318
29668
|
}) {
|
|
30319
|
-
const renderDepartments =
|
|
29669
|
+
const renderDepartments = React32.useMemo(() => {
|
|
30320
29670
|
if (departmentsSlot) return departmentsSlot;
|
|
30321
29671
|
if (!departments || departments.length === 0) return null;
|
|
30322
29672
|
return departments.map((department, deptIndex) => /* @__PURE__ */ jsxs(
|
|
@@ -30420,7 +29770,7 @@ function TeamAlternatingBios({
|
|
|
30420
29770
|
socialLinksClassName,
|
|
30421
29771
|
optixFlowConfig
|
|
30422
29772
|
}) {
|
|
30423
|
-
const renderMembers =
|
|
29773
|
+
const renderMembers = React32.useMemo(() => {
|
|
30424
29774
|
if (membersSlot) return membersSlot;
|
|
30425
29775
|
if (!members || members.length === 0) return null;
|
|
30426
29776
|
return members.map((member, index) => /* @__PURE__ */ jsxs(
|
|
@@ -30602,7 +29952,7 @@ function TeamAvatarSocial({
|
|
|
30602
29952
|
memberRoleClassName,
|
|
30603
29953
|
socialLinksClassName
|
|
30604
29954
|
}) {
|
|
30605
|
-
const renderMembers =
|
|
29955
|
+
const renderMembers = React32.useMemo(() => {
|
|
30606
29956
|
if (membersSlot) return membersSlot;
|
|
30607
29957
|
if (!members || members.length === 0) return null;
|
|
30608
29958
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -30745,7 +30095,7 @@ function TeamHoverOverlay({
|
|
|
30745
30095
|
socialLinksClassName,
|
|
30746
30096
|
optixFlowConfig
|
|
30747
30097
|
}) {
|
|
30748
|
-
const renderMembers =
|
|
30098
|
+
const renderMembers = React32.useMemo(() => {
|
|
30749
30099
|
if (membersSlot) return membersSlot;
|
|
30750
30100
|
if (!members || members.length === 0) return null;
|
|
30751
30101
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -30921,14 +30271,14 @@ function TeamRoleFilter({
|
|
|
30921
30271
|
socialLinksClassName,
|
|
30922
30272
|
optixFlowConfig
|
|
30923
30273
|
}) {
|
|
30924
|
-
const [selectedRole, setSelectedRole] =
|
|
30925
|
-
const filteredMembers =
|
|
30274
|
+
const [selectedRole, setSelectedRole] = React32.useState("All");
|
|
30275
|
+
const filteredMembers = React32.useMemo(() => {
|
|
30926
30276
|
if (!members) return [];
|
|
30927
30277
|
return members.filter(
|
|
30928
30278
|
(member) => selectedRole === "All" ? true : member.role === selectedRole
|
|
30929
30279
|
);
|
|
30930
30280
|
}, [members, selectedRole]);
|
|
30931
|
-
const renderRoles =
|
|
30281
|
+
const renderRoles = React32.useMemo(() => {
|
|
30932
30282
|
if (rolesSlot) return rolesSlot;
|
|
30933
30283
|
if (!roles) return null;
|
|
30934
30284
|
return /* @__PURE__ */ jsx(
|
|
@@ -30952,7 +30302,7 @@ function TeamRoleFilter({
|
|
|
30952
30302
|
}
|
|
30953
30303
|
);
|
|
30954
30304
|
}, [rolesSlot, filtersClassName, roles, selectedRole, filterButtonClassName]);
|
|
30955
|
-
const renderMembers =
|
|
30305
|
+
const renderMembers = React32.useMemo(() => {
|
|
30956
30306
|
if (membersSlot) return membersSlot;
|
|
30957
30307
|
return filteredMembers.map((member) => /* @__PURE__ */ jsx(
|
|
30958
30308
|
Card,
|
|
@@ -31112,7 +30462,7 @@ function TeamContactCards({
|
|
|
31112
30462
|
socialLinksClassName,
|
|
31113
30463
|
optixFlowConfig
|
|
31114
30464
|
}) {
|
|
31115
|
-
const getStatusColor =
|
|
30465
|
+
const getStatusColor = React32.useCallback((status) => {
|
|
31116
30466
|
switch (status) {
|
|
31117
30467
|
case "active":
|
|
31118
30468
|
return "bg-success";
|
|
@@ -31122,7 +30472,7 @@ function TeamContactCards({
|
|
|
31122
30472
|
return getTextColor(background, "muted");
|
|
31123
30473
|
}
|
|
31124
30474
|
}, [background]);
|
|
31125
|
-
const renderMembers =
|
|
30475
|
+
const renderMembers = React32.useMemo(() => {
|
|
31126
30476
|
if (membersSlot) return membersSlot;
|
|
31127
30477
|
if (!members || members.length === 0) return null;
|
|
31128
30478
|
return members.map((member) => /* @__PURE__ */ jsx(Card, { className: cn("p-0", memberCardClassName), children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6!", children: [
|
|
@@ -31329,7 +30679,7 @@ function TeamLargeImages({
|
|
|
31329
30679
|
socialLinksClassName,
|
|
31330
30680
|
optixFlowConfig
|
|
31331
30681
|
}) {
|
|
31332
|
-
const renderMembers =
|
|
30682
|
+
const renderMembers = React32.useMemo(() => {
|
|
31333
30683
|
if (membersSlot) return membersSlot;
|
|
31334
30684
|
if (!members || members.length === 0) return null;
|
|
31335
30685
|
return members.map((member) => /* @__PURE__ */ jsxs(
|
|
@@ -31504,7 +30854,7 @@ function TeamSkillBadges({
|
|
|
31504
30854
|
socialLinksClassName,
|
|
31505
30855
|
optixFlowConfig
|
|
31506
30856
|
}) {
|
|
31507
|
-
const renderMembers =
|
|
30857
|
+
const renderMembers = React32.useMemo(() => {
|
|
31508
30858
|
if (membersSlot) return membersSlot;
|
|
31509
30859
|
if (!members || members.length === 0) return null;
|
|
31510
30860
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -31694,7 +31044,7 @@ function TeamTestimonialStats({
|
|
|
31694
31044
|
socialLinksClassName,
|
|
31695
31045
|
optixFlowConfig
|
|
31696
31046
|
}) {
|
|
31697
|
-
const renderMembers =
|
|
31047
|
+
const renderMembers = React32.useMemo(() => {
|
|
31698
31048
|
if (membersSlot) return membersSlot;
|
|
31699
31049
|
if (!members || members.length === 0) return null;
|
|
31700
31050
|
return members.map((member) => /* @__PURE__ */ jsx(
|
|
@@ -35854,7 +35204,7 @@ function BlogGridAuthorCardsComponent({
|
|
|
35854
35204
|
pattern,
|
|
35855
35205
|
patternOpacity
|
|
35856
35206
|
}) {
|
|
35857
|
-
const viewAllActionContent =
|
|
35207
|
+
const viewAllActionContent = React32.useMemo(() => {
|
|
35858
35208
|
if (viewAllSlot) return viewAllSlot;
|
|
35859
35209
|
if (!viewAllAction) return null;
|
|
35860
35210
|
const {
|
|
@@ -35879,7 +35229,7 @@ function BlogGridAuthorCardsComponent({
|
|
|
35879
35229
|
}
|
|
35880
35230
|
);
|
|
35881
35231
|
}, [viewAllSlot, viewAllAction]);
|
|
35882
|
-
const postsContent =
|
|
35232
|
+
const postsContent = React32.useMemo(() => {
|
|
35883
35233
|
if (postsSlot) return postsSlot;
|
|
35884
35234
|
if (!posts || posts.length === 0) return null;
|
|
35885
35235
|
return posts.map((post) => {
|
|
@@ -36000,7 +35350,7 @@ function BlogCardsTaglineCta({
|
|
|
36000
35350
|
pattern,
|
|
36001
35351
|
patternOpacity
|
|
36002
35352
|
}) {
|
|
36003
|
-
const ctaActionContent =
|
|
35353
|
+
const ctaActionContent = React32.useMemo(() => {
|
|
36004
35354
|
if (ctaSlot) return ctaSlot;
|
|
36005
35355
|
if (!ctaAction) return null;
|
|
36006
35356
|
const {
|
|
@@ -36028,7 +35378,7 @@ function BlogCardsTaglineCta({
|
|
|
36028
35378
|
}
|
|
36029
35379
|
);
|
|
36030
35380
|
}, [ctaSlot, ctaAction, ctaClassName]);
|
|
36031
|
-
const postsContent =
|
|
35381
|
+
const postsContent = React32.useMemo(() => {
|
|
36032
35382
|
if (postsSlot) return postsSlot;
|
|
36033
35383
|
if (!posts || posts.length === 0) return null;
|
|
36034
35384
|
return posts.map((post) => {
|
|
@@ -36174,7 +35524,7 @@ function BlogCardsReadTime({
|
|
|
36174
35524
|
pattern,
|
|
36175
35525
|
patternOpacity
|
|
36176
35526
|
}) {
|
|
36177
|
-
const renderedViewAllAction =
|
|
35527
|
+
const renderedViewAllAction = React32.useMemo(() => {
|
|
36178
35528
|
if (viewAllSlot) return viewAllSlot;
|
|
36179
35529
|
if (!viewAllAction) return null;
|
|
36180
35530
|
const {
|
|
@@ -36191,7 +35541,7 @@ function BlogCardsReadTime({
|
|
|
36191
35541
|
iconAfter
|
|
36192
35542
|
] }) });
|
|
36193
35543
|
}, [viewAllSlot, viewAllAction]);
|
|
36194
|
-
const renderedPosts =
|
|
35544
|
+
const renderedPosts = React32.useMemo(() => {
|
|
36195
35545
|
if (postsSlot) return postsSlot;
|
|
36196
35546
|
if (!posts || posts.length === 0) return null;
|
|
36197
35547
|
return posts.map((post) => {
|
|
@@ -36328,7 +35678,7 @@ function BlogCategoryOverlay({
|
|
|
36328
35678
|
pattern,
|
|
36329
35679
|
patternOpacity
|
|
36330
35680
|
}) {
|
|
36331
|
-
const viewAllActionContent =
|
|
35681
|
+
const viewAllActionContent = React32.useMemo(() => {
|
|
36332
35682
|
if (viewAllSlot) return viewAllSlot;
|
|
36333
35683
|
if (!viewAllAction) return null;
|
|
36334
35684
|
const {
|
|
@@ -36356,7 +35706,7 @@ function BlogCategoryOverlay({
|
|
|
36356
35706
|
}
|
|
36357
35707
|
);
|
|
36358
35708
|
}, [viewAllSlot, viewAllAction, viewAllClassName]);
|
|
36359
|
-
const postsContent =
|
|
35709
|
+
const postsContent = React32.useMemo(() => {
|
|
36360
35710
|
if (postsSlot) return postsSlot;
|
|
36361
35711
|
if (!posts || posts.length === 0) return null;
|
|
36362
35712
|
return posts.map((post) => {
|
|
@@ -36504,7 +35854,7 @@ function BlogFeaturedPopular({
|
|
|
36504
35854
|
}) {
|
|
36505
35855
|
const featuredPost = posts?.[0];
|
|
36506
35856
|
const popularPosts = posts?.slice(1);
|
|
36507
|
-
const renderedFeaturedPost =
|
|
35857
|
+
const renderedFeaturedPost = React32.useMemo(() => {
|
|
36508
35858
|
if (featuredSlot) return featuredSlot;
|
|
36509
35859
|
if (!featuredPost) return null;
|
|
36510
35860
|
const postHref = featuredPost.href || featuredPost.url || featuredPost.link;
|
|
@@ -36556,7 +35906,7 @@ function BlogFeaturedPopular({
|
|
|
36556
35906
|
featuredContentClassName,
|
|
36557
35907
|
optixFlowConfig
|
|
36558
35908
|
]);
|
|
36559
|
-
const renderedPopularPosts =
|
|
35909
|
+
const renderedPopularPosts = React32.useMemo(() => {
|
|
36560
35910
|
if (postsSlot) return postsSlot;
|
|
36561
35911
|
if (!popularPosts || popularPosts.length === 0) return null;
|
|
36562
35912
|
return popularPosts.map((post) => {
|
|
@@ -36673,7 +36023,7 @@ function BlogRelatedArticles({
|
|
|
36673
36023
|
pattern,
|
|
36674
36024
|
patternOpacity
|
|
36675
36025
|
}) {
|
|
36676
|
-
const renderedSeeAllAction =
|
|
36026
|
+
const renderedSeeAllAction = React32.useMemo(() => {
|
|
36677
36027
|
if (seeAllSlot) return seeAllSlot;
|
|
36678
36028
|
if (!seeAllAction) return null;
|
|
36679
36029
|
const {
|
|
@@ -36702,7 +36052,7 @@ function BlogRelatedArticles({
|
|
|
36702
36052
|
}
|
|
36703
36053
|
);
|
|
36704
36054
|
}, [seeAllSlot, seeAllAction, seeAllClassName]);
|
|
36705
|
-
const renderedArticles =
|
|
36055
|
+
const renderedArticles = React32.useMemo(() => {
|
|
36706
36056
|
if (articlesSlot) return articlesSlot;
|
|
36707
36057
|
if (!articles || articles.length === 0) return null;
|
|
36708
36058
|
return articles.map((item) => {
|
|
@@ -36995,7 +36345,7 @@ function BlogHorizontalCards({
|
|
|
36995
36345
|
pattern,
|
|
36996
36346
|
patternOpacity
|
|
36997
36347
|
}) {
|
|
36998
|
-
const ctaContent =
|
|
36348
|
+
const ctaContent = React32.useMemo(() => {
|
|
36999
36349
|
if (ctaSlot) return ctaSlot;
|
|
37000
36350
|
if (!ctaAction) return null;
|
|
37001
36351
|
const {
|
|
@@ -37020,7 +36370,7 @@ function BlogHorizontalCards({
|
|
|
37020
36370
|
}
|
|
37021
36371
|
);
|
|
37022
36372
|
}, [ctaSlot, ctaAction]);
|
|
37023
|
-
const postsContent =
|
|
36373
|
+
const postsContent = React32.useMemo(() => {
|
|
37024
36374
|
if (postsSlot) return postsSlot;
|
|
37025
36375
|
if (!posts || posts.length === 0) return null;
|
|
37026
36376
|
return posts.map((post) => {
|
|
@@ -37242,7 +36592,7 @@ function Label({
|
|
|
37242
36592
|
);
|
|
37243
36593
|
}
|
|
37244
36594
|
var POSTS_PER_PAGE = 6;
|
|
37245
|
-
var BlogCard =
|
|
36595
|
+
var BlogCard = React32.memo(function BlogCard2({
|
|
37246
36596
|
post,
|
|
37247
36597
|
optixFlowConfig,
|
|
37248
36598
|
className
|
|
@@ -37281,7 +36631,7 @@ var BlogCard = React8.memo(function BlogCard2({
|
|
|
37281
36631
|
] })
|
|
37282
36632
|
] }) });
|
|
37283
36633
|
});
|
|
37284
|
-
var FilterForm =
|
|
36634
|
+
var FilterForm = React32.memo(function FilterForm2({
|
|
37285
36635
|
categories,
|
|
37286
36636
|
selectedCategories,
|
|
37287
36637
|
onCategoryChange,
|
|
@@ -37314,7 +36664,7 @@ var FilterForm = React8.memo(function FilterForm2({
|
|
|
37314
36664
|
}
|
|
37315
36665
|
);
|
|
37316
36666
|
});
|
|
37317
|
-
var BreadcrumbBlog =
|
|
36667
|
+
var BreadcrumbBlog = React32.memo(function BreadcrumbBlog2({
|
|
37318
36668
|
breadcrumb
|
|
37319
36669
|
}) {
|
|
37320
36670
|
return /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumb.map((item, i) => {
|
|
@@ -37396,12 +36746,12 @@ function BlogFilteredResultsComponent({
|
|
|
37396
36746
|
}, [posts, selectedCategories]);
|
|
37397
36747
|
const postsToDisplay = filteredPosts.length > 0 ? filteredPosts : posts || [];
|
|
37398
36748
|
const hasMore = visibleCount < postsToDisplay.length;
|
|
37399
|
-
const breadcrumbContent =
|
|
36749
|
+
const breadcrumbContent = React32.useMemo(() => {
|
|
37400
36750
|
if (breadcrumbSlot) return breadcrumbSlot;
|
|
37401
36751
|
if (!breadcrumb || breadcrumb.length === 0) return null;
|
|
37402
36752
|
return /* @__PURE__ */ jsx(BreadcrumbBlog, { breadcrumb });
|
|
37403
36753
|
}, [breadcrumbSlot, breadcrumb]);
|
|
37404
|
-
const primaryPostContent =
|
|
36754
|
+
const primaryPostContent = React32.useMemo(() => {
|
|
37405
36755
|
if (primaryPostSlot) return primaryPostSlot;
|
|
37406
36756
|
if (!primaryPost) return null;
|
|
37407
36757
|
return /* @__PURE__ */ jsx(
|
|
@@ -37413,7 +36763,7 @@ function BlogFilteredResultsComponent({
|
|
|
37413
36763
|
}
|
|
37414
36764
|
);
|
|
37415
36765
|
}, [primaryPostSlot, primaryPost, optixFlowConfig, postCardClassName]);
|
|
37416
|
-
const categoriesContent =
|
|
36766
|
+
const categoriesContent = React32.useMemo(() => {
|
|
37417
36767
|
if (categoriesSlot) return categoriesSlot;
|
|
37418
36768
|
if (!categories || categories.length === 0) return null;
|
|
37419
36769
|
return /* @__PURE__ */ jsx(
|
|
@@ -37432,7 +36782,7 @@ function BlogFilteredResultsComponent({
|
|
|
37432
36782
|
handleCategoryChange,
|
|
37433
36783
|
categoriesClassName
|
|
37434
36784
|
]);
|
|
37435
|
-
const postsContent =
|
|
36785
|
+
const postsContent = React32.useMemo(() => {
|
|
37436
36786
|
if (postsSlot) return postsSlot;
|
|
37437
36787
|
return postsToDisplay.slice(0, visibleCount).map((post) => {
|
|
37438
36788
|
const postKey = post.id || String(post.title) || Math.random().toString();
|
|
@@ -37453,7 +36803,7 @@ function BlogFilteredResultsComponent({
|
|
|
37453
36803
|
optixFlowConfig,
|
|
37454
36804
|
postCardClassName
|
|
37455
36805
|
]);
|
|
37456
|
-
const loadMoreContent =
|
|
36806
|
+
const loadMoreContent = React32.useMemo(() => {
|
|
37457
36807
|
if (loadMoreSlot) return loadMoreSlot;
|
|
37458
36808
|
if (!loadMoreAction || !hasMore) return null;
|
|
37459
36809
|
const {
|
|
@@ -37580,7 +36930,7 @@ function BlogMasonryFeaturedComponent({
|
|
|
37580
36930
|
}) {
|
|
37581
36931
|
const featuredPost = posts?.[0];
|
|
37582
36932
|
const otherPosts = posts?.slice(1);
|
|
37583
|
-
const featuredPostContent =
|
|
36933
|
+
const featuredPostContent = React32.useMemo(() => {
|
|
37584
36934
|
if (featuredSlot) return featuredSlot;
|
|
37585
36935
|
if (!featuredPost) return null;
|
|
37586
36936
|
const postHref = featuredPost.href || featuredPost.url || featuredPost.link;
|
|
@@ -37630,7 +36980,7 @@ function BlogMasonryFeaturedComponent({
|
|
|
37630
36980
|
featuredImageClassName,
|
|
37631
36981
|
optixFlowConfig
|
|
37632
36982
|
]);
|
|
37633
|
-
const otherPostsContent =
|
|
36983
|
+
const otherPostsContent = React32.useMemo(() => {
|
|
37634
36984
|
if (postsSlot) return postsSlot;
|
|
37635
36985
|
if (!otherPosts || otherPosts.length === 0) return null;
|
|
37636
36986
|
return otherPosts.map((post) => {
|
|
@@ -37721,7 +37071,7 @@ function BlogHorizontalTimelineComponent({
|
|
|
37721
37071
|
pattern,
|
|
37722
37072
|
patternOpacity
|
|
37723
37073
|
}) {
|
|
37724
|
-
const renderPosts =
|
|
37074
|
+
const renderPosts = React32.useMemo(() => {
|
|
37725
37075
|
if (postsSlot) return postsSlot;
|
|
37726
37076
|
if (!posts || posts.length === 0) return null;
|
|
37727
37077
|
return posts.map((post, index) => {
|
|
@@ -37846,7 +37196,7 @@ function BlogGridNinePosts({
|
|
|
37846
37196
|
pattern,
|
|
37847
37197
|
patternOpacity
|
|
37848
37198
|
}) {
|
|
37849
|
-
const renderedCtaAction =
|
|
37199
|
+
const renderedCtaAction = React32.useMemo(() => {
|
|
37850
37200
|
if (ctaSlot) return ctaSlot;
|
|
37851
37201
|
if (!ctaAction) return null;
|
|
37852
37202
|
const {
|
|
@@ -37871,7 +37221,7 @@ function BlogGridNinePosts({
|
|
|
37871
37221
|
}
|
|
37872
37222
|
);
|
|
37873
37223
|
}, [ctaSlot, ctaAction]);
|
|
37874
|
-
const renderedPosts =
|
|
37224
|
+
const renderedPosts = React32.useMemo(() => {
|
|
37875
37225
|
if (postsSlot) return postsSlot;
|
|
37876
37226
|
if (!posts || posts.length === 0) return null;
|
|
37877
37227
|
return posts.map((post) => {
|
|
@@ -37969,9 +37319,9 @@ var AppleCarousel = ({
|
|
|
37969
37319
|
className,
|
|
37970
37320
|
containerClassName
|
|
37971
37321
|
}) => {
|
|
37972
|
-
const carouselRef =
|
|
37973
|
-
const [canScrollLeft, setCanScrollLeft] =
|
|
37974
|
-
const [canScrollRight, setCanScrollRight] =
|
|
37322
|
+
const carouselRef = React32__default.useRef(null);
|
|
37323
|
+
const [canScrollLeft, setCanScrollLeft] = React32__default.useState(false);
|
|
37324
|
+
const [canScrollRight, setCanScrollRight] = React32__default.useState(true);
|
|
37975
37325
|
const [currentIndex, setCurrentIndex] = useState(0);
|
|
37976
37326
|
useEffect(() => {
|
|
37977
37327
|
if (carouselRef.current) {
|
|
@@ -38211,7 +37561,7 @@ function BlogCarouselAppleComponent({
|
|
|
38211
37561
|
containerClassName,
|
|
38212
37562
|
cardClassName
|
|
38213
37563
|
}) {
|
|
38214
|
-
const carouselCards =
|
|
37564
|
+
const carouselCards = React32.useMemo(() => {
|
|
38215
37565
|
if (!posts || posts.length === 0) return [];
|
|
38216
37566
|
return posts.map(
|
|
38217
37567
|
(post, idx) => ({
|
|
@@ -38223,7 +37573,7 @@ function BlogCarouselAppleComponent({
|
|
|
38223
37573
|
})
|
|
38224
37574
|
);
|
|
38225
37575
|
}, [posts]);
|
|
38226
|
-
const cardElements =
|
|
37576
|
+
const cardElements = React32.useMemo(() => {
|
|
38227
37577
|
if (!posts || posts.length === 0) return [];
|
|
38228
37578
|
return carouselCards.map((card, index) => {
|
|
38229
37579
|
const post = posts[index];
|
|
@@ -38308,7 +37658,7 @@ function ArticleHeroProseComponent({
|
|
|
38308
37658
|
description,
|
|
38309
37659
|
authorImage
|
|
38310
37660
|
} = post ?? {};
|
|
38311
|
-
const authorContent =
|
|
37661
|
+
const authorContent = React32.useMemo(() => {
|
|
38312
37662
|
if (authorSlot) return authorSlot;
|
|
38313
37663
|
if (!authorName) return null;
|
|
38314
37664
|
return /* @__PURE__ */ jsxs(
|
|
@@ -38342,7 +37692,7 @@ function ArticleHeroProseComponent({
|
|
|
38342
37692
|
dateFormat,
|
|
38343
37693
|
authorClassName
|
|
38344
37694
|
]);
|
|
38345
|
-
const heroMediaContent =
|
|
37695
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
38346
37696
|
if (heroMediaSlot) return heroMediaSlot;
|
|
38347
37697
|
if (!image) return null;
|
|
38348
37698
|
return /* @__PURE__ */ jsx(
|
|
@@ -38448,7 +37798,7 @@ function ArticleSidebarStickyComponent({
|
|
|
38448
37798
|
patternOpacity,
|
|
38449
37799
|
sidebarContent
|
|
38450
37800
|
}) {
|
|
38451
|
-
const backLinkContent =
|
|
37801
|
+
const backLinkContent = React32.useMemo(() => {
|
|
38452
37802
|
if (backLinkSlot) return backLinkSlot;
|
|
38453
37803
|
if (!backHref && !backText) return null;
|
|
38454
37804
|
return /* @__PURE__ */ jsxs(
|
|
@@ -38466,7 +37816,7 @@ function ArticleSidebarStickyComponent({
|
|
|
38466
37816
|
}
|
|
38467
37817
|
);
|
|
38468
37818
|
}, [backLinkSlot, backHref, backText, backIcon, backLinkClassName]);
|
|
38469
|
-
const renderAuthor =
|
|
37819
|
+
const renderAuthor = React32.useCallback(
|
|
38470
37820
|
(isMobile = false) => {
|
|
38471
37821
|
if (authorSlot) return authorSlot;
|
|
38472
37822
|
if (!authorName) return null;
|
|
@@ -38498,7 +37848,7 @@ function ArticleSidebarStickyComponent({
|
|
|
38498
37848
|
authorClassName
|
|
38499
37849
|
]
|
|
38500
37850
|
);
|
|
38501
|
-
const heroMediaContent =
|
|
37851
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
38502
37852
|
if (heroMediaSlot) return heroMediaSlot;
|
|
38503
37853
|
if (!heroImageSrc) return null;
|
|
38504
37854
|
return /* @__PURE__ */ jsx(
|
|
@@ -38609,10 +37959,10 @@ function ArticleTocSidebarComponent({
|
|
|
38609
37959
|
patternOpacity,
|
|
38610
37960
|
patternClassName
|
|
38611
37961
|
}) {
|
|
38612
|
-
const [activeSection, setActiveSection] =
|
|
37962
|
+
const [activeSection, setActiveSection] = React32.useState(
|
|
38613
37963
|
sections?.[0]?.id || ""
|
|
38614
37964
|
);
|
|
38615
|
-
|
|
37965
|
+
React32.useEffect(() => {
|
|
38616
37966
|
if (!enableTocTracking || !sections || sections.length === 0) return;
|
|
38617
37967
|
const observer = new IntersectionObserver(
|
|
38618
37968
|
(entries) => {
|
|
@@ -38630,12 +37980,12 @@ function ArticleTocSidebarComponent({
|
|
|
38630
37980
|
});
|
|
38631
37981
|
return () => observer.disconnect();
|
|
38632
37982
|
}, [sections, enableTocTracking]);
|
|
38633
|
-
const categoryContent =
|
|
37983
|
+
const categoryContent = React32.useMemo(() => {
|
|
38634
37984
|
if (categorySlot) return categorySlot;
|
|
38635
37985
|
if (!category) return null;
|
|
38636
37986
|
return /* @__PURE__ */ jsx(Badge, { children: category });
|
|
38637
37987
|
}, [categorySlot, category]);
|
|
38638
|
-
const authorContent =
|
|
37988
|
+
const authorContent = React32.useMemo(() => {
|
|
38639
37989
|
if (authorSlot) return authorSlot;
|
|
38640
37990
|
if (!authorName) return null;
|
|
38641
37991
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-4", authorClassName), children: [
|
|
@@ -38670,7 +38020,7 @@ function ArticleTocSidebarComponent({
|
|
|
38670
38020
|
readTime,
|
|
38671
38021
|
authorClassName
|
|
38672
38022
|
]);
|
|
38673
|
-
const heroMediaContent =
|
|
38023
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
38674
38024
|
if (heroMediaSlot) return heroMediaSlot;
|
|
38675
38025
|
if (!heroImageSrc) return null;
|
|
38676
38026
|
return /* @__PURE__ */ jsx(
|
|
@@ -38692,7 +38042,7 @@ function ArticleTocSidebarComponent({
|
|
|
38692
38042
|
heroImageClassName,
|
|
38693
38043
|
optixFlowConfig
|
|
38694
38044
|
]);
|
|
38695
|
-
const tocContent =
|
|
38045
|
+
const tocContent = React32.useMemo(() => {
|
|
38696
38046
|
if (tocSlot) return tocSlot;
|
|
38697
38047
|
if (!sections || sections.length === 0) return null;
|
|
38698
38048
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
|
|
@@ -38700,7 +38050,7 @@ function ArticleTocSidebarComponent({
|
|
|
38700
38050
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: sections.map((section) => {
|
|
38701
38051
|
const isActive = activeSection === section.id;
|
|
38702
38052
|
if (renderSectionLink) {
|
|
38703
|
-
return /* @__PURE__ */ jsx(
|
|
38053
|
+
return /* @__PURE__ */ jsx(React32.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
38704
38054
|
}
|
|
38705
38055
|
return /* @__PURE__ */ jsx(
|
|
38706
38056
|
Pressable,
|
|
@@ -38717,7 +38067,7 @@ function ArticleTocSidebarComponent({
|
|
|
38717
38067
|
}) })
|
|
38718
38068
|
] });
|
|
38719
38069
|
}, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
|
|
38720
|
-
const ctaContent =
|
|
38070
|
+
const ctaContent = React32.useMemo(() => {
|
|
38721
38071
|
if (ctaSlot) return ctaSlot;
|
|
38722
38072
|
if (!ctaTitle && !ctaDescription && (!ctaActions || ctaActions.length === 0))
|
|
38723
38073
|
return null;
|
|
@@ -38831,11 +38181,11 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38831
38181
|
patternOpacity,
|
|
38832
38182
|
patternClassName
|
|
38833
38183
|
}) {
|
|
38834
|
-
const [activeSection, setActiveSection] =
|
|
38184
|
+
const [activeSection, setActiveSection] = React32.useState(
|
|
38835
38185
|
sections?.[0]?.id || ""
|
|
38836
38186
|
);
|
|
38837
|
-
const [showBackToTop, setShowBackToTop] =
|
|
38838
|
-
|
|
38187
|
+
const [showBackToTop, setShowBackToTop] = React32.useState(false);
|
|
38188
|
+
React32.useEffect(() => {
|
|
38839
38189
|
if (!enableTocTracking || !sections || sections.length === 0) return;
|
|
38840
38190
|
const observer = new IntersectionObserver(
|
|
38841
38191
|
(entries) => {
|
|
@@ -38853,7 +38203,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38853
38203
|
});
|
|
38854
38204
|
return () => observer.disconnect();
|
|
38855
38205
|
}, [sections, enableTocTracking]);
|
|
38856
|
-
|
|
38206
|
+
React32.useEffect(() => {
|
|
38857
38207
|
if (!enableBackToTop) return;
|
|
38858
38208
|
const handleScroll = () => {
|
|
38859
38209
|
setShowBackToTop(window.scrollY > 400);
|
|
@@ -38861,15 +38211,15 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38861
38211
|
window.addEventListener("scroll", handleScroll);
|
|
38862
38212
|
return () => window.removeEventListener("scroll", handleScroll);
|
|
38863
38213
|
}, [enableBackToTop]);
|
|
38864
|
-
const scrollToTop =
|
|
38214
|
+
const scrollToTop = React32.useCallback(() => {
|
|
38865
38215
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
38866
38216
|
}, []);
|
|
38867
|
-
const breadcrumbsContent =
|
|
38217
|
+
const breadcrumbsContent = React32.useMemo(() => {
|
|
38868
38218
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
38869
38219
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
38870
38220
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
38871
38221
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
38872
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
38222
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
38873
38223
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
38874
38224
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
38875
38225
|
] }, index)),
|
|
@@ -38879,7 +38229,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38879
38229
|
] })
|
|
38880
38230
|
] }) });
|
|
38881
38231
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
38882
|
-
const authorContent =
|
|
38232
|
+
const authorContent = React32.useMemo(() => {
|
|
38883
38233
|
if (authorSlot) return authorSlot;
|
|
38884
38234
|
if (!author) return null;
|
|
38885
38235
|
return /* @__PURE__ */ jsxs(
|
|
@@ -38902,7 +38252,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38902
38252
|
}
|
|
38903
38253
|
);
|
|
38904
38254
|
}, [authorSlot, author, publishDate, readTime, authorClassName]);
|
|
38905
|
-
const heroMediaContent =
|
|
38255
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
38906
38256
|
if (heroMediaSlot) return heroMediaSlot;
|
|
38907
38257
|
if (!heroImageSrc) return null;
|
|
38908
38258
|
return /* @__PURE__ */ jsx(
|
|
@@ -38924,7 +38274,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38924
38274
|
heroImageClassName,
|
|
38925
38275
|
optixFlowConfig
|
|
38926
38276
|
]);
|
|
38927
|
-
const tocContent =
|
|
38277
|
+
const tocContent = React32.useMemo(() => {
|
|
38928
38278
|
if (tocSlot) return tocSlot;
|
|
38929
38279
|
if (!sections || sections.length === 0) return null;
|
|
38930
38280
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
|
|
@@ -38932,7 +38282,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
38932
38282
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: sections.map((section) => {
|
|
38933
38283
|
const isActive = activeSection === section.id;
|
|
38934
38284
|
if (renderSectionLink) {
|
|
38935
|
-
return /* @__PURE__ */ jsx(
|
|
38285
|
+
return /* @__PURE__ */ jsx(React32.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
38936
38286
|
}
|
|
38937
38287
|
return /* @__PURE__ */ jsx(
|
|
38938
38288
|
Pressable,
|
|
@@ -39039,11 +38389,11 @@ function ArticleCompactTocComponent({
|
|
|
39039
38389
|
patternOpacity,
|
|
39040
38390
|
patternClassName
|
|
39041
38391
|
}) {
|
|
39042
|
-
const [activeSection, setActiveSection] =
|
|
38392
|
+
const [activeSection, setActiveSection] = React32.useState(
|
|
39043
38393
|
sections?.[0]?.id || ""
|
|
39044
38394
|
);
|
|
39045
|
-
const [isTocOpen, setIsTocOpen] =
|
|
39046
|
-
|
|
38395
|
+
const [isTocOpen, setIsTocOpen] = React32.useState(false);
|
|
38396
|
+
React32.useEffect(() => {
|
|
39047
38397
|
if (!enableTocTracking) return;
|
|
39048
38398
|
const observer = new IntersectionObserver(
|
|
39049
38399
|
(entries) => {
|
|
@@ -39061,12 +38411,12 @@ function ArticleCompactTocComponent({
|
|
|
39061
38411
|
});
|
|
39062
38412
|
return () => observer.disconnect();
|
|
39063
38413
|
}, [sections, enableTocTracking]);
|
|
39064
|
-
const breadcrumbsContent =
|
|
38414
|
+
const breadcrumbsContent = React32.useMemo(() => {
|
|
39065
38415
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
39066
38416
|
if (!breadcrumbs && !currentPage) return null;
|
|
39067
38417
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-6 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
39068
38418
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
39069
|
-
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
38419
|
+
breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
39070
38420
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
39071
38421
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
39072
38422
|
] }, index)),
|
|
@@ -39074,13 +38424,13 @@ function ArticleCompactTocComponent({
|
|
|
39074
38424
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
|
|
39075
38425
|
] }) });
|
|
39076
38426
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
39077
|
-
const renderTocLinks =
|
|
38427
|
+
const renderTocLinks = React32.useCallback(
|
|
39078
38428
|
(onLinkClick) => {
|
|
39079
38429
|
if (!sections) return null;
|
|
39080
38430
|
return sections.map((section) => {
|
|
39081
38431
|
const isActive = activeSection === section.id;
|
|
39082
38432
|
if (renderSectionLink) {
|
|
39083
|
-
return /* @__PURE__ */ jsx(
|
|
38433
|
+
return /* @__PURE__ */ jsx(React32.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
39084
38434
|
}
|
|
39085
38435
|
return /* @__PURE__ */ jsx(
|
|
39086
38436
|
Pressable,
|
|
@@ -39099,7 +38449,7 @@ function ArticleCompactTocComponent({
|
|
|
39099
38449
|
},
|
|
39100
38450
|
[sections, activeSection, renderSectionLink]
|
|
39101
38451
|
);
|
|
39102
|
-
const tocContent =
|
|
38452
|
+
const tocContent = React32.useMemo(() => {
|
|
39103
38453
|
if (tocSlot) return tocSlot;
|
|
39104
38454
|
if (!sections || sections.length === 0) return null;
|
|
39105
38455
|
return /* @__PURE__ */ jsx("div", { className: "mb-8 lg:hidden", children: /* @__PURE__ */ jsxs(Popover, { open: isTocOpen, onOpenChange: setIsTocOpen, children: [
|
|
@@ -39133,14 +38483,14 @@ function ArticleCompactTocComponent({
|
|
|
39133
38483
|
] }) });
|
|
39134
38484
|
}, [tocSlot, sections, isTocOpen, tocClassName, renderTocLinks]);
|
|
39135
38485
|
const hasDesktopToc = !tocSlot && sections && sections.length > 0;
|
|
39136
|
-
const desktopTocContent =
|
|
38486
|
+
const desktopTocContent = React32.useMemo(() => {
|
|
39137
38487
|
if (!hasDesktopToc) return null;
|
|
39138
38488
|
return /* @__PURE__ */ jsx("aside", { className: cn("hidden lg:block w-64 shrink-0", tocClassName), children: /* @__PURE__ */ jsxs("nav", { className: "sticky top-24 max-h-[calc(100vh-8rem)] overflow-y-auto space-y-2 rounded-lg border p-4", children: [
|
|
39139
38489
|
/* @__PURE__ */ jsx("span", { className: "mb-3 block text-sm font-semibold", children: "Table of Contents" }),
|
|
39140
38490
|
renderTocLinks()
|
|
39141
38491
|
] }) });
|
|
39142
38492
|
}, [hasDesktopToc, tocClassName, renderTocLinks]);
|
|
39143
|
-
const heroMediaContent =
|
|
38493
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
39144
38494
|
if (heroMediaSlot) return heroMediaSlot;
|
|
39145
38495
|
if (!heroImageSrc) return null;
|
|
39146
38496
|
return /* @__PURE__ */ jsx(
|
|
@@ -39262,10 +38612,10 @@ function ArticleChaptersAuthorComponent({
|
|
|
39262
38612
|
pattern,
|
|
39263
38613
|
patternOpacity
|
|
39264
38614
|
}) {
|
|
39265
|
-
const [activeChapter, setActiveChapter] =
|
|
38615
|
+
const [activeChapter, setActiveChapter] = React32.useState(
|
|
39266
38616
|
chapters?.[0]?.id || ""
|
|
39267
38617
|
);
|
|
39268
|
-
|
|
38618
|
+
React32.useEffect(() => {
|
|
39269
38619
|
if (!enableChapterTracking || !chapters || chapters.length === 0) return;
|
|
39270
38620
|
const observer = new IntersectionObserver(
|
|
39271
38621
|
(entries) => {
|
|
@@ -39283,12 +38633,12 @@ function ArticleChaptersAuthorComponent({
|
|
|
39283
38633
|
});
|
|
39284
38634
|
return () => observer.disconnect();
|
|
39285
38635
|
}, [chapters, enableChapterTracking]);
|
|
39286
|
-
const breadcrumbsContent =
|
|
38636
|
+
const breadcrumbsContent = React32.useMemo(() => {
|
|
39287
38637
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
39288
38638
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
39289
38639
|
return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
|
|
39290
38640
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
|
|
39291
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
38641
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
39292
38642
|
/* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
|
|
39293
38643
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
39294
38644
|
] }, index)),
|
|
@@ -39296,7 +38646,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
39296
38646
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
|
|
39297
38647
|
] }) });
|
|
39298
38648
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
39299
|
-
const chaptersNavContent =
|
|
38649
|
+
const chaptersNavContent = React32.useMemo(() => {
|
|
39300
38650
|
if (chaptersSlot) return chaptersSlot;
|
|
39301
38651
|
if (!chapters || chapters.length === 0) return null;
|
|
39302
38652
|
return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
|
|
@@ -39304,7 +38654,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
39304
38654
|
/* @__PURE__ */ jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
|
|
39305
38655
|
const isActive = activeChapter === chapter.id;
|
|
39306
38656
|
if (renderChapterLink) {
|
|
39307
|
-
return /* @__PURE__ */ jsx(
|
|
38657
|
+
return /* @__PURE__ */ jsx(React32.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
|
|
39308
38658
|
}
|
|
39309
38659
|
return /* @__PURE__ */ jsxs(
|
|
39310
38660
|
Pressable,
|
|
@@ -39338,7 +38688,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
39338
38688
|
renderChapterLink,
|
|
39339
38689
|
chaptersClassName
|
|
39340
38690
|
]);
|
|
39341
|
-
const authorCardContent =
|
|
38691
|
+
const authorCardContent = React32.useMemo(() => {
|
|
39342
38692
|
if (authorSlot) return authorSlot;
|
|
39343
38693
|
if (!author) return null;
|
|
39344
38694
|
let socialLinksContent = null;
|
|
@@ -39387,7 +38737,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
39387
38737
|
socialLinksContent
|
|
39388
38738
|
] });
|
|
39389
38739
|
}, [authorSlot, author, authorClassName]);
|
|
39390
|
-
const heroMediaContent =
|
|
38740
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
39391
38741
|
if (heroMediaSlot) return heroMediaSlot;
|
|
39392
38742
|
if (!heroImageSrc) return null;
|
|
39393
38743
|
return /* @__PURE__ */ jsx(
|
|
@@ -39409,7 +38759,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
39409
38759
|
heroImageClassName,
|
|
39410
38760
|
optixFlowConfig
|
|
39411
38761
|
]);
|
|
39412
|
-
const conclusionContent =
|
|
38762
|
+
const conclusionContent = React32.useMemo(() => {
|
|
39413
38763
|
if (conclusionSlot) return conclusionSlot;
|
|
39414
38764
|
if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0))
|
|
39415
38765
|
return null;
|
|
@@ -39551,7 +38901,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
39551
38901
|
spacing = "lg"
|
|
39552
38902
|
}) {
|
|
39553
38903
|
const MotionWrapper = enableAnimations ? motion.div : "div";
|
|
39554
|
-
const categoryContent =
|
|
38904
|
+
const categoryContent = React32.useMemo(() => {
|
|
39555
38905
|
if (categorySlot) return categorySlot;
|
|
39556
38906
|
if (!category) return null;
|
|
39557
38907
|
return /* @__PURE__ */ jsx(
|
|
@@ -39566,7 +38916,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
39566
38916
|
}
|
|
39567
38917
|
);
|
|
39568
38918
|
}, [categorySlot, category, categoryHref, categoryClassName]);
|
|
39569
|
-
const heroMediaContent =
|
|
38919
|
+
const heroMediaContent = React32.useMemo(() => {
|
|
39570
38920
|
if (heroMediaSlot) return heroMediaSlot;
|
|
39571
38921
|
if (!image) return null;
|
|
39572
38922
|
return /* @__PURE__ */ jsx(
|
|
@@ -39579,7 +38929,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
39579
38929
|
}
|
|
39580
38930
|
);
|
|
39581
38931
|
}, [heroMediaSlot, image, imageAlt, title, optixFlowConfig]);
|
|
39582
|
-
const authorContent =
|
|
38932
|
+
const authorContent = React32.useMemo(() => {
|
|
39583
38933
|
if (authorSlot) return authorSlot;
|
|
39584
38934
|
if (!authorName) return null;
|
|
39585
38935
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-8 flex items-center gap-4", authorClassName), children: [
|
|
@@ -39607,7 +38957,7 @@ function ArticleSplitAnimatedComponent({
|
|
|
39607
38957
|
authorRole,
|
|
39608
38958
|
authorClassName
|
|
39609
38959
|
]);
|
|
39610
|
-
const ctaContent =
|
|
38960
|
+
const ctaContent = React32.useMemo(() => {
|
|
39611
38961
|
if (ctaSlot) return ctaSlot;
|
|
39612
38962
|
if (!ctaActions || ctaActions.length === 0) return null;
|
|
39613
38963
|
return /* @__PURE__ */ jsx("div", { className: cn("mt-8 flex flex-wrap gap-3", ctaClassName), children: ctaActions.map((action, index) => {
|
|
@@ -41273,7 +40623,7 @@ function FaqSidebarNavigation({
|
|
|
41273
40623
|
accordionTriggerClassName,
|
|
41274
40624
|
accordionContentClassName
|
|
41275
40625
|
}) {
|
|
41276
|
-
const [activeCategory, setActiveCategory] =
|
|
40626
|
+
const [activeCategory, setActiveCategory] = React32.useState(
|
|
41277
40627
|
categories && categories.length > 1 ? "all" : categories?.[0]?.id || ""
|
|
41278
40628
|
);
|
|
41279
40629
|
const filteredCategories = useMemo(() => {
|
|
@@ -42331,7 +41681,7 @@ function FaqSplitHero({
|
|
|
42331
41681
|
}
|
|
42332
41682
|
);
|
|
42333
41683
|
}
|
|
42334
|
-
var Controls =
|
|
41684
|
+
var Controls = React32.memo(
|
|
42335
41685
|
({
|
|
42336
41686
|
handleNext,
|
|
42337
41687
|
handlePrevious,
|
|
@@ -42362,7 +41712,7 @@ var Controls = React8.memo(
|
|
|
42362
41712
|
] });
|
|
42363
41713
|
}
|
|
42364
41714
|
);
|
|
42365
|
-
var FeatureCard =
|
|
41715
|
+
var FeatureCard = React32.memo(
|
|
42366
41716
|
({ feature, isActive, onClick }) => {
|
|
42367
41717
|
const variants2 = useMemo(
|
|
42368
41718
|
() => ({
|
|
@@ -42471,7 +41821,7 @@ var FeatureCard = React8.memo(
|
|
|
42471
41821
|
) });
|
|
42472
41822
|
}
|
|
42473
41823
|
);
|
|
42474
|
-
var FeaturesDesktop =
|
|
41824
|
+
var FeaturesDesktop = React32.memo(
|
|
42475
41825
|
({
|
|
42476
41826
|
features,
|
|
42477
41827
|
handleNext,
|
|
@@ -42505,7 +41855,7 @@ var FeaturesDesktop = React8.memo(
|
|
|
42505
41855
|
] });
|
|
42506
41856
|
}
|
|
42507
41857
|
);
|
|
42508
|
-
var FeaturesMobile =
|
|
41858
|
+
var FeaturesMobile = React32.memo(
|
|
42509
41859
|
({
|
|
42510
41860
|
features,
|
|
42511
41861
|
handleNext,
|
|
@@ -42596,8 +41946,8 @@ function FeatureAnimatedCarousel({
|
|
|
42596
41946
|
spacing = "py-12 md:py-32",
|
|
42597
41947
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
|
|
42598
41948
|
}) {
|
|
42599
|
-
const [activeIndex, setActiveIndex] =
|
|
42600
|
-
const [direction, setDirection] =
|
|
41949
|
+
const [activeIndex, setActiveIndex] = React32.useState(0);
|
|
41950
|
+
const [direction, setDirection] = React32.useState(1);
|
|
42601
41951
|
const handleNext = useCallback(() => {
|
|
42602
41952
|
if (features && activeIndex < features.length - 1) {
|
|
42603
41953
|
setDirection(1);
|
|
@@ -42826,7 +42176,7 @@ function FooterNewsletterContact({
|
|
|
42826
42176
|
formSlot,
|
|
42827
42177
|
newsletterFormClassName
|
|
42828
42178
|
}) {
|
|
42829
|
-
const linkSectionsContent =
|
|
42179
|
+
const linkSectionsContent = React32.useMemo(() => {
|
|
42830
42180
|
if (!footerLinks || footerLinks.length === 0) return null;
|
|
42831
42181
|
return footerLinks.map((section, idx) => /* @__PURE__ */ jsxs("div", { children: [
|
|
42832
42182
|
/* @__PURE__ */ jsx("h2", { className: "mb-6 text-sm font-medium uppercase leading-tight opacity-70", children: section.title }),
|
|
@@ -42840,7 +42190,7 @@ function FooterNewsletterContact({
|
|
|
42840
42190
|
) }, itemIdx)) })
|
|
42841
42191
|
] }, idx));
|
|
42842
42192
|
}, [footerLinks]);
|
|
42843
|
-
const contactDetailsContent =
|
|
42193
|
+
const contactDetailsContent = React32.useMemo(() => {
|
|
42844
42194
|
if (!contactDetails || contactDetails.length === 0) return null;
|
|
42845
42195
|
return contactDetails.map((item, idx) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-3", children: [
|
|
42846
42196
|
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center shrink-0 mt-1", children: /* @__PURE__ */ jsx(DynamicIcon, { name: item.icon, size: 16 }) }),
|
|
@@ -42854,7 +42204,7 @@ function FooterNewsletterContact({
|
|
|
42854
42204
|
) })
|
|
42855
42205
|
] }, idx));
|
|
42856
42206
|
}, [contactDetails]);
|
|
42857
|
-
const socialLinksContent =
|
|
42207
|
+
const socialLinksContent = React32.useMemo(() => {
|
|
42858
42208
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
42859
42209
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
42860
42210
|
SocialLinkIcon,
|
|
@@ -42868,7 +42218,7 @@ function FooterNewsletterContact({
|
|
|
42868
42218
|
}
|
|
42869
42219
|
) }, idx));
|
|
42870
42220
|
}, [socialLinks]);
|
|
42871
|
-
const renderForm =
|
|
42221
|
+
const renderForm = React32.useMemo(() => {
|
|
42872
42222
|
if (formSlot) return formSlot;
|
|
42873
42223
|
if (!formEngineSetup) return null;
|
|
42874
42224
|
const defaultButtonAction = {
|
|
@@ -43013,7 +42363,7 @@ function FooterSplitImageAccordion({
|
|
|
43013
42363
|
buttonAction,
|
|
43014
42364
|
formSlot
|
|
43015
42365
|
}) {
|
|
43016
|
-
const renderForm =
|
|
42366
|
+
const renderForm = React32.useMemo(() => {
|
|
43017
42367
|
if (formSlot) return formSlot;
|
|
43018
42368
|
if (!formEngineSetup) return null;
|
|
43019
42369
|
const defaultButtonAction = {
|
|
@@ -43274,7 +42624,7 @@ function FooterAccordionSocial({
|
|
|
43274
42624
|
patternClassName,
|
|
43275
42625
|
formEngineSetup
|
|
43276
42626
|
}) {
|
|
43277
|
-
const renderForm =
|
|
42627
|
+
const renderForm = React32.useMemo(() => {
|
|
43278
42628
|
if (!formEngineSetup) return null;
|
|
43279
42629
|
const action = {
|
|
43280
42630
|
label: "",
|
|
@@ -43418,7 +42768,7 @@ function FooterInfoCardsAccordion({
|
|
|
43418
42768
|
patternOpacity,
|
|
43419
42769
|
optixFlowConfig
|
|
43420
42770
|
}) {
|
|
43421
|
-
const [email, setEmail] =
|
|
42771
|
+
const [email, setEmail] = React32.useState("");
|
|
43422
42772
|
(/* @__PURE__ */ new Date()).getFullYear();
|
|
43423
42773
|
const handleSubmit = (e) => {
|
|
43424
42774
|
e.preventDefault();
|
|
@@ -43723,13 +43073,13 @@ function CaseStudiesImageGrid({
|
|
|
43723
43073
|
patternOpacity,
|
|
43724
43074
|
optixFlowConfig
|
|
43725
43075
|
}) {
|
|
43726
|
-
const getGridClass =
|
|
43076
|
+
const getGridClass = React32.useCallback((index) => {
|
|
43727
43077
|
if (index === 0 || index === 4) {
|
|
43728
43078
|
return "row-span-2 aspect-square lg:aspect-auto";
|
|
43729
43079
|
}
|
|
43730
43080
|
return "aspect-3/2 md:aspect-2/1";
|
|
43731
43081
|
}, []);
|
|
43732
|
-
const renderedItems =
|
|
43082
|
+
const renderedItems = React32.useMemo(() => {
|
|
43733
43083
|
if (itemsSlot) return itemsSlot;
|
|
43734
43084
|
if (!items || items.length === 0) return null;
|
|
43735
43085
|
return items.map((item, index) => /* @__PURE__ */ jsxs(
|
|
@@ -43815,7 +43165,7 @@ function CaseStudiesTestimonialStats({
|
|
|
43815
43165
|
patternOpacity,
|
|
43816
43166
|
optixFlowConfig
|
|
43817
43167
|
}) {
|
|
43818
|
-
const renderedTestimonials =
|
|
43168
|
+
const renderedTestimonials = React32.useMemo(() => {
|
|
43819
43169
|
if (testimonialsSlot) return testimonialsSlot;
|
|
43820
43170
|
if (!testimonials || testimonials.length === 0) return null;
|
|
43821
43171
|
return testimonials.map((testimonial, index) => /* @__PURE__ */ jsxs("div", { className: testimonialItemClassName, children: [
|
|
@@ -44682,7 +44032,7 @@ function TestimonialsCarouselImage({
|
|
|
44682
44032
|
}) {
|
|
44683
44033
|
const [currentIndex, setCurrentIndex] = useState(0);
|
|
44684
44034
|
const totalTestimonials = testimonials?.length ?? 0;
|
|
44685
|
-
const autoPlayTimerRef =
|
|
44035
|
+
const autoPlayTimerRef = React32.useRef(
|
|
44686
44036
|
null
|
|
44687
44037
|
);
|
|
44688
44038
|
const resetAutoPlay = useCallback(() => {
|
|
@@ -45668,7 +45018,7 @@ function TestimonialsSliderMinimal({
|
|
|
45668
45018
|
}) {
|
|
45669
45019
|
const [currentIndex, setCurrentIndex] = useState(0);
|
|
45670
45020
|
const totalTestimonials = testimonials?.length ?? 0;
|
|
45671
|
-
const autoPlayTimerRef =
|
|
45021
|
+
const autoPlayTimerRef = React32.useRef(
|
|
45672
45022
|
null
|
|
45673
45023
|
);
|
|
45674
45024
|
const resetAutoPlay = useCallback(() => {
|
|
@@ -46879,7 +46229,7 @@ function TestimonialsAnimatedSplit({
|
|
|
46879
46229
|
}) {
|
|
46880
46230
|
const [currentIndex, setCurrentIndex] = useState(0);
|
|
46881
46231
|
const totalTestimonials = testimonials?.length ?? 0;
|
|
46882
|
-
const autoPlayTimerRef =
|
|
46232
|
+
const autoPlayTimerRef = React32.useRef(
|
|
46883
46233
|
null
|
|
46884
46234
|
);
|
|
46885
46235
|
const resetAutoPlay = useCallback(() => {
|
|
@@ -48111,7 +47461,7 @@ function CaseStudiesFeaturedBorder({
|
|
|
48111
47461
|
patternOpacity,
|
|
48112
47462
|
optixFlowConfig
|
|
48113
47463
|
}) {
|
|
48114
|
-
const renderedFeatured =
|
|
47464
|
+
const renderedFeatured = React32.useMemo(() => {
|
|
48115
47465
|
if (featuredSlot) return featuredSlot;
|
|
48116
47466
|
if (!featuredCaseStudy) return null;
|
|
48117
47467
|
return /* @__PURE__ */ jsxs(
|
|
@@ -48185,7 +47535,7 @@ function CaseStudiesFeaturedBorder({
|
|
|
48185
47535
|
featuredImageClassName,
|
|
48186
47536
|
optixFlowConfig
|
|
48187
47537
|
]);
|
|
48188
|
-
const renderedCaseStudies =
|
|
47538
|
+
const renderedCaseStudies = React32.useMemo(() => {
|
|
48189
47539
|
if (caseStudiesSlot) return caseStudiesSlot;
|
|
48190
47540
|
if (!caseStudies || caseStudies.length === 0) return null;
|
|
48191
47541
|
return caseStudies.map((item, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -48294,7 +47644,7 @@ function CaseStudiesStatsCard({
|
|
|
48294
47644
|
patternOpacity,
|
|
48295
47645
|
optixFlowConfig
|
|
48296
47646
|
}) {
|
|
48297
|
-
const renderedStats =
|
|
47647
|
+
const renderedStats = React32.useMemo(() => {
|
|
48298
47648
|
if (statsSlot) return statsSlot;
|
|
48299
47649
|
if (!stats || stats.length === 0) return null;
|
|
48300
47650
|
return /* @__PURE__ */ jsx("div", { className: cn("flex w-full flex-col gap-8 sm:flex-row", statsClassName), children: stats.map((item, i) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
@@ -48302,7 +47652,7 @@ function CaseStudiesStatsCard({
|
|
|
48302
47652
|
/* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-muted-foreground", children: item.text })
|
|
48303
47653
|
] }, `stats-${i}`)) });
|
|
48304
47654
|
}, [statsSlot, stats, statsClassName]);
|
|
48305
|
-
const renderedAuthor =
|
|
47655
|
+
const renderedAuthor = React32.useMemo(() => {
|
|
48306
47656
|
if (authorSlot) return authorSlot;
|
|
48307
47657
|
if (!author) return null;
|
|
48308
47658
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2.5", authorClassName), children: [
|
|
@@ -48316,7 +47666,7 @@ function CaseStudiesStatsCard({
|
|
|
48316
47666
|
] })
|
|
48317
47667
|
] });
|
|
48318
47668
|
}, [authorSlot, author, authorClassName]);
|
|
48319
|
-
const renderedActions =
|
|
47669
|
+
const renderedActions = React32.useMemo(() => {
|
|
48320
47670
|
if (actionsSlot) return actionsSlot;
|
|
48321
47671
|
if (!actions || actions.length === 0) return null;
|
|
48322
47672
|
return /* @__PURE__ */ jsx("div", { className: cn("shrink-0", actionsClassName), children: actions.map((action, index) => {
|
|
@@ -55727,7 +55077,7 @@ function HeroSplitImageNewsletter({
|
|
|
55727
55077
|
onError,
|
|
55728
55078
|
uploadTokens
|
|
55729
55079
|
});
|
|
55730
|
-
const renderForm =
|
|
55080
|
+
const renderForm = React32.useMemo(() => {
|
|
55731
55081
|
if (formSlot) return formSlot;
|
|
55732
55082
|
if (!formFields || formFields.length === 0) return null;
|
|
55733
55083
|
const defaultButtonAction = {
|
|
@@ -55806,7 +55156,7 @@ function HeroSplitImageNewsletter({
|
|
|
55806
55156
|
resetUpload,
|
|
55807
55157
|
resetSubmissionState
|
|
55808
55158
|
]);
|
|
55809
|
-
const renderImage =
|
|
55159
|
+
const renderImage = React32.useMemo(() => {
|
|
55810
55160
|
if (imageSlot) return imageSlot;
|
|
55811
55161
|
if (!image) return null;
|
|
55812
55162
|
return /* @__PURE__ */ jsx("div", { className: "relative lg:w-1/2", children: /* @__PURE__ */ jsx(
|
|
@@ -57239,7 +56589,7 @@ function HeroSaasDashboardPreview({
|
|
|
57239
56589
|
onError,
|
|
57240
56590
|
uploadTokens
|
|
57241
56591
|
});
|
|
57242
|
-
const renderBadge =
|
|
56592
|
+
const renderBadge = React32.useMemo(() => {
|
|
57243
56593
|
if (badgeSlot) return badgeSlot;
|
|
57244
56594
|
return /* @__PURE__ */ jsxs(
|
|
57245
56595
|
"div",
|
|
@@ -57254,7 +56604,7 @@ function HeroSaasDashboardPreview({
|
|
|
57254
56604
|
}
|
|
57255
56605
|
);
|
|
57256
56606
|
}, [badgeSlot, badgeIcon, badgeText]);
|
|
57257
|
-
const renderForm =
|
|
56607
|
+
const renderForm = React32.useMemo(() => {
|
|
57258
56608
|
if (formSlot) return formSlot;
|
|
57259
56609
|
const defaultButtonAction = {
|
|
57260
56610
|
label: "Start Free Trial",
|
|
@@ -57329,7 +56679,7 @@ function HeroSaasDashboardPreview({
|
|
|
57329
56679
|
resetUpload,
|
|
57330
56680
|
resetSubmissionState
|
|
57331
56681
|
]);
|
|
57332
|
-
const renderBrowserPreview =
|
|
56682
|
+
const renderBrowserPreview = React32.useMemo(() => {
|
|
57333
56683
|
if (browserPreviewSlot) return browserPreviewSlot;
|
|
57334
56684
|
if (!browserPreview) return null;
|
|
57335
56685
|
return /* @__PURE__ */ jsxs("div", { className: cn("relative mt-12 md:mt-20", previewClassName), children: [
|
|
@@ -59580,7 +58930,7 @@ function HeroEcommerceProductShowcase({
|
|
|
59580
58930
|
"flex flex-col md:flex-row items-center gap-4 md:gap-6 pt-8 md:pt-12",
|
|
59581
58931
|
statsClassName
|
|
59582
58932
|
),
|
|
59583
|
-
children: stats.map((stat, index) => /* @__PURE__ */ jsxs(
|
|
58933
|
+
children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
59584
58934
|
index > 0 && /* @__PURE__ */ jsx("div", { className: "h-12 w-px bg-border hidden md:flex" }),
|
|
59585
58935
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 justify-between flex-row md:flex-col text-left md:text-center w-full md:w-fit border md:border-none rounded-xl md:rounded-none p-4 md:p-0", children: [
|
|
59586
58936
|
/* @__PURE__ */ jsxs(
|
|
@@ -60024,7 +59374,7 @@ function HeroNewsletterMinimal({
|
|
|
60024
59374
|
disclaimerClassName,
|
|
60025
59375
|
statsClassName
|
|
60026
59376
|
}) {
|
|
60027
|
-
const renderStats =
|
|
59377
|
+
const renderStats = React32.useMemo(() => {
|
|
60028
59378
|
if (statsSlot) return statsSlot;
|
|
60029
59379
|
if (!stats || stats.length === 0) return null;
|
|
60030
59380
|
return stats.map((stat, index) => /* @__PURE__ */ jsx("div", { className: cn("flex items-center", stat.className), children: /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
@@ -60050,7 +59400,7 @@ function HeroNewsletterMinimal({
|
|
|
60050
59400
|
/* @__PURE__ */ jsx("div", { className: cn("text-sm"), children: stat.label })
|
|
60051
59401
|
] }) }, index));
|
|
60052
59402
|
}, [statsSlot, stats]);
|
|
60053
|
-
const renderForm =
|
|
59403
|
+
const renderForm = React32.useMemo(() => {
|
|
60054
59404
|
if (formSlot) return formSlot;
|
|
60055
59405
|
if (!formEngineSetup) return null;
|
|
60056
59406
|
const defaultButtonAction = {
|
|
@@ -60217,7 +59567,7 @@ function HeroComingSoonCountdown({
|
|
|
60217
59567
|
formClassName,
|
|
60218
59568
|
socialLinksClassName
|
|
60219
59569
|
}) {
|
|
60220
|
-
const [timeLeft, setTimeLeft] =
|
|
59570
|
+
const [timeLeft, setTimeLeft] = React32.useState(null);
|
|
60221
59571
|
const {
|
|
60222
59572
|
uploadTokens,
|
|
60223
59573
|
uploadProgress,
|
|
@@ -60237,7 +59587,7 @@ function HeroComingSoonCountdown({
|
|
|
60237
59587
|
onError,
|
|
60238
59588
|
uploadTokens
|
|
60239
59589
|
});
|
|
60240
|
-
const calculateTimeLeft =
|
|
59590
|
+
const calculateTimeLeft = React32.useCallback(() => {
|
|
60241
59591
|
if (!countdownDate) return null;
|
|
60242
59592
|
const now = Date.now();
|
|
60243
59593
|
const target = countdownDate.getTime();
|
|
@@ -60250,7 +59600,7 @@ function HeroComingSoonCountdown({
|
|
|
60250
59600
|
seconds: Math.floor(diff % (1e3 * 60) / 1e3)
|
|
60251
59601
|
};
|
|
60252
59602
|
}, [countdownDate]);
|
|
60253
|
-
|
|
59603
|
+
React32.useEffect(() => {
|
|
60254
59604
|
setTimeLeft(calculateTimeLeft());
|
|
60255
59605
|
if (!countdownDate) return;
|
|
60256
59606
|
const timer = setInterval(() => {
|
|
@@ -60261,7 +59611,7 @@ function HeroComingSoonCountdown({
|
|
|
60261
59611
|
return () => clearInterval(timer);
|
|
60262
59612
|
}, [countdownDate, calculateTimeLeft]);
|
|
60263
59613
|
const showCountdown = countdownSlot || timeLeft;
|
|
60264
|
-
const renderForm =
|
|
59614
|
+
const renderForm = React32.useMemo(() => {
|
|
60265
59615
|
if (formSlot) return formSlot;
|
|
60266
59616
|
const defaultButtonAction = {
|
|
60267
59617
|
label: "Notify Me",
|
|
@@ -60337,7 +59687,7 @@ function HeroComingSoonCountdown({
|
|
|
60337
59687
|
resetUpload,
|
|
60338
59688
|
resetSubmissionState
|
|
60339
59689
|
]);
|
|
60340
|
-
const renderSocialLinks =
|
|
59690
|
+
const renderSocialLinks = React32.useMemo(() => {
|
|
60341
59691
|
if (socialLinksSlot) return socialLinksSlot;
|
|
60342
59692
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
60343
59693
|
return socialLinks.map((link, index) => /* @__PURE__ */ jsx(
|
|
@@ -60471,7 +59821,7 @@ function HeroEventRegistration({
|
|
|
60471
59821
|
"flex flex-col md:flex-row items-center gap-4 md:gap-6 pt-8 md:pt-12 w-full md:w-fit",
|
|
60472
59822
|
statsClassName
|
|
60473
59823
|
),
|
|
60474
|
-
children: stats.map((stat, index) => /* @__PURE__ */ jsxs(
|
|
59824
|
+
children: stats.map((stat, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
60475
59825
|
index > 0 && /* @__PURE__ */ jsx("div", { className: "h-12 w-px bg-border hidden md:flex" }),
|
|
60476
59826
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 justify-between flex-row md:flex-col text-left md:text-center w-full md:w-fit border md:border-none rounded-xl md:rounded-none p-4 md:p-0", children: [
|
|
60477
59827
|
/* @__PURE__ */ jsxs(
|
|
@@ -60874,7 +60224,7 @@ function ComparisonTableTwoColumn({
|
|
|
60874
60224
|
patternOpacity,
|
|
60875
60225
|
optixFlowConfig
|
|
60876
60226
|
}) {
|
|
60877
|
-
const tableContent =
|
|
60227
|
+
const tableContent = React32.useMemo(() => {
|
|
60878
60228
|
if (tableSlot) return tableSlot;
|
|
60879
60229
|
if (!rows || rows.length === 0) return null;
|
|
60880
60230
|
return /* @__PURE__ */ jsx("div", { className: cn("-mr-4 overflow-x-auto", tableWrapperClassName), children: /* @__PURE__ */ jsx("div", { className: "min-w-2xl overflow-hidden", children: /* @__PURE__ */ jsxs(
|
|
@@ -60904,7 +60254,7 @@ function ComparisonTableTwoColumn({
|
|
|
60904
60254
|
optixFlowConfig
|
|
60905
60255
|
}
|
|
60906
60256
|
) : optionBLabel && (typeof optionBLabel === "string" ? /* @__PURE__ */ jsx("span", { className: "text-lg font-semibold", children: optionBLabel }) : optionBLabel) }),
|
|
60907
|
-
rows.map((row, idx) => /* @__PURE__ */ jsxs(
|
|
60257
|
+
rows.map((row, idx) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
60908
60258
|
/* @__PURE__ */ jsx("div", { className: "flex items-center border-b p-3 text-base font-medium md:p-4 md:text-lg", children: row.label }),
|
|
60909
60259
|
/* @__PURE__ */ jsx("div", { className: cn("border-b bg-success/5 p-3 md:p-6", optionACellClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
60910
60260
|
row.hasIcon && /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 20, className: "text-success" }),
|
|
@@ -60933,14 +60283,14 @@ function ComparisonTableTwoColumn({
|
|
|
60933
60283
|
optionBLabel,
|
|
60934
60284
|
optixFlowConfig
|
|
60935
60285
|
]);
|
|
60936
|
-
const headingContent =
|
|
60286
|
+
const headingContent = React32.useMemo(() => {
|
|
60937
60287
|
if (!heading) return null;
|
|
60938
60288
|
if (typeof heading === "string") {
|
|
60939
60289
|
return /* @__PURE__ */ jsx("h1", { className: cn("mb-8 text-3xl font-bold md:mb-12 md:text-5xl", headingClassName), children: heading });
|
|
60940
60290
|
}
|
|
60941
60291
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
60942
60292
|
}, [heading, headingClassName]);
|
|
60943
|
-
const descriptionContent =
|
|
60293
|
+
const descriptionContent = React32.useMemo(() => {
|
|
60944
60294
|
if (!description) return null;
|
|
60945
60295
|
if (typeof description === "string") {
|
|
60946
60296
|
return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -60987,7 +60337,7 @@ function ComparisonFeatureCards({
|
|
|
60987
60337
|
patternOpacity,
|
|
60988
60338
|
optixFlowConfig
|
|
60989
60339
|
}) {
|
|
60990
|
-
const renderCard =
|
|
60340
|
+
const renderCard = React32.useCallback(
|
|
60991
60341
|
(product, isHighlighted) => /* @__PURE__ */ jsxs(
|
|
60992
60342
|
"div",
|
|
60993
60343
|
{
|
|
@@ -61043,7 +60393,7 @@ function ComparisonFeatureCards({
|
|
|
61043
60393
|
),
|
|
61044
60394
|
[cardClassName, optixFlowConfig]
|
|
61045
60395
|
);
|
|
61046
|
-
const cardsContent =
|
|
60396
|
+
const cardsContent = React32.useMemo(() => {
|
|
61047
60397
|
if (cardsSlot) return cardsSlot;
|
|
61048
60398
|
if (!productA || !productB) return null;
|
|
61049
60399
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -61051,28 +60401,28 @@ function ComparisonFeatureCards({
|
|
|
61051
60401
|
renderCard(productB, productB.highlighted ?? false)
|
|
61052
60402
|
] });
|
|
61053
60403
|
}, [cardsSlot, productA, productB, renderCard]);
|
|
61054
|
-
const headingContent =
|
|
60404
|
+
const headingContent = React32.useMemo(() => {
|
|
61055
60405
|
if (!heading) return null;
|
|
61056
60406
|
if (typeof heading === "string") {
|
|
61057
60407
|
return /* @__PURE__ */ jsx("h1", { className: cn("mb-6 text-4xl font-semibold md:text-7xl", headingClassName), children: heading });
|
|
61058
60408
|
}
|
|
61059
60409
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61060
60410
|
}, [heading, headingClassName]);
|
|
61061
|
-
const descriptionContent =
|
|
60411
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61062
60412
|
if (!description) return null;
|
|
61063
60413
|
if (typeof description === "string") {
|
|
61064
60414
|
return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-4xl text-muted-foreground md:text-xl", descriptionClassName), children: description });
|
|
61065
60415
|
}
|
|
61066
60416
|
return /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description });
|
|
61067
60417
|
}, [description, descriptionClassName]);
|
|
61068
|
-
const suitabilityContent =
|
|
60418
|
+
const suitabilityContent = React32.useMemo(() => {
|
|
61069
60419
|
if (!suitabilityTitle && !suitabilityDescription) return null;
|
|
61070
60420
|
return /* @__PURE__ */ jsxs("div", { className: suitabilityClassName, children: [
|
|
61071
60421
|
suitabilityTitle && (typeof suitabilityTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-3xl font-semibold", children: suitabilityTitle }) : suitabilityTitle),
|
|
61072
60422
|
suitabilityDescription && (typeof suitabilityDescription === "string" ? /* @__PURE__ */ jsx("p", { className: "leading-6 text-muted-foreground md:text-lg", children: suitabilityDescription }) : suitabilityDescription)
|
|
61073
60423
|
] });
|
|
61074
60424
|
}, [suitabilityTitle, suitabilityDescription, suitabilityClassName]);
|
|
61075
|
-
const differencesContent =
|
|
60425
|
+
const differencesContent = React32.useMemo(() => {
|
|
61076
60426
|
if (!differencesTitle && !differencesDescription) return null;
|
|
61077
60427
|
return /* @__PURE__ */ jsxs("div", { className: cn("mt-16", differencesClassName), children: [
|
|
61078
60428
|
differencesTitle && (typeof differencesTitle === "string" ? /* @__PURE__ */ jsx("h2", { className: "mb-4 text-3xl font-semibold", children: differencesTitle }) : differencesTitle),
|
|
@@ -61120,7 +60470,7 @@ function ComparisonGridBadges({
|
|
|
61120
60470
|
pattern,
|
|
61121
60471
|
patternOpacity
|
|
61122
60472
|
}) {
|
|
61123
|
-
const featuresContent =
|
|
60473
|
+
const featuresContent = React32.useMemo(() => {
|
|
61124
60474
|
if (featuresSlot) return featuresSlot;
|
|
61125
60475
|
if (!features || features.length === 0) return null;
|
|
61126
60476
|
return features.map((feature, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -61167,14 +60517,14 @@ function ComparisonGridBadges({
|
|
|
61167
60517
|
idx
|
|
61168
60518
|
));
|
|
61169
60519
|
}, [featuresSlot, features, featureCardClassName, badgeClassName, optionALabel, optionBLabel]);
|
|
61170
|
-
const headingContent =
|
|
60520
|
+
const headingContent = React32.useMemo(() => {
|
|
61171
60521
|
if (!heading) return null;
|
|
61172
60522
|
if (typeof heading === "string") {
|
|
61173
60523
|
return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-3xl font-bold md:text-5xl", headingClassName), children: heading });
|
|
61174
60524
|
}
|
|
61175
60525
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61176
60526
|
}, [heading, headingClassName]);
|
|
61177
|
-
const descriptionContent =
|
|
60527
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61178
60528
|
if (!description) return null;
|
|
61179
60529
|
if (typeof description === "string") {
|
|
61180
60530
|
return /* @__PURE__ */ jsx("p", { className: cn("mx-auto max-w-2xl text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -61222,7 +60572,7 @@ function ComparisonMetricsRows({
|
|
|
61222
60572
|
pattern,
|
|
61223
60573
|
patternOpacity
|
|
61224
60574
|
}) {
|
|
61225
|
-
const metricsContent =
|
|
60575
|
+
const metricsContent = React32.useMemo(() => {
|
|
61226
60576
|
if (metricsSlot) return metricsSlot;
|
|
61227
60577
|
if (!metrics || metrics.length === 0) return null;
|
|
61228
60578
|
return /* @__PURE__ */ jsx(
|
|
@@ -61262,7 +60612,7 @@ function ComparisonMetricsRows({
|
|
|
61262
60612
|
}
|
|
61263
60613
|
);
|
|
61264
60614
|
}, [metricsSlot, metrics, metricsClassName, metricRowClassName]);
|
|
61265
|
-
const actionsContent =
|
|
60615
|
+
const actionsContent = React32.useMemo(() => {
|
|
61266
60616
|
if (actionsSlot) return actionsSlot;
|
|
61267
60617
|
if (!actions || actions.length === 0) return null;
|
|
61268
60618
|
return /* @__PURE__ */ jsx("div", { className: cn("flex justify-end", actionsClassName), children: actions.map((action, idx) => /* @__PURE__ */ jsxs(
|
|
@@ -61283,7 +60633,7 @@ function ComparisonMetricsRows({
|
|
|
61283
60633
|
idx
|
|
61284
60634
|
)) });
|
|
61285
60635
|
}, [actionsSlot, actions, actionsClassName]);
|
|
61286
|
-
const headingContent =
|
|
60636
|
+
const headingContent = React32.useMemo(() => {
|
|
61287
60637
|
if (!heading) return null;
|
|
61288
60638
|
if (typeof heading === "string") {
|
|
61289
60639
|
return /* @__PURE__ */ jsx(
|
|
@@ -61299,7 +60649,7 @@ function ComparisonMetricsRows({
|
|
|
61299
60649
|
}
|
|
61300
60650
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61301
60651
|
}, [heading, headingClassName]);
|
|
61302
|
-
const descriptionContent =
|
|
60652
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61303
60653
|
if (!description) return null;
|
|
61304
60654
|
if (typeof description === "string") {
|
|
61305
60655
|
return /* @__PURE__ */ jsx("p", { className: cn("text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -61362,7 +60712,7 @@ function ComparisonImageCards({
|
|
|
61362
60712
|
patternOpacity,
|
|
61363
60713
|
optixFlowConfig
|
|
61364
60714
|
}) {
|
|
61365
|
-
const renderCard =
|
|
60715
|
+
const renderCard = React32.useCallback(
|
|
61366
60716
|
(option) => /* @__PURE__ */ jsx("div", { className: cn("relative h-full", cardClassName), children: /* @__PURE__ */ jsxs("div", { className: cn(
|
|
61367
60717
|
"relative aspect-4/5 min-h-[400px] overflow-hidden rounded-2xl sm:aspect-[0.9] sm:min-h-[480px] sm:rounded-3xl md:min-h-[520px]",
|
|
61368
60718
|
getNestedCardBg(background, "accent"),
|
|
@@ -61386,7 +60736,7 @@ function ComparisonImageCards({
|
|
|
61386
60736
|
] }) }),
|
|
61387
60737
|
[cardClassName, optixFlowConfig]
|
|
61388
60738
|
);
|
|
61389
|
-
const cardsContent =
|
|
60739
|
+
const cardsContent = React32.useMemo(() => {
|
|
61390
60740
|
if (cardsSlot) return cardsSlot;
|
|
61391
60741
|
if (!optionA || !optionB) return null;
|
|
61392
60742
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -61404,14 +60754,14 @@ function ComparisonImageCards({
|
|
|
61404
60754
|
)
|
|
61405
60755
|
] });
|
|
61406
60756
|
}, [cardsSlot, optionA, optionB, dividerText, dividerClassName, renderCard]);
|
|
61407
|
-
const headingContent =
|
|
60757
|
+
const headingContent = React32.useMemo(() => {
|
|
61408
60758
|
if (!heading) return null;
|
|
61409
60759
|
if (typeof heading === "string") {
|
|
61410
60760
|
return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-medium sm:text-4xl md:text-5xl lg:text-6xl", headingClassName), children: heading });
|
|
61411
60761
|
}
|
|
61412
60762
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61413
60763
|
}, [heading, headingClassName]);
|
|
61414
|
-
const descriptionContent =
|
|
60764
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61415
60765
|
if (!description) return null;
|
|
61416
60766
|
if (typeof description === "string") {
|
|
61417
60767
|
return /* @__PURE__ */ jsx("p", { className: cn("mx-auto mt-4 max-w-3xl text-lg text-muted-foreground sm:mt-6 sm:text-xl", descriptionClassName), children: description });
|
|
@@ -61541,7 +60891,7 @@ function ComparisonTableTabs({
|
|
|
61541
60891
|
patternOpacity
|
|
61542
60892
|
}) {
|
|
61543
60893
|
const [selectedTab, setSelectedTab] = useState(models?.[0]?.name || "");
|
|
61544
|
-
const renderStatusIcon =
|
|
60894
|
+
const renderStatusIcon = React32.useCallback((status) => {
|
|
61545
60895
|
if (status === "positive") {
|
|
61546
60896
|
return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-success/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" }) });
|
|
61547
60897
|
}
|
|
@@ -61550,7 +60900,7 @@ function ComparisonTableTabs({
|
|
|
61550
60900
|
}
|
|
61551
60901
|
return /* @__PURE__ */ jsx("span", { className: "flex size-8 items-center justify-center rounded-full border bg-accent/10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-minus", size: 16, className: "text-accent" }) });
|
|
61552
60902
|
}, []);
|
|
61553
|
-
const tableContent =
|
|
60903
|
+
const tableContent = React32.useMemo(() => {
|
|
61554
60904
|
if (tableSlot) return tableSlot;
|
|
61555
60905
|
if (!models || models.length === 0 || !features || features.length === 0) return null;
|
|
61556
60906
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
@@ -61609,14 +60959,14 @@ function ComparisonTableTabs({
|
|
|
61609
60959
|
] }) })
|
|
61610
60960
|
] });
|
|
61611
60961
|
}, [tableSlot, models, features, tabsClassName, tableClassName, tableHeaderClassName, tableCellClassName, selectedTab, renderStatusIcon]);
|
|
61612
|
-
const headingContent =
|
|
60962
|
+
const headingContent = React32.useMemo(() => {
|
|
61613
60963
|
if (!heading) return null;
|
|
61614
60964
|
if (typeof heading === "string") {
|
|
61615
60965
|
return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
|
|
61616
60966
|
}
|
|
61617
60967
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61618
60968
|
}, [heading, headingClassName]);
|
|
61619
|
-
const descriptionContent =
|
|
60969
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61620
60970
|
if (!description) return null;
|
|
61621
60971
|
if (typeof description === "string") {
|
|
61622
60972
|
return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -61707,7 +61057,7 @@ function ComparisonTableTooltips({
|
|
|
61707
61057
|
pattern,
|
|
61708
61058
|
patternOpacity
|
|
61709
61059
|
}) {
|
|
61710
|
-
const renderCellContent =
|
|
61060
|
+
const renderCellContent = React32.useCallback(
|
|
61711
61061
|
(cell, isHighlighted) => {
|
|
61712
61062
|
if (typeof cell === "string") {
|
|
61713
61063
|
return cell;
|
|
@@ -61734,7 +61084,7 @@ function ComparisonTableTooltips({
|
|
|
61734
61084
|
},
|
|
61735
61085
|
[]
|
|
61736
61086
|
);
|
|
61737
|
-
const tableContent =
|
|
61087
|
+
const tableContent = React32.useMemo(() => {
|
|
61738
61088
|
if (tableSlot) return tableSlot;
|
|
61739
61089
|
if (!rows || rows.length === 0) return null;
|
|
61740
61090
|
return /* @__PURE__ */ jsxs(Table, { className: cn("rounded border text-left shadow-lg", tableClassName), children: [
|
|
@@ -61760,14 +61110,14 @@ function ComparisonTableTooltips({
|
|
|
61760
61110
|
] }, idx)) })
|
|
61761
61111
|
] });
|
|
61762
61112
|
}, [tableSlot, rows, tableClassName, tableHeaderClassName, tableCellClassName, optionALabel, optionBLabel, renderCellContent]);
|
|
61763
|
-
const headingContent =
|
|
61113
|
+
const headingContent = React32.useMemo(() => {
|
|
61764
61114
|
if (!heading) return null;
|
|
61765
61115
|
if (typeof heading === "string") {
|
|
61766
61116
|
return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
|
|
61767
61117
|
}
|
|
61768
61118
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61769
61119
|
}, [heading, headingClassName]);
|
|
61770
|
-
const descriptionContent =
|
|
61120
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61771
61121
|
if (!description) return null;
|
|
61772
61122
|
if (typeof description === "string") {
|
|
61773
61123
|
return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
|
|
@@ -61809,7 +61159,7 @@ function ComparisonFeatureGrid({
|
|
|
61809
61159
|
pattern,
|
|
61810
61160
|
patternOpacity
|
|
61811
61161
|
}) {
|
|
61812
|
-
const renderStatusIcon =
|
|
61162
|
+
const renderStatusIcon = React32.useCallback((status) => {
|
|
61813
61163
|
if (status === true) {
|
|
61814
61164
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/check", size: 20, className: "text-success" });
|
|
61815
61165
|
}
|
|
@@ -61818,7 +61168,7 @@ function ComparisonFeatureGrid({
|
|
|
61818
61168
|
}
|
|
61819
61169
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 20, className: "text-destructive" });
|
|
61820
61170
|
}, []);
|
|
61821
|
-
const gridContent =
|
|
61171
|
+
const gridContent = React32.useMemo(() => {
|
|
61822
61172
|
if (gridSlot) return gridSlot;
|
|
61823
61173
|
if (!features || features.length === 0) return null;
|
|
61824
61174
|
return /* @__PURE__ */ jsxs(
|
|
@@ -61884,14 +61234,14 @@ function ComparisonFeatureGrid({
|
|
|
61884
61234
|
optionBLabel,
|
|
61885
61235
|
renderStatusIcon
|
|
61886
61236
|
]);
|
|
61887
|
-
const headingContent =
|
|
61237
|
+
const headingContent = React32.useMemo(() => {
|
|
61888
61238
|
if (!heading) return null;
|
|
61889
61239
|
if (typeof heading === "string") {
|
|
61890
61240
|
return /* @__PURE__ */ jsx("h2", { className: cn("mb-4 text-center text-4xl font-semibold", headingClassName), children: heading });
|
|
61891
61241
|
}
|
|
61892
61242
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
61893
61243
|
}, [heading, headingClassName]);
|
|
61894
|
-
const descriptionContent =
|
|
61244
|
+
const descriptionContent = React32.useMemo(() => {
|
|
61895
61245
|
if (!description) return null;
|
|
61896
61246
|
if (typeof description === "string") {
|
|
61897
61247
|
return /* @__PURE__ */ jsx("p", { className: cn("mb-8 text-center text-muted-foreground", descriptionClassName), children: description });
|
|
@@ -61935,7 +61285,7 @@ function ComparisonAiModels({
|
|
|
61935
61285
|
optixFlowConfig
|
|
61936
61286
|
}) {
|
|
61937
61287
|
const [hoveredModel, setHoveredModel] = useState(null);
|
|
61938
|
-
const renderStatusIcon =
|
|
61288
|
+
const renderStatusIcon = React32.useCallback((status) => {
|
|
61939
61289
|
if (status === "best") {
|
|
61940
61290
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check", size: 16, className: "text-success" });
|
|
61941
61291
|
}
|
|
@@ -61944,7 +61294,7 @@ function ComparisonAiModels({
|
|
|
61944
61294
|
}
|
|
61945
61295
|
return /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/minus", size: 16, className: "text-muted-foreground" });
|
|
61946
61296
|
}, []);
|
|
61947
|
-
const getCellClassName =
|
|
61297
|
+
const getCellClassName = React32.useCallback(
|
|
61948
61298
|
(status, modelKey) => {
|
|
61949
61299
|
const baseClass = "cursor-pointer py-4 text-center font-medium transition-all duration-300";
|
|
61950
61300
|
let statusClass = "";
|
|
@@ -61965,7 +61315,7 @@ function ComparisonAiModels({
|
|
|
61965
61315
|
},
|
|
61966
61316
|
[hoveredModel]
|
|
61967
61317
|
);
|
|
61968
|
-
const getSummaryCardClassName =
|
|
61318
|
+
const getSummaryCardClassName = React32.useCallback(
|
|
61969
61319
|
(modelKey) => {
|
|
61970
61320
|
const baseClass = "rounded border border-border/30 bg-background/50 p-3 transition-all duration-300";
|
|
61971
61321
|
if (hoveredModel === modelKey) {
|
|
@@ -61980,7 +61330,7 @@ function ComparisonAiModels({
|
|
|
61980
61330
|
},
|
|
61981
61331
|
[hoveredModel]
|
|
61982
61332
|
);
|
|
61983
|
-
const tableContent =
|
|
61333
|
+
const tableContent = React32.useMemo(() => {
|
|
61984
61334
|
if (tableSlot) return tableSlot;
|
|
61985
61335
|
if (!models || !comparisonData || comparisonData.length === 0) return null;
|
|
61986
61336
|
return /* @__PURE__ */ jsx(
|
|
@@ -62058,7 +61408,7 @@ function ComparisonAiModels({
|
|
|
62058
61408
|
getCellClassName,
|
|
62059
61409
|
renderStatusIcon
|
|
62060
61410
|
]);
|
|
62061
|
-
const analysisContent =
|
|
61411
|
+
const analysisContent = React32.useMemo(() => {
|
|
62062
61412
|
if (analysisSlot) return analysisSlot;
|
|
62063
61413
|
if (!models) return null;
|
|
62064
61414
|
return /* @__PURE__ */ jsx("div", { className: cn(
|
|
@@ -62099,14 +61449,14 @@ function ComparisonAiModels({
|
|
|
62099
61449
|
] })
|
|
62100
61450
|
] }) });
|
|
62101
61451
|
}, [analysisSlot, models, analysisClassName, getSummaryCardClassName]);
|
|
62102
|
-
const headingContent =
|
|
61452
|
+
const headingContent = React32.useMemo(() => {
|
|
62103
61453
|
if (!heading) return null;
|
|
62104
61454
|
if (typeof heading === "string") {
|
|
62105
61455
|
return /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold md:text-4xl lg:text-5xl", headingClassName), children: heading });
|
|
62106
61456
|
}
|
|
62107
61457
|
return /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading });
|
|
62108
61458
|
}, [heading, headingClassName]);
|
|
62109
|
-
const descriptionContent =
|
|
61459
|
+
const descriptionContent = React32.useMemo(() => {
|
|
62110
61460
|
if (!description) return null;
|
|
62111
61461
|
if (typeof description === "string") {
|
|
62112
61462
|
return /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground md:text-lg", descriptionClassName), children: description });
|
|
@@ -62156,7 +61506,7 @@ function ComparisonLegacyModern({
|
|
|
62156
61506
|
pattern,
|
|
62157
61507
|
patternOpacity
|
|
62158
61508
|
}) {
|
|
62159
|
-
const columnsContent =
|
|
61509
|
+
const columnsContent = React32.useMemo(() => {
|
|
62160
61510
|
if (columnsSlot) return columnsSlot;
|
|
62161
61511
|
if (!legacyFeatures || legacyFeatures.length === 0 || !modernFeatures || modernFeatures.length === 0)
|
|
62162
61512
|
return null;
|
|
@@ -62168,7 +61518,7 @@ function ComparisonLegacyModern({
|
|
|
62168
61518
|
legacyColumnClassName
|
|
62169
61519
|
), children: [
|
|
62170
61520
|
legacyTitle && (typeof legacyTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: legacyTitle }) : legacyTitle),
|
|
62171
|
-
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(
|
|
61521
|
+
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: legacyFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
62172
61522
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
62173
61523
|
/* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/x", size: 16, className: "my-1.5 shrink-0 text-muted-foreground" }),
|
|
62174
61524
|
/* @__PURE__ */ jsx("li", { className: "text-sm", children: feature.text })
|
|
@@ -62185,7 +61535,7 @@ function ComparisonLegacyModern({
|
|
|
62185
61535
|
),
|
|
62186
61536
|
children: [
|
|
62187
61537
|
modernTitle && (typeof modernTitle === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-medium", children: modernTitle }) : modernTitle),
|
|
62188
|
-
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(
|
|
61538
|
+
/* @__PURE__ */ jsx("ul", { className: "mt-9 space-y-3", children: modernFeatures.map((feature, idx) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
62189
61539
|
/* @__PURE__ */ jsxs("li", { className: "flex items-center gap-2 text-sm", children: [
|
|
62190
61540
|
/* @__PURE__ */ jsx("span", { className: "text-lg", children: feature.emoji }),
|
|
62191
61541
|
feature.text
|
|
@@ -62197,7 +61547,7 @@ function ComparisonLegacyModern({
|
|
|
62197
61547
|
)
|
|
62198
61548
|
] });
|
|
62199
61549
|
}, [columnsSlot, legacyFeatures, modernFeatures, legacyTitle, modernTitle, legacyColumnClassName, modernColumnClassName]);
|
|
62200
|
-
const headingContent =
|
|
61550
|
+
const headingContent = React32.useMemo(() => {
|
|
62201
61551
|
if (!heading && !headingHighlight) return null;
|
|
62202
61552
|
return /* @__PURE__ */ jsxs("h2", { className: cn("text-4xl font-medium md:text-5xl lg:text-7xl", headingClassName), children: [
|
|
62203
61553
|
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
@@ -62210,7 +61560,7 @@ function ComparisonLegacyModern({
|
|
|
62210
61560
|
] }) : headingHighlight)
|
|
62211
61561
|
] });
|
|
62212
61562
|
}, [heading, headingHighlight, headingClassName, headingHighlightClassName]);
|
|
62213
|
-
const descriptionContent =
|
|
61563
|
+
const descriptionContent = React32.useMemo(() => {
|
|
62214
61564
|
if (!description) return null;
|
|
62215
61565
|
if (typeof description === "string") {
|
|
62216
61566
|
return /* @__PURE__ */ jsx("p", { className: cn("text-lg", descriptionClassName), children: description });
|
|
@@ -62383,7 +61733,7 @@ var NavbarMobileMenu = ({
|
|
|
62383
61733
|
closeIconClassName,
|
|
62384
61734
|
title = "Mobile Navigation"
|
|
62385
61735
|
}) => {
|
|
62386
|
-
|
|
61736
|
+
React32.useEffect(() => {
|
|
62387
61737
|
if (open) {
|
|
62388
61738
|
const originalOverflow = document.body.style.overflow;
|
|
62389
61739
|
document.body.style.overflow = "hidden";
|
|
@@ -62612,7 +61962,7 @@ var NavbarDropdownMenu = ({
|
|
|
62612
61962
|
patternOpacity,
|
|
62613
61963
|
optixFlowConfig
|
|
62614
61964
|
}) => {
|
|
62615
|
-
const [open, setOpen] =
|
|
61965
|
+
const [open, setOpen] = React32.useState(false);
|
|
62616
61966
|
const renderAuthActions = useMemo(() => {
|
|
62617
61967
|
if (authActionsSlot) return authActionsSlot;
|
|
62618
61968
|
if (!authActions || authActions.length === 0) return null;
|
|
@@ -62838,7 +62188,7 @@ var NavbarCenteredMenu = ({
|
|
|
62838
62188
|
patternOpacity,
|
|
62839
62189
|
optixFlowConfig
|
|
62840
62190
|
}) => {
|
|
62841
|
-
const [open, setOpen] =
|
|
62191
|
+
const [open, setOpen] = React32.useState(false);
|
|
62842
62192
|
const renderAuthActions = useMemo(() => {
|
|
62843
62193
|
if (authActionsSlot) return authActionsSlot;
|
|
62844
62194
|
if (!authActions || authActions.length === 0) return null;
|
|
@@ -62978,7 +62328,7 @@ var DesktopMenuItem = ({
|
|
|
62978
62328
|
index,
|
|
62979
62329
|
optixFlowConfig
|
|
62980
62330
|
}) => {
|
|
62981
|
-
const imagesRef =
|
|
62331
|
+
const imagesRef = React32.useRef([]);
|
|
62982
62332
|
const layout = link.layout || "simple-grid";
|
|
62983
62333
|
const handleMouseEnter = (event) => {
|
|
62984
62334
|
const index2 = Number(event.currentTarget.getAttribute("data-index"));
|
|
@@ -64213,7 +63563,7 @@ var NavbarFeatureGrid = ({
|
|
|
64213
63563
|
patternOpacity,
|
|
64214
63564
|
optixFlowConfig
|
|
64215
63565
|
}) => {
|
|
64216
|
-
const [open, setOpen] =
|
|
63566
|
+
const [open, setOpen] = React32.useState(false);
|
|
64217
63567
|
const renderAuthActions = useMemo(() => {
|
|
64218
63568
|
if (authActionsSlot) return authActionsSlot;
|
|
64219
63569
|
if (!authActions || authActions.length === 0) return null;
|
|
@@ -67423,7 +66773,7 @@ var DesktopMenuItem7 = ({
|
|
|
67423
66773
|
if (item.groups && item.groups.length > 0) {
|
|
67424
66774
|
return /* @__PURE__ */ jsxs(NavigationMenuItem, { value: `${index}`, children: [
|
|
67425
66775
|
/* @__PURE__ */ jsx(NavigationMenuTrigger, { children: item.label }),
|
|
67426
|
-
/* @__PURE__ */ jsx(NavigationMenuContent, { className: "p-0", children: /* @__PURE__ */ jsx("div", { className: "flex", children: item.groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(
|
|
66776
|
+
/* @__PURE__ */ jsx(NavigationMenuContent, { className: "p-0", children: /* @__PURE__ */ jsx("div", { className: "flex", children: item.groups.map((group, groupIndex) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
67427
66777
|
groupIndex > 0 && /* @__PURE__ */ jsx(
|
|
67428
66778
|
Separator,
|
|
67429
66779
|
{
|
|
@@ -68175,7 +67525,7 @@ var NavbarSimpleLinks = ({
|
|
|
68175
67525
|
const renderNavItems = useMemo(() => {
|
|
68176
67526
|
if (navItemsSlot) return navItemsSlot;
|
|
68177
67527
|
if (!navItems || navItems.length === 0) return null;
|
|
68178
|
-
return navItems.map((item) => /* @__PURE__ */ jsx(
|
|
67528
|
+
return navItems.map((item) => /* @__PURE__ */ jsx(React32.Fragment, { children: /* @__PURE__ */ jsx(NavigationMenuItem, { children: /* @__PURE__ */ jsx(
|
|
68179
67529
|
NavigationMenuLink,
|
|
68180
67530
|
{
|
|
68181
67531
|
"data-nav-item": item.name,
|
|
@@ -73204,7 +72554,7 @@ function PricingFullComparison({
|
|
|
73204
72554
|
resolvedPlanIds[index]
|
|
73205
72555
|
))
|
|
73206
72556
|
] }) }),
|
|
73207
|
-
/* @__PURE__ */ jsx("tbody", { children: categories.map((category) => /* @__PURE__ */ jsxs(
|
|
72557
|
+
/* @__PURE__ */ jsx("tbody", { children: categories.map((category) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
73208
72558
|
/* @__PURE__ */ jsx("tr", { className: cn(getNestedCardBg(background), getNestedCardTextColor(background), categoryRowClassName), children: /* @__PURE__ */ jsx(
|
|
73209
72559
|
"td",
|
|
73210
72560
|
{
|
|
@@ -77805,9 +77155,9 @@ function ProcessStickySteps({
|
|
|
77805
77155
|
);
|
|
77806
77156
|
}
|
|
77807
77157
|
var usePrevious = (value) => {
|
|
77808
|
-
const [prev, setPrev] =
|
|
77809
|
-
const ref =
|
|
77810
|
-
|
|
77158
|
+
const [prev, setPrev] = React32.useState(void 0);
|
|
77159
|
+
const ref = React32.useRef(value);
|
|
77160
|
+
React32.useEffect(() => {
|
|
77811
77161
|
setPrev(ref.current);
|
|
77812
77162
|
ref.current = value;
|
|
77813
77163
|
}, [value]);
|
|
@@ -77820,12 +77170,12 @@ var ProcessCard = ({
|
|
|
77820
77170
|
itemClassName,
|
|
77821
77171
|
background
|
|
77822
77172
|
}) => {
|
|
77823
|
-
const ref =
|
|
77173
|
+
const ref = React32.useRef(null);
|
|
77824
77174
|
const itemInView = useInView(ref, {
|
|
77825
77175
|
amount: 0,
|
|
77826
77176
|
margin: "0px 0px -60% 0px"
|
|
77827
77177
|
});
|
|
77828
|
-
|
|
77178
|
+
React32.useEffect(() => {
|
|
77829
77179
|
if (itemInView) {
|
|
77830
77180
|
setActive(index);
|
|
77831
77181
|
}
|
|
@@ -77875,7 +77225,7 @@ function ProcessScrollImage({
|
|
|
77875
77225
|
ctaText,
|
|
77876
77226
|
ctaUrl
|
|
77877
77227
|
}) {
|
|
77878
|
-
const [active, setActive] =
|
|
77228
|
+
const [active, setActive] = React32.useState(0);
|
|
77879
77229
|
const previousActive = usePrevious(active);
|
|
77880
77230
|
const resolvedHeading = title ?? heading;
|
|
77881
77231
|
const resolvedActions = actions ?? (ctaText && ctaUrl ? [
|
|
@@ -78058,7 +77408,7 @@ var ProcessCard2 = ({
|
|
|
78058
77408
|
itemClassName,
|
|
78059
77409
|
hoverImageClassName
|
|
78060
77410
|
}) => {
|
|
78061
|
-
const [isHovered, setIsHovered] =
|
|
77411
|
+
const [isHovered, setIsHovered] = React32.useState(false);
|
|
78062
77412
|
const titleText = typeof step.title === "string" ? step.title : `Step ${index + 1}`;
|
|
78063
77413
|
return /* @__PURE__ */ jsxs(
|
|
78064
77414
|
"li",
|
|
@@ -78416,7 +77766,7 @@ function ProcessExpandableTimeline({
|
|
|
78416
77766
|
spacing = "xl",
|
|
78417
77767
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
|
|
78418
77768
|
}) {
|
|
78419
|
-
const [expandedIndex, setExpandedIndex] =
|
|
77769
|
+
const [expandedIndex, setExpandedIndex] = React32.useState(null);
|
|
78420
77770
|
const toggleExpand = (index) => {
|
|
78421
77771
|
setExpandedIndex(expandedIndex === index ? null : index);
|
|
78422
77772
|
};
|
|
@@ -83206,7 +82556,7 @@ function ListAchievementsShowcase({
|
|
|
83206
82556
|
if (!items || items.length === 0) return null;
|
|
83207
82557
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col", itemsClassName), children: [
|
|
83208
82558
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
83209
|
-
items.map((item, index) => /* @__PURE__ */ jsxs(
|
|
82559
|
+
items.map((item, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
83210
82560
|
/* @__PURE__ */ jsxs(
|
|
83211
82561
|
"div",
|
|
83212
82562
|
{
|
|
@@ -83326,7 +82676,7 @@ function ListCareerTimeline({
|
|
|
83326
82676
|
const renderExperiences = useMemo(() => {
|
|
83327
82677
|
if (experiencesSlot) return experiencesSlot;
|
|
83328
82678
|
if (!experiences || experiences.length === 0) return null;
|
|
83329
|
-
return /* @__PURE__ */ jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxs(
|
|
82679
|
+
return /* @__PURE__ */ jsx("div", { className: experiencesClassName, children: experiences.map((experience, idx) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
83330
82680
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
83331
82681
|
/* @__PURE__ */ jsxs(
|
|
83332
82682
|
"div",
|
|
@@ -83347,7 +82697,7 @@ function ListCareerTimeline({
|
|
|
83347
82697
|
const renderAwards = useMemo(() => {
|
|
83348
82698
|
if (awardsSlot) return awardsSlot;
|
|
83349
82699
|
if (!awards || awards.length === 0) return null;
|
|
83350
|
-
return /* @__PURE__ */ jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxs(
|
|
82700
|
+
return /* @__PURE__ */ jsx("div", { className: awardsClassName, children: awards.map((award, idx) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
83351
82701
|
/* @__PURE__ */ jsx(Separator, {}),
|
|
83352
82702
|
/* @__PURE__ */ jsxs(
|
|
83353
82703
|
"div",
|
|
@@ -83482,7 +82832,7 @@ function ListMetricsDashboard({
|
|
|
83482
82832
|
activeCategory: controlledActiveCategory,
|
|
83483
82833
|
onActiveCategoryChange
|
|
83484
82834
|
}) {
|
|
83485
|
-
const [internalActiveTab, setInternalActiveTab] =
|
|
82835
|
+
const [internalActiveTab, setInternalActiveTab] = React32.useState("all");
|
|
83486
82836
|
const activeTab = controlledActiveCategory ?? internalActiveTab;
|
|
83487
82837
|
const handleTabChange = (value) => {
|
|
83488
82838
|
if (onActiveCategoryChange) {
|
|
@@ -83966,7 +83316,7 @@ function ListSearchableGrid({
|
|
|
83966
83316
|
searchTerm: controlledSearchTerm,
|
|
83967
83317
|
onSearchTermChange
|
|
83968
83318
|
}) {
|
|
83969
|
-
const [internalSearchTerm, setInternalSearchTerm] =
|
|
83319
|
+
const [internalSearchTerm, setInternalSearchTerm] = React32.useState("");
|
|
83970
83320
|
const searchTerm = controlledSearchTerm ?? internalSearchTerm;
|
|
83971
83321
|
const handleSearchChange = (value) => {
|
|
83972
83322
|
if (onSearchTermChange) {
|
|
@@ -83975,7 +83325,7 @@ function ListSearchableGrid({
|
|
|
83975
83325
|
setInternalSearchTerm(value);
|
|
83976
83326
|
}
|
|
83977
83327
|
};
|
|
83978
|
-
const filteredItems =
|
|
83328
|
+
const filteredItems = React32.useMemo(() => {
|
|
83979
83329
|
if (!searchTerm) {
|
|
83980
83330
|
return items ?? [];
|
|
83981
83331
|
}
|
|
@@ -84175,7 +83525,7 @@ function OfferModalNewsletterDiscount({
|
|
|
84175
83525
|
buttonAction
|
|
84176
83526
|
}) {
|
|
84177
83527
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
84178
|
-
const renderCloseButton =
|
|
83528
|
+
const renderCloseButton = React32.useMemo(() => {
|
|
84179
83529
|
if (closeButtonSlot) return closeButtonSlot;
|
|
84180
83530
|
if (!closeButtonText) return null;
|
|
84181
83531
|
return /* @__PURE__ */ jsx("div", { className: "absolute end-1.5 top-1.5", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
@@ -84192,7 +83542,7 @@ function OfferModalNewsletterDiscount({
|
|
|
84192
83542
|
}
|
|
84193
83543
|
) }) });
|
|
84194
83544
|
}, [closeButtonSlot, closeButtonText, closeClassName]);
|
|
84195
|
-
const renderHeader =
|
|
83545
|
+
const renderHeader = React32.useMemo(() => {
|
|
84196
83546
|
if (headerSlot) return headerSlot;
|
|
84197
83547
|
if (!title) return null;
|
|
84198
83548
|
return /* @__PURE__ */ jsx(DialogHeader, { className: headerClassName, children: /* @__PURE__ */ jsx(
|
|
@@ -84206,7 +83556,7 @@ function OfferModalNewsletterDiscount({
|
|
|
84206
83556
|
}
|
|
84207
83557
|
) });
|
|
84208
83558
|
}, [headerSlot, title, headerClassName, titleClassName]);
|
|
84209
|
-
const renderForm =
|
|
83559
|
+
const renderForm = React32.useMemo(() => {
|
|
84210
83560
|
if (formSlot) return formSlot;
|
|
84211
83561
|
if (!formEngineSetup) return null;
|
|
84212
83562
|
const defaultButtonAction = {
|
|
@@ -84304,7 +83654,7 @@ function OfferModalMembershipImage({
|
|
|
84304
83654
|
buttonAction
|
|
84305
83655
|
}) {
|
|
84306
83656
|
const dialogProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
84307
|
-
const renderImage =
|
|
83657
|
+
const renderImage = React32.useMemo(() => {
|
|
84308
83658
|
if (imageSlot) return imageSlot;
|
|
84309
83659
|
if (!image) return null;
|
|
84310
83660
|
return /* @__PURE__ */ jsx(
|
|
@@ -84335,7 +83685,7 @@ function OfferModalMembershipImage({
|
|
|
84335
83685
|
imageClassName,
|
|
84336
83686
|
optixFlowConfig
|
|
84337
83687
|
]);
|
|
84338
|
-
const renderCloseButton =
|
|
83688
|
+
const renderCloseButton = React32.useMemo(() => {
|
|
84339
83689
|
if (closeButtonSlot) return closeButtonSlot;
|
|
84340
83690
|
return /* @__PURE__ */ jsx("div", { className: "absolute -end-px -top-px z-10", children: /* @__PURE__ */ jsx(DialogClose, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
84341
83691
|
Pressable,
|
|
@@ -84351,7 +83701,7 @@ function OfferModalMembershipImage({
|
|
|
84351
83701
|
}
|
|
84352
83702
|
) }) });
|
|
84353
83703
|
}, [closeButtonSlot, closeClassName]);
|
|
84354
|
-
const renderForm =
|
|
83704
|
+
const renderForm = React32.useMemo(() => {
|
|
84355
83705
|
if (formSlot) return formSlot;
|
|
84356
83706
|
if (!formEngineSetup) return null;
|
|
84357
83707
|
const defaultButtonAction = {
|
|
@@ -84384,7 +83734,7 @@ function OfferModalMembershipImage({
|
|
|
84384
83734
|
}
|
|
84385
83735
|
);
|
|
84386
83736
|
}, [formSlot, formEngineSetup, buttonAction, formClassName]);
|
|
84387
|
-
const renderFooter =
|
|
83737
|
+
const renderFooter = React32.useMemo(() => {
|
|
84388
83738
|
if (footerSlot) return footerSlot;
|
|
84389
83739
|
if (!description) return null;
|
|
84390
83740
|
return /* @__PURE__ */ jsx(DialogFooter, { className: footerClassName, children: /* @__PURE__ */ jsx(
|
|
@@ -84590,7 +83940,7 @@ function OfferModalSheetNewsletter({
|
|
|
84590
83940
|
buttonAction
|
|
84591
83941
|
}) {
|
|
84592
83942
|
const sheetProps = open !== void 0 ? { open, onOpenChange } : { defaultOpen };
|
|
84593
|
-
const renderLogo =
|
|
83943
|
+
const renderLogo = React32.useMemo(() => {
|
|
84594
83944
|
if (logoSlot) return logoSlot;
|
|
84595
83945
|
if (!logo) return null;
|
|
84596
83946
|
const logoSrc = typeof logo.src === "string" ? logo.src : logo.src.light;
|
|
@@ -84604,7 +83954,7 @@ function OfferModalSheetNewsletter({
|
|
|
84604
83954
|
}
|
|
84605
83955
|
);
|
|
84606
83956
|
}, [logoSlot, logo, logoClassName, optixFlowConfig]);
|
|
84607
|
-
const renderHeader =
|
|
83957
|
+
const renderHeader = React32.useMemo(() => {
|
|
84608
83958
|
if (headerSlot) return headerSlot;
|
|
84609
83959
|
return /* @__PURE__ */ jsxs(SheetHeader, { className: cn("gap-8 p-0", headerClassName), children: [
|
|
84610
83960
|
renderLogo,
|
|
@@ -84637,7 +83987,7 @@ function OfferModalSheetNewsletter({
|
|
|
84637
83987
|
description,
|
|
84638
83988
|
descriptionClassName
|
|
84639
83989
|
]);
|
|
84640
|
-
const renderForm =
|
|
83990
|
+
const renderForm = React32.useMemo(() => {
|
|
84641
83991
|
if (formSlot) return formSlot;
|
|
84642
83992
|
if (!formEngineSetup) return null;
|
|
84643
83993
|
const defaultButtonAction = {
|
|
@@ -84670,7 +84020,7 @@ function OfferModalSheetNewsletter({
|
|
|
84670
84020
|
}
|
|
84671
84021
|
);
|
|
84672
84022
|
}, [formSlot, formEngineSetup, buttonAction, formClassName]);
|
|
84673
|
-
const renderLegal =
|
|
84023
|
+
const renderLegal = React32.useMemo(() => {
|
|
84674
84024
|
if (legalSlot) return legalSlot;
|
|
84675
84025
|
if (!termsUrl || !termsText || !privacyUrl || !privacyText) return null;
|
|
84676
84026
|
return /* @__PURE__ */ jsxs("p", { className: cn("text-muted-foreground text-xs", legalClassName), children: [
|
|
@@ -84684,7 +84034,7 @@ function OfferModalSheetNewsletter({
|
|
|
84684
84034
|
"."
|
|
84685
84035
|
] });
|
|
84686
84036
|
}, [legalSlot, termsUrl, termsText, privacyUrl, privacyText, legalClassName]);
|
|
84687
|
-
const renderImage =
|
|
84037
|
+
const renderImage = React32.useMemo(() => {
|
|
84688
84038
|
if (imageSlot) return imageSlot;
|
|
84689
84039
|
if (!image) return null;
|
|
84690
84040
|
return /* @__PURE__ */ jsx("div", { className: cn("h-1/2 basis-1/2", imageWrapperClassName), children: /* @__PURE__ */ jsx(AspectRatio, { ratio: 1, className: "overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
@@ -85271,10 +84621,10 @@ function ProjectDetailSidebarNavigation(props) {
|
|
|
85271
84621
|
heroImageClassName,
|
|
85272
84622
|
metadataClassName
|
|
85273
84623
|
} = props;
|
|
85274
|
-
const [activeSection, setActiveSection] =
|
|
84624
|
+
const [activeSection, setActiveSection] = React32.useState(
|
|
85275
84625
|
sections?.[0]?.id || ""
|
|
85276
84626
|
);
|
|
85277
|
-
|
|
84627
|
+
React32.useEffect(() => {
|
|
85278
84628
|
const handleScroll = () => {
|
|
85279
84629
|
const sectionElements = sections?.map(
|
|
85280
84630
|
(section) => document.getElementById(section.id)
|
|
@@ -88134,7 +87484,7 @@ function ProjectDetailTabbedCaseStudy(props) {
|
|
|
88134
87484
|
testimonialClassName,
|
|
88135
87485
|
toolsClassName
|
|
88136
87486
|
} = props;
|
|
88137
|
-
const [activeTab, setActiveTab] =
|
|
87487
|
+
const [activeTab, setActiveTab] = React32.useState(tabs?.[0]?.id || "");
|
|
88138
87488
|
const renderedBackAction = useMemo(() => {
|
|
88139
87489
|
if (backActionSlot) return backActionSlot;
|
|
88140
87490
|
if (!backAction) return null;
|
|
@@ -88522,7 +87872,7 @@ function RevealImage({
|
|
|
88522
87872
|
index,
|
|
88523
87873
|
optixFlowConfig
|
|
88524
87874
|
}) {
|
|
88525
|
-
const ref =
|
|
87875
|
+
const ref = React32.useRef(null);
|
|
88526
87876
|
const { scrollYProgress } = useScroll({
|
|
88527
87877
|
target: ref,
|
|
88528
87878
|
offset: ["start end", "end start"]
|
|
@@ -88717,7 +88067,7 @@ function ParallaxSection({
|
|
|
88717
88067
|
index,
|
|
88718
88068
|
optixFlowConfig
|
|
88719
88069
|
}) {
|
|
88720
|
-
const ref =
|
|
88070
|
+
const ref = React32.useRef(null);
|
|
88721
88071
|
const { scrollYProgress } = useScroll({
|
|
88722
88072
|
target: ref,
|
|
88723
88073
|
offset: ["start end", "end start"]
|
|
@@ -88790,7 +88140,7 @@ function ProjectDetailParallaxScroll(props) {
|
|
|
88790
88140
|
heroImageClassName,
|
|
88791
88141
|
sectionsClassName
|
|
88792
88142
|
} = props;
|
|
88793
|
-
const heroRef =
|
|
88143
|
+
const heroRef = React32.useRef(null);
|
|
88794
88144
|
const { scrollYProgress } = useScroll({
|
|
88795
88145
|
target: heroRef,
|
|
88796
88146
|
offset: ["start start", "end start"]
|
|
@@ -89328,7 +88678,7 @@ function IndustriesExpandableShowcase({
|
|
|
89328
88678
|
patternClassName,
|
|
89329
88679
|
optixFlowConfig
|
|
89330
88680
|
}) {
|
|
89331
|
-
const [activeContractor, setActiveContractor] =
|
|
88681
|
+
const [activeContractor, setActiveContractor] = React32.useState(
|
|
89332
88682
|
contractors?.[0]?.id || ""
|
|
89333
88683
|
);
|
|
89334
88684
|
const handleContractorHover = (contractorId) => {
|
|
@@ -89996,7 +89346,7 @@ function ResourceDetailDocumentSidebar({
|
|
|
89996
89346
|
}) {
|
|
89997
89347
|
const renderedBreadcrumbs = useMemo(() => {
|
|
89998
89348
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
89999
|
-
return /* @__PURE__ */ jsx(Breadcrumb, { className: breadcrumbsClassName, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(
|
|
89349
|
+
return /* @__PURE__ */ jsx(Breadcrumb, { className: breadcrumbsClassName, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs?.map((crumb, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
90000
89350
|
/* @__PURE__ */ jsx(BreadcrumbItem, { children: !crumb.href ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof crumb.label === "string" ? crumb.label : crumb.label }) : /* @__PURE__ */ jsx(BreadcrumbLink, { href: crumb.href, children: index === 0 ? /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) : typeof crumb.label === "string" ? crumb.label : crumb.label }) }),
|
|
90001
89351
|
index < (breadcrumbs?.length || 0) - 1 && /* @__PURE__ */ jsx(BreadcrumbSeparator, {})
|
|
90002
89352
|
] }, index)) }) });
|
|
@@ -93404,8 +92754,8 @@ function ServicesListTableHover({
|
|
|
93404
92754
|
patternOpacity,
|
|
93405
92755
|
optixFlowConfig
|
|
93406
92756
|
}) {
|
|
93407
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
93408
|
-
const [mousePosition, setMousePosition] =
|
|
92757
|
+
const [hoveredIndex, setHoveredIndex] = React32.useState(null);
|
|
92758
|
+
const [mousePosition, setMousePosition] = React32.useState({ x: 0, y: 0 });
|
|
93409
92759
|
const handleMouseMove = (e) => {
|
|
93410
92760
|
setMousePosition({ x: e.clientX, y: e.clientY });
|
|
93411
92761
|
};
|
|
@@ -93655,7 +93005,7 @@ function ServicesListStickyImage({
|
|
|
93655
93005
|
patternOpacity,
|
|
93656
93006
|
optixFlowConfig
|
|
93657
93007
|
}) {
|
|
93658
|
-
const [activeIndex, setActiveIndex] =
|
|
93008
|
+
const [activeIndex, setActiveIndex] = React32.useState(0);
|
|
93659
93009
|
const renderServices = () => {
|
|
93660
93010
|
if (servicesSlot) return servicesSlot;
|
|
93661
93011
|
if (!services || services.length === 0) return null;
|
|
@@ -93907,8 +93257,8 @@ function ServicesListVideoShowcase({
|
|
|
93907
93257
|
patternOpacity,
|
|
93908
93258
|
optixFlowConfig
|
|
93909
93259
|
}) {
|
|
93910
|
-
const [playingIndex, setPlayingIndex] =
|
|
93911
|
-
const videoRefs =
|
|
93260
|
+
const [playingIndex, setPlayingIndex] = React32.useState(null);
|
|
93261
|
+
const videoRefs = React32.useRef([]);
|
|
93912
93262
|
const handleMouseEnter = (index) => {
|
|
93913
93263
|
setPlayingIndex(index);
|
|
93914
93264
|
videoRefs.current[index]?.play();
|
|
@@ -97195,7 +96545,7 @@ function StatsCircularProgress({
|
|
|
97195
96545
|
statInfoClassName
|
|
97196
96546
|
}) {
|
|
97197
96547
|
const effectiveDefaultCategory = defaultCategory || (categories && categories.length > 0 ? categories[0].id : "");
|
|
97198
|
-
const [category, setCategory] =
|
|
96548
|
+
const [category, setCategory] = React32.useState(effectiveDefaultCategory);
|
|
97199
96549
|
const badgeContent = useMemo(() => {
|
|
97200
96550
|
if (badgeSlot) return badgeSlot;
|
|
97201
96551
|
if (!badge) return null;
|
|
@@ -97488,8 +96838,8 @@ function StatsCardGroup({
|
|
|
97488
96838
|
);
|
|
97489
96839
|
}
|
|
97490
96840
|
function useAnimatedCounter(endValue, duration = 2e3, isVisible) {
|
|
97491
|
-
const [count, setCount] =
|
|
97492
|
-
|
|
96841
|
+
const [count, setCount] = React32.useState(0);
|
|
96842
|
+
React32.useEffect(() => {
|
|
97493
96843
|
if (!isVisible) return;
|
|
97494
96844
|
let startTime = null;
|
|
97495
96845
|
let animationFrame;
|
|
@@ -97577,9 +96927,9 @@ function StatsAnimatedCounter({
|
|
|
97577
96927
|
statLabelClassName,
|
|
97578
96928
|
statIconClassName
|
|
97579
96929
|
}) {
|
|
97580
|
-
const [isVisible, setIsVisible] =
|
|
97581
|
-
const sectionRef =
|
|
97582
|
-
|
|
96930
|
+
const [isVisible, setIsVisible] = React32.useState(false);
|
|
96931
|
+
const sectionRef = React32.useRef(null);
|
|
96932
|
+
React32.useEffect(() => {
|
|
97583
96933
|
const observer = new IntersectionObserver(
|
|
97584
96934
|
([entry]) => {
|
|
97585
96935
|
if (entry.isIntersecting) {
|
|
@@ -97667,8 +97017,8 @@ function StatsAnimatedCounter({
|
|
|
97667
97017
|
);
|
|
97668
97018
|
}
|
|
97669
97019
|
function useNumberTicker(endValue, duration = 2500, isVisible, decimals = 0) {
|
|
97670
|
-
const [displayValue, setDisplayValue] =
|
|
97671
|
-
|
|
97020
|
+
const [displayValue, setDisplayValue] = React32.useState("0");
|
|
97021
|
+
React32.useEffect(() => {
|
|
97672
97022
|
if (!isVisible) return;
|
|
97673
97023
|
let startTime = null;
|
|
97674
97024
|
let animationFrame;
|
|
@@ -97783,9 +97133,9 @@ function StatsNumberTicker({
|
|
|
97783
97133
|
statLabelClassName,
|
|
97784
97134
|
statDescriptionClassName
|
|
97785
97135
|
}) {
|
|
97786
|
-
const [isVisible, setIsVisible] =
|
|
97787
|
-
const sectionRef =
|
|
97788
|
-
|
|
97136
|
+
const [isVisible, setIsVisible] = React32.useState(false);
|
|
97137
|
+
const sectionRef = React32.useRef(null);
|
|
97138
|
+
React32.useEffect(() => {
|
|
97789
97139
|
const observer = new IntersectionObserver(
|
|
97790
97140
|
([entry]) => {
|
|
97791
97141
|
if (entry.isIntersecting) {
|
|
@@ -98044,9 +97394,9 @@ function StatsBarComparison({
|
|
|
98044
97394
|
barValueClassName,
|
|
98045
97395
|
barTrackClassName
|
|
98046
97396
|
}) {
|
|
98047
|
-
const [isVisible, setIsVisible] =
|
|
98048
|
-
const sectionRef =
|
|
98049
|
-
|
|
97397
|
+
const [isVisible, setIsVisible] = React32.useState(!animate);
|
|
97398
|
+
const sectionRef = React32.useRef(null);
|
|
97399
|
+
React32.useEffect(() => {
|
|
98050
97400
|
if (!animate) return;
|
|
98051
97401
|
const observer = new IntersectionObserver(
|
|
98052
97402
|
([entry]) => {
|
|
@@ -98224,7 +97574,7 @@ function TimelineVerticalIconDashed({
|
|
|
98224
97574
|
"mx-auto flex flex-col items-center justify-center text-center sm:max-w-xl",
|
|
98225
97575
|
stepsClassName
|
|
98226
97576
|
),
|
|
98227
|
-
children: steps.map((step, index) => /* @__PURE__ */ jsxs(
|
|
97577
|
+
children: steps.map((step, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
98228
97578
|
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center", stepClassName), children: [
|
|
98229
97579
|
/* @__PURE__ */ jsx(
|
|
98230
97580
|
"span",
|
|
@@ -98491,7 +97841,7 @@ function TimelineTwoColumnFeatured({
|
|
|
98491
97841
|
style,
|
|
98492
97842
|
optixFlowConfig
|
|
98493
97843
|
}) {
|
|
98494
|
-
const renderActions =
|
|
97844
|
+
const renderActions = React32.useMemo(() => {
|
|
98495
97845
|
if (actionsSlot) {
|
|
98496
97846
|
return actionsSlot;
|
|
98497
97847
|
}
|
|
@@ -98619,7 +97969,7 @@ function TimelineTwoColumnFeatured({
|
|
|
98619
97969
|
}
|
|
98620
97970
|
);
|
|
98621
97971
|
}
|
|
98622
|
-
var DiagonalPattern =
|
|
97972
|
+
var DiagonalPattern = React32.memo(({
|
|
98623
97973
|
className,
|
|
98624
97974
|
patternOpacity = 0.15
|
|
98625
97975
|
}) => {
|
|
@@ -98658,7 +98008,7 @@ function TimelineAlternatingDiagonal({
|
|
|
98658
98008
|
style,
|
|
98659
98009
|
optixFlowConfig
|
|
98660
98010
|
}) {
|
|
98661
|
-
const renderedBadge =
|
|
98011
|
+
const renderedBadge = React32.useMemo(() => {
|
|
98662
98012
|
if (badgeSlot) {
|
|
98663
98013
|
return badgeSlot;
|
|
98664
98014
|
}
|
|
@@ -99036,7 +98386,7 @@ function TimelineProductivityList({
|
|
|
99036
98386
|
}
|
|
99037
98387
|
);
|
|
99038
98388
|
}
|
|
99039
|
-
var ProcessBar =
|
|
98389
|
+
var ProcessBar = React32.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("div", { className: "relative w-full scale-75", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: steps.map((step, index) => /* @__PURE__ */ jsxs(React32.Fragment, { children: [
|
|
99040
98390
|
/* @__PURE__ */ jsx("div", { className: "flex flex-col items-center", children: /* @__PURE__ */ jsx(
|
|
99041
98391
|
motion.div,
|
|
99042
98392
|
{
|
|
@@ -99063,7 +98413,7 @@ var ProcessBar = React8.memo(({ currentStep, steps }) => /* @__PURE__ */ jsx("di
|
|
|
99063
98413
|
)
|
|
99064
98414
|
] })
|
|
99065
98415
|
] }, index)) }) }));
|
|
99066
|
-
var StepperContent =
|
|
98416
|
+
var StepperContent = React32.memo(({ step, optixFlowConfig, imageClassName, descriptionClassName, background }) => {
|
|
99067
98417
|
return /* @__PURE__ */ jsxs("div", { className: cn("my-4 flex min-h-[400px] w-full flex-col items-center justify-center overflow-hidden rounded-2xl p-6 text-center", getNestedCardBg(background), getNestedCardTextColor(background)), children: [
|
|
99068
98418
|
/* @__PURE__ */ jsx(
|
|
99069
98419
|
motion.div,
|
|
@@ -99096,7 +98446,7 @@ var StepperContent = React8.memo(({ step, optixFlowConfig, imageClassName, descr
|
|
|
99096
98446
|
)
|
|
99097
98447
|
] });
|
|
99098
98448
|
});
|
|
99099
|
-
var NavButtons =
|
|
98449
|
+
var NavButtons = React32.memo(({ handlePrev, handleNext }) => /* @__PURE__ */ jsxs("div", { className: "flex w-full justify-end gap-3 tracking-tight", children: [
|
|
99100
98450
|
/* @__PURE__ */ jsxs(
|
|
99101
98451
|
Pressable,
|
|
99102
98452
|
{
|
|
@@ -99147,10 +98497,10 @@ function TimelineStepperAnimated({
|
|
|
99147
98497
|
}) {
|
|
99148
98498
|
const safeInitialStep = (steps?.length ?? 0) > 0 ? Math.max(0, Math.min(initialStep ?? 0, (steps?.length ?? 1) - 1)) : 0;
|
|
99149
98499
|
const [currentStep, setCurrentStep] = useState(safeInitialStep);
|
|
99150
|
-
const handleNext =
|
|
98500
|
+
const handleNext = React32.useCallback(() => {
|
|
99151
98501
|
setCurrentStep((prev) => Math.min(prev + 1, (steps?.length ?? 1) - 1));
|
|
99152
98502
|
}, [steps?.length]);
|
|
99153
|
-
const handlePrev =
|
|
98503
|
+
const handlePrev = React32.useCallback(() => {
|
|
99154
98504
|
setCurrentStep((prev) => Math.max(prev - 1, 0));
|
|
99155
98505
|
}, []);
|
|
99156
98506
|
const safeCurrentStep = (steps?.length ?? 0) > 0 ? Math.max(0, Math.min(currentStep, (steps?.length ?? 1) - 1)) : 0;
|
|
@@ -99859,7 +99209,7 @@ function TimelineTabbedPhases({
|
|
|
99859
99209
|
style,
|
|
99860
99210
|
optixFlowConfig
|
|
99861
99211
|
}) {
|
|
99862
|
-
const renderDownloadButton =
|
|
99212
|
+
const renderDownloadButton = React32.useMemo(() => {
|
|
99863
99213
|
if (downloadSlot) {
|
|
99864
99214
|
return downloadSlot;
|
|
99865
99215
|
}
|
|
@@ -100079,7 +99429,7 @@ function TimelineProductLaunch({
|
|
|
100079
99429
|
id,
|
|
100080
99430
|
style
|
|
100081
99431
|
}) {
|
|
100082
|
-
const renderCta =
|
|
99432
|
+
const renderCta = React32.useMemo(() => {
|
|
100083
99433
|
if (ctaSlot) {
|
|
100084
99434
|
return ctaSlot;
|
|
100085
99435
|
}
|
|
@@ -100537,9 +99887,9 @@ function LinkTreeBlock({
|
|
|
100537
99887
|
}) {
|
|
100538
99888
|
const resolvedBackground = background;
|
|
100539
99889
|
const resolvedPattern = pattern ?? backgroundPattern;
|
|
100540
|
-
const [lightboxOpen, setLightboxOpen] =
|
|
100541
|
-
const [lightboxIndex, setLightboxIndex] =
|
|
100542
|
-
const lightboxItems =
|
|
99890
|
+
const [lightboxOpen, setLightboxOpen] = React32.useState(false);
|
|
99891
|
+
const [lightboxIndex, setLightboxIndex] = React32.useState(0);
|
|
99892
|
+
const lightboxItems = React32.useMemo(() => {
|
|
100543
99893
|
if (!mediaGallery || mediaGallery.length === 0) return [];
|
|
100544
99894
|
return mediaGallery.slice(0, mediaGalleryLimit).map((item, index) => ({
|
|
100545
99895
|
id: item.id ?? `media-${index}`,
|
|
@@ -100551,11 +99901,11 @@ function LinkTreeBlock({
|
|
|
100551
99901
|
share: true
|
|
100552
99902
|
}));
|
|
100553
99903
|
}, [mediaGallery, mediaGalleryLimit]);
|
|
100554
|
-
const handleMediaClick =
|
|
99904
|
+
const handleMediaClick = React32.useCallback((index) => {
|
|
100555
99905
|
setLightboxIndex(index);
|
|
100556
99906
|
setLightboxOpen(true);
|
|
100557
99907
|
}, []);
|
|
100558
|
-
const handleLightboxClose =
|
|
99908
|
+
const handleLightboxClose = React32.useCallback(() => {
|
|
100559
99909
|
setLightboxOpen(false);
|
|
100560
99910
|
}, []);
|
|
100561
99911
|
const resolveImage = (value, fallbackAlt) => {
|
|
@@ -100567,7 +99917,7 @@ function LinkTreeBlock({
|
|
|
100567
99917
|
};
|
|
100568
99918
|
const nameForAlt = typeof brandName === "string" ? brandName : "Brand avatar";
|
|
100569
99919
|
const resolvedAvatar = resolveImage(brandAvatar || brandLogo, nameForAlt);
|
|
100570
|
-
const renderBrandHeader =
|
|
99920
|
+
const renderBrandHeader = React32.useMemo(() => {
|
|
100571
99921
|
if (brandSlot) return brandSlot;
|
|
100572
99922
|
return /* @__PURE__ */ jsxs(
|
|
100573
99923
|
"div",
|
|
@@ -100654,7 +100004,7 @@ function LinkTreeBlock({
|
|
|
100654
100004
|
brandTagline,
|
|
100655
100005
|
taglineClassName
|
|
100656
100006
|
]);
|
|
100657
|
-
const renderLinks =
|
|
100007
|
+
const renderLinks = React32.useMemo(() => {
|
|
100658
100008
|
if (linksSlot) return linksSlot;
|
|
100659
100009
|
if (!links || links.length === 0) return null;
|
|
100660
100010
|
return /* @__PURE__ */ jsx("div", { className: cn("space-y-3", linksClassName), children: links.map((link, index) => {
|
|
@@ -100770,7 +100120,7 @@ function LinkTreeBlock({
|
|
|
100770
100120
|
linkBadgeClassName,
|
|
100771
100121
|
linkChevronClassName
|
|
100772
100122
|
]);
|
|
100773
|
-
const renderMediaGallery =
|
|
100123
|
+
const renderMediaGallery = React32.useMemo(() => {
|
|
100774
100124
|
if (mediaGallerySlot) return mediaGallerySlot;
|
|
100775
100125
|
if (!mediaGallery || mediaGallery.length === 0) return null;
|
|
100776
100126
|
const items = mediaGallery.slice(0, mediaGalleryLimit);
|
|
@@ -100883,7 +100233,7 @@ function LinkTreeBlock({
|
|
|
100883
100233
|
mediaGalleryOverlayClassName,
|
|
100884
100234
|
mediaGalleryPlayIconClassName
|
|
100885
100235
|
]);
|
|
100886
|
-
const renderSocialLinks =
|
|
100236
|
+
const renderSocialLinks = React32.useMemo(() => {
|
|
100887
100237
|
if (socialLinksSlot) return socialLinksSlot;
|
|
100888
100238
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
100889
100239
|
return /* @__PURE__ */ jsx(
|
|
@@ -100916,7 +100266,7 @@ function LinkTreeBlock({
|
|
|
100916
100266
|
socialIconClassName,
|
|
100917
100267
|
socialLinkClassName
|
|
100918
100268
|
]);
|
|
100919
|
-
const renderFooter =
|
|
100269
|
+
const renderFooter = React32.useMemo(() => {
|
|
100920
100270
|
if (footerSlot) return footerSlot;
|
|
100921
100271
|
if (!footerAction) return null;
|
|
100922
100272
|
const resolvedFooterAction = footerAction;
|