@opensite/ui 2.7.6 → 2.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -2
- 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 +4 -4
- package/dist/about-culture-tabs.d.ts +4 -4
- package/dist/about-culture-tabs.js +174 -174
- package/dist/about-developer-profile.cjs +178 -178
- package/dist/about-developer-profile.d.cts +3 -3
- package/dist/about-developer-profile.d.ts +3 -3
- package/dist/about-developer-profile.js +178 -178
- 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 +4 -4
- package/dist/about-expandable-values.d.ts +4 -4
- 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 +143 -143
- package/dist/about-mission-features.d.cts +3 -3
- package/dist/about-mission-features.d.ts +3 -3
- package/dist/about-mission-features.js +143 -143
- package/dist/about-mission-principles.d.cts +4 -4
- package/dist/about-mission-principles.d.ts +4 -4
- package/dist/about-network-spotlight.cjs +147 -144
- package/dist/about-network-spotlight.d.cts +3 -3
- package/dist/about-network-spotlight.d.ts +3 -3
- package/dist/about-network-spotlight.js +147 -144
- 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 +4 -4
- package/dist/alternating-blocks.d.ts +4 -4
- 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-CsMdf2Jh.d.ts → blocks-DmMuCMEh.d.ts} +6 -2
- package/dist/{blocks-gR13ES5A.d.cts → blocks-U7wOoE0O.d.cts} +6 -2
- 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.cjs +6 -6
- package/dist/blog-tech-insights.d.cts +3 -3
- package/dist/blog-tech-insights.d.ts +3 -3
- package/dist/blog-tech-insights.js +6 -6
- package/dist/blur-vignette-grid.d.cts +3 -3
- package/dist/blur-vignette-grid.d.ts +3 -3
- package/dist/{button-variants-lRElsmTc.d.cts → button-variants-8mtEHxev.d.cts} +1 -1
- package/dist/{button-variants-lRElsmTc.d.ts → button-variants-8mtEHxev.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-CtLnPq2v.d.ts → community-initiatives-64wrtPed.d.ts} +2 -6
- package/dist/{community-initiatives-2FsyKLdT.d.cts → community-initiatives-DM27LAzE.d.cts} +2 -6
- package/dist/community-initiatives.cjs +142 -142
- package/dist/community-initiatives.d.cts +4 -4
- package/dist/community-initiatives.d.ts +4 -4
- 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 +4 -4
- package/dist/comparison-feature-grid.d.ts +4 -4
- package/dist/comparison-grid-badges.d.cts +4 -4
- package/dist/comparison-grid-badges.d.ts +4 -4
- 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 +4 -4
- package/dist/comparison-legacy-modern.d.ts +4 -4
- 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 +4 -4
- package/dist/comparison-table-tabs.d.ts +4 -4
- package/dist/comparison-table-tooltips.d.cts +4 -4
- package/dist/comparison-table-tooltips.d.ts +4 -4
- package/dist/comparison-table-two-column.d.cts +3 -3
- package/dist/comparison-table-two-column.d.ts +3 -3
- package/dist/components.cjs +1359 -785
- package/dist/components.d.cts +6 -4
- package/dist/components.d.ts +6 -4
- package/dist/components.js +1264 -691
- package/dist/contact-callback.d.cts +4 -4
- package/dist/contact-callback.d.ts +4 -4
- package/dist/contact-card.d.cts +5 -5
- package/dist/contact-card.d.ts +5 -5
- package/dist/contact-careers.cjs +4 -4
- package/dist/contact-careers.d.cts +4 -4
- package/dist/contact-careers.d.ts +4 -4
- package/dist/contact-careers.js +4 -4
- package/dist/contact-catering.d.cts +4 -4
- package/dist/contact-catering.d.ts +4 -4
- package/dist/contact-consultation.d.cts +4 -4
- package/dist/contact-consultation.d.ts +4 -4
- package/dist/{contact-dark-BN6426-J.d.ts → contact-dark-CECEnR7C.d.ts} +1 -1
- package/dist/{contact-dark-DA4diOuH.d.cts → contact-dark-DlV3Sdwd.d.cts} +1 -1
- package/dist/contact-dark.d.cts +5 -5
- package/dist/contact-dark.d.ts +5 -5
- package/dist/contact-demo.d.cts +4 -4
- package/dist/contact-demo.d.ts +4 -4
- package/dist/contact-emergency.d.cts +4 -4
- package/dist/contact-emergency.d.ts +4 -4
- package/dist/contact-event.d.cts +4 -4
- package/dist/contact-event.d.ts +4 -4
- package/dist/contact-faq.cjs +4 -4
- package/dist/contact-faq.d.cts +4 -4
- package/dist/contact-faq.d.ts +4 -4
- package/dist/contact-faq.js +4 -4
- package/dist/contact-feedback.d.cts +4 -4
- package/dist/contact-feedback.d.ts +4 -4
- package/dist/contact-fitness.d.cts +4 -4
- package/dist/contact-fitness.d.ts +4 -4
- package/dist/contact-floating-banner.d.cts +3 -3
- package/dist/contact-floating-banner.d.ts +3 -3
- package/dist/contact-guest.d.cts +4 -4
- package/dist/contact-guest.d.ts +4 -4
- package/dist/contact-help-center.d.cts +4 -4
- package/dist/contact-help-center.d.ts +4 -4
- package/dist/contact-image.d.cts +3 -3
- package/dist/contact-image.d.ts +3 -3
- package/dist/contact-insurance.d.cts +4 -4
- package/dist/contact-insurance.d.ts +4 -4
- package/dist/contact-interview.d.cts +4 -4
- package/dist/contact-interview.d.ts +4 -4
- package/dist/contact-locations.d.cts +4 -4
- package/dist/contact-locations.d.ts +4 -4
- package/dist/contact-maintenance.d.cts +4 -4
- package/dist/contact-maintenance.d.ts +4 -4
- package/dist/contact-map.cjs +1078 -40
- package/dist/contact-map.d.cts +15 -5
- package/dist/contact-map.d.ts +15 -5
- package/dist/contact-map.js +1062 -39
- package/dist/contact-minimal.d.cts +4 -4
- package/dist/contact-minimal.d.ts +4 -4
- package/dist/contact-moving.d.cts +4 -4
- package/dist/contact-moving.d.ts +4 -4
- package/dist/contact-multistep.d.cts +4 -4
- package/dist/contact-multistep.d.ts +4 -4
- package/dist/contact-partnership.d.cts +4 -4
- package/dist/contact-partnership.d.ts +4 -4
- package/dist/contact-photography.d.cts +3 -3
- package/dist/contact-photography.d.ts +3 -3
- package/dist/contact-press.d.cts +4 -4
- package/dist/contact-press.d.ts +4 -4
- package/dist/contact-quote.d.cts +4 -4
- package/dist/contact-quote.d.ts +4 -4
- package/dist/contact-referral.d.cts +4 -4
- package/dist/contact-referral.d.ts +4 -4
- package/dist/contact-report.d.cts +4 -4
- package/dist/contact-report.d.ts +4 -4
- package/dist/contact-reservation.d.cts +4 -4
- package/dist/contact-reservation.d.ts +4 -4
- package/dist/contact-retreat.d.cts +4 -4
- package/dist/contact-retreat.d.ts +4 -4
- package/dist/contact-rsvp.d.cts +4 -4
- package/dist/contact-rsvp.d.ts +4 -4
- package/dist/contact-sales.d.cts +4 -4
- package/dist/contact-sales.d.ts +4 -4
- package/dist/contact-schedule.d.cts +4 -4
- package/dist/contact-schedule.d.ts +4 -4
- package/dist/contact-sponsorship.d.cts +4 -4
- package/dist/contact-sponsorship.d.ts +4 -4
- package/dist/contact-support.d.cts +4 -4
- package/dist/contact-support.d.ts +4 -4
- package/dist/contact-tenant.d.cts +4 -4
- package/dist/contact-tenant.d.ts +4 -4
- package/dist/contact-vendor.d.cts +4 -4
- package/dist/contact-vendor.d.ts +4 -4
- package/dist/contact-volunteer.d.cts +4 -4
- package/dist/contact-volunteer.d.ts +4 -4
- package/dist/contact-warranty.d.cts +4 -4
- package/dist/contact-warranty.d.ts +4 -4
- package/dist/contact-wedding.d.cts +4 -4
- package/dist/contact-wedding.d.ts +4 -4
- package/dist/container.d.cts +4 -4
- package/dist/container.d.ts +4 -4
- 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.cjs +5 -5
- package/dist/faq-badge-support.d.cts +3 -3
- package/dist/faq-badge-support.d.ts +3 -3
- package/dist/faq-badge-support.js +5 -5
- package/dist/faq-bordered-badge.cjs +15 -66
- package/dist/faq-bordered-badge.d.cts +4 -4
- package/dist/faq-bordered-badge.d.ts +4 -4
- package/dist/faq-bordered-badge.js +15 -66
- package/dist/faq-card-categories.cjs +143 -162
- package/dist/faq-card-categories.d.cts +4 -4
- package/dist/faq-card-categories.d.ts +4 -4
- package/dist/faq-card-categories.js +142 -158
- package/dist/faq-categorized-sections.cjs +10 -46
- package/dist/faq-categorized-sections.d.cts +4 -4
- package/dist/faq-categorized-sections.d.ts +4 -4
- package/dist/faq-categorized-sections.js +10 -46
- package/dist/faq-centered-accordion.cjs +4 -4
- package/dist/faq-centered-accordion.d.cts +3 -3
- package/dist/faq-centered-accordion.d.ts +3 -3
- package/dist/faq-centered-accordion.js +4 -4
- package/dist/faq-gradient-categories.cjs +99 -75
- package/dist/faq-gradient-categories.d.cts +6 -6
- package/dist/faq-gradient-categories.d.ts +6 -6
- package/dist/faq-gradient-categories.js +98 -71
- package/dist/faq-icon-benefits.cjs +125 -76
- package/dist/faq-icon-benefits.d.cts +4 -4
- package/dist/faq-icon-benefits.d.ts +4 -4
- package/dist/faq-icon-benefits.js +107 -73
- package/dist/faq-muted-cards.cjs +122 -92
- package/dist/faq-muted-cards.d.cts +20 -4
- package/dist/faq-muted-cards.d.ts +20 -4
- package/dist/faq-muted-cards.js +121 -88
- 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.cjs +47 -106
- package/dist/faq-numbered-list.d.cts +4 -4
- package/dist/faq-numbered-list.d.ts +4 -4
- package/dist/faq-numbered-list.js +47 -106
- package/dist/faq-profile-sidebar.cjs +150 -124
- package/dist/faq-profile-sidebar.d.cts +4 -4
- package/dist/faq-profile-sidebar.d.ts +4 -4
- package/dist/faq-profile-sidebar.js +150 -124
- package/dist/faq-rounded-cards.cjs +107 -37
- package/dist/faq-rounded-cards.d.cts +4 -4
- package/dist/faq-rounded-cards.d.ts +4 -4
- package/dist/faq-rounded-cards.js +106 -33
- package/dist/faq-sidebar-navigation.cjs +65 -51
- package/dist/faq-sidebar-navigation.d.cts +3 -3
- package/dist/faq-sidebar-navigation.d.ts +3 -3
- package/dist/faq-sidebar-navigation.js +65 -51
- package/dist/faq-simple-accordion.cjs +12 -5
- package/dist/faq-simple-accordion.d.cts +3 -3
- package/dist/faq-simple-accordion.d.ts +3 -3
- package/dist/faq-simple-accordion.js +12 -5
- package/dist/faq-split-help.cjs +77 -20
- package/dist/faq-split-help.d.cts +3 -3
- package/dist/faq-split-help.d.ts +3 -3
- package/dist/faq-split-help.js +77 -20
- package/dist/faq-split-hero.cjs +228 -75
- package/dist/faq-split-hero.d.cts +16 -22
- package/dist/faq-split-hero.d.ts +16 -22
- package/dist/faq-split-hero.js +224 -74
- package/dist/faq-static-list.cjs +124 -21
- package/dist/faq-static-list.d.cts +16 -4
- package/dist/faq-static-list.d.ts +16 -4
- package/dist/faq-static-list.js +106 -18
- package/dist/feature-accordion-image.cjs +4 -4
- package/dist/feature-accordion-image.d.cts +3 -3
- package/dist/feature-accordion-image.d.ts +3 -3
- package/dist/feature-accordion-image.js +4 -4
- 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 +4 -4
- package/dist/feature-capabilities-grid.d.ts +4 -4
- 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 +4 -4
- package/dist/feature-carousel-progress.d.ts +4 -4
- 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 +4 -4
- package/dist/feature-icon-grid-bordered.d.ts +4 -4
- 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 +4 -4
- package/dist/feature-icon-grid-muted.d.ts +4 -4
- 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 +4 -4
- package/dist/feature-pattern-grid-links.d.ts +4 -4
- 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 +4 -4
- package/dist/feature-three-column-values.d.ts +4 -4
- 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 +4 -4
- package/dist/footer-animated-social.d.ts +4 -4
- 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 +4 -4
- package/dist/footer-comprehensive-links.d.ts +4 -4
- 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 +4 -4
- package/dist/footer-cta-social.d.ts +4 -4
- 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 +4 -4
- package/dist/footer-links-grid.d.ts +4 -4
- 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 +4 -4
- package/dist/footer-newsletter-grid.d.ts +4 -4
- 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 +4 -4
- package/dist/footer-social-apps.d.ts +4 -4
- 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/geo-map.cjs +1026 -0
- package/dist/geo-map.d.cts +90 -0
- package/dist/geo-map.d.ts +90 -0
- package/dist/geo-map.js +1004 -0
- package/dist/hero-ad-campaign-expert.cjs +144 -144
- 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 +144 -144
- 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 +4 -4
- package/dist/hero-overlay-cta-grid.d.ts +4 -4
- 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 +4 -4
- package/dist/hero-split-icon-cards.d.ts +4 -4
- 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-CW2ELwTs.d.ts → hero-video-dialog-gradient-C7o05nWW.d.ts} +2 -2
- package/dist/{hero-video-dialog-gradient-BOmAMhjq.d.cts → hero-video-dialog-gradient-DykMOpK9.d.cts} +2 -2
- package/dist/hero-video-dialog-gradient.cjs +142 -142
- package/dist/hero-video-dialog-gradient.d.cts +5 -5
- package/dist/hero-video-dialog-gradient.d.ts +5 -5
- 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.cjs +11 -0
- package/dist/hooks.d.cts +6 -0
- package/dist/hooks.d.ts +6 -0
- package/dist/hooks.js +12 -1
- package/dist/image-slider.d.cts +2 -2
- package/dist/image-slider.d.ts +2 -2
- package/dist/index.cjs +1365 -780
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +1269 -686
- 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 +4 -4
- package/dist/list-career-timeline.d.ts +4 -4
- 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 +4 -4
- package/dist/list-searchable-grid.d.ts +4 -4
- package/dist/list-service-category-table.d.cts +4 -4
- package/dist/list-service-category-table.d.ts +4 -4
- 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 +4 -4
- package/dist/media-hover-ctas.d.ts +4 -4
- package/dist/navbar-animated-preview.cjs +4 -4
- package/dist/navbar-animated-preview.d.cts +3 -3
- package/dist/navbar-animated-preview.d.ts +3 -3
- package/dist/navbar-animated-preview.js +4 -4
- package/dist/navbar-centered-menu.cjs +4 -4
- package/dist/navbar-centered-menu.d.cts +3 -3
- package/dist/navbar-centered-menu.d.ts +3 -3
- package/dist/navbar-centered-menu.js +4 -4
- package/dist/navbar-dark-icons.cjs +4 -4
- package/dist/navbar-dark-icons.d.cts +3 -3
- package/dist/navbar-dark-icons.d.ts +3 -3
- package/dist/navbar-dark-icons.js +4 -4
- package/dist/navbar-dropdown-menu.cjs +4 -4
- package/dist/navbar-dropdown-menu.d.cts +3 -3
- package/dist/navbar-dropdown-menu.d.ts +3 -3
- package/dist/navbar-dropdown-menu.js +4 -4
- package/dist/navbar-education-platform.cjs +4 -4
- package/dist/navbar-education-platform.d.cts +3 -3
- package/dist/navbar-education-platform.d.ts +3 -3
- package/dist/navbar-education-platform.js +4 -4
- package/dist/navbar-enterprise-mega.cjs +4 -4
- package/dist/navbar-enterprise-mega.d.cts +3 -3
- package/dist/navbar-enterprise-mega.d.ts +3 -3
- package/dist/navbar-enterprise-mega.js +4 -4
- package/dist/navbar-feature-grid.cjs +4 -4
- package/dist/navbar-feature-grid.d.cts +3 -3
- package/dist/navbar-feature-grid.d.ts +3 -3
- package/dist/navbar-feature-grid.js +4 -4
- 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.cjs +4 -4
- package/dist/navbar-image-preview.d.cts +3 -3
- package/dist/navbar-image-preview.d.ts +3 -3
- package/dist/navbar-image-preview.js +4 -4
- package/dist/navbar-mega-menu.cjs +4 -4
- package/dist/navbar-mega-menu.d.cts +3 -3
- package/dist/navbar-mega-menu.d.ts +3 -3
- package/dist/navbar-mega-menu.js +4 -4
- package/dist/navbar-multi-column-groups.cjs +4 -4
- package/dist/navbar-multi-column-groups.d.cts +3 -3
- package/dist/navbar-multi-column-groups.d.ts +3 -3
- package/dist/navbar-multi-column-groups.js +4 -4
- package/dist/navbar-platform-resources.cjs +4 -4
- package/dist/navbar-platform-resources.d.cts +3 -3
- package/dist/navbar-platform-resources.d.ts +3 -3
- package/dist/navbar-platform-resources.js +4 -4
- package/dist/navbar-search-focused.d.cts +3 -3
- package/dist/navbar-search-focused.d.ts +3 -3
- package/dist/navbar-sidebar-mobile.cjs +4 -4
- package/dist/navbar-sidebar-mobile.d.cts +3 -3
- package/dist/navbar-sidebar-mobile.d.ts +3 -3
- package/dist/navbar-sidebar-mobile.js +4 -4
- 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.cjs +4 -4
- package/dist/navbar-sticky-compact.d.cts +3 -3
- package/dist/navbar-sticky-compact.d.ts +3 -3
- package/dist/navbar-sticky-compact.js +4 -4
- package/dist/navbar-tabbed-sections.cjs +4 -4
- package/dist/navbar-tabbed-sections.d.cts +3 -3
- package/dist/navbar-tabbed-sections.d.ts +3 -3
- package/dist/navbar-tabbed-sections.js +4 -4
- 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 +3770 -2889
- package/dist/registry.js +2613 -1732
- 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 +4 -4
- package/dist/section.d.ts +4 -4
- 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.cjs +4 -4
- 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-benefits.js +4 -4
- package/dist/services-list-accordion.cjs +4 -4
- package/dist/services-list-accordion.d.cts +4 -4
- package/dist/services-list-accordion.d.ts +4 -4
- package/dist/services-list-accordion.js +4 -4
- package/dist/services-list-cards-hover.d.cts +4 -4
- package/dist/services-list-cards-hover.d.ts +4 -4
- package/dist/services-list-category-accordion.cjs +4 -4
- package/dist/services-list-category-accordion.d.cts +4 -4
- package/dist/services-list-category-accordion.d.ts +4 -4
- package/dist/services-list-category-accordion.js +4 -4
- package/dist/services-list-centered-icons.d.cts +4 -4
- package/dist/services-list-centered-icons.d.ts +4 -4
- 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 +4 -4
- package/dist/services-list-feature-spotlight.d.ts +4 -4
- package/dist/services-list-featured-highlight.d.cts +4 -4
- package/dist/services-list-featured-highlight.d.ts +4 -4
- 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 +4 -4
- package/dist/services-list-icon-grid.d.ts +4 -4
- 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 +4 -4
- package/dist/services-list-masonry.d.ts +4 -4
- 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 +4 -4
- package/dist/services-list-minimal-grid.d.ts +4 -4
- package/dist/services-list-muted-cards.d.cts +4 -4
- package/dist/services-list-muted-cards.d.ts +4 -4
- 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 +4 -4
- package/dist/services-list-pricing-grid.d.ts +4 -4
- 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 +4 -4
- package/dist/services-list-vertical-tags.d.ts +4 -4
- 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.cjs +5 -3
- package/dist/stats-impact-grid.d.cts +3 -3
- package/dist/stats-impact-grid.d.ts +3 -3
- package/dist/stats-impact-grid.js +5 -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 +4 -4
- package/dist/testimonials-grid-add-review.d.ts +4 -4
- 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 +4 -4
- package/dist/testimonials-list-verified.d.ts +4 -4
- 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.d.cts +3 -3
- package/dist/testimonials-masonry-grid.d.ts +3 -3
- 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.d.cts +3 -3
- package/dist/testimonials-stats-header.d.ts +3 -3
- package/dist/testimonials-twitter-cards.d.cts +4 -4
- package/dist/testimonials-twitter-cards.d.ts +4 -4
- 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.cjs +17 -0
- package/dist/use-responsive-layout.d.cts +24 -0
- package/dist/use-responsive-layout.d.ts +24 -0
- package/dist/use-responsive-layout.js +15 -0
- package/dist/utils.d.cts +4 -4
- package/dist/utils.d.ts +4 -4
- package/package.json +9 -4
package/dist/components.cjs
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React5 = require('react');
|
|
5
5
|
var clsx = require('clsx');
|
|
6
6
|
var tailwindMerge = require('tailwind-merge');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
var maps = require('@page-speed/maps');
|
|
9
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
8
10
|
var framerMotion = require('framer-motion');
|
|
9
11
|
var useOnClickOutside = require('@opensite/hooks/useOnClickOutside');
|
|
10
12
|
var react = require('motion/react');
|
|
11
13
|
var img = require('@page-speed/img');
|
|
12
14
|
var reactSlot = require('@radix-ui/react-slot');
|
|
13
|
-
var classVarianceAuthority = require('class-variance-authority');
|
|
14
15
|
var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
15
16
|
var icon = require('@page-speed/icon');
|
|
16
17
|
var usePlatformFromUrl = require('@opensite/hooks/usePlatformFromUrl');
|
|
@@ -35,7 +36,7 @@ function _interopNamespace(e) {
|
|
|
35
36
|
return Object.freeze(n);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
var
|
|
39
|
+
var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
|
|
39
40
|
var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
|
|
40
41
|
var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
|
|
41
42
|
|
|
@@ -82,7 +83,7 @@ var maxWidthStyles = {
|
|
|
82
83
|
"4xl": "max-w-[1536px]",
|
|
83
84
|
full: "max-w-full"
|
|
84
85
|
};
|
|
85
|
-
var Container =
|
|
86
|
+
var Container = React5__namespace.default.forwardRef(
|
|
86
87
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
87
88
|
const Component = as;
|
|
88
89
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -388,7 +389,7 @@ var spacingStyles = {
|
|
|
388
389
|
};
|
|
389
390
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
|
|
390
391
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
391
|
-
var Section =
|
|
392
|
+
var Section = React5__namespace.default.forwardRef(
|
|
392
393
|
({
|
|
393
394
|
id,
|
|
394
395
|
title,
|
|
@@ -449,129 +450,1119 @@ var Section = React4__namespace.default.forwardRef(
|
|
|
449
450
|
}
|
|
450
451
|
);
|
|
451
452
|
Section.displayName = "Section";
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
const
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
453
|
+
function normalizePhoneNumber(input) {
|
|
454
|
+
const trimmed = input.trim();
|
|
455
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
456
|
+
return trimmed;
|
|
457
|
+
}
|
|
458
|
+
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
459
|
+
if (match) {
|
|
460
|
+
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
461
|
+
const extension = match[3];
|
|
462
|
+
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
463
|
+
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
464
|
+
return `tel:${withExtension}`;
|
|
465
|
+
}
|
|
466
|
+
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
467
|
+
return `tel:${cleaned}`;
|
|
468
|
+
}
|
|
469
|
+
function normalizeEmail(input) {
|
|
470
|
+
const trimmed = input.trim();
|
|
471
|
+
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
472
|
+
return trimmed;
|
|
473
|
+
}
|
|
474
|
+
return `mailto:${trimmed}`;
|
|
475
|
+
}
|
|
476
|
+
function isEmail(input) {
|
|
477
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
478
|
+
return emailRegex.test(input.trim());
|
|
479
|
+
}
|
|
480
|
+
function isPhoneNumber(input) {
|
|
481
|
+
const trimmed = input.trim();
|
|
482
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
483
|
+
return true;
|
|
484
|
+
}
|
|
485
|
+
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
486
|
+
return phoneRegex.test(trimmed);
|
|
487
|
+
}
|
|
488
|
+
function isInternalUrl(href) {
|
|
489
|
+
if (typeof window === "undefined") {
|
|
490
|
+
return href.startsWith("/") && !href.startsWith("//");
|
|
491
|
+
}
|
|
492
|
+
const trimmed = href.trim();
|
|
493
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
494
|
+
return true;
|
|
495
|
+
}
|
|
496
|
+
try {
|
|
497
|
+
const url = new URL(trimmed, window.location.href);
|
|
498
|
+
const currentOrigin = window.location.origin;
|
|
499
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
500
|
+
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
501
|
+
} catch {
|
|
502
|
+
return false;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
function toRelativePath(href) {
|
|
506
|
+
if (typeof window === "undefined") {
|
|
507
|
+
return href;
|
|
508
|
+
}
|
|
509
|
+
const trimmed = href.trim();
|
|
510
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
511
|
+
return trimmed;
|
|
512
|
+
}
|
|
513
|
+
try {
|
|
514
|
+
const url = new URL(trimmed, window.location.href);
|
|
515
|
+
const currentOrigin = window.location.origin;
|
|
516
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
517
|
+
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
518
|
+
return url.pathname + url.search + url.hash;
|
|
484
519
|
}
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
520
|
+
} catch {
|
|
521
|
+
}
|
|
522
|
+
return trimmed;
|
|
523
|
+
}
|
|
524
|
+
function useNavigation({
|
|
525
|
+
href,
|
|
526
|
+
onClick
|
|
527
|
+
} = {}) {
|
|
528
|
+
const linkType = React5__namespace.useMemo(() => {
|
|
529
|
+
if (!href || href.trim() === "") {
|
|
530
|
+
return onClick ? "none" : "none";
|
|
489
531
|
}
|
|
490
|
-
const
|
|
491
|
-
|
|
492
|
-
|
|
532
|
+
const trimmed = href.trim();
|
|
533
|
+
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
534
|
+
return "mailto";
|
|
535
|
+
}
|
|
536
|
+
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
537
|
+
return "tel";
|
|
538
|
+
}
|
|
539
|
+
if (isInternalUrl(trimmed)) {
|
|
540
|
+
return "internal";
|
|
541
|
+
}
|
|
542
|
+
try {
|
|
543
|
+
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
544
|
+
return "external";
|
|
545
|
+
} catch {
|
|
546
|
+
return "internal";
|
|
547
|
+
}
|
|
548
|
+
}, [href, onClick]);
|
|
549
|
+
const normalizedHref = React5__namespace.useMemo(() => {
|
|
550
|
+
if (!href || href.trim() === "") {
|
|
551
|
+
return void 0;
|
|
552
|
+
}
|
|
553
|
+
const trimmed = href.trim();
|
|
554
|
+
switch (linkType) {
|
|
555
|
+
case "tel":
|
|
556
|
+
return normalizePhoneNumber(trimmed);
|
|
557
|
+
case "mailto":
|
|
558
|
+
return normalizeEmail(trimmed);
|
|
559
|
+
case "internal":
|
|
560
|
+
return toRelativePath(trimmed);
|
|
561
|
+
case "external":
|
|
562
|
+
return trimmed;
|
|
563
|
+
default:
|
|
564
|
+
return trimmed;
|
|
565
|
+
}
|
|
566
|
+
}, [href, linkType]);
|
|
567
|
+
const target = React5__namespace.useMemo(() => {
|
|
568
|
+
switch (linkType) {
|
|
569
|
+
case "external":
|
|
570
|
+
return "_blank";
|
|
571
|
+
case "internal":
|
|
572
|
+
return "_self";
|
|
573
|
+
case "mailto":
|
|
574
|
+
case "tel":
|
|
575
|
+
return void 0;
|
|
576
|
+
default:
|
|
577
|
+
return void 0;
|
|
578
|
+
}
|
|
579
|
+
}, [linkType]);
|
|
580
|
+
const rel = React5__namespace.useMemo(() => {
|
|
581
|
+
if (linkType === "external") {
|
|
582
|
+
return "noopener noreferrer";
|
|
583
|
+
}
|
|
584
|
+
return void 0;
|
|
585
|
+
}, [linkType]);
|
|
586
|
+
const isExternal = linkType === "external";
|
|
587
|
+
const isInternal = linkType === "internal";
|
|
588
|
+
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
589
|
+
const handleClick = React5__namespace.useCallback(
|
|
590
|
+
(event) => {
|
|
591
|
+
if (onClick) {
|
|
592
|
+
try {
|
|
593
|
+
onClick(event);
|
|
594
|
+
} catch (error) {
|
|
595
|
+
console.error("Error in user onClick handler:", error);
|
|
596
|
+
}
|
|
493
597
|
}
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
document.body.style.overflow = "hidden";
|
|
497
|
-
window.addEventListener("keydown", onKeyDown);
|
|
498
|
-
return () => {
|
|
499
|
-
document.body.style.overflow = previousOverflow;
|
|
500
|
-
window.removeEventListener("keydown", onKeyDown);
|
|
501
|
-
};
|
|
502
|
-
}, [open, onOpenChange]);
|
|
503
|
-
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 h-screen overflow-y-auto", children: [
|
|
504
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
505
|
-
framerMotion.motion.div,
|
|
506
|
-
{
|
|
507
|
-
initial: { opacity: 0 },
|
|
508
|
-
animate: { opacity: 1, transition: dialogTransition },
|
|
509
|
-
exit: { opacity: 0, transition: dialogTransition },
|
|
510
|
-
className: "fixed inset-0 h-full w-full bg-foreground/80 backdrop-blur-lg"
|
|
598
|
+
if (event.defaultPrevented) {
|
|
599
|
+
return;
|
|
511
600
|
}
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
601
|
+
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
602
|
+
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
603
|
+
if (typeof window !== "undefined") {
|
|
604
|
+
const handler = window.__opensiteNavigationHandler;
|
|
605
|
+
if (typeof handler === "function") {
|
|
606
|
+
try {
|
|
607
|
+
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
608
|
+
if (handled !== false) {
|
|
609
|
+
event.preventDefault();
|
|
610
|
+
}
|
|
611
|
+
} catch (error) {
|
|
612
|
+
console.error("Error in navigation handler:", error);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
[onClick, shouldUseRouter, normalizedHref]
|
|
619
|
+
);
|
|
620
|
+
return {
|
|
621
|
+
linkType,
|
|
622
|
+
normalizedHref,
|
|
623
|
+
target,
|
|
624
|
+
rel,
|
|
625
|
+
isExternal,
|
|
626
|
+
isInternal,
|
|
627
|
+
shouldUseRouter,
|
|
628
|
+
handleClick
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
var baseStyles = [
|
|
632
|
+
// Layout
|
|
633
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
634
|
+
// Typography - using CSS variables with sensible defaults
|
|
635
|
+
"font-[var(--button-font-family,inherit)]",
|
|
636
|
+
"font-[var(--button-font-weight,500)]",
|
|
637
|
+
"tracking-[var(--button-letter-spacing,0)]",
|
|
638
|
+
"leading-[var(--button-line-height,1.25)]",
|
|
639
|
+
"[text-transform:var(--button-text-transform,none)]",
|
|
640
|
+
"text-sm",
|
|
641
|
+
// Border radius
|
|
642
|
+
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
643
|
+
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
644
|
+
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
645
|
+
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
646
|
+
"[box-shadow:var(--button-shadow,none)]",
|
|
647
|
+
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
648
|
+
// Disabled state
|
|
649
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
650
|
+
// SVG handling
|
|
651
|
+
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
652
|
+
// Focus styles
|
|
653
|
+
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
654
|
+
// Invalid state
|
|
655
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
656
|
+
].join(" ");
|
|
657
|
+
var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
658
|
+
variants: {
|
|
659
|
+
variant: {
|
|
660
|
+
// Default (Primary) variant - full customization
|
|
661
|
+
default: [
|
|
662
|
+
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
663
|
+
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
664
|
+
"border-[length:var(--button-default-border-width,0px)]",
|
|
665
|
+
"border-[color:var(--button-default-border,transparent)]",
|
|
666
|
+
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
667
|
+
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
668
|
+
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
669
|
+
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
670
|
+
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
671
|
+
].join(" "),
|
|
672
|
+
// Destructive variant - full customization
|
|
673
|
+
destructive: [
|
|
674
|
+
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
675
|
+
"text-[var(--button-destructive-fg,white)]",
|
|
676
|
+
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
677
|
+
"border-[color:var(--button-destructive-border,transparent)]",
|
|
678
|
+
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
679
|
+
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
680
|
+
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
681
|
+
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
682
|
+
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
683
|
+
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
684
|
+
"dark:bg-destructive/60"
|
|
685
|
+
].join(" "),
|
|
686
|
+
// Outline variant - full customization with proper border handling
|
|
687
|
+
outline: [
|
|
688
|
+
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
689
|
+
"text-[var(--button-outline-fg,inherit)]",
|
|
690
|
+
"border-[length:var(--button-outline-border-width,1px)]",
|
|
691
|
+
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
692
|
+
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
693
|
+
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
694
|
+
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
695
|
+
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
696
|
+
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
697
|
+
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
698
|
+
].join(" "),
|
|
699
|
+
// Secondary variant - full customization
|
|
700
|
+
secondary: [
|
|
701
|
+
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
702
|
+
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
703
|
+
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
704
|
+
"border-[color:var(--button-secondary-border,transparent)]",
|
|
705
|
+
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
706
|
+
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
707
|
+
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
708
|
+
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
709
|
+
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
710
|
+
].join(" "),
|
|
711
|
+
// Ghost variant - full customization
|
|
712
|
+
ghost: [
|
|
713
|
+
"bg-[var(--button-ghost-bg,transparent)]",
|
|
714
|
+
"text-[var(--button-ghost-fg,inherit)]",
|
|
715
|
+
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
716
|
+
"border-[color:var(--button-ghost-border,transparent)]",
|
|
717
|
+
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
718
|
+
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
719
|
+
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
720
|
+
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
721
|
+
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
722
|
+
"dark:hover:bg-accent/50"
|
|
723
|
+
].join(" "),
|
|
724
|
+
// Link variant - full customization
|
|
725
|
+
link: [
|
|
726
|
+
"bg-[var(--button-link-bg,transparent)]",
|
|
727
|
+
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
728
|
+
"border-[length:var(--button-link-border-width,0px)]",
|
|
729
|
+
"border-[color:var(--button-link-border,transparent)]",
|
|
730
|
+
"[box-shadow:var(--button-link-shadow,none)]",
|
|
731
|
+
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
732
|
+
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
733
|
+
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
734
|
+
"underline-offset-4 hover:underline"
|
|
735
|
+
].join(" ")
|
|
736
|
+
},
|
|
737
|
+
size: {
|
|
738
|
+
default: [
|
|
739
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
740
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
741
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
742
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
743
|
+
].join(" "),
|
|
744
|
+
sm: [
|
|
745
|
+
"h-[var(--button-height-sm,2rem)]",
|
|
746
|
+
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
747
|
+
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
748
|
+
"gap-1.5",
|
|
749
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
750
|
+
].join(" "),
|
|
751
|
+
md: [
|
|
752
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
753
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
754
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
755
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
756
|
+
].join(" "),
|
|
757
|
+
lg: [
|
|
758
|
+
"h-[var(--button-height-lg,2.5rem)]",
|
|
759
|
+
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
760
|
+
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
761
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
762
|
+
].join(" "),
|
|
763
|
+
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
764
|
+
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
765
|
+
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
defaultVariants: {
|
|
769
|
+
variant: "default",
|
|
770
|
+
size: "default"
|
|
771
|
+
}
|
|
772
|
+
});
|
|
773
|
+
var Pressable = React5__namespace.forwardRef(
|
|
774
|
+
({
|
|
775
|
+
children,
|
|
776
|
+
className,
|
|
777
|
+
href,
|
|
778
|
+
onClick,
|
|
779
|
+
variant,
|
|
780
|
+
size,
|
|
781
|
+
asButton = false,
|
|
782
|
+
fallbackComponentType = "span",
|
|
783
|
+
componentType,
|
|
784
|
+
"aria-label": ariaLabel,
|
|
785
|
+
"aria-describedby": ariaDescribedby,
|
|
786
|
+
id,
|
|
787
|
+
...props
|
|
788
|
+
}, ref) => {
|
|
789
|
+
const navigation = useNavigation({ href, onClick });
|
|
790
|
+
const {
|
|
791
|
+
normalizedHref,
|
|
792
|
+
target,
|
|
793
|
+
rel,
|
|
794
|
+
linkType,
|
|
795
|
+
isInternal,
|
|
796
|
+
handleClick
|
|
797
|
+
} = navigation;
|
|
798
|
+
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
799
|
+
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
800
|
+
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
801
|
+
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
802
|
+
const shouldApplyButtonStyles = asButton || variant || size;
|
|
803
|
+
const combinedClassName = cn(
|
|
804
|
+
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
805
|
+
className
|
|
806
|
+
);
|
|
807
|
+
const dataProps = Object.fromEntries(
|
|
808
|
+
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
809
|
+
);
|
|
810
|
+
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
811
|
+
"data-slot": "button",
|
|
812
|
+
"data-variant": variant ?? "default",
|
|
813
|
+
"data-size": size ?? "default"
|
|
814
|
+
} : {};
|
|
815
|
+
const commonProps = {
|
|
816
|
+
className: combinedClassName,
|
|
817
|
+
onClick: handleClick,
|
|
818
|
+
"aria-label": ariaLabel,
|
|
819
|
+
"aria-describedby": ariaDescribedby,
|
|
820
|
+
id,
|
|
821
|
+
...dataProps,
|
|
822
|
+
...buttonDataAttributes
|
|
823
|
+
};
|
|
824
|
+
if (finalComponentType === "a" && shouldRenderLink) {
|
|
825
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
826
|
+
"a",
|
|
827
|
+
{
|
|
828
|
+
ref,
|
|
829
|
+
href: normalizedHref,
|
|
830
|
+
target,
|
|
831
|
+
rel,
|
|
832
|
+
...commonProps,
|
|
833
|
+
...props,
|
|
834
|
+
children
|
|
835
|
+
}
|
|
836
|
+
);
|
|
837
|
+
}
|
|
838
|
+
if (finalComponentType === "button") {
|
|
839
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
840
|
+
"button",
|
|
841
|
+
{
|
|
842
|
+
ref,
|
|
843
|
+
type: props.type || "button",
|
|
844
|
+
...commonProps,
|
|
845
|
+
...props,
|
|
846
|
+
children
|
|
847
|
+
}
|
|
848
|
+
);
|
|
849
|
+
}
|
|
850
|
+
if (finalComponentType === "div") {
|
|
851
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
852
|
+
"div",
|
|
853
|
+
{
|
|
854
|
+
ref,
|
|
855
|
+
...commonProps,
|
|
856
|
+
children
|
|
857
|
+
}
|
|
858
|
+
);
|
|
859
|
+
}
|
|
860
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
861
|
+
"span",
|
|
862
|
+
{
|
|
863
|
+
ref,
|
|
864
|
+
...commonProps,
|
|
865
|
+
children
|
|
866
|
+
}
|
|
867
|
+
);
|
|
868
|
+
}
|
|
869
|
+
);
|
|
870
|
+
Pressable.displayName = "Pressable";
|
|
871
|
+
var PANEL_POSITION_CLASS = {
|
|
872
|
+
"top-left": "left-4 top-4",
|
|
873
|
+
"top-right": "right-4 top-4",
|
|
874
|
+
"bottom-left": "bottom-4 left-4",
|
|
875
|
+
"bottom-right": "bottom-4 right-4"
|
|
876
|
+
};
|
|
877
|
+
var DEFAULT_VIEW_STATE = {
|
|
878
|
+
latitude: 39.5,
|
|
879
|
+
longitude: -98.35,
|
|
880
|
+
zoom: 3
|
|
881
|
+
};
|
|
882
|
+
var VIDEO_FILE_EXTENSION_REGEX = /\.(mp4|webm|ogg|mov|m4v|m3u8)(\?.*)?$/i;
|
|
883
|
+
function resolveMediaType(item) {
|
|
884
|
+
if (item.type) {
|
|
885
|
+
return item.type;
|
|
886
|
+
}
|
|
887
|
+
return VIDEO_FILE_EXTENSION_REGEX.test(item.src) ? "video" : "image";
|
|
888
|
+
}
|
|
889
|
+
function normalizeId(value, fallback) {
|
|
890
|
+
if (value === null || value === void 0 || value === "") {
|
|
891
|
+
return fallback;
|
|
892
|
+
}
|
|
893
|
+
return String(value);
|
|
894
|
+
}
|
|
895
|
+
function buildClusterCenter(markers) {
|
|
896
|
+
if (!markers.length) {
|
|
897
|
+
return null;
|
|
898
|
+
}
|
|
899
|
+
const total = markers.reduce(
|
|
900
|
+
(accumulator, marker) => ({
|
|
901
|
+
latitude: accumulator.latitude + marker.latitude,
|
|
902
|
+
longitude: accumulator.longitude + marker.longitude
|
|
903
|
+
}),
|
|
904
|
+
{ latitude: 0, longitude: 0 }
|
|
905
|
+
);
|
|
906
|
+
return {
|
|
907
|
+
latitude: total.latitude / markers.length,
|
|
908
|
+
longitude: total.longitude / markers.length
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
function resolveActionKey(action, index) {
|
|
912
|
+
if (typeof action.label === "string" && action.label.trim().length > 0) {
|
|
913
|
+
return `label:${action.label}:${index}`;
|
|
914
|
+
}
|
|
915
|
+
if (action.href) {
|
|
916
|
+
return `href:${action.href}:${index}`;
|
|
917
|
+
}
|
|
918
|
+
return `action:${index}`;
|
|
919
|
+
}
|
|
920
|
+
function MarkerActions({ actions }) {
|
|
921
|
+
if (!actions || actions.length === 0) {
|
|
922
|
+
return null;
|
|
923
|
+
}
|
|
924
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex flex-wrap gap-2", children: actions.map((action, index) => {
|
|
925
|
+
const {
|
|
926
|
+
label,
|
|
927
|
+
icon,
|
|
928
|
+
iconAfter,
|
|
929
|
+
children,
|
|
930
|
+
href,
|
|
931
|
+
onClick,
|
|
932
|
+
className: actionClassName,
|
|
933
|
+
variant,
|
|
934
|
+
size,
|
|
935
|
+
asButton,
|
|
936
|
+
...rest
|
|
937
|
+
} = action;
|
|
938
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
939
|
+
Pressable,
|
|
940
|
+
{
|
|
941
|
+
href,
|
|
942
|
+
onClick,
|
|
943
|
+
variant: variant ?? (index === 0 ? "default" : "outline"),
|
|
944
|
+
size: size ?? "sm",
|
|
945
|
+
asButton: asButton ?? true,
|
|
946
|
+
className: cn("inline-flex items-center gap-2", actionClassName),
|
|
947
|
+
...rest,
|
|
948
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
949
|
+
icon,
|
|
950
|
+
label,
|
|
951
|
+
iconAfter
|
|
952
|
+
] })
|
|
953
|
+
},
|
|
954
|
+
resolveActionKey(action, index)
|
|
955
|
+
);
|
|
956
|
+
}) });
|
|
957
|
+
}
|
|
958
|
+
function MarkerMediaCarousel({ mediaItems }) {
|
|
959
|
+
const [activeIndex, setActiveIndex] = React5__namespace.useState(0);
|
|
960
|
+
const totalItems = mediaItems.length;
|
|
961
|
+
React5__namespace.useEffect(() => {
|
|
962
|
+
setActiveIndex(0);
|
|
963
|
+
}, [mediaItems]);
|
|
964
|
+
const activeMediaItem = mediaItems[activeIndex];
|
|
965
|
+
const mediaType = resolveMediaType(activeMediaItem);
|
|
966
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative border-b border-border/60 bg-muted/40", children: [
|
|
967
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-44 w-full overflow-hidden", children: mediaType === "video" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
968
|
+
"video",
|
|
969
|
+
{
|
|
970
|
+
className: "h-full w-full object-cover",
|
|
971
|
+
controls: true,
|
|
972
|
+
preload: "metadata",
|
|
973
|
+
poster: activeMediaItem.poster,
|
|
974
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("source", { src: activeMediaItem.src })
|
|
975
|
+
}
|
|
976
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
977
|
+
"img",
|
|
978
|
+
{
|
|
979
|
+
src: activeMediaItem.src,
|
|
980
|
+
alt: activeMediaItem.alt ?? "Map marker media",
|
|
981
|
+
className: "h-full w-full object-cover",
|
|
982
|
+
loading: "lazy"
|
|
983
|
+
}
|
|
984
|
+
) }),
|
|
985
|
+
totalItems > 1 ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
986
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
987
|
+
"button",
|
|
988
|
+
{
|
|
989
|
+
type: "button",
|
|
990
|
+
"aria-label": "Show previous media",
|
|
991
|
+
className: "absolute left-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/90 text-foreground shadow-sm transition hover:bg-background",
|
|
992
|
+
onClick: () => {
|
|
993
|
+
setActiveIndex((current) => (current - 1 + totalItems) % totalItems);
|
|
994
|
+
},
|
|
995
|
+
children: "<"
|
|
996
|
+
}
|
|
997
|
+
),
|
|
998
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
999
|
+
"button",
|
|
1000
|
+
{
|
|
1001
|
+
type: "button",
|
|
1002
|
+
"aria-label": "Show next media",
|
|
1003
|
+
className: "absolute right-2 top-1/2 inline-flex h-8 w-8 -translate-y-1/2 items-center justify-center rounded-full bg-background/90 text-foreground shadow-sm transition hover:bg-background",
|
|
1004
|
+
onClick: () => {
|
|
1005
|
+
setActiveIndex((current) => (current + 1) % totalItems);
|
|
1006
|
+
},
|
|
1007
|
+
children: ">"
|
|
1008
|
+
}
|
|
1009
|
+
),
|
|
1010
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-2 left-1/2 flex -translate-x-1/2 items-center gap-1.5", children: mediaItems.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1011
|
+
"button",
|
|
1012
|
+
{
|
|
1013
|
+
type: "button",
|
|
1014
|
+
"aria-label": `Show media item ${index + 1}`,
|
|
1015
|
+
className: cn(
|
|
1016
|
+
"h-2 rounded-full transition-all",
|
|
1017
|
+
index === activeIndex ? "w-6 bg-white" : "w-2 bg-white/70 hover:bg-white/90"
|
|
1018
|
+
),
|
|
1019
|
+
onClick: () => setActiveIndex(index)
|
|
1020
|
+
},
|
|
1021
|
+
normalizeId(item.id, `media-dot-${index}`)
|
|
1022
|
+
)) })
|
|
1023
|
+
] }) : null
|
|
1024
|
+
] });
|
|
1025
|
+
}
|
|
1026
|
+
function getMarkerTitle(marker, markerIndex) {
|
|
1027
|
+
if (marker.title !== void 0 && marker.title !== null) {
|
|
1028
|
+
return marker.title;
|
|
1029
|
+
}
|
|
1030
|
+
if (marker.label !== void 0 && marker.label !== null) {
|
|
1031
|
+
return marker.label;
|
|
1032
|
+
}
|
|
1033
|
+
return `Location ${markerIndex + 1}`;
|
|
1034
|
+
}
|
|
1035
|
+
function GeoMap({
|
|
1036
|
+
className,
|
|
1037
|
+
mapWrapperClassName,
|
|
1038
|
+
mapClassName,
|
|
1039
|
+
panelClassName,
|
|
1040
|
+
panelPosition = "top-left",
|
|
1041
|
+
stadiaApiKey = "",
|
|
1042
|
+
mapStyle = "osm-bright",
|
|
1043
|
+
styleUrl,
|
|
1044
|
+
mapLibreCssHref,
|
|
1045
|
+
markers = [],
|
|
1046
|
+
clusters = [],
|
|
1047
|
+
viewState,
|
|
1048
|
+
defaultViewState,
|
|
1049
|
+
onViewStateChange,
|
|
1050
|
+
onMapClick,
|
|
1051
|
+
onMarkerDrag,
|
|
1052
|
+
showNavigationControl = true,
|
|
1053
|
+
showGeolocateControl = false,
|
|
1054
|
+
navigationControlPosition = "top-right",
|
|
1055
|
+
geolocateControlPosition = "top-left",
|
|
1056
|
+
flyToOptions,
|
|
1057
|
+
markerFocusZoom = 14,
|
|
1058
|
+
clusterFocusZoom = 5,
|
|
1059
|
+
selectedMarkerId,
|
|
1060
|
+
initialSelectedMarkerId,
|
|
1061
|
+
onSelectionChange,
|
|
1062
|
+
clearSelectionOnMapClick = true,
|
|
1063
|
+
mapChildren
|
|
1064
|
+
}) {
|
|
1065
|
+
const normalizedStandaloneMarkers = React5__namespace.useMemo(
|
|
1066
|
+
() => markers.map((marker, index) => ({
|
|
1067
|
+
...marker,
|
|
1068
|
+
id: normalizeId(marker.id, `marker-${index}`)
|
|
1069
|
+
})),
|
|
1070
|
+
[markers]
|
|
1071
|
+
);
|
|
1072
|
+
const normalizedClusters = React5__namespace.useMemo(() => {
|
|
1073
|
+
const results = [];
|
|
1074
|
+
clusters.forEach((cluster, clusterIndex) => {
|
|
1075
|
+
const clusterId = normalizeId(cluster.id, `cluster-${clusterIndex}`);
|
|
1076
|
+
const normalizedClusterMarkers = cluster.markers.map(
|
|
1077
|
+
(marker, markerIndex) => ({
|
|
1078
|
+
...marker,
|
|
1079
|
+
id: normalizeId(marker.id, `${clusterId}-marker-${markerIndex}`),
|
|
1080
|
+
clusterId
|
|
1081
|
+
})
|
|
1082
|
+
);
|
|
1083
|
+
const clusterCenter = cluster.latitude !== void 0 && cluster.longitude !== void 0 ? { latitude: cluster.latitude, longitude: cluster.longitude } : buildClusterCenter(normalizedClusterMarkers);
|
|
1084
|
+
if (!clusterCenter) {
|
|
1085
|
+
return;
|
|
1086
|
+
}
|
|
1087
|
+
results.push({
|
|
1088
|
+
...cluster,
|
|
1089
|
+
id: clusterId,
|
|
1090
|
+
latitude: clusterCenter.latitude,
|
|
1091
|
+
longitude: clusterCenter.longitude,
|
|
1092
|
+
markers: normalizedClusterMarkers
|
|
1093
|
+
});
|
|
1094
|
+
});
|
|
1095
|
+
return results;
|
|
1096
|
+
}, [clusters]);
|
|
1097
|
+
const markerLookup = React5__namespace.useMemo(() => {
|
|
1098
|
+
const lookup = /* @__PURE__ */ new Map();
|
|
1099
|
+
normalizedStandaloneMarkers.forEach((marker) => {
|
|
1100
|
+
lookup.set(marker.id, marker);
|
|
1101
|
+
});
|
|
1102
|
+
normalizedClusters.forEach((cluster) => {
|
|
1103
|
+
cluster.markers.forEach((marker) => {
|
|
1104
|
+
lookup.set(marker.id, marker);
|
|
1105
|
+
});
|
|
1106
|
+
});
|
|
1107
|
+
return lookup;
|
|
1108
|
+
}, [normalizedClusters, normalizedStandaloneMarkers]);
|
|
1109
|
+
const clusterLookup = React5__namespace.useMemo(() => {
|
|
1110
|
+
const lookup = /* @__PURE__ */ new Map();
|
|
1111
|
+
normalizedClusters.forEach((cluster) => {
|
|
1112
|
+
lookup.set(cluster.id, cluster);
|
|
1113
|
+
});
|
|
1114
|
+
return lookup;
|
|
1115
|
+
}, [normalizedClusters]);
|
|
1116
|
+
const firstCoordinate = React5__namespace.useMemo(() => {
|
|
1117
|
+
if (normalizedStandaloneMarkers.length > 0) {
|
|
1118
|
+
const firstStandaloneMarker = normalizedStandaloneMarkers[0];
|
|
1119
|
+
return {
|
|
1120
|
+
latitude: firstStandaloneMarker.latitude,
|
|
1121
|
+
longitude: firstStandaloneMarker.longitude
|
|
1122
|
+
};
|
|
1123
|
+
}
|
|
1124
|
+
if (normalizedClusters.length > 0) {
|
|
1125
|
+
const firstCluster = normalizedClusters[0];
|
|
1126
|
+
return {
|
|
1127
|
+
latitude: firstCluster.latitude,
|
|
1128
|
+
longitude: firstCluster.longitude
|
|
1129
|
+
};
|
|
1130
|
+
}
|
|
1131
|
+
return {
|
|
1132
|
+
latitude: DEFAULT_VIEW_STATE.latitude,
|
|
1133
|
+
longitude: DEFAULT_VIEW_STATE.longitude
|
|
1134
|
+
};
|
|
1135
|
+
}, [normalizedClusters, normalizedStandaloneMarkers]);
|
|
1136
|
+
const [uncontrolledViewState, setUncontrolledViewState] = React5__namespace.useState({
|
|
1137
|
+
latitude: defaultViewState?.latitude ?? firstCoordinate.latitude,
|
|
1138
|
+
longitude: defaultViewState?.longitude ?? firstCoordinate.longitude,
|
|
1139
|
+
zoom: defaultViewState?.zoom ?? DEFAULT_VIEW_STATE.zoom
|
|
1140
|
+
});
|
|
1141
|
+
const isControlledViewState = viewState !== void 0;
|
|
1142
|
+
const resolvedViewState = isControlledViewState ? viewState : uncontrolledViewState;
|
|
1143
|
+
const applyViewState = React5__namespace.useCallback(
|
|
1144
|
+
(nextState) => {
|
|
1145
|
+
if (!isControlledViewState) {
|
|
1146
|
+
setUncontrolledViewState((current) => ({ ...current, ...nextState }));
|
|
1147
|
+
}
|
|
1148
|
+
onViewStateChange?.(nextState);
|
|
1149
|
+
},
|
|
1150
|
+
[isControlledViewState, onViewStateChange]
|
|
1151
|
+
);
|
|
1152
|
+
const [selection, setSelection] = React5__namespace.useState(() => {
|
|
1153
|
+
if (initialSelectedMarkerId !== void 0 && initialSelectedMarkerId !== null) {
|
|
1154
|
+
return {
|
|
1155
|
+
type: "marker",
|
|
1156
|
+
markerId: String(initialSelectedMarkerId)
|
|
1157
|
+
};
|
|
1158
|
+
}
|
|
1159
|
+
return { type: "none" };
|
|
1160
|
+
});
|
|
1161
|
+
React5__namespace.useEffect(() => {
|
|
1162
|
+
if (selectedMarkerId === void 0 || selectedMarkerId === null) {
|
|
1163
|
+
return;
|
|
1164
|
+
}
|
|
1165
|
+
setSelection({
|
|
1166
|
+
type: "marker",
|
|
1167
|
+
markerId: String(selectedMarkerId)
|
|
1168
|
+
});
|
|
1169
|
+
}, [selectedMarkerId]);
|
|
1170
|
+
const selectedMarker = selection.markerId ? markerLookup.get(selection.markerId) : void 0;
|
|
1171
|
+
const selectedCluster = selection.clusterId ? clusterLookup.get(selection.clusterId) : void 0;
|
|
1172
|
+
React5__namespace.useEffect(() => {
|
|
1173
|
+
if (selection.type === "marker" && selection.markerId && !selectedMarker) {
|
|
1174
|
+
setSelection({ type: "none" });
|
|
1175
|
+
onSelectionChange?.({ type: "none" });
|
|
1176
|
+
}
|
|
1177
|
+
}, [onSelectionChange, selectedMarker, selection]);
|
|
1178
|
+
const emitSelectionChange = React5__namespace.useCallback(
|
|
1179
|
+
(nextSelection) => {
|
|
1180
|
+
if (nextSelection.type === "none") {
|
|
1181
|
+
onSelectionChange?.({ type: "none" });
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
if (nextSelection.type === "marker") {
|
|
1185
|
+
const parentCluster = nextSelection.marker.clusterId ? clusterLookup.get(nextSelection.marker.clusterId) : void 0;
|
|
1186
|
+
onSelectionChange?.({
|
|
1187
|
+
type: "marker",
|
|
1188
|
+
marker: nextSelection.marker,
|
|
1189
|
+
cluster: parentCluster
|
|
1190
|
+
});
|
|
1191
|
+
return;
|
|
1192
|
+
}
|
|
1193
|
+
onSelectionChange?.({
|
|
1194
|
+
type: "cluster",
|
|
1195
|
+
cluster: nextSelection.cluster
|
|
1196
|
+
});
|
|
1197
|
+
},
|
|
1198
|
+
[clusterLookup, onSelectionChange]
|
|
1199
|
+
);
|
|
1200
|
+
const selectMarker = React5__namespace.useCallback(
|
|
1201
|
+
(marker) => {
|
|
1202
|
+
setSelection({
|
|
1203
|
+
type: "marker",
|
|
1204
|
+
markerId: marker.id,
|
|
1205
|
+
clusterId: marker.clusterId
|
|
1206
|
+
});
|
|
1207
|
+
applyViewState({
|
|
1208
|
+
latitude: marker.latitude,
|
|
1209
|
+
longitude: marker.longitude,
|
|
1210
|
+
zoom: markerFocusZoom
|
|
1211
|
+
});
|
|
1212
|
+
emitSelectionChange({ type: "marker", marker });
|
|
1213
|
+
},
|
|
1214
|
+
[applyViewState, emitSelectionChange, markerFocusZoom]
|
|
1215
|
+
);
|
|
1216
|
+
const selectCluster = React5__namespace.useCallback(
|
|
1217
|
+
(cluster) => {
|
|
1218
|
+
setSelection({
|
|
1219
|
+
type: "cluster",
|
|
1220
|
+
clusterId: cluster.id
|
|
1221
|
+
});
|
|
1222
|
+
applyViewState({
|
|
1223
|
+
latitude: cluster.latitude,
|
|
1224
|
+
longitude: cluster.longitude,
|
|
1225
|
+
zoom: clusterFocusZoom
|
|
1226
|
+
});
|
|
1227
|
+
emitSelectionChange({ type: "cluster", cluster });
|
|
1228
|
+
},
|
|
1229
|
+
[applyViewState, clusterFocusZoom, emitSelectionChange]
|
|
1230
|
+
);
|
|
1231
|
+
const clearSelection = React5__namespace.useCallback(() => {
|
|
1232
|
+
setSelection({ type: "none" });
|
|
1233
|
+
emitSelectionChange({ type: "none" });
|
|
1234
|
+
}, [emitSelectionChange]);
|
|
1235
|
+
const mapMarkers = React5__namespace.useMemo(() => {
|
|
1236
|
+
const resolvedMarkers = [];
|
|
1237
|
+
normalizedClusters.forEach((cluster) => {
|
|
1238
|
+
const isSelected = selection.type === "cluster" && selection.clusterId === cluster.id;
|
|
1239
|
+
resolvedMarkers.push({
|
|
1240
|
+
id: `cluster-pin:${cluster.id}`,
|
|
1241
|
+
latitude: cluster.latitude,
|
|
1242
|
+
longitude: cluster.longitude,
|
|
1243
|
+
element: () => {
|
|
1244
|
+
const customMarkerElement = cluster.markerElement;
|
|
1245
|
+
const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({
|
|
1246
|
+
isSelected,
|
|
1247
|
+
count: cluster.markers.length
|
|
1248
|
+
}) : customMarkerElement;
|
|
1249
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1250
|
+
"button",
|
|
1251
|
+
{
|
|
1252
|
+
type: "button",
|
|
1253
|
+
className: "group cursor-pointer",
|
|
1254
|
+
onClick: (event) => {
|
|
1255
|
+
event.preventDefault();
|
|
1256
|
+
event.stopPropagation();
|
|
1257
|
+
selectCluster(cluster);
|
|
1258
|
+
},
|
|
1259
|
+
"aria-label": `View ${cluster.markers.length} clustered locations`,
|
|
1260
|
+
children: markerBody ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1261
|
+
"span",
|
|
1262
|
+
{
|
|
1263
|
+
className: cn(
|
|
1264
|
+
"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",
|
|
1265
|
+
isSelected && "ring-4 ring-primary/30",
|
|
1266
|
+
cluster.pinClassName
|
|
1267
|
+
),
|
|
1268
|
+
style: {
|
|
1269
|
+
backgroundColor: cluster.pinColor ?? "var(--foreground)"
|
|
1270
|
+
},
|
|
1271
|
+
children: cluster.markers.length
|
|
1272
|
+
}
|
|
1273
|
+
)
|
|
1274
|
+
}
|
|
1275
|
+
);
|
|
1276
|
+
}
|
|
1277
|
+
});
|
|
1278
|
+
});
|
|
1279
|
+
normalizedStandaloneMarkers.forEach((marker) => {
|
|
1280
|
+
const isSelected = selection.type === "marker" && selection.markerId === marker.id;
|
|
1281
|
+
const customMarkerElement = marker.markerElement;
|
|
1282
|
+
resolvedMarkers.push({
|
|
1283
|
+
id: marker.id,
|
|
1284
|
+
latitude: marker.latitude,
|
|
1285
|
+
longitude: marker.longitude,
|
|
1286
|
+
draggable: marker.draggable,
|
|
1287
|
+
element: () => {
|
|
1288
|
+
const markerBody = typeof customMarkerElement === "function" ? customMarkerElement({ isSelected }) : customMarkerElement;
|
|
1289
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1290
|
+
"button",
|
|
1291
|
+
{
|
|
1292
|
+
type: "button",
|
|
1293
|
+
className: "group cursor-pointer",
|
|
1294
|
+
onClick: (event) => {
|
|
1295
|
+
event.preventDefault();
|
|
1296
|
+
event.stopPropagation();
|
|
1297
|
+
selectMarker(marker);
|
|
1298
|
+
},
|
|
1299
|
+
"aria-label": typeof marker.title === "string" ? `View ${marker.title}` : "View location details",
|
|
1300
|
+
children: markerBody ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1301
|
+
"span",
|
|
1302
|
+
{
|
|
1303
|
+
className: cn(
|
|
1304
|
+
"inline-flex h-4 w-4 rounded-full border-2 border-white shadow-md transition-transform duration-200 group-hover:scale-110",
|
|
1305
|
+
isSelected && "h-5 w-5 ring-4 ring-primary/30",
|
|
1306
|
+
marker.pinClassName
|
|
1307
|
+
),
|
|
1308
|
+
style: {
|
|
1309
|
+
backgroundColor: marker.pinColor ?? "#f43f5e"
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
)
|
|
1313
|
+
}
|
|
1314
|
+
);
|
|
1315
|
+
}
|
|
1316
|
+
});
|
|
1317
|
+
});
|
|
1318
|
+
return resolvedMarkers;
|
|
1319
|
+
}, [normalizedClusters, normalizedStandaloneMarkers, selectCluster, selectMarker, selection]);
|
|
1320
|
+
const renderMarkerPanel = () => {
|
|
1321
|
+
if (selectedMarker) {
|
|
1322
|
+
const markerMediaItems = selectedMarker.mediaItems ?? [];
|
|
1323
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1324
|
+
"div",
|
|
1325
|
+
{
|
|
1326
|
+
className: cn(
|
|
1327
|
+
"w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-background shadow-2xl",
|
|
1328
|
+
panelClassName
|
|
1329
|
+
),
|
|
1330
|
+
children: [
|
|
1331
|
+
markerMediaItems.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(MarkerMediaCarousel, { mediaItems: markerMediaItems }) : null,
|
|
1332
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2 p-4", children: [
|
|
1333
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
1334
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-1", children: [
|
|
1335
|
+
selectedMarker.eyebrow ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedMarker.eyebrow }) : null,
|
|
1336
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedMarker.title ?? selectedMarker.label ?? "Location" })
|
|
1337
|
+
] }),
|
|
1338
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1339
|
+
"button",
|
|
1340
|
+
{
|
|
1341
|
+
type: "button",
|
|
1342
|
+
"aria-label": "Close marker details",
|
|
1343
|
+
className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-border/70 text-muted-foreground transition hover:bg-muted hover:text-foreground",
|
|
1344
|
+
onClick: clearSelection,
|
|
1345
|
+
children: "x"
|
|
1346
|
+
}
|
|
1347
|
+
)
|
|
1348
|
+
] }),
|
|
1349
|
+
selectedMarker.summary ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-relaxed text-muted-foreground", children: selectedMarker.summary }) : null,
|
|
1350
|
+
selectedMarker.locationLine ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-foreground", children: selectedMarker.locationLine }) : null,
|
|
1351
|
+
selectedMarker.hoursLine ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: selectedMarker.hoursLine }) : null,
|
|
1352
|
+
selectedMarker.markerContentComponent ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", children: selectedMarker.markerContentComponent }) : null,
|
|
1353
|
+
/* @__PURE__ */ jsxRuntime.jsx(MarkerActions, { actions: selectedMarker.actions })
|
|
1354
|
+
] })
|
|
1355
|
+
]
|
|
1356
|
+
}
|
|
1357
|
+
);
|
|
1358
|
+
}
|
|
1359
|
+
if (selectedCluster) {
|
|
1360
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1361
|
+
"div",
|
|
1362
|
+
{
|
|
1363
|
+
className: cn(
|
|
1364
|
+
"w-[min(24rem,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-background p-4 shadow-2xl",
|
|
1365
|
+
panelClassName
|
|
1366
|
+
),
|
|
1367
|
+
children: [
|
|
1368
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-start justify-between gap-3", children: [
|
|
1369
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
1370
|
+
selectedCluster.label ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: selectedCluster.label }) : null,
|
|
1371
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-tight text-foreground", children: selectedCluster.title ?? "Clustered Locations" }),
|
|
1372
|
+
/* @__PURE__ */ jsxRuntime.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.` })
|
|
1373
|
+
] }),
|
|
1374
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1375
|
+
"button",
|
|
1376
|
+
{
|
|
1377
|
+
type: "button",
|
|
1378
|
+
"aria-label": "Close cluster details",
|
|
1379
|
+
className: "inline-flex h-7 w-7 items-center justify-center rounded-md border border-border/70 text-muted-foreground transition hover:bg-muted hover:text-foreground",
|
|
1380
|
+
onClick: clearSelection,
|
|
1381
|
+
children: "x"
|
|
1382
|
+
}
|
|
1383
|
+
)
|
|
1384
|
+
] }),
|
|
1385
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-h-56 space-y-2 overflow-y-auto pr-1", children: selectedCluster.markers.map((marker, markerIndex) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1386
|
+
"button",
|
|
1387
|
+
{
|
|
1388
|
+
type: "button",
|
|
1389
|
+
className: "w-full rounded-lg border border-border/60 p-3 text-left transition hover:border-border hover:bg-muted/50",
|
|
1390
|
+
onClick: () => selectMarker(marker),
|
|
1391
|
+
children: [
|
|
1392
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "line-clamp-1 text-sm font-semibold text-foreground", children: getMarkerTitle(marker, markerIndex) }),
|
|
1393
|
+
marker.summary ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 line-clamp-2 text-xs text-muted-foreground", children: marker.summary }) : null
|
|
1394
|
+
]
|
|
1395
|
+
},
|
|
1396
|
+
marker.id
|
|
1397
|
+
)) })
|
|
1398
|
+
]
|
|
1399
|
+
}
|
|
1400
|
+
);
|
|
1401
|
+
}
|
|
1402
|
+
return null;
|
|
1403
|
+
};
|
|
1404
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1405
|
+
"div",
|
|
1406
|
+
{
|
|
1407
|
+
className: cn(
|
|
1408
|
+
"relative overflow-hidden rounded-2xl border border-border bg-background",
|
|
1409
|
+
className
|
|
1410
|
+
),
|
|
1411
|
+
children: [
|
|
1412
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("h-[520px] w-full", mapWrapperClassName), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1413
|
+
maps.MapLibre,
|
|
1414
|
+
{
|
|
1415
|
+
stadiaApiKey,
|
|
1416
|
+
mapStyle,
|
|
1417
|
+
styleUrl,
|
|
1418
|
+
mapLibreCssHref,
|
|
1419
|
+
viewState: resolvedViewState,
|
|
1420
|
+
onViewStateChange: applyViewState,
|
|
1421
|
+
markers: mapMarkers,
|
|
1422
|
+
onClick: (coord) => {
|
|
1423
|
+
onMapClick?.(coord);
|
|
1424
|
+
if (clearSelectionOnMapClick) {
|
|
1425
|
+
clearSelection();
|
|
1426
|
+
}
|
|
1427
|
+
},
|
|
1428
|
+
onMarkerDrag,
|
|
1429
|
+
showNavigationControl,
|
|
1430
|
+
showGeolocateControl,
|
|
1431
|
+
navigationControlPosition,
|
|
1432
|
+
geolocateControlPosition,
|
|
1433
|
+
flyToOptions,
|
|
1434
|
+
className: cn("h-full w-full", mapClassName),
|
|
1435
|
+
children: mapChildren
|
|
1436
|
+
}
|
|
1437
|
+
) }),
|
|
1438
|
+
selection.type !== "none" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pointer-events-none absolute z-20", PANEL_POSITION_CLASS[panelPosition]), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-auto", children: renderMarkerPanel() }) }) : null
|
|
1439
|
+
]
|
|
1440
|
+
}
|
|
1441
|
+
);
|
|
1442
|
+
}
|
|
1443
|
+
var sizeStyles = {
|
|
1444
|
+
sm: "max-w-md",
|
|
1445
|
+
md: "max-w-2xl",
|
|
1446
|
+
lg: "max-w-4xl",
|
|
1447
|
+
xl: "max-w-5xl",
|
|
1448
|
+
full: "max-w-7xl",
|
|
1449
|
+
compact: "max-w-[700px]"
|
|
1450
|
+
};
|
|
1451
|
+
var dialogTransition = {
|
|
1452
|
+
duration: 0.35,
|
|
1453
|
+
ease: [0.16, 1, 0.3, 1]
|
|
1454
|
+
};
|
|
1455
|
+
function AnimatedDialog({
|
|
1456
|
+
open,
|
|
1457
|
+
onOpenChange,
|
|
1458
|
+
title,
|
|
1459
|
+
eyebrow,
|
|
1460
|
+
description,
|
|
1461
|
+
children,
|
|
1462
|
+
header,
|
|
1463
|
+
footer,
|
|
1464
|
+
size = "lg",
|
|
1465
|
+
className,
|
|
1466
|
+
contentClassName,
|
|
1467
|
+
featuredMediaHeader
|
|
1468
|
+
}) {
|
|
1469
|
+
const titleId = React5.useId();
|
|
1470
|
+
const descriptionId = React5.useId();
|
|
1471
|
+
const containerRef = React5.useRef(null);
|
|
1472
|
+
useOnClickOutside.useOnClickOutside(containerRef, () => {
|
|
1473
|
+
if (open) {
|
|
1474
|
+
onOpenChange(false);
|
|
1475
|
+
}
|
|
1476
|
+
});
|
|
1477
|
+
React5.useEffect(() => {
|
|
1478
|
+
if (!open) {
|
|
1479
|
+
return;
|
|
1480
|
+
}
|
|
1481
|
+
const onKeyDown = (event) => {
|
|
1482
|
+
if (event.key === "Escape") {
|
|
1483
|
+
onOpenChange(false);
|
|
1484
|
+
}
|
|
1485
|
+
};
|
|
1486
|
+
const previousOverflow = document.body.style.overflow;
|
|
1487
|
+
document.body.style.overflow = "hidden";
|
|
1488
|
+
window.addEventListener("keydown", onKeyDown);
|
|
1489
|
+
return () => {
|
|
1490
|
+
document.body.style.overflow = previousOverflow;
|
|
1491
|
+
window.removeEventListener("keydown", onKeyDown);
|
|
1492
|
+
};
|
|
1493
|
+
}, [open, onOpenChange]);
|
|
1494
|
+
return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "fixed inset-0 z-50 h-screen overflow-y-auto", children: [
|
|
1495
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1496
|
+
framerMotion.motion.div,
|
|
1497
|
+
{
|
|
1498
|
+
initial: { opacity: 0 },
|
|
1499
|
+
animate: { opacity: 1, transition: dialogTransition },
|
|
1500
|
+
exit: { opacity: 0, transition: dialogTransition },
|
|
1501
|
+
className: "fixed inset-0 h-full w-full bg-foreground/80 backdrop-blur-lg"
|
|
1502
|
+
}
|
|
1503
|
+
),
|
|
1504
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1505
|
+
framerMotion.motion.div,
|
|
1506
|
+
{
|
|
1507
|
+
initial: { opacity: 0, y: 24, scale: 0.98 },
|
|
1508
|
+
animate: {
|
|
1509
|
+
opacity: 1,
|
|
1510
|
+
y: 0,
|
|
1511
|
+
scale: 1,
|
|
1512
|
+
transition: dialogTransition
|
|
1513
|
+
},
|
|
1514
|
+
exit: {
|
|
1515
|
+
opacity: 0,
|
|
1516
|
+
y: 12,
|
|
1517
|
+
scale: 0.98,
|
|
1518
|
+
transition: dialogTransition
|
|
1519
|
+
},
|
|
1520
|
+
ref: containerRef,
|
|
1521
|
+
role: "dialog",
|
|
1522
|
+
"aria-modal": "true",
|
|
1523
|
+
"aria-labelledby": title ? titleId : void 0,
|
|
1524
|
+
"aria-describedby": description ? descriptionId : void 0,
|
|
1525
|
+
className: cn(
|
|
1526
|
+
"relative z-60 mx-auto my-12 flex w-[92vw] max-h-[85vh] flex-col overflow-hidden rounded-3xl bg-background shadow-2xl ring-1 ring-border/10",
|
|
1527
|
+
size === "compact" ? "p-0 md:my-20" : "p-6 md:my-20 md:p-12",
|
|
1528
|
+
sizeStyles[size],
|
|
1529
|
+
className
|
|
1530
|
+
),
|
|
1531
|
+
children: [
|
|
1532
|
+
featuredMediaHeader ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden", children: [
|
|
1533
|
+
featuredMediaHeader,
|
|
1534
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1535
|
+
"button",
|
|
1536
|
+
{
|
|
1537
|
+
type: "button",
|
|
1538
|
+
"aria-label": "Close dialog",
|
|
1539
|
+
className: "absolute right-4 top-4 z-10 flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-foreground/90 text-background backdrop-blur-sm transition hover:bg-foreground md:h-11 md:w-11",
|
|
1540
|
+
onClick: () => onOpenChange(false),
|
|
1541
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1542
|
+
"svg",
|
|
1543
|
+
{
|
|
1544
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1545
|
+
width: "24",
|
|
1546
|
+
height: "24",
|
|
1547
|
+
viewBox: "0 0 24 24",
|
|
1548
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1549
|
+
"path",
|
|
1550
|
+
{
|
|
1551
|
+
fill: "none",
|
|
1552
|
+
stroke: "currentColor",
|
|
1553
|
+
strokeLinecap: "round",
|
|
1554
|
+
strokeLinejoin: "round",
|
|
1555
|
+
strokeWidth: "2",
|
|
1556
|
+
d: "M18 6L6 18M6 6l12 12"
|
|
1557
|
+
}
|
|
1558
|
+
)
|
|
1559
|
+
}
|
|
1560
|
+
)
|
|
1561
|
+
}
|
|
1562
|
+
)
|
|
1563
|
+
] }) : null,
|
|
1564
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1565
|
+
"div",
|
|
575
1566
|
{
|
|
576
1567
|
className: cn(
|
|
577
1568
|
"flex items-start justify-between gap-8",
|
|
@@ -806,10 +1797,10 @@ var ImageSlider = ({
|
|
|
806
1797
|
optixFlowConfig
|
|
807
1798
|
}) => {
|
|
808
1799
|
const hasImages = images.length > 0;
|
|
809
|
-
const [currentIndex, setCurrentIndex] =
|
|
1800
|
+
const [currentIndex, setCurrentIndex] = React5__namespace.useState(
|
|
810
1801
|
() => normalizeIndex(startIndex, images.length)
|
|
811
1802
|
);
|
|
812
|
-
const handleNext =
|
|
1803
|
+
const handleNext = React5__namespace.useCallback(() => {
|
|
813
1804
|
if (!hasImages) return;
|
|
814
1805
|
setCurrentIndex((prevIndex) => {
|
|
815
1806
|
const nextIndex = prevIndex + 1 >= images.length ? 0 : prevIndex + 1;
|
|
@@ -817,7 +1808,7 @@ var ImageSlider = ({
|
|
|
817
1808
|
return nextIndex;
|
|
818
1809
|
});
|
|
819
1810
|
}, [hasImages, images.length, onSlideChange]);
|
|
820
|
-
const handlePrevious =
|
|
1811
|
+
const handlePrevious = React5__namespace.useCallback(() => {
|
|
821
1812
|
if (!hasImages) return;
|
|
822
1813
|
setCurrentIndex((prevIndex) => {
|
|
823
1814
|
const nextIndex = prevIndex - 1 < 0 ? images.length - 1 : prevIndex - 1;
|
|
@@ -825,11 +1816,11 @@ var ImageSlider = ({
|
|
|
825
1816
|
return nextIndex;
|
|
826
1817
|
});
|
|
827
1818
|
}, [hasImages, images.length, onSlideChange]);
|
|
828
|
-
|
|
1819
|
+
React5__namespace.useEffect(() => {
|
|
829
1820
|
if (!hasImages) return;
|
|
830
1821
|
setCurrentIndex(normalizeIndex(startIndex, images.length));
|
|
831
1822
|
}, [startIndex, images.length, hasImages]);
|
|
832
|
-
|
|
1823
|
+
React5__namespace.useEffect(() => {
|
|
833
1824
|
if (!enableKeyboard || !hasImages) return;
|
|
834
1825
|
const handleKeyDown = (event) => {
|
|
835
1826
|
if (event.key === "ArrowRight") {
|
|
@@ -843,7 +1834,7 @@ var ImageSlider = ({
|
|
|
843
1834
|
window.removeEventListener("keydown", handleKeyDown);
|
|
844
1835
|
};
|
|
845
1836
|
}, [enableKeyboard, handleNext, handlePrevious, hasImages]);
|
|
846
|
-
|
|
1837
|
+
React5__namespace.useEffect(() => {
|
|
847
1838
|
if (!autoplay || images.length < 2) return;
|
|
848
1839
|
const interval = window.setInterval(handleNext, autoplayIntervalMs);
|
|
849
1840
|
return () => window.clearInterval(interval);
|
|
@@ -910,154 +1901,12 @@ var ImageSlider = ({
|
|
|
910
1901
|
contentClassName
|
|
911
1902
|
),
|
|
912
1903
|
children
|
|
913
|
-
}
|
|
914
|
-
) : null
|
|
915
|
-
]
|
|
916
|
-
}
|
|
917
|
-
);
|
|
918
|
-
};
|
|
919
|
-
var baseStyles = [
|
|
920
|
-
// Layout
|
|
921
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
922
|
-
// Typography - using CSS variables with sensible defaults
|
|
923
|
-
"font-[var(--button-font-family,inherit)]",
|
|
924
|
-
"font-[var(--button-font-weight,500)]",
|
|
925
|
-
"tracking-[var(--button-letter-spacing,0)]",
|
|
926
|
-
"leading-[var(--button-line-height,1.25)]",
|
|
927
|
-
"[text-transform:var(--button-text-transform,none)]",
|
|
928
|
-
"text-sm",
|
|
929
|
-
// Border radius
|
|
930
|
-
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
931
|
-
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
932
|
-
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
933
|
-
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
934
|
-
"[box-shadow:var(--button-shadow,none)]",
|
|
935
|
-
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
936
|
-
// Disabled state
|
|
937
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
938
|
-
// SVG handling
|
|
939
|
-
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
940
|
-
// Focus styles
|
|
941
|
-
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
942
|
-
// Invalid state
|
|
943
|
-
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
944
|
-
].join(" ");
|
|
945
|
-
var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
946
|
-
variants: {
|
|
947
|
-
variant: {
|
|
948
|
-
// Default (Primary) variant - full customization
|
|
949
|
-
default: [
|
|
950
|
-
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
951
|
-
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
952
|
-
"border-[length:var(--button-default-border-width,0px)]",
|
|
953
|
-
"border-[color:var(--button-default-border,transparent)]",
|
|
954
|
-
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
955
|
-
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
956
|
-
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
957
|
-
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
958
|
-
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
959
|
-
].join(" "),
|
|
960
|
-
// Destructive variant - full customization
|
|
961
|
-
destructive: [
|
|
962
|
-
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
963
|
-
"text-[var(--button-destructive-fg,white)]",
|
|
964
|
-
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
965
|
-
"border-[color:var(--button-destructive-border,transparent)]",
|
|
966
|
-
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
967
|
-
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
968
|
-
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
969
|
-
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
970
|
-
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
971
|
-
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
972
|
-
"dark:bg-destructive/60"
|
|
973
|
-
].join(" "),
|
|
974
|
-
// Outline variant - full customization with proper border handling
|
|
975
|
-
outline: [
|
|
976
|
-
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
977
|
-
"text-[var(--button-outline-fg,inherit)]",
|
|
978
|
-
"border-[length:var(--button-outline-border-width,1px)]",
|
|
979
|
-
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
980
|
-
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
981
|
-
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
982
|
-
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
983
|
-
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
984
|
-
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
985
|
-
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
986
|
-
].join(" "),
|
|
987
|
-
// Secondary variant - full customization
|
|
988
|
-
secondary: [
|
|
989
|
-
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
990
|
-
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
991
|
-
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
992
|
-
"border-[color:var(--button-secondary-border,transparent)]",
|
|
993
|
-
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
994
|
-
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
995
|
-
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
996
|
-
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
997
|
-
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
998
|
-
].join(" "),
|
|
999
|
-
// Ghost variant - full customization
|
|
1000
|
-
ghost: [
|
|
1001
|
-
"bg-[var(--button-ghost-bg,transparent)]",
|
|
1002
|
-
"text-[var(--button-ghost-fg,inherit)]",
|
|
1003
|
-
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
1004
|
-
"border-[color:var(--button-ghost-border,transparent)]",
|
|
1005
|
-
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
1006
|
-
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
1007
|
-
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
1008
|
-
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
1009
|
-
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
1010
|
-
"dark:hover:bg-accent/50"
|
|
1011
|
-
].join(" "),
|
|
1012
|
-
// Link variant - full customization
|
|
1013
|
-
link: [
|
|
1014
|
-
"bg-[var(--button-link-bg,transparent)]",
|
|
1015
|
-
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
1016
|
-
"border-[length:var(--button-link-border-width,0px)]",
|
|
1017
|
-
"border-[color:var(--button-link-border,transparent)]",
|
|
1018
|
-
"[box-shadow:var(--button-link-shadow,none)]",
|
|
1019
|
-
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
1020
|
-
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
1021
|
-
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
1022
|
-
"underline-offset-4 hover:underline"
|
|
1023
|
-
].join(" ")
|
|
1024
|
-
},
|
|
1025
|
-
size: {
|
|
1026
|
-
default: [
|
|
1027
|
-
"h-[var(--button-height-md,2.25rem)]",
|
|
1028
|
-
"px-[var(--button-padding-x-md,1rem)]",
|
|
1029
|
-
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
1030
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
1031
|
-
].join(" "),
|
|
1032
|
-
sm: [
|
|
1033
|
-
"h-[var(--button-height-sm,2rem)]",
|
|
1034
|
-
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
1035
|
-
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
1036
|
-
"gap-1.5",
|
|
1037
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
1038
|
-
].join(" "),
|
|
1039
|
-
md: [
|
|
1040
|
-
"h-[var(--button-height-md,2.25rem)]",
|
|
1041
|
-
"px-[var(--button-padding-x-md,1rem)]",
|
|
1042
|
-
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
1043
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
1044
|
-
].join(" "),
|
|
1045
|
-
lg: [
|
|
1046
|
-
"h-[var(--button-height-lg,2.5rem)]",
|
|
1047
|
-
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
1048
|
-
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
1049
|
-
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
1050
|
-
].join(" "),
|
|
1051
|
-
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
1052
|
-
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
1053
|
-
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
1054
|
-
}
|
|
1055
|
-
},
|
|
1056
|
-
defaultVariants: {
|
|
1057
|
-
variant: "default",
|
|
1058
|
-
size: "default"
|
|
1059
|
-
}
|
|
1060
|
-
});
|
|
1904
|
+
}
|
|
1905
|
+
) : null
|
|
1906
|
+
]
|
|
1907
|
+
}
|
|
1908
|
+
);
|
|
1909
|
+
};
|
|
1061
1910
|
function Button({
|
|
1062
1911
|
className,
|
|
1063
1912
|
variant = "default",
|
|
@@ -1081,410 +1930,134 @@ function Card({ className, ...props }) {
|
|
|
1081
1930
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1082
1931
|
"div",
|
|
1083
1932
|
{
|
|
1084
|
-
"data-slot": "card",
|
|
1085
|
-
className: cn(
|
|
1086
|
-
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
1087
|
-
className
|
|
1088
|
-
),
|
|
1089
|
-
...props
|
|
1090
|
-
}
|
|
1091
|
-
);
|
|
1092
|
-
}
|
|
1093
|
-
function CardHeader({ className, ...props }) {
|
|
1094
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1095
|
-
"div",
|
|
1096
|
-
{
|
|
1097
|
-
"data-slot": "card-header",
|
|
1098
|
-
className: cn(
|
|
1099
|
-
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
1100
|
-
className
|
|
1101
|
-
),
|
|
1102
|
-
...props
|
|
1103
|
-
}
|
|
1104
|
-
);
|
|
1105
|
-
}
|
|
1106
|
-
function CardTitle({ className, ...props }) {
|
|
1107
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1108
|
-
"div",
|
|
1109
|
-
{
|
|
1110
|
-
"data-slot": "card-title",
|
|
1111
|
-
className: cn("leading-none font-semibold", className),
|
|
1112
|
-
...props
|
|
1113
|
-
}
|
|
1114
|
-
);
|
|
1115
|
-
}
|
|
1116
|
-
function CardDescription({ className, ...props }) {
|
|
1117
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1118
|
-
"div",
|
|
1119
|
-
{
|
|
1120
|
-
"data-slot": "card-description",
|
|
1121
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
1122
|
-
...props
|
|
1123
|
-
}
|
|
1124
|
-
);
|
|
1125
|
-
}
|
|
1126
|
-
function CardContent({ className, ...props }) {
|
|
1127
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1128
|
-
"div",
|
|
1129
|
-
{
|
|
1130
|
-
"data-slot": "card-content",
|
|
1131
|
-
className: cn("px-6", className),
|
|
1132
|
-
...props
|
|
1133
|
-
}
|
|
1134
|
-
);
|
|
1135
|
-
}
|
|
1136
|
-
function CardFooter({ className, ...props }) {
|
|
1137
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1138
|
-
"div",
|
|
1139
|
-
{
|
|
1140
|
-
"data-slot": "card-footer",
|
|
1141
|
-
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
1142
|
-
...props
|
|
1143
|
-
}
|
|
1144
|
-
);
|
|
1145
|
-
}
|
|
1146
|
-
var badgeVariants = classVarianceAuthority.cva(
|
|
1147
|
-
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
1148
|
-
{
|
|
1149
|
-
variants: {
|
|
1150
|
-
variant: {
|
|
1151
|
-
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
1152
|
-
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
1153
|
-
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
1154
|
-
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
1155
|
-
}
|
|
1156
|
-
},
|
|
1157
|
-
defaultVariants: {
|
|
1158
|
-
variant: "default"
|
|
1159
|
-
}
|
|
1160
|
-
}
|
|
1161
|
-
);
|
|
1162
|
-
function Badge({
|
|
1163
|
-
className,
|
|
1164
|
-
variant,
|
|
1165
|
-
asChild = false,
|
|
1166
|
-
...props
|
|
1167
|
-
}) {
|
|
1168
|
-
const Comp = asChild ? reactSlot.Slot : "span";
|
|
1169
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1170
|
-
Comp,
|
|
1171
|
-
{
|
|
1172
|
-
"data-slot": "badge",
|
|
1173
|
-
className: cn(badgeVariants({ variant }), className),
|
|
1174
|
-
...props
|
|
1175
|
-
}
|
|
1176
|
-
);
|
|
1177
|
-
}
|
|
1178
|
-
function Popover({
|
|
1179
|
-
...props
|
|
1180
|
-
}) {
|
|
1181
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
|
|
1182
|
-
}
|
|
1183
|
-
function PopoverTrigger({
|
|
1184
|
-
...props
|
|
1185
|
-
}) {
|
|
1186
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
1187
|
-
}
|
|
1188
|
-
function PopoverContent({
|
|
1189
|
-
className,
|
|
1190
|
-
align = "center",
|
|
1191
|
-
sideOffset = 4,
|
|
1192
|
-
...props
|
|
1193
|
-
}) {
|
|
1194
|
-
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1195
|
-
PopoverPrimitive__namespace.Content,
|
|
1196
|
-
{
|
|
1197
|
-
"data-slot": "popover-content",
|
|
1198
|
-
align,
|
|
1199
|
-
sideOffset,
|
|
1200
|
-
className: cn(
|
|
1201
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
|
|
1202
|
-
className
|
|
1203
|
-
),
|
|
1204
|
-
...props
|
|
1205
|
-
}
|
|
1206
|
-
) });
|
|
1207
|
-
}
|
|
1208
|
-
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
1209
|
-
function DynamicIcon({ apiKey, ...props }) {
|
|
1210
|
-
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
1211
|
-
}
|
|
1212
|
-
function normalizePhoneNumber(input) {
|
|
1213
|
-
const trimmed = input.trim();
|
|
1214
|
-
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
1215
|
-
return trimmed;
|
|
1216
|
-
}
|
|
1217
|
-
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
1218
|
-
if (match) {
|
|
1219
|
-
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
1220
|
-
const extension = match[3];
|
|
1221
|
-
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
1222
|
-
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
1223
|
-
return `tel:${withExtension}`;
|
|
1224
|
-
}
|
|
1225
|
-
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
1226
|
-
return `tel:${cleaned}`;
|
|
1227
|
-
}
|
|
1228
|
-
function normalizeEmail(input) {
|
|
1229
|
-
const trimmed = input.trim();
|
|
1230
|
-
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
1231
|
-
return trimmed;
|
|
1232
|
-
}
|
|
1233
|
-
return `mailto:${trimmed}`;
|
|
1234
|
-
}
|
|
1235
|
-
function isEmail(input) {
|
|
1236
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
1237
|
-
return emailRegex.test(input.trim());
|
|
1238
|
-
}
|
|
1239
|
-
function isPhoneNumber(input) {
|
|
1240
|
-
const trimmed = input.trim();
|
|
1241
|
-
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
1242
|
-
return true;
|
|
1243
|
-
}
|
|
1244
|
-
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
1245
|
-
return phoneRegex.test(trimmed);
|
|
1246
|
-
}
|
|
1247
|
-
function isInternalUrl(href) {
|
|
1248
|
-
if (typeof window === "undefined") {
|
|
1249
|
-
return href.startsWith("/") && !href.startsWith("//");
|
|
1250
|
-
}
|
|
1251
|
-
const trimmed = href.trim();
|
|
1252
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
1253
|
-
return true;
|
|
1254
|
-
}
|
|
1255
|
-
try {
|
|
1256
|
-
const url = new URL(trimmed, window.location.href);
|
|
1257
|
-
const currentOrigin = window.location.origin;
|
|
1258
|
-
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
1259
|
-
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
1260
|
-
} catch {
|
|
1261
|
-
return false;
|
|
1262
|
-
}
|
|
1263
|
-
}
|
|
1264
|
-
function toRelativePath(href) {
|
|
1265
|
-
if (typeof window === "undefined") {
|
|
1266
|
-
return href;
|
|
1267
|
-
}
|
|
1268
|
-
const trimmed = href.trim();
|
|
1269
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
1270
|
-
return trimmed;
|
|
1271
|
-
}
|
|
1272
|
-
try {
|
|
1273
|
-
const url = new URL(trimmed, window.location.href);
|
|
1274
|
-
const currentOrigin = window.location.origin;
|
|
1275
|
-
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
1276
|
-
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
1277
|
-
return url.pathname + url.search + url.hash;
|
|
1278
|
-
}
|
|
1279
|
-
} catch {
|
|
1280
|
-
}
|
|
1281
|
-
return trimmed;
|
|
1282
|
-
}
|
|
1283
|
-
function useNavigation({
|
|
1284
|
-
href,
|
|
1285
|
-
onClick
|
|
1286
|
-
} = {}) {
|
|
1287
|
-
const linkType = React4__namespace.useMemo(() => {
|
|
1288
|
-
if (!href || href.trim() === "") {
|
|
1289
|
-
return onClick ? "none" : "none";
|
|
1290
|
-
}
|
|
1291
|
-
const trimmed = href.trim();
|
|
1292
|
-
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
1293
|
-
return "mailto";
|
|
1294
|
-
}
|
|
1295
|
-
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
1296
|
-
return "tel";
|
|
1297
|
-
}
|
|
1298
|
-
if (isInternalUrl(trimmed)) {
|
|
1299
|
-
return "internal";
|
|
1300
|
-
}
|
|
1301
|
-
try {
|
|
1302
|
-
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
1303
|
-
return "external";
|
|
1304
|
-
} catch {
|
|
1305
|
-
return "internal";
|
|
1306
|
-
}
|
|
1307
|
-
}, [href, onClick]);
|
|
1308
|
-
const normalizedHref = React4__namespace.useMemo(() => {
|
|
1309
|
-
if (!href || href.trim() === "") {
|
|
1310
|
-
return void 0;
|
|
1311
|
-
}
|
|
1312
|
-
const trimmed = href.trim();
|
|
1313
|
-
switch (linkType) {
|
|
1314
|
-
case "tel":
|
|
1315
|
-
return normalizePhoneNumber(trimmed);
|
|
1316
|
-
case "mailto":
|
|
1317
|
-
return normalizeEmail(trimmed);
|
|
1318
|
-
case "internal":
|
|
1319
|
-
return toRelativePath(trimmed);
|
|
1320
|
-
case "external":
|
|
1321
|
-
return trimmed;
|
|
1322
|
-
default:
|
|
1323
|
-
return trimmed;
|
|
1324
|
-
}
|
|
1325
|
-
}, [href, linkType]);
|
|
1326
|
-
const target = React4__namespace.useMemo(() => {
|
|
1327
|
-
switch (linkType) {
|
|
1328
|
-
case "external":
|
|
1329
|
-
return "_blank";
|
|
1330
|
-
case "internal":
|
|
1331
|
-
return "_self";
|
|
1332
|
-
case "mailto":
|
|
1333
|
-
case "tel":
|
|
1334
|
-
return void 0;
|
|
1335
|
-
default:
|
|
1336
|
-
return void 0;
|
|
1933
|
+
"data-slot": "card",
|
|
1934
|
+
className: cn(
|
|
1935
|
+
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
1936
|
+
className
|
|
1937
|
+
),
|
|
1938
|
+
...props
|
|
1337
1939
|
}
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1940
|
+
);
|
|
1941
|
+
}
|
|
1942
|
+
function CardHeader({ className, ...props }) {
|
|
1943
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1944
|
+
"div",
|
|
1945
|
+
{
|
|
1946
|
+
"data-slot": "card-header",
|
|
1947
|
+
className: cn(
|
|
1948
|
+
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
1949
|
+
className
|
|
1950
|
+
),
|
|
1951
|
+
...props
|
|
1342
1952
|
}
|
|
1343
|
-
return void 0;
|
|
1344
|
-
}, [linkType]);
|
|
1345
|
-
const isExternal = linkType === "external";
|
|
1346
|
-
const isInternal = linkType === "internal";
|
|
1347
|
-
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
1348
|
-
const handleClick = React4__namespace.useCallback(
|
|
1349
|
-
(event) => {
|
|
1350
|
-
if (onClick) {
|
|
1351
|
-
try {
|
|
1352
|
-
onClick(event);
|
|
1353
|
-
} catch (error) {
|
|
1354
|
-
console.error("Error in user onClick handler:", error);
|
|
1355
|
-
}
|
|
1356
|
-
}
|
|
1357
|
-
if (event.defaultPrevented) {
|
|
1358
|
-
return;
|
|
1359
|
-
}
|
|
1360
|
-
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
1361
|
-
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
1362
|
-
if (typeof window !== "undefined") {
|
|
1363
|
-
const handler = window.__opensiteNavigationHandler;
|
|
1364
|
-
if (typeof handler === "function") {
|
|
1365
|
-
try {
|
|
1366
|
-
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
1367
|
-
if (handled !== false) {
|
|
1368
|
-
event.preventDefault();
|
|
1369
|
-
}
|
|
1370
|
-
} catch (error) {
|
|
1371
|
-
console.error("Error in navigation handler:", error);
|
|
1372
|
-
}
|
|
1373
|
-
}
|
|
1374
|
-
}
|
|
1375
|
-
}
|
|
1376
|
-
},
|
|
1377
|
-
[onClick, shouldUseRouter, normalizedHref]
|
|
1378
1953
|
);
|
|
1379
|
-
return {
|
|
1380
|
-
linkType,
|
|
1381
|
-
normalizedHref,
|
|
1382
|
-
target,
|
|
1383
|
-
rel,
|
|
1384
|
-
isExternal,
|
|
1385
|
-
isInternal,
|
|
1386
|
-
shouldUseRouter,
|
|
1387
|
-
handleClick
|
|
1388
|
-
};
|
|
1389
1954
|
}
|
|
1390
|
-
|
|
1391
|
-
(
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
size,
|
|
1398
|
-
asButton = false,
|
|
1399
|
-
fallbackComponentType = "span",
|
|
1400
|
-
componentType,
|
|
1401
|
-
"aria-label": ariaLabel,
|
|
1402
|
-
"aria-describedby": ariaDescribedby,
|
|
1403
|
-
id,
|
|
1404
|
-
...props
|
|
1405
|
-
}, ref) => {
|
|
1406
|
-
const navigation = useNavigation({ href, onClick });
|
|
1407
|
-
const {
|
|
1408
|
-
normalizedHref,
|
|
1409
|
-
target,
|
|
1410
|
-
rel,
|
|
1411
|
-
linkType,
|
|
1412
|
-
isInternal,
|
|
1413
|
-
handleClick
|
|
1414
|
-
} = navigation;
|
|
1415
|
-
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
1416
|
-
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
1417
|
-
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
1418
|
-
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
1419
|
-
const shouldApplyButtonStyles = asButton || variant || size;
|
|
1420
|
-
const combinedClassName = cn(
|
|
1421
|
-
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
1422
|
-
className
|
|
1423
|
-
);
|
|
1424
|
-
const dataProps = Object.fromEntries(
|
|
1425
|
-
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
1426
|
-
);
|
|
1427
|
-
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
1428
|
-
"data-slot": "button",
|
|
1429
|
-
"data-variant": variant ?? "default",
|
|
1430
|
-
"data-size": size ?? "default"
|
|
1431
|
-
} : {};
|
|
1432
|
-
const commonProps = {
|
|
1433
|
-
className: combinedClassName,
|
|
1434
|
-
onClick: handleClick,
|
|
1435
|
-
"aria-label": ariaLabel,
|
|
1436
|
-
"aria-describedby": ariaDescribedby,
|
|
1437
|
-
id,
|
|
1438
|
-
...dataProps,
|
|
1439
|
-
...buttonDataAttributes
|
|
1440
|
-
};
|
|
1441
|
-
if (finalComponentType === "a" && shouldRenderLink) {
|
|
1442
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1443
|
-
"a",
|
|
1444
|
-
{
|
|
1445
|
-
ref,
|
|
1446
|
-
href: normalizedHref,
|
|
1447
|
-
target,
|
|
1448
|
-
rel,
|
|
1449
|
-
...commonProps,
|
|
1450
|
-
...props,
|
|
1451
|
-
children
|
|
1452
|
-
}
|
|
1453
|
-
);
|
|
1955
|
+
function CardTitle({ className, ...props }) {
|
|
1956
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1957
|
+
"div",
|
|
1958
|
+
{
|
|
1959
|
+
"data-slot": "card-title",
|
|
1960
|
+
className: cn("leading-none font-semibold", className),
|
|
1961
|
+
...props
|
|
1454
1962
|
}
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
}
|
|
1465
|
-
);
|
|
1963
|
+
);
|
|
1964
|
+
}
|
|
1965
|
+
function CardDescription({ className, ...props }) {
|
|
1966
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1967
|
+
"div",
|
|
1968
|
+
{
|
|
1969
|
+
"data-slot": "card-description",
|
|
1970
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
1971
|
+
...props
|
|
1466
1972
|
}
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1973
|
+
);
|
|
1974
|
+
}
|
|
1975
|
+
function CardContent({ className, ...props }) {
|
|
1976
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1977
|
+
"div",
|
|
1978
|
+
{
|
|
1979
|
+
"data-slot": "card-content",
|
|
1980
|
+
className: cn("px-6", className),
|
|
1981
|
+
...props
|
|
1476
1982
|
}
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1983
|
+
);
|
|
1984
|
+
}
|
|
1985
|
+
function CardFooter({ className, ...props }) {
|
|
1986
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1987
|
+
"div",
|
|
1988
|
+
{
|
|
1989
|
+
"data-slot": "card-footer",
|
|
1990
|
+
className: cn("flex items-center px-6 [.border-t]:pt-6", className),
|
|
1991
|
+
...props
|
|
1992
|
+
}
|
|
1993
|
+
);
|
|
1994
|
+
}
|
|
1995
|
+
var badgeVariants = classVarianceAuthority.cva(
|
|
1996
|
+
"inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
1997
|
+
{
|
|
1998
|
+
variants: {
|
|
1999
|
+
variant: {
|
|
2000
|
+
default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
|
|
2001
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
|
|
2002
|
+
destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
2003
|
+
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
|
|
1483
2004
|
}
|
|
1484
|
-
|
|
2005
|
+
},
|
|
2006
|
+
defaultVariants: {
|
|
2007
|
+
variant: "default"
|
|
2008
|
+
}
|
|
1485
2009
|
}
|
|
1486
2010
|
);
|
|
1487
|
-
|
|
2011
|
+
function Badge({
|
|
2012
|
+
className,
|
|
2013
|
+
variant,
|
|
2014
|
+
asChild = false,
|
|
2015
|
+
...props
|
|
2016
|
+
}) {
|
|
2017
|
+
const Comp = asChild ? reactSlot.Slot : "span";
|
|
2018
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2019
|
+
Comp,
|
|
2020
|
+
{
|
|
2021
|
+
"data-slot": "badge",
|
|
2022
|
+
className: cn(badgeVariants({ variant }), className),
|
|
2023
|
+
...props
|
|
2024
|
+
}
|
|
2025
|
+
);
|
|
2026
|
+
}
|
|
2027
|
+
function Popover({
|
|
2028
|
+
...props
|
|
2029
|
+
}) {
|
|
2030
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Root, { "data-slot": "popover", ...props });
|
|
2031
|
+
}
|
|
2032
|
+
function PopoverTrigger({
|
|
2033
|
+
...props
|
|
2034
|
+
}) {
|
|
2035
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
2036
|
+
}
|
|
2037
|
+
function PopoverContent({
|
|
2038
|
+
className,
|
|
2039
|
+
align = "center",
|
|
2040
|
+
sideOffset = 4,
|
|
2041
|
+
...props
|
|
2042
|
+
}) {
|
|
2043
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2044
|
+
PopoverPrimitive__namespace.Content,
|
|
2045
|
+
{
|
|
2046
|
+
"data-slot": "popover-content",
|
|
2047
|
+
align,
|
|
2048
|
+
sideOffset,
|
|
2049
|
+
className: cn(
|
|
2050
|
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
|
|
2051
|
+
className
|
|
2052
|
+
),
|
|
2053
|
+
...props
|
|
2054
|
+
}
|
|
2055
|
+
) });
|
|
2056
|
+
}
|
|
2057
|
+
var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
|
|
2058
|
+
function DynamicIcon({ apiKey, ...props }) {
|
|
2059
|
+
return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
|
|
2060
|
+
}
|
|
1488
2061
|
var BUTTON_SIZES = {
|
|
1489
2062
|
sm: { buttonSize: "size-8", iconSize: 16 },
|
|
1490
2063
|
md: { buttonSize: "size-10", iconSize: 20 },
|
|
@@ -1576,7 +2149,7 @@ var platformIconMap = {
|
|
|
1576
2149
|
dribbble: "cib/dribbble",
|
|
1577
2150
|
unknown: "icon-park-solid/circular-connection"
|
|
1578
2151
|
};
|
|
1579
|
-
var SocialLinkIcon =
|
|
2152
|
+
var SocialLinkIcon = React5__namespace.forwardRef(
|
|
1580
2153
|
({
|
|
1581
2154
|
platformName,
|
|
1582
2155
|
label,
|
|
@@ -1589,13 +2162,13 @@ var SocialLinkIcon = React4__namespace.forwardRef(
|
|
|
1589
2162
|
...pressableProps
|
|
1590
2163
|
}, ref) => {
|
|
1591
2164
|
const platform = usePlatformFromUrl.usePlatformFromUrl(href);
|
|
1592
|
-
const smartPlatformName =
|
|
2165
|
+
const smartPlatformName = React5__namespace.useMemo(() => {
|
|
1593
2166
|
return platform || platformName;
|
|
1594
2167
|
}, [platform, platformName]);
|
|
1595
|
-
const iconName =
|
|
2168
|
+
const iconName = React5__namespace.useMemo(() => {
|
|
1596
2169
|
return iconNameOverride || platformIconMap[smartPlatformName];
|
|
1597
2170
|
}, [iconNameOverride, smartPlatformName]);
|
|
1598
|
-
const accessibleLabel =
|
|
2171
|
+
const accessibleLabel = React5__namespace.useMemo(() => {
|
|
1599
2172
|
return label || platformName;
|
|
1600
2173
|
}, [label, platformName]);
|
|
1601
2174
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1672,12 +2245,12 @@ function TextInner({ as, className, children, ...props }, ref) {
|
|
|
1672
2245
|
const Component = as || "span";
|
|
1673
2246
|
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ref, className: cn(className), ...props, children });
|
|
1674
2247
|
}
|
|
1675
|
-
var Text =
|
|
2248
|
+
var Text = React5__namespace.forwardRef(TextInner);
|
|
1676
2249
|
Text.displayName = "Text";
|
|
1677
2250
|
function isContentTextItem(item) {
|
|
1678
|
-
return item !== null && typeof item === "object" && !
|
|
2251
|
+
return item !== null && typeof item === "object" && !React5__namespace.isValidElement(item) && "_type" in item && item._type === "text";
|
|
1679
2252
|
}
|
|
1680
|
-
var ContentGroup =
|
|
2253
|
+
var ContentGroup = React5__namespace.forwardRef(
|
|
1681
2254
|
({ items, className, children, ...props }, ref) => {
|
|
1682
2255
|
const hasContent = items && items.length > 0;
|
|
1683
2256
|
if (!hasContent) {
|
|
@@ -1690,10 +2263,10 @@ var ContentGroup = React4__namespace.forwardRef(
|
|
|
1690
2263
|
return /* @__PURE__ */ jsxRuntime.jsx(Text, { ...textProps }, idx);
|
|
1691
2264
|
}
|
|
1692
2265
|
const reactNode = item;
|
|
1693
|
-
if (
|
|
1694
|
-
return
|
|
2266
|
+
if (React5__namespace.isValidElement(reactNode)) {
|
|
2267
|
+
return React5__namespace.cloneElement(reactNode, { key: reactNode.key ?? idx });
|
|
1695
2268
|
}
|
|
1696
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2269
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: reactNode }, idx);
|
|
1697
2270
|
}),
|
|
1698
2271
|
children
|
|
1699
2272
|
] });
|
|
@@ -1717,7 +2290,7 @@ function AlternatingBlocks({
|
|
|
1717
2290
|
pattern,
|
|
1718
2291
|
patternOpacity
|
|
1719
2292
|
}) {
|
|
1720
|
-
const sectionsContent =
|
|
2293
|
+
const sectionsContent = React5.useMemo(() => {
|
|
1721
2294
|
if (sectionsSlot) return sectionsSlot;
|
|
1722
2295
|
if (!sections || sections.length === 0) return null;
|
|
1723
2296
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-12", sectionsClassName), children: sections.map((section, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1761,7 +2334,7 @@ function AlternatingBlocks({
|
|
|
1761
2334
|
sectionContentClassName,
|
|
1762
2335
|
sectionMediaClassName
|
|
1763
2336
|
]);
|
|
1764
|
-
const headerItems =
|
|
2337
|
+
const headerItems = React5.useMemo(() => {
|
|
1765
2338
|
const items = [];
|
|
1766
2339
|
if (subtitle) {
|
|
1767
2340
|
items.push(
|
|
@@ -1830,7 +2403,7 @@ function AboutSplitHero({
|
|
|
1830
2403
|
patternOpacity,
|
|
1831
2404
|
directionConfig = { desktop: "mediaRight", mobile: "mediaTop" }
|
|
1832
2405
|
}) {
|
|
1833
|
-
const ctaContent =
|
|
2406
|
+
const ctaContent = React5.useMemo(() => {
|
|
1834
2407
|
if (ctaSlot) return ctaSlot;
|
|
1835
2408
|
if (!ctaAction) return null;
|
|
1836
2409
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -1852,7 +2425,7 @@ function AboutSplitHero({
|
|
|
1852
2425
|
}
|
|
1853
2426
|
);
|
|
1854
2427
|
}, [ctaSlot, ctaAction, ctaClassName]);
|
|
1855
|
-
const bgColorClass =
|
|
2428
|
+
const bgColorClass = React5.useMemo(() => {
|
|
1856
2429
|
switch (background) {
|
|
1857
2430
|
case "dark":
|
|
1858
2431
|
return "bg-foreground text-background";
|
|
@@ -1980,7 +2553,7 @@ function AboutMissionPrinciples({
|
|
|
1980
2553
|
pattern,
|
|
1981
2554
|
patternOpacity
|
|
1982
2555
|
}) {
|
|
1983
|
-
const missionActionContent =
|
|
2556
|
+
const missionActionContent = React5.useMemo(() => {
|
|
1984
2557
|
if (missionActionSlot) return missionActionSlot;
|
|
1985
2558
|
if (!missionAction) return null;
|
|
1986
2559
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pt-2", missionActionClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2005,7 +2578,7 @@ function AboutMissionPrinciples({
|
|
|
2005
2578
|
}
|
|
2006
2579
|
) });
|
|
2007
2580
|
}, [missionActionSlot, missionAction, missionActionClassName]);
|
|
2008
|
-
const principlesContent =
|
|
2581
|
+
const principlesContent = React5.useMemo(() => {
|
|
2009
2582
|
if (principlesSlot) return principlesSlot;
|
|
2010
2583
|
if (!principles || principles.length === 0) return null;
|
|
2011
2584
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2043,7 +2616,7 @@ function AboutMissionPrinciples({
|
|
|
2043
2616
|
}
|
|
2044
2617
|
);
|
|
2045
2618
|
}, [principlesSlot, principles, principlesClassName]);
|
|
2046
|
-
const visionActionContent =
|
|
2619
|
+
const visionActionContent = React5.useMemo(() => {
|
|
2047
2620
|
if (visionActionSlot) return visionActionSlot;
|
|
2048
2621
|
if (!visionAction) return null;
|
|
2049
2622
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2218,11 +2791,11 @@ function AboutExpandableValues({
|
|
|
2218
2791
|
pattern,
|
|
2219
2792
|
patternOpacity
|
|
2220
2793
|
}) {
|
|
2221
|
-
const [expandedValue, setExpandedValue] =
|
|
2222
|
-
const toggleExpand =
|
|
2794
|
+
const [expandedValue, setExpandedValue] = React5__namespace.useState(null);
|
|
2795
|
+
const toggleExpand = React5.useCallback((id) => {
|
|
2223
2796
|
setExpandedValue((prev) => prev === id ? null : id);
|
|
2224
2797
|
}, []);
|
|
2225
|
-
|
|
2798
|
+
React5.useMemo(() => {
|
|
2226
2799
|
if (actionsSlot) return actionsSlot;
|
|
2227
2800
|
if (!actions || actions.length === 0) return null;
|
|
2228
2801
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: actionsClassName, children: actions.map((action, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2238,7 +2811,7 @@ function AboutExpandableValues({
|
|
|
2238
2811
|
idx
|
|
2239
2812
|
)) });
|
|
2240
2813
|
}, [actionsSlot, actions, actionsClassName]);
|
|
2241
|
-
const valuesContent =
|
|
2814
|
+
const valuesContent = React5.useMemo(() => {
|
|
2242
2815
|
if (valuesSlot) return valuesSlot;
|
|
2243
2816
|
if (!values || values.length === 0) return null;
|
|
2244
2817
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("grid grid-cols-1 gap-6 mt-8", valuesClassName), children: values.map((value) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2454,17 +3027,17 @@ function CommunityInitiatives({
|
|
|
2454
3027
|
pattern,
|
|
2455
3028
|
patternOpacity
|
|
2456
3029
|
}) {
|
|
2457
|
-
const [activeCategory, setActiveCategory] =
|
|
3030
|
+
const [activeCategory, setActiveCategory] = React5__namespace.useState(
|
|
2458
3031
|
categories?.[0]?.id || ""
|
|
2459
3032
|
);
|
|
2460
3033
|
const currentCategory = categories?.find((category) => category.id === activeCategory) || categories?.[0];
|
|
2461
|
-
const handleCategoryChange =
|
|
3034
|
+
const handleCategoryChange = React5.useCallback(
|
|
2462
3035
|
(e) => {
|
|
2463
3036
|
setActiveCategory(e.target.value);
|
|
2464
3037
|
},
|
|
2465
3038
|
[]
|
|
2466
3039
|
);
|
|
2467
|
-
const categoriesContent =
|
|
3040
|
+
const categoriesContent = React5.useMemo(() => {
|
|
2468
3041
|
if (categoriesSlot) return categoriesSlot;
|
|
2469
3042
|
if (!categories || categories.length === 0) return null;
|
|
2470
3043
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -2718,10 +3291,10 @@ function AboutCultureTabs({
|
|
|
2718
3291
|
patternOpacity
|
|
2719
3292
|
}) {
|
|
2720
3293
|
const resolvedAspects = aspects ?? [];
|
|
2721
|
-
const [activeTab, setActiveTab] =
|
|
3294
|
+
const [activeTab, setActiveTab] = React5__namespace.useState(
|
|
2722
3295
|
resolvedAspects[0]?.id || ""
|
|
2723
3296
|
);
|
|
2724
|
-
const headerItems =
|
|
3297
|
+
const headerItems = React5.useMemo(() => {
|
|
2725
3298
|
const items = [];
|
|
2726
3299
|
if (badgeText) {
|
|
2727
3300
|
if (typeof badgeText === "string") {
|
|
@@ -2768,7 +3341,7 @@ function AboutCultureTabs({
|
|
|
2768
3341
|
description,
|
|
2769
3342
|
descriptionClassName
|
|
2770
3343
|
]);
|
|
2771
|
-
const ctaImagesContent =
|
|
3344
|
+
const ctaImagesContent = React5.useMemo(() => {
|
|
2772
3345
|
if (ctaImagesSlot) return ctaImagesSlot;
|
|
2773
3346
|
if (!ctaImages || ctaImages.length === 0) return null;
|
|
2774
3347
|
return ctaImages.map((src, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2934,7 +3507,7 @@ function MediaHoverCtas({
|
|
|
2934
3507
|
optixFlowConfig
|
|
2935
3508
|
}) {
|
|
2936
3509
|
const resolvedItems = items ?? [];
|
|
2937
|
-
const itemsContent =
|
|
3510
|
+
const itemsContent = React5.useMemo(() => {
|
|
2938
3511
|
if (itemsSlot) return itemsSlot;
|
|
2939
3512
|
return resolvedItems.map((item, index) => {
|
|
2940
3513
|
const CardComponent = item.cardHref ? "a" : "div";
|
|
@@ -3024,13 +3597,13 @@ function BannerAnnouncementDismissible({
|
|
|
3024
3597
|
actionsClassName,
|
|
3025
3598
|
dismissButtonClassName
|
|
3026
3599
|
}) {
|
|
3027
|
-
const [isVisible, setIsVisible] =
|
|
3600
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3028
3601
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3029
|
-
const handleDismiss =
|
|
3602
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3030
3603
|
setIsVisible(false);
|
|
3031
3604
|
onDismiss?.();
|
|
3032
3605
|
}, [onDismiss]);
|
|
3033
|
-
const actionsContent =
|
|
3606
|
+
const actionsContent = React5.useMemo(() => {
|
|
3034
3607
|
if (actionsSlot) return actionsSlot;
|
|
3035
3608
|
if (!actions || actions.length === 0) return null;
|
|
3036
3609
|
return actions.map((action, index) => {
|
|
@@ -3058,7 +3631,7 @@ function BannerAnnouncementDismissible({
|
|
|
3058
3631
|
);
|
|
3059
3632
|
});
|
|
3060
3633
|
}, [actions, actionsSlot]);
|
|
3061
|
-
const iconContent =
|
|
3634
|
+
const iconContent = React5.useMemo(() => {
|
|
3062
3635
|
if (icon) return icon;
|
|
3063
3636
|
if (!iconName) return null;
|
|
3064
3637
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3070,11 +3643,11 @@ function BannerAnnouncementDismissible({
|
|
|
3070
3643
|
}
|
|
3071
3644
|
);
|
|
3072
3645
|
}, [icon, iconName, iconClassName]);
|
|
3073
|
-
const dismissIconContent =
|
|
3646
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3074
3647
|
if (dismissIcon) return dismissIcon;
|
|
3075
3648
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3076
3649
|
}, [dismissIcon]);
|
|
3077
|
-
const messageContent =
|
|
3650
|
+
const messageContent = React5.useMemo(() => {
|
|
3078
3651
|
if (!message) return null;
|
|
3079
3652
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium text-sm", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: messageClassName, children: message });
|
|
3080
3653
|
}, [message, messageClassName]);
|
|
@@ -3120,12 +3693,12 @@ function BannerCountdownSale({
|
|
|
3120
3693
|
separatorClassName
|
|
3121
3694
|
}) {
|
|
3122
3695
|
const targetTime = endTime;
|
|
3123
|
-
const [timeLeft, setTimeLeft] =
|
|
3696
|
+
const [timeLeft, setTimeLeft] = React5.useState({
|
|
3124
3697
|
hours: 0,
|
|
3125
3698
|
minutes: 0,
|
|
3126
3699
|
seconds: 0
|
|
3127
3700
|
});
|
|
3128
|
-
|
|
3701
|
+
React5.useEffect(() => {
|
|
3129
3702
|
if (!targetTime) {
|
|
3130
3703
|
return;
|
|
3131
3704
|
}
|
|
@@ -3148,8 +3721,8 @@ function BannerCountdownSale({
|
|
|
3148
3721
|
}, 1e3);
|
|
3149
3722
|
return () => clearInterval(timer);
|
|
3150
3723
|
}, [targetTime]);
|
|
3151
|
-
const pad =
|
|
3152
|
-
const timerContent =
|
|
3724
|
+
const pad = React5.useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
3725
|
+
const timerContent = React5.useMemo(() => {
|
|
3153
3726
|
if (timerSlot) return timerSlot;
|
|
3154
3727
|
if (renderTimer) return renderTimer(timeLeft);
|
|
3155
3728
|
if (!targetTime) return null;
|
|
@@ -3161,11 +3734,11 @@ function BannerCountdownSale({
|
|
|
3161
3734
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("rounded bg-destructive px-2 py-0.5", timeUnitClassName), children: pad(timeLeft.seconds) })
|
|
3162
3735
|
] });
|
|
3163
3736
|
}, [timerSlot, renderTimer, timeLeft, timerClassName, timeUnitClassName, separatorClassName, pad, targetTime]);
|
|
3164
|
-
const messageContent =
|
|
3737
|
+
const messageContent = React5.useMemo(() => {
|
|
3165
3738
|
if (!message) return null;
|
|
3166
3739
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: messageClassName, children: message });
|
|
3167
3740
|
}, [message, messageClassName]);
|
|
3168
|
-
const descriptionContent =
|
|
3741
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3169
3742
|
if (!description) return null;
|
|
3170
3743
|
return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-destructive-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description });
|
|
3171
3744
|
}, [description, descriptionClassName]);
|
|
@@ -3194,12 +3767,12 @@ function BannerDeliveryCountdown({
|
|
|
3194
3767
|
deliveryDateClassName
|
|
3195
3768
|
}) {
|
|
3196
3769
|
const targetTime = cutoffTime;
|
|
3197
|
-
const [timeLeft, setTimeLeft] =
|
|
3770
|
+
const [timeLeft, setTimeLeft] = React5.useState({
|
|
3198
3771
|
hours: 0,
|
|
3199
3772
|
minutes: 0,
|
|
3200
3773
|
seconds: 0
|
|
3201
3774
|
});
|
|
3202
|
-
|
|
3775
|
+
React5.useEffect(() => {
|
|
3203
3776
|
if (!targetTime) {
|
|
3204
3777
|
return;
|
|
3205
3778
|
}
|
|
@@ -3222,13 +3795,13 @@ function BannerDeliveryCountdown({
|
|
|
3222
3795
|
}, 1e3);
|
|
3223
3796
|
return () => clearInterval(timer);
|
|
3224
3797
|
}, [targetTime]);
|
|
3225
|
-
const pad =
|
|
3226
|
-
const iconContent =
|
|
3798
|
+
const pad = React5.useCallback((n) => n.toString().padStart(2, "0"), []);
|
|
3799
|
+
const iconContent = React5.useMemo(() => {
|
|
3227
3800
|
if (icon) return icon;
|
|
3228
3801
|
if (!iconName) return null;
|
|
3229
3802
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: iconName, size: 16, className: iconClassName });
|
|
3230
3803
|
}, [icon, iconName, iconClassName]);
|
|
3231
|
-
const timerContent =
|
|
3804
|
+
const timerContent = React5.useMemo(() => {
|
|
3232
3805
|
if (timerSlot) return timerSlot;
|
|
3233
3806
|
if (renderTimer) return renderTimer(timeLeft);
|
|
3234
3807
|
if (!targetTime) return null;
|
|
@@ -3240,18 +3813,18 @@ function BannerDeliveryCountdown({
|
|
|
3240
3813
|
pad(timeLeft.seconds)
|
|
3241
3814
|
] });
|
|
3242
3815
|
}, [timerSlot, renderTimer, timeLeft, timerClassName, pad, targetTime]);
|
|
3243
|
-
const deliveryDateContent =
|
|
3816
|
+
const deliveryDateContent = React5.useMemo(() => {
|
|
3244
3817
|
if (!deliveryDate) return null;
|
|
3245
3818
|
return typeof deliveryDate === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", deliveryDateClassName), children: deliveryDate }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: deliveryDateClassName, children: deliveryDate });
|
|
3246
3819
|
}, [deliveryDate, deliveryDateClassName]);
|
|
3247
|
-
const messageParts =
|
|
3820
|
+
const messageParts = React5.useMemo(() => {
|
|
3248
3821
|
return [prefixText, timerContent, middleText, deliveryDateContent].filter(
|
|
3249
3822
|
(part) => part !== null && part !== void 0
|
|
3250
3823
|
);
|
|
3251
3824
|
}, [prefixText, timerContent, middleText, deliveryDateContent]);
|
|
3252
3825
|
return /* @__PURE__ */ jsxRuntime.jsx(Section, { background, spacing: "none", className: cn("bg-accent text-accent-foreground", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("container py-2.5", containerClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-wrap items-center justify-center gap-3 text-sm", contentClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2", messageClassName), children: [
|
|
3253
3826
|
iconContent,
|
|
3254
|
-
messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3827
|
+
messageParts.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { children: messageParts.map((part, index) => /* @__PURE__ */ jsxRuntime.jsxs(React5__namespace.Fragment, { children: [
|
|
3255
3828
|
index > 0 ? " " : null,
|
|
3256
3829
|
part
|
|
3257
3830
|
] }, index)) })
|
|
@@ -3273,7 +3846,7 @@ function BannerEventPromo({
|
|
|
3273
3846
|
eventDetailsClassName,
|
|
3274
3847
|
actionsClassName
|
|
3275
3848
|
}) {
|
|
3276
|
-
const actionsContent =
|
|
3849
|
+
const actionsContent = React5.useMemo(() => {
|
|
3277
3850
|
if (actionsSlot) return actionsSlot;
|
|
3278
3851
|
if (!actions || actions.length === 0) return null;
|
|
3279
3852
|
return actions.map((action, index) => {
|
|
@@ -3301,7 +3874,7 @@ function BannerEventPromo({
|
|
|
3301
3874
|
);
|
|
3302
3875
|
});
|
|
3303
3876
|
}, [actions, actionsSlot]);
|
|
3304
|
-
const separatorContent =
|
|
3877
|
+
const separatorContent = React5.useMemo(() => {
|
|
3305
3878
|
if (separator) return separator;
|
|
3306
3879
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3307
3880
|
"svg",
|
|
@@ -3313,11 +3886,11 @@ function BannerEventPromo({
|
|
|
3313
3886
|
}
|
|
3314
3887
|
);
|
|
3315
3888
|
}, [separator, separatorClassName]);
|
|
3316
|
-
const eventNameContent =
|
|
3889
|
+
const eventNameContent = React5.useMemo(() => {
|
|
3317
3890
|
if (!eventName) return null;
|
|
3318
3891
|
return typeof eventName === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", eventNameClassName), children: eventName }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventNameClassName, children: eventName });
|
|
3319
3892
|
}, [eventName, eventNameClassName]);
|
|
3320
|
-
const eventDetailsContent =
|
|
3893
|
+
const eventDetailsContent = React5.useMemo(() => {
|
|
3321
3894
|
if (!eventDetails) return null;
|
|
3322
3895
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: eventDetailsClassName, children: eventDetails });
|
|
3323
3896
|
}, [eventDetails, eventDetailsClassName]);
|
|
@@ -3354,22 +3927,22 @@ function BannerFloatingOffer({
|
|
|
3354
3927
|
}) {
|
|
3355
3928
|
const isControlled = open !== void 0;
|
|
3356
3929
|
const initialOpen = defaultOpen ?? true;
|
|
3357
|
-
const [internalOpen, setInternalOpen] =
|
|
3930
|
+
const [internalOpen, setInternalOpen] = React5.useState(initialOpen);
|
|
3358
3931
|
const isVisible = isControlled ? open : internalOpen;
|
|
3359
3932
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3360
3933
|
const isDismissible = dismissible ?? false;
|
|
3361
|
-
|
|
3934
|
+
React5.useEffect(() => {
|
|
3362
3935
|
if (!isControlled && defaultOpen !== internalOpen) {
|
|
3363
3936
|
setInternalOpen(initialOpen);
|
|
3364
3937
|
}
|
|
3365
3938
|
}, [defaultOpen, initialOpen, isControlled, internalOpen]);
|
|
3366
|
-
const handleDismiss =
|
|
3939
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3367
3940
|
if (!isControlled) {
|
|
3368
3941
|
setInternalOpen(false);
|
|
3369
3942
|
}
|
|
3370
3943
|
onOpenChange?.(false);
|
|
3371
3944
|
}, [isControlled, onOpenChange]);
|
|
3372
|
-
const actionsContent =
|
|
3945
|
+
const actionsContent = React5.useMemo(() => {
|
|
3373
3946
|
if (actionsSlot) return actionsSlot;
|
|
3374
3947
|
if (!actions || actions.length === 0) return null;
|
|
3375
3948
|
return actions.map((action, index) => {
|
|
@@ -3397,7 +3970,7 @@ function BannerFloatingOffer({
|
|
|
3397
3970
|
);
|
|
3398
3971
|
});
|
|
3399
3972
|
}, [actions, actionsSlot]);
|
|
3400
|
-
const separatorContent =
|
|
3973
|
+
const separatorContent = React5.useMemo(() => {
|
|
3401
3974
|
if (separator) return separator;
|
|
3402
3975
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3403
3976
|
"svg",
|
|
@@ -3409,15 +3982,15 @@ function BannerFloatingOffer({
|
|
|
3409
3982
|
}
|
|
3410
3983
|
);
|
|
3411
3984
|
}, [separator, separatorClassName]);
|
|
3412
|
-
const dismissIconContent =
|
|
3985
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3413
3986
|
if (dismissIcon) return dismissIcon;
|
|
3414
3987
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3415
3988
|
}, [dismissIcon]);
|
|
3416
|
-
const offerTitleContent =
|
|
3989
|
+
const offerTitleContent = React5.useMemo(() => {
|
|
3417
3990
|
if (!offerTitle) return null;
|
|
3418
3991
|
return typeof offerTitle === "string" ? /* @__PURE__ */ jsxRuntime.jsx("strong", { className: cn("font-semibold", offerTitleClassName), children: offerTitle }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerTitleClassName, children: offerTitle });
|
|
3419
3992
|
}, [offerTitle, offerTitleClassName]);
|
|
3420
|
-
const offerDescriptionContent =
|
|
3993
|
+
const offerDescriptionContent = React5.useMemo(() => {
|
|
3421
3994
|
if (!offerDescription) return null;
|
|
3422
3995
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: offerDescriptionClassName, children: offerDescription });
|
|
3423
3996
|
}, [offerDescription, offerDescriptionClassName]);
|
|
@@ -3478,13 +4051,13 @@ function BannerGdprRights({
|
|
|
3478
4051
|
actionsClassName,
|
|
3479
4052
|
dismissButtonClassName
|
|
3480
4053
|
}) {
|
|
3481
|
-
const [isVisible, setIsVisible] =
|
|
4054
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3482
4055
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3483
|
-
const handleDismiss =
|
|
4056
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3484
4057
|
setIsVisible(false);
|
|
3485
4058
|
onDismiss?.();
|
|
3486
4059
|
}, [onDismiss]);
|
|
3487
|
-
const iconContent =
|
|
4060
|
+
const iconContent = React5.useMemo(() => {
|
|
3488
4061
|
if (icon) return icon;
|
|
3489
4062
|
if (!iconName) return null;
|
|
3490
4063
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3496,7 +4069,7 @@ function BannerGdprRights({
|
|
|
3496
4069
|
}
|
|
3497
4070
|
);
|
|
3498
4071
|
}, [icon, iconName, iconClassName]);
|
|
3499
|
-
const actionsContent =
|
|
4072
|
+
const actionsContent = React5.useMemo(() => {
|
|
3500
4073
|
if (actionsSlot) return actionsSlot;
|
|
3501
4074
|
if (!actions || actions.length === 0) return null;
|
|
3502
4075
|
return actions.map((action, index) => {
|
|
@@ -3523,15 +4096,15 @@ function BannerGdprRights({
|
|
|
3523
4096
|
);
|
|
3524
4097
|
});
|
|
3525
4098
|
}, [actions, actionsSlot]);
|
|
3526
|
-
const dismissIconContent =
|
|
4099
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3527
4100
|
if (dismissIcon) return dismissIcon;
|
|
3528
4101
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3529
4102
|
}, [dismissIcon]);
|
|
3530
|
-
const titleContent =
|
|
4103
|
+
const titleContent = React5.useMemo(() => {
|
|
3531
4104
|
if (!title) return null;
|
|
3532
4105
|
return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
|
|
3533
4106
|
}, [title, titleClassName]);
|
|
3534
|
-
const descriptionContent =
|
|
4107
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3535
4108
|
if (!description && !actionsContent) return null;
|
|
3536
4109
|
return /* @__PURE__ */ jsxRuntime.jsxs("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: [
|
|
3537
4110
|
description,
|
|
@@ -3585,13 +4158,13 @@ function BannerPrivacyNotice({
|
|
|
3585
4158
|
actionsClassName,
|
|
3586
4159
|
dismissButtonClassName
|
|
3587
4160
|
}) {
|
|
3588
|
-
const [isVisible, setIsVisible] =
|
|
4161
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3589
4162
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3590
|
-
const handleDismiss =
|
|
4163
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3591
4164
|
setIsVisible(false);
|
|
3592
4165
|
onDismiss?.();
|
|
3593
4166
|
}, [onDismiss]);
|
|
3594
|
-
const iconContent =
|
|
4167
|
+
const iconContent = React5.useMemo(() => {
|
|
3595
4168
|
if (icon) return icon;
|
|
3596
4169
|
if (!iconName) return null;
|
|
3597
4170
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3603,7 +4176,7 @@ function BannerPrivacyNotice({
|
|
|
3603
4176
|
}
|
|
3604
4177
|
);
|
|
3605
4178
|
}, [icon, iconName, iconClassName]);
|
|
3606
|
-
const actionsContent =
|
|
4179
|
+
const actionsContent = React5.useMemo(() => {
|
|
3607
4180
|
if (actionsSlot) return actionsSlot;
|
|
3608
4181
|
if (!actions || actions.length === 0) return null;
|
|
3609
4182
|
return actions.map((action, index) => {
|
|
@@ -3630,15 +4203,15 @@ function BannerPrivacyNotice({
|
|
|
3630
4203
|
);
|
|
3631
4204
|
});
|
|
3632
4205
|
}, [actions, actionsSlot]);
|
|
3633
|
-
const dismissIconContent =
|
|
4206
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3634
4207
|
if (dismissIcon) return dismissIcon;
|
|
3635
4208
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3636
4209
|
}, [dismissIcon]);
|
|
3637
|
-
const titleContent =
|
|
4210
|
+
const titleContent = React5.useMemo(() => {
|
|
3638
4211
|
if (!title) return null;
|
|
3639
4212
|
return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("font-semibold text-sm", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title });
|
|
3640
4213
|
}, [title, titleClassName]);
|
|
3641
|
-
const descriptionContent =
|
|
4214
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3642
4215
|
if (!description) return null;
|
|
3643
4216
|
return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-sm text-muted-foreground mt-1", descriptionClassName), children: description });
|
|
3644
4217
|
}, [description, descriptionClassName]);
|
|
@@ -3685,7 +4258,7 @@ function BannerPromoCta({
|
|
|
3685
4258
|
discountClassName,
|
|
3686
4259
|
actionsClassName
|
|
3687
4260
|
}) {
|
|
3688
|
-
const actionsContent =
|
|
4261
|
+
const actionsContent = React5.useMemo(() => {
|
|
3689
4262
|
if (actionsSlot) return actionsSlot;
|
|
3690
4263
|
if (!actions || actions.length === 0) return null;
|
|
3691
4264
|
return actions.map((action, index) => {
|
|
@@ -3712,15 +4285,15 @@ function BannerPromoCta({
|
|
|
3712
4285
|
);
|
|
3713
4286
|
});
|
|
3714
4287
|
}, [actions, actionsSlot]);
|
|
3715
|
-
const separatorContent =
|
|
4288
|
+
const separatorContent = React5.useMemo(() => {
|
|
3716
4289
|
if (separator) return separator;
|
|
3717
4290
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("hidden sm:inline", separatorClassName), children: "\xB7" });
|
|
3718
4291
|
}, [separator, separatorClassName]);
|
|
3719
|
-
const messageContent =
|
|
4292
|
+
const messageContent = React5.useMemo(() => {
|
|
3720
4293
|
if (!message) return null;
|
|
3721
4294
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-semibold", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
|
|
3722
4295
|
}, [message, messageClassName]);
|
|
3723
|
-
const discountContent =
|
|
4296
|
+
const discountContent = React5.useMemo(() => {
|
|
3724
4297
|
if (!discount) return null;
|
|
3725
4298
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: discountClassName, children: discount });
|
|
3726
4299
|
}, [discount, discountClassName]);
|
|
@@ -3748,13 +4321,13 @@ function BannerSocialFollow({
|
|
|
3748
4321
|
actionsClassName,
|
|
3749
4322
|
dismissButtonClassName
|
|
3750
4323
|
}) {
|
|
3751
|
-
const [isVisible, setIsVisible] =
|
|
4324
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3752
4325
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3753
|
-
const handleDismiss =
|
|
4326
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3754
4327
|
setIsVisible(false);
|
|
3755
4328
|
onDismiss?.();
|
|
3756
4329
|
}, [onDismiss]);
|
|
3757
|
-
const iconContent =
|
|
4330
|
+
const iconContent = React5.useMemo(() => {
|
|
3758
4331
|
if (icon) return icon;
|
|
3759
4332
|
if (!iconName) return null;
|
|
3760
4333
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3766,7 +4339,7 @@ function BannerSocialFollow({
|
|
|
3766
4339
|
}
|
|
3767
4340
|
);
|
|
3768
4341
|
}, [icon, iconName, iconClassName]);
|
|
3769
|
-
const actionsContent =
|
|
4342
|
+
const actionsContent = React5.useMemo(() => {
|
|
3770
4343
|
if (actionsSlot) return actionsSlot;
|
|
3771
4344
|
if (!actions || actions.length === 0) return null;
|
|
3772
4345
|
return actions.map((action, index) => {
|
|
@@ -3794,11 +4367,11 @@ function BannerSocialFollow({
|
|
|
3794
4367
|
);
|
|
3795
4368
|
});
|
|
3796
4369
|
}, [actions, actionsSlot]);
|
|
3797
|
-
const dismissIconContent =
|
|
4370
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3798
4371
|
if (dismissIcon) return dismissIcon;
|
|
3799
4372
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3800
4373
|
}, [dismissIcon]);
|
|
3801
|
-
const messageContent =
|
|
4374
|
+
const messageContent = React5.useMemo(() => {
|
|
3802
4375
|
if (!message) return null;
|
|
3803
4376
|
return typeof message === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", messageClassName), children: message }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: messageClassName, children: message });
|
|
3804
4377
|
}, [message, messageClassName]);
|
|
@@ -3846,13 +4419,13 @@ function BannerSurveyIncentive({
|
|
|
3846
4419
|
actionsClassName,
|
|
3847
4420
|
dismissButtonClassName
|
|
3848
4421
|
}) {
|
|
3849
|
-
const [isVisible, setIsVisible] =
|
|
4422
|
+
const [isVisible, setIsVisible] = React5.useState(true);
|
|
3850
4423
|
const dismissLabel = dismissAriaLabel ?? "Dismiss banner";
|
|
3851
|
-
const handleDismiss =
|
|
4424
|
+
const handleDismiss = React5.useCallback(() => {
|
|
3852
4425
|
setIsVisible(false);
|
|
3853
4426
|
onDismiss?.();
|
|
3854
4427
|
}, [onDismiss]);
|
|
3855
|
-
const iconContent =
|
|
4428
|
+
const iconContent = React5.useMemo(() => {
|
|
3856
4429
|
if (icon) return icon;
|
|
3857
4430
|
if (!iconName) return null;
|
|
3858
4431
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3864,7 +4437,7 @@ function BannerSurveyIncentive({
|
|
|
3864
4437
|
}
|
|
3865
4438
|
);
|
|
3866
4439
|
}, [icon, iconName, iconClassName]);
|
|
3867
|
-
const actionsContent =
|
|
4440
|
+
const actionsContent = React5.useMemo(() => {
|
|
3868
4441
|
if (actionsSlot) return actionsSlot;
|
|
3869
4442
|
if (!actions || actions.length === 0) return null;
|
|
3870
4443
|
return actions.map((action, index) => {
|
|
@@ -3892,15 +4465,15 @@ function BannerSurveyIncentive({
|
|
|
3892
4465
|
);
|
|
3893
4466
|
});
|
|
3894
4467
|
}, [actions, actionsSlot]);
|
|
3895
|
-
const dismissIconContent =
|
|
4468
|
+
const dismissIconContent = React5.useMemo(() => {
|
|
3896
4469
|
if (dismissIcon) return dismissIcon;
|
|
3897
4470
|
return /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "mynaui/x", size: 16 });
|
|
3898
4471
|
}, [dismissIcon]);
|
|
3899
|
-
const titleContent =
|
|
4472
|
+
const titleContent = React5.useMemo(() => {
|
|
3900
4473
|
if (!title) return null;
|
|
3901
4474
|
return typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("font-medium", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: titleClassName, children: title });
|
|
3902
4475
|
}, [title, titleClassName]);
|
|
3903
|
-
const descriptionContent =
|
|
4476
|
+
const descriptionContent = React5.useMemo(() => {
|
|
3904
4477
|
if (!description) return null;
|
|
3905
4478
|
return typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("text-muted-foreground", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: descriptionClassName, children: description });
|
|
3906
4479
|
}, [description, descriptionClassName]);
|
|
@@ -4010,7 +4583,7 @@ function FooterCopyright({
|
|
|
4010
4583
|
copyright,
|
|
4011
4584
|
className
|
|
4012
4585
|
}) {
|
|
4013
|
-
const currentYear =
|
|
4586
|
+
const currentYear = React5.useMemo(() => (/* @__PURE__ */ new Date()).getFullYear(), []);
|
|
4014
4587
|
if (!copyright) {
|
|
4015
4588
|
return null;
|
|
4016
4589
|
}
|
|
@@ -4522,8 +5095,8 @@ var BrandAttribution = ({
|
|
|
4522
5095
|
}
|
|
4523
5096
|
const { prefix = "", anchorText, href, suffix = "" } = options[optionIndex];
|
|
4524
5097
|
const ContainerEl = variant;
|
|
4525
|
-
const [trackedHref, setTrackedHref] =
|
|
4526
|
-
|
|
5098
|
+
const [trackedHref, setTrackedHref] = React5__namespace.useState(href);
|
|
5099
|
+
React5__namespace.useEffect(() => {
|
|
4527
5100
|
setTrackedHref(buildTrackedHref(href));
|
|
4528
5101
|
}, [href]);
|
|
4529
5102
|
return /* @__PURE__ */ jsxRuntime.jsxs(ContainerEl, { className: containerClassName, children: [
|
|
@@ -4643,7 +5216,7 @@ function FooterSocialNewsletter({
|
|
|
4643
5216
|
patternOpacity,
|
|
4644
5217
|
optixFlowConfig
|
|
4645
5218
|
}) {
|
|
4646
|
-
const renderForm =
|
|
5219
|
+
const renderForm = React5__namespace.useMemo(() => {
|
|
4647
5220
|
if (!formEngineSetup) return null;
|
|
4648
5221
|
const action = {
|
|
4649
5222
|
variant: "default",
|
|
@@ -4796,14 +5369,14 @@ function FooterSocialApps({
|
|
|
4796
5369
|
patternOpacity,
|
|
4797
5370
|
optixFlowConfig
|
|
4798
5371
|
}) {
|
|
4799
|
-
const sectionsContent =
|
|
5372
|
+
const sectionsContent = React5.useMemo(() => {
|
|
4800
5373
|
if (!sections || sections.length === 0) return null;
|
|
4801
5374
|
return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 md:mt-0", children: [
|
|
4802
5375
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 font-bold", children: section.title }),
|
|
4803
5376
|
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-4", children: section.links.map((link, linkIdx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium ", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.href, children: link.name }) }, linkIdx)) })
|
|
4804
5377
|
] }, sectionIdx));
|
|
4805
5378
|
}, [sections]);
|
|
4806
|
-
const socialLinksContent =
|
|
5379
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
4807
5380
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
4808
5381
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4809
5382
|
SocialLinkIcon,
|
|
@@ -4818,7 +5391,7 @@ function FooterSocialApps({
|
|
|
4818
5391
|
}
|
|
4819
5392
|
) }, idx));
|
|
4820
5393
|
}, [socialLinks, background]);
|
|
4821
|
-
const appLinksContent =
|
|
5394
|
+
const appLinksContent = React5.useMemo(() => {
|
|
4822
5395
|
if (!appLinks || appLinks.length === 0) return null;
|
|
4823
5396
|
return appLinks.map((app, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "font-medium", children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: app.href, "aria-label": app.label, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4824
5397
|
"span",
|
|
@@ -4907,7 +5480,7 @@ function FooterSimpleCentered({
|
|
|
4907
5480
|
patternOpacity,
|
|
4908
5481
|
optixFlowConfig
|
|
4909
5482
|
}) {
|
|
4910
|
-
const sitemapContent =
|
|
5483
|
+
const sitemapContent = React5.useMemo(() => {
|
|
4911
5484
|
if (!sitemap || sitemap.length === 0) return null;
|
|
4912
5485
|
return sitemap.map((section) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(sitemapSectionClassName), children: [
|
|
4913
5486
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 text-sm font-semibold", sitemapTitleClassName), children: section.title }),
|
|
@@ -4930,9 +5503,9 @@ function FooterSimpleCentered({
|
|
|
4930
5503
|
sitemapLinksClassName,
|
|
4931
5504
|
sitemapLinkClassName
|
|
4932
5505
|
]);
|
|
4933
|
-
const bottomLinksContent =
|
|
5506
|
+
const bottomLinksContent = React5.useMemo(() => {
|
|
4934
5507
|
if (!bottomLinks || bottomLinks.length === 0) return null;
|
|
4935
|
-
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5508
|
+
return bottomLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4936
5509
|
Pressable,
|
|
4937
5510
|
{
|
|
4938
5511
|
href: link.href,
|
|
@@ -5257,7 +5830,7 @@ function FooterNewsletterGrid({
|
|
|
5257
5830
|
patternOpacity,
|
|
5258
5831
|
optixFlowConfig
|
|
5259
5832
|
}) {
|
|
5260
|
-
const sectionsContent =
|
|
5833
|
+
const sectionsContent = React5.useMemo(() => {
|
|
5261
5834
|
if (!sections || sections.length === 0) return null;
|
|
5262
5835
|
return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "col-span-2 md:col-span-1", children: [
|
|
5263
5836
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-5 font-medium", children: section.title }),
|
|
@@ -5271,7 +5844,7 @@ function FooterNewsletterGrid({
|
|
|
5271
5844
|
)) })
|
|
5272
5845
|
] }, sectionIdx));
|
|
5273
5846
|
}, [sections]);
|
|
5274
|
-
const socialLinksContent =
|
|
5847
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
5275
5848
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
5276
5849
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5277
5850
|
SocialLinkIcon,
|
|
@@ -5787,7 +6360,7 @@ function FooterBackgroundCard({
|
|
|
5787
6360
|
patternOpacity,
|
|
5788
6361
|
optixFlowConfig
|
|
5789
6362
|
}) {
|
|
5790
|
-
const sectionStyle =
|
|
6363
|
+
const sectionStyle = React5.useMemo(
|
|
5791
6364
|
() => backgroundImage ? { backgroundImage: `url('${backgroundImage}')` } : void 0,
|
|
5792
6365
|
[backgroundImage]
|
|
5793
6366
|
);
|
|
@@ -6061,7 +6634,7 @@ function FooterAnimatedSocial({
|
|
|
6061
6634
|
pattern,
|
|
6062
6635
|
patternOpacity
|
|
6063
6636
|
}) {
|
|
6064
|
-
const socialLinksContent =
|
|
6637
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
6065
6638
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6066
6639
|
return socialLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6067
6640
|
framerMotion.motion.div,
|
|
@@ -6279,7 +6852,7 @@ function FooterNewsletterMinimal({
|
|
|
6279
6852
|
buttonAction,
|
|
6280
6853
|
formSlot
|
|
6281
6854
|
}) {
|
|
6282
|
-
const navLinksContent =
|
|
6855
|
+
const navLinksContent = React5__namespace.useMemo(() => {
|
|
6283
6856
|
if (!navLinks || navLinks.length === 0) return null;
|
|
6284
6857
|
return navLinks.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6285
6858
|
Pressable,
|
|
@@ -6290,7 +6863,7 @@ function FooterNewsletterMinimal({
|
|
|
6290
6863
|
}
|
|
6291
6864
|
) }, idx));
|
|
6292
6865
|
}, [navLinks, navLinkClassName]);
|
|
6293
|
-
const socialLinksContent =
|
|
6866
|
+
const socialLinksContent = React5__namespace.useMemo(() => {
|
|
6294
6867
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6295
6868
|
return socialLinks.map((item, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6296
6869
|
SocialLinkIcon,
|
|
@@ -6306,7 +6879,7 @@ function FooterNewsletterMinimal({
|
|
|
6306
6879
|
}
|
|
6307
6880
|
) }, idx));
|
|
6308
6881
|
}, [socialLinks, socialLinkClassName]);
|
|
6309
|
-
const footerLinksContent =
|
|
6882
|
+
const footerLinksContent = React5__namespace.useMemo(() => {
|
|
6310
6883
|
if (!footerLinks || footerLinks.length === 0) return null;
|
|
6311
6884
|
return footerLinks.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6312
6885
|
Pressable,
|
|
@@ -6320,7 +6893,7 @@ function FooterNewsletterMinimal({
|
|
|
6320
6893
|
}
|
|
6321
6894
|
) }, item.label));
|
|
6322
6895
|
}, [footerLinks, footerLinkClassName]);
|
|
6323
|
-
const renderForm =
|
|
6896
|
+
const renderForm = React5__namespace.useMemo(() => {
|
|
6324
6897
|
if (formSlot) return formSlot;
|
|
6325
6898
|
if (!formEngineSetup) return null;
|
|
6326
6899
|
const defaultButtonAction = {
|
|
@@ -6555,7 +7128,7 @@ function FooterCtaSocial({
|
|
|
6555
7128
|
pattern,
|
|
6556
7129
|
patternOpacity
|
|
6557
7130
|
}) {
|
|
6558
|
-
const socialLinksContent =
|
|
7131
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
6559
7132
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6560
7133
|
return socialLinks.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6561
7134
|
SocialLinkIcon,
|
|
@@ -6673,7 +7246,7 @@ function FooterNavSocial({
|
|
|
6673
7246
|
patternOpacity,
|
|
6674
7247
|
optixFlowConfig
|
|
6675
7248
|
}) {
|
|
6676
|
-
const sectionsContent =
|
|
7249
|
+
const sectionsContent = React5.useMemo(() => {
|
|
6677
7250
|
if (!sections || sections.length === 0) return null;
|
|
6678
7251
|
return sections.map((section, sectionIdx) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn(navSectionClassName), children: [
|
|
6679
7252
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: cn("mb-4 font-semibold", navTitleClassName), children: section.title }),
|
|
@@ -6686,7 +7259,7 @@ function FooterNavSocial({
|
|
|
6686
7259
|
navLinksClassName,
|
|
6687
7260
|
navLinkClassName
|
|
6688
7261
|
]);
|
|
6689
|
-
const socialLinksContent =
|
|
7262
|
+
const socialLinksContent = React5.useMemo(() => {
|
|
6690
7263
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
6691
7264
|
return socialLinks.map((social, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6692
7265
|
SocialLinkIcon,
|
|
@@ -6701,7 +7274,7 @@ function FooterNavSocial({
|
|
|
6701
7274
|
}
|
|
6702
7275
|
) }, idx));
|
|
6703
7276
|
}, [socialLinks, socialLinkClassName]);
|
|
6704
|
-
const legalLinksContent =
|
|
7277
|
+
const legalLinksContent = React5.useMemo(() => {
|
|
6705
7278
|
if (!legalLinks || legalLinks.length === 0) return null;
|
|
6706
7279
|
return legalLinks.map((link, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: cn(legalLinkClassName), children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: link.href, className: "hover:opacity-100", children: link.name }) }, idx));
|
|
6707
7280
|
}, [legalLinks, legalLinkClassName]);
|
|
@@ -6908,6 +7481,7 @@ exports.FooterNewsletterMinimal = FooterNewsletterMinimal;
|
|
|
6908
7481
|
exports.FooterSimpleCentered = FooterSimpleCentered;
|
|
6909
7482
|
exports.FooterSocialApps = FooterSocialApps;
|
|
6910
7483
|
exports.FooterSocialNewsletter = FooterSocialNewsletter;
|
|
7484
|
+
exports.GeoMap = GeoMap;
|
|
6911
7485
|
exports.ImageSlider = ImageSlider;
|
|
6912
7486
|
exports.MediaHoverCtas = MediaHoverCtas;
|
|
6913
7487
|
exports.PageHeroBanner = PageHeroBanner;
|